新微赢技术网
标题:
请帮帮小弟看哪里出错了,SOS!
[打印本页]
作者:
逍遥◆爱你
时间:
2009-11-4 02:07
标题:
请帮帮小弟看哪里出错了,SOS!
大家好我是新来的,是名C++的超级菜鸟。
以下是一段程序,帮帮小弟看哪里出错了。
谢谢!
-----------------------------------------------------------我是分割线-----------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <iostream.h>
struct StuType
{
char No[10];
char Xm[10];
float Cj_En;
};
extern char *DataFile="d:\\学生成绩.dat" ;
bool Jy_No(char *Stu_NO,FILE *FP);
bool Jy_Cj(float Stu_Cj);
bool Jy_Xm(char *Stu_Xm);
void Data_Disp(char *DataFileName,int n);
void Data_Stu(StuType Stu);
//******************************
// 产生数据文件与增加数据记录
//******************************
void CreatFile()
{
FILE *fp;
int REC=0; // 追加的记录数
StuType Stu,Stu0={"","",0};
fp=fopen(DataFile,"ab+"); //按追加可读写方式打开文件
if(!fp)
{
cout<<"信息错误,操作失败!"<<endl;
return;
}
while(1) //输入记录
{
Stu=Stu0;
do {printf("\n请输入学号:");
scanf("%10s",&Stu.No); //输入学号,并检查
}while(!Jy_No(Stu.No,fp));
do {printf("\n请输入姓名:"); //输入姓名,并检查
scanf("%s",&Stu.Xm);
}while(!Jy_Xm(Stu.Xm));
do {printf("\n英语成绩:"); //输入成绩,并检查
scanf("%f",&Stu.Cj_En);
}while(!Jy_Cj(Stu.Cj_En));
fwrite(&Stu,sizeof(struct StuType),1,fp); // 将刚输入的记录写入文件
REC++;
}
fclose(fp);//关闭文件
printf("\n 所追加的数据清单如下: \n");
Data_Disp(DataFile,REC); //显示所追加的数据清单。
}
//**************************************************
// 学号正确性校验,不准重复,字符串长度为No_Len
//**************************************************
bool Jy_No(char *Stu_No,FILE *FP)
{
const int No_Len=9;
StuType Stu;
if(!strcmp(Stu_No,"#")) return true;
if(!strlen(Stu.No)==No_Len)
{
cout<<"学号的编码长度应该是"<<No_Len<<"!!!"<<endl;
return false;
}
else
{
rewind(FP);
while(!feof(FP))
{
fread(&Stu,sizeof(struct StuType),1,FP);
if(!strcmp(Stu_No,Stu.No))
{
cout<<"学号编码重复!该生的成绩如下: "<<endl;
Data_Stu(Stu);
return false;
}
}
return true;
}
}
//**************************************
// 显示学生的数据
//**************************************
void Data_Stu(StuType Stu)
{
printf(" 序号 学号 姓名 英语成绩\n");
printf("=========================================================================\n");
printf("%10s %10s %10.1f \n",&Stu.No,&Stu.Xm,Stu.Cj_En);
}
//***********************************************
// 姓名正确性校验,不准空白,不检查重复。
//***********************************************
bool Jy_Xm(char *Stu_Xm)
{
int Stu_XmPD=(int) *Stu_Xm;
if(Stu_XmPD>0)
{
cout<<"姓名只能用汉字开头!!!"<<endl;
return false;
}
return true;
}
//********************************************
//成绩正确性校验,必须是0-100之间的符点数
//********************************************
bool Jy_Cj(float Stu_Cj)
{
if(Stu_Cj<0||Stu_Cj>100)
{
cout<<"成绩必须在0-100之间!!!"<<endl;
return false;
}
return true;
}
main()
{
int choice;
printf(" 欢迎使用成绩查询系统\n
");
printf(" 请选择系统功能\n
");
printf(" 1 输入数据\n");
printf(" 2 显示数据\n");
printf(" 3 按姓名查找数据\n");
printf(" 4 按学号查找数据\n");
printf(" 5 统计数据\n");
printf(" 6 退出系统\n");
scanf("%d",&choice);
switch(choice)
{
case 1: CreatFile();break;
case 2: Disp_File(DataFile);break;
case 3: Data_XmCx(DataFile);break;
case 4: Data_NoCx(DataFile);break;
case 5: Data_TjCx(DataFile);break;
case 6: return;
}
}
作者:
可爱
时间:
2009-11-4 02:07
好象说只有1处错误,在线等候解答~!谢谢
作者:
帅精灵
时间:
2009-11-4 02:07
晕~怎么没人会吗?斑竹啊~也回回吧~晕~看来我这个新手人缘不太好啊~
作者:
牛牛
时间:
2009-11-4 02:07
很多错误,函数名全是错的
作者:
ぷぷ
时间:
2009-11-4 02:07
Alome,
很不好意思,我是个不称职的版主,之所以说不称职就是因为对这里关心的太少了,不过这个局面也不会有太大的改动,因为自己也有自己的事情要做,所以无暇照顾大家。看到你的短消息后,看了一下你的帖子。发现你的程序中用到了很多没有定义的函数,此外,你的程序是C 语言风格的程序,当然C++ 是包容 C 的,所以我在局部地方帮你做了一些改动。那些没有定义的函数,我帮你加上去了,但是具体的代码并没有帮你写,也就是说你得自己写。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
struct StuType
{
char No[10];
char Xm[10];
float Cj_En;
};
char * DataFile = "d:\\学生成绩.dat" ;
bool Jy_No(char * Stu_NO, FILE * FP);
bool Jy_Cj(float Stu_Cj);
bool Jy_Xm(char * Stu_Xm);
void Data_Disp(char * DataFileName, int n);
void Data_Stu(StuType Stu);
//******************************
// 产生数据文件与增加数据记录
//******************************
void CreatFile()
{
FILE * fp;
int REC=0; // 追加的记录数
StuType Stu,Stu0={"","",0};
fp=fopen(DataFile,"ab+"); //按追加可读写方式打开文件
if(!fp)
{
cout<<"信息错误,操作失败!"<<endl;
return;
}
while(1) //输入记录
{
Stu=Stu0;
do
{
printf("\n请输入学号:");
scanf("%10s", Stu.No); //输入学号,并检查
}while(!Jy_No(Stu.No, fp));
do
{
printf("\n请输入姓名:"); //输入姓名,并检查
scanf("%s", Stu.Xm);
}while(!Jy_Xm(Stu.Xm));
do
{
printf("\n英语成绩:"); //输入成绩,并检查
scanf("%f",&Stu.Cj_En);
}while(!Jy_Cj(Stu.Cj_En));
fwrite(&Stu,sizeof(struct StuType),1,fp); // 将刚输入的记录写入文件
REC++;
}
fclose(fp);//关闭文件
printf("\n 所追加的数据清单如下: \n");
Data_Disp(DataFile, REC); //显示所追加的数据清单。
}
//**************************************************
// 学号正确性校验,不准重复,字符串长度为No_Len
//**************************************************
bool Jy_No(char *Stu_No,FILE *FP)
{
const int No_Len=9;
StuType Stu;
if(!strcmp(Stu_No,"#"))
return true;
if(!strlen(Stu.No)==No_Len)
{
cout<<"学号的编码长度应该是"<<No_Len<<"!!!"<<endl;
return false;
}
else
{
rewind(FP);
while(!feof(FP))
{
fread(&Stu,sizeof(struct StuType),1,FP);
if(!strcmp(Stu_No,Stu.No))
{
cout<<"学号编码重复!该生的成绩如下: "<<endl;
Data_Stu(Stu);
return false;
}
}
return true;
}
}
//**************************************
// 显示学生的数据
//**************************************
void Data_Stu(StuType Stu)
{
printf(" 序号 学号 姓名 英语成绩\n");
printf("=========================================================================\n");
printf("%10s %10s %10.1f \n", Stu.No, Stu.Xm, Stu.Cj_En);
}
//***********************************************
// 姓名正确性校验,不准空白,不检查重复。
//***********************************************
bool Jy_Xm(char *Stu_Xm)
{
int Stu_XmPD=(int) *Stu_Xm;
if(Stu_XmPD>0)
{
cout<<"姓名只能用汉字开头!!!"<<endl;
return false;
}
return true;
}
//********************************************
//成绩正确性校验,必须是0-100之间的符点数
//********************************************
bool Jy_Cj(float Stu_Cj)
{
if(Stu_Cj<0||Stu_Cj>100)
{
cout<<"成绩必须在0-100之间!!!"<<endl;
return false;
}
return true;
}
void Disp_File(char * filepath)
{
//add your code
}
void Data_XmCx(char * DataFile)
{
//add your code
}
void Data_NoCx(char * DataFile)
{
//add your code
}
void Data_TjCx(char * DataFile)
{
//add your code
}
int main()
{
int choice;
printf(" 欢迎使用成绩查询系统\n");
printf(" 请选择系统功能\n");
printf(" 1 输入数据\n");
printf(" 2 显示数据\n");
printf(" 3 按姓名查找数据\n");
printf(" 4 按学号查找数据\n");
printf(" 5 统计数据\n");
printf(" 6 退出系统\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
CreatFile();
break;
case 2:
Disp_File(DataFile);
break;
case 3:
Data_XmCx(DataFile);
break;
case 4:
Data_NoCx(DataFile);
break;
case 5:
Data_TjCx(DataFile);
break;
case 6:
break;
}
return 0;
}
复制代码
作者:
天使替我爱你
时间:
2009-11-4 02:07
你调用的函数都是一些你没有定义的函数,而你定义的函数你又没有调用
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2