| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 583 人关注过本帖
标题:请帮帮小弟看哪里出错了,SOS!
只看楼主 加入收藏
Alome
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-1-14
收藏
 问题点数:0 回复次数:5 
请帮帮小弟看哪里出错了,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;
}
}

搜索更多相关主题的帖子: SOS 
2007-01-14 16:05
Alome
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-1-14
收藏
得分:0 

好象说只有1处错误,在线等候解答~!谢谢


如果我也认为自己很懒,大概神也这么认为吧~!
2007-01-14 16:10
Alome
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-1-14
收藏
得分:0 
晕~怎么没人会吗?斑竹啊~也回回吧~晕~看来我这个新手人缘不太好啊~

如果我也认为自己很懒,大概神也这么认为吧~!
2007-01-14 18:23
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 
很多错误,函数名全是错的

2007-01-17 10:22
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
Alome,
很不好意思,我是个不称职的版主,之所以说不称职就是因为对这里关心的太少了,不过这个局面也不会有太大的改动,因为自己也有自己的事情要做,所以无暇照 顾大家。看到你的短消息后,看了一下你的帖子。发现你的程序中用到了很多没有定义的函数,此外,你的程序是C 语言风格的程序,当然C++ 是包容 C 的,所以我在局部地方帮你做了一些改动。那些没有定义的函数,我帮你加上去了,但是具体的代码并没有帮你写,也就是说你得自己写。

[CODE]#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;
}

[/CODE]

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2007-01-18 09:46
一二三四五
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:856
专家分:0
注 册:2006-11-13
收藏
得分:0 
你调用的函数都是一些你没有定义的函数,而你定义的函数你又没有调用



hey,di va la
2007-01-19 09:44
快速回复:请帮帮小弟看哪里出错了,SOS!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.063406 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved