版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、包括:学生基本信息,如学号,姓名,性别,年龄,等;2.学生选修课程基本信息,包括课程编号, 课程名称,考试成绩,平时成绩,综合成绩,学分,重修否,若重修,需考虑重修学期,重修成绩,并考虑多次重修情况。只能用c 语言,要有用户界面,必须用结构体和链表等数据结构。/*-1-*/ #include #include /*头文件 */ #include #include #include #include #include #include #define null 0 #define esc 0 x001b /* 退出 */ #define f1 0 x3b00 /* 查看帮助信息,调用helpma
2、ssage() 函数 */ #define f2 0 x3c00 /*输入学生成绩 */ #define f3 0 x3d00 /* 按学号查找 */ #define f4 0 x3e00 /*按姓名查找 */ #define f5 0 x3f00 /*列出所有学生成绩 */ #define f6 0 x4000 /* 统计*/ struct stutype /*定义结构体变量 */ char no11; /*学号长度为 10*/ char xm10; char age2; /*年龄长度为 2*/ float cj4; /*包含 4 门成绩 */ ; /*-2-*/ int jy_no(cha
3、r *stu_num,file *fp) /*检验学号的正确性 */ struct stutype stud; int no; char *p=stu_num; if(strcmp(stu_num,#)=0) return 1; /*若输入 #返回真值 ,不再循环输入*/ while(*p!=0) /*学号必须是数字,否则返回重新输入*/ no=(int)*p; if(no57) puts(ttundefined sn!please input again!n);/*非法学号 !请重新输入 !*/ return 0; else p+; /*指针加 1*/ if(strlen(stu_num)!
4、=10) /*若学号长度不为 10,则返回重新输入 */ puts(ttlength of sn error!n);/*学号长度不对 */ return 0; if(getchar()!=n) /*若学号后面的字符不是回车符,则学号长度大于10*/ printf(ttthe length of sn should more than 10!please input again!n);/* 学号长度大于 10 个,请重新输入 */ dowhile(getchar()!=n); /*用 getchar 接收多余的字符 */ return 0; else rewind(fp); /*使文件指针指向头
5、 */ while(!feof(fp) /*若文件指针未到结尾 ,就继续执行下面的循环 ,feof 遇到文件结束符返回非零值,否则返回 0*/ fread(&stud,sizeof(struct stutype),1,fp); /*读取一定长度的数据 */ if(strcmp(stu_num,stud.no)=0) /*学号的唯一性 */ printf(tt repeat sn,please input again!n);/*学号重复 !请重新输入 */ printf(ttthe record of this student:n);/*该学生成绩如下 */ printf(ttchine
6、se:%.1fn,stud.cj0);/*语文*/ printf(ttmath:%.1fn,stud.cj1);/*数学*/ printf(ttenglish:%.1fn,stud.cj2);/*英语*/ printf(tttotal:%.1fn,stud.cj3);/*总评*/ return 0; return 1; /*-3-*/ int jy_no2(char *stu_num) /*检验学号 */ int no; char *p=stu_num; if(strcmp(stu_num,#)=0)return 1; /*若输入 “#”,则返回真值结束 */ if(strlen(stu_nu
7、m)!=10) /*学号长度不为 10*/ puts(ttlength of sn error!n);/*学号长度不对 */ return 0; while(*p!=0) /*学号必须用数字 ,若包含有字母,或其它字符则返回假值重新输入 */ no=(int)*p; if(no57) puts(ttundefined sn!please input again!n);/*非法学号 !请重新输入 */ return 0; else p+; /*指针加 1*/ if(getchar()!=n) /*检验学号长度是否大于10,并把多余的字符去掉 */ printf(ttthe length of s
8、n should more than 10!please input again!n);/* 学号长度大于 10 个,请重新输入 */ dowhile(getchar()!=n); return 0; return 1; /*-4-*/ int jy_xm(char *stu_xm) /*检验姓名 */ int pd; char *p; p=stu_xm; while(*p!=0) /*姓名只能用英文 */ pd=(int)*p; if(pd0) puts(ttname should use english, please input again!n);/*姓名只能用英文请重新输入 */ re
9、turn 0; else p+; /*使指针加 1,指向下一汉字 */ if(getchar()!=n) /*姓名长度不得大于5 个*/ printf(ttthe length of name is more than 5, please input again!n);/*姓名长度大于 5 个请重新输入 */ dowhile(getchar()!=n); return 0; return 1; /*字符串全为汉字返回真 */ /*-5-*/ int jy_age(float stu_age) /*年龄只能在 0100 之间*/ if(stu_age100) printf(ttinput err
10、or! record should between 0100!n);/*输入错误 ,成绩只能在 0100 之间*/ return 0; return 1; /*-6-*/ int jy_cj(float stu_cj) /*学生成绩只能在 0100 之间*/ if(stu_cj100) printf(ttinput error! record should between 0100!n);/*输入错误 ,成绩只能在 0100 之间*/ return 0; return 1; /*-7-*/ void creatfile() /*输入文件 */ file *fp; struct stutype
11、stu,stu0=,; /*对 stu0 xianfuzhi*/ fp=fopen(stu.dat,wb+); /*打开或创建一个二进制文件,打开时将原来的内容删除 */ if(fp=null) printf(ttfile opens error!ntttpress anykey back.);/*文件打开失败 ,按任意键返回 */ getch(); return; else while(1) stu=stu0; do printf(nttplease input sn:); /*输入学号并检验其正确性*/ scanf(%10s,stu.no); while(!jy_no(stu.no,fp)
12、; if(strcmp(stu.no,#)=0)break; do printf(nttplease input name:); /*输入姓名并检验其正确性*/ scanf(%10s,stu.xm); while(!jy_xm(stu.xm); do printf(nttplease input age:); /*输入年龄绩并检验其正确性*/ scanf(%f,&stu.age); while(!jy_age(stu.age0); do printf(nttplease input record of chinese:); /*输入成绩并检验其正确性*/ scanf(%f,&s
13、tu.cj0); while(!jy_cj(stu.cj0); do printf(nttplease input record of math:); /*同上*/ scanf(%f,&stu.cj1); while(!jy_cj(stu.cj1); do printf(nttplease input record of english:); scanf(%f,&stu.cj2); while(!jy_cj(stu.cj2); do printf(nttplease input record of total:); scanf(%f,&stu.cj3); while(!
14、jy_cj(stu.cj3); fwrite(&stu,sizeof(struct stutype),1,fp); /*写文件 */ fclose(fp); /*关闭文件 */ /*-8-*/ void search_xuehao() /*按学号查询 */ file *fp; int flag; struct stutype stu,stud; fp=fopen(stu.dat,rb); if(fp=null) /*若文件打不开则输出下面的信息*/ printf(ttfile opens error!ntttpress anykey back.); getch(); return; e
15、lse do puts(nttpress# or search); do printf(ttplease input the sn what you want:); scanf(%10s,stu.no); while(!jy_no2(stu.no); if(strcmp(stu.no,#)=0)break; /*若输入 “#”则结束循环 */ flag=0; rewind(fp); while(fread(&stud,sizeof(struct stutype),1,fp) /*检查文件指针结束*/ if(strcmp(stu.no,stud.no)=0) /*比较学号 */ puts
16、(ttthe record of this student:); printf(ttsn:%sn,stud.no); printf(ttname:%sn,stud.xm); printf(ttage:%.1fn,stud.age0); printf(ttchinese:%.1fn,stud.cj0); printf(ttmath:%.1fn,stud.cj1); printf(ttenglish:%.1fn,stud.cj2); printf(tttotal:%.1fn,stud.cj3); flag=1; /*记录学号是否查到 */ if(flag=0)puts(ttundefined sn
17、); while(strcmp(stu.no,#)!=0); fclose(fp); /*关闭文件 */ /*-9-*/ void search_xingming() /*按姓名查找 */ file *fp; int flag=0; struct stutype stu,stud; fp=fopen(stu.dat,rb); if(fp=null) printf(ttfile opens error!nttpress anykey back.); getch(); return; else do do printf(ttplease input the name of the student
18、what you want:); scanf(%10s,stu.xm); while(!jy_xm(stu.xm); rewind(fp); /*文件指针指向头 */ while(fread(&stud,sizeof(struct stutype),1,fp) if(strcmp(stu.xm,stud.xm)=0) /*比较姓名是否相同 */ puts(ttthe name of the student is:); printf(ttsn:%sn,stud.no); printf(ttname:%sn,stud.xm); printf(ttage:%.1fn,stud.age0);
19、printf(ttchinese:%.1fn,stud.cj0); printf(ttmath:%.1fn,stud.cj1); printf(ttenglish:%.1fn,stud.cj2); printf(tttotal:%.1fn,stud.cj3); flag=1; /*记录姓名是否被查到 */ if(flag=0)puts(nttundefined name!); puts(ttcontinue?(y-yes,else key back)?); while(getch()=y); fclose(fp); /* puts(ttpress anykey to continue.);*/
20、 /* getch();*/ /*-10-*/ int listfile(void) /*输出文件 ,列出所有学生成绩 */ file *fp; int rec=0; /*记录学生人数 */ struct stutype stu; fp=fopen(stu.dat,rb); if(fp=null) printf(ttfile opens error!nttpress anykey back.); getch(); return 1; else printf(ttrecords of the students:n); printf(ttsnttnametchinesetmathtenglisht
21、totaln); rewind(fp); while(fread(&stu,sizeof(struct stutype),1,fp) /*每读取一个长度的数据就输出*/ printf(tt%s,stu.no); printf(t%s,stu.xm); printf(t%.1f,stu.age); printf(t%.1f,stu.cj0); printf(t%.1f,stu.cj1); printf(t%.1f,stu.cj2); printf(t%.1f,stu.cj3); printf(n); rec+; if(rec%20=0) /*20 个学生成绩,停一下 */ printf(
22、ttpress anykey to continue.n); getch(); fclose(fp); /*关闭文件 */ printf(ttcontinue.); getch(); /*-11-*/ void statistics() /*统计及格和优秀人数 */ file *fp; int rec=0,unpass4=0,good4=0; /*rec- 记录个数 ,即人数,unpass- 重修人数 ,good- 优秀人数 */ float highest4=0,score4=0; /*highest- 最高分 ,score- 总分*/ struct stutype stu; fp=fope
23、n(stu.dat,rb); if(fp=null) printf(ttfile opens error!nttpress anykey back.); getch(); return; else rewind(fp); while(fread(&stu,sizeof(struct stutype),1,fp) rec+; score0=score0+stu.cj0; /*语文*/ if(stu.cj0=80)good0+; if(highest0stu.cj0)highest0=stu.cj0; score1=score1+stu.cj1; /*数学*/ if(stu.cj1=80)
24、good1+; if(highest1stu.cj1)highest1=stu.cj1; score2=score2+stu.cj2; /*英语*/ if(stu.cj2=80)good2+; if(highest2stu.cj2)highest2=stu.cj2; score3=score3+stu.cj3; /*总评*/ if(stu.cj3=60)unpass3+; if(stu.cj3=80)good3+; if(highest3stu.cj3)highest3=stu.cj3; if(rec=0) /*可以防止记录为 0 是 rec 作除数而造成的错误 */ printf(ttyou
25、 didt input the name!press anykey back.); getch(); return; else printf(t chineset matht englishttotaln); /* 输出统计信息 */ printf(taverage: %.1ft %.1ft %.1ftt%.1fn,score0/rec,score1/rec,score2/rec,score3/rec); printf(ttop record: %.1ft %.1ft %.1ftt%.1fn,highest0,highest1,highest2,highest3); printf(tnumbe
26、r of good students: %dtt %dt %dtt %dn,good0,good1,good2,good3); printf(tnumber of unpassed students:%dtt %dt %dtt %dn,unpass0,unpass1,unpass2,unpass3); fclose(fp); printf(ntttpress anykey to continue.); getch(); /*-12-*/ void helpmessage() clrscr(); printf(nnnnn chi xi tong shi lao shi suo bu zhi zu
27、oye bianzhi ercheng,gai xitong juyou cunchu xuesheng shuju,an xuehao,xingming chaxun,liechu xuesheng chengji he tongjigongneng.n n shiyongfangfa:xitong shulu shuju hou,jiangzai dangqian muluzhong jianli yige mingwei stu.dat wenjian,yongyubaocun shulu de shuju.xuehao shulu zhineng yong shuzi shulu qi
28、e xuehao zhineng shi10wei.xingming shulu fuhe zhongguoren de xingming,zhineng yong zhongwen pinying,qie zuichangwei5 ge hanzhi.n chi chenxu zai turbo c2.0 xia yunxing tongguo nn ); getch(); /*-13-*/ int getkey(void) /*此函数返回一个按键的数值*/ int key; key=bioskey(0); /*bioskey 为调用 bios 键盘接口 */ if(key8) /*位移*/
29、 key=key&0 x00ff; return key; /*返回按键 */ /*-14-*/ void main() int key; struct date d; /*定义时间结构体 */ getdate(&d); /*读取系统日期并把它放到结构体d 中*/ clrscr(); /*清除屏幕 */ printf(nnnnn); printf(t =n); /*版本信息 */ printf(n); printf(tt the system of students records management 1.0 n); printf(n); printf(n); printf(tt builder: xg042-wzm ys hyf wq n); printf(tt teacher:song zheyuann); printf(tt time:200575 n); printf(n); printf(t =n); printf(tttpress anykey to continue.); /*while(!kbhit();*/ getch();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游景区运营总监的招聘与面试要点
- 客户服务工程师的出差管理与报销流程
- 零售业中知识产权保护的实施与策略
- 护理法律与医疗质量控制
- 护理健康教育与健康教育合作
- 护理病历书写的基本标准
- 护理学考研:精神科护理学核心考点
- 2025年量子近似优化在机器人路径规划中的应用
- 零售业企业研发部主管招聘策略
- 旅游景区开发人员招聘面试须知
- 2026年甘肃天水清水县选聘大学生村文书64人考试备考试题及答案解析
- 2026消防安全标志设置要求标准全面解读
- 2026年山东东营市高三一模高考生物试卷试题(含答案)
- 2026辽宁沈阳汽车集团有限公司所属企业华亿安(沈阳)置业有限公司下属子公司招聘5人笔试备考题库及答案解析
- 2026年福建龙岩市高三一模高考语文试卷试题(含答案详解)
- 2025届贵州省高三学业水平选择性考试适应性测试生物试题(解析版)
- 2026年苏州工业职业技术学院高职单招职业适应性测试备考题库含答案解析
- 英语教学反思案例及改进策略
- 炎德·英才大联考湖南师大附中2026届高三月考试卷(五)英语试题(含答案详解)
- 检验检测机构质量手册程序文件质量记录合集(依据2023年版评审准则)
- 冀教版(冀人版)科学六年级下册全册教案
评论
0/150
提交评论