课程结构体: struct course{ int cno;
char cname[30]; };
成绩结构体: struct scgrade{ long sno; int cno; float grade; };
四. 详细设计说明
1 学生数据维护子系统设计说明
(每个功能模块的设计思路,哪些功能是自己增强的, 加注释的源代码) #include
#include\
//该部分为学生主菜单程序,分别调用添加,修改,删除三个函数。 void studentmenu() {
void addstudent(); void modistudent(); void deletestudent();
char a; while(1)
{ puts(\
puts(\ 系 统 主 菜 单\ puts(\ 1: 学 生 数 据 添 加\ puts(\ 2: 学 生 数 据 修 改\ puts(\ 3: 学 生 数 据 删 除\ puts(\ 0: 退 出 系 统\ printf(\请输入数字选择: \ a=getche(); switch(a) { case '1':
addstudent(); break;
case '2': modistudent(); break;
case '3':
deletestudent(); break; case '0': system(\
return; return; default:
} }
}
//添加数据
void addstudent() {
FILE *fp;
struct student s;
struct student sw; char ch; int flag=0; //打开文件。
fp=fopen(\
if(!fp) { printf(\ do{ do{
/*输入一条学生信息,另外,增加了检验数据是否重复的功能*/
printf(\fflush(stdin);
scanf(\rewind(fp);
while(!feof(fp)) { }
fread(&sw,sizeof(sw),1,fp); if(sw.sno==s.sno) { }
flag=1;
printf(\数据输入重复,请重新输入!!\break;
}while(flag);
fwrite(&s,sizeof(s),1,fp);// 提示是否继续输入。 printf(\
ch=getche(); }while(ch=='y'); fclose(fp);
}
//修改数据
void modistudent() { FILE *fp; char ch;
struct student s, modis; int found=0;
fp=fopen(\if(!fp) { printf(\/*显示文件中的所有学生信息*/ fread(&s,sizeof(s),1,fp); PRINT1; while(!feof(fp)){ PRINT2;
PRINT1;
fread(&s,sizeof(s),1,fp); }
/*提示输入要修改的学生号, 存入modis.sno*/ printf(\scanf(\
/*找到要修改的学生并显示 */ rewind(fp); while( 1 ) {
fread(&s,sizeof(s),1,fp); if(feof(fp)) break;
if(s.sno==modis.sno) { found=1; break; } }
if(!found) {
printf(\未找到你要找的数据!!\ return; } else PRINT2;
printf(\你确实要修改该学生的其他信息吗?(Y/N)\ch=getche();
if(ch=='Y'||ch=='y') { /*提示输入要修改的学生姓名, 存入modis.sname*/
printf(\scanf(\
printf(\scanf(\
fseek(fp,-(int)sizeof(s),SEEK_CUR); /*从当前位置向前移动一个s的长度*/
/*将modis写到文件(覆盖原数据) */ fwrite(&modis,sizeof(s),1,fp); }
fclose(fp); }
//删除数据。 void deletestudent() { FILE *fp,*fp1;
char ch; int found=0,num;
struct student s;
fp=fopen(\if(!fp) { printf(\
return; }
/*显示文件中的所有学生信息*/
fread(&s,sizeof(s),1,fp); PRINT1; while(!feof(fp)) { PRINT2;
PRINT1;
fread(&s,sizeof(s),1,fp);
}
printf(\
scanf(\ //找到要修改的学生信息,显示! rewind(fp);
while(1) {
fread(&s,sizeof(s),1,fp); if(feof(fp)) break; if(s.sno==num) { found=1;
相关推荐: