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



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

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