




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
包括:学生基本信息,如学号,姓名,性别,年龄,等;2.学生选修课程基本信息,包括课程编号,课程名称,考试成绩,平时成绩,综合成绩,学分,重修否,若重修,需考虑重修学期,重修成绩,并考虑多次重修情况。只能用C语言,要有用户界面,必须用结构体和链表等数据结构。/*-1-*/#include #include /*头文件*/#include#include#include#include#include#include #define NULL 0#define ESC 0x001b /* 退出 */#define F1 0x3b00 /* 查看帮助信息,调用HelpMassage()函数 */#define F2 0x3c00 /*输入学生成绩*/#define F3 0x3d00 /*按学号查找*/#define F4 0x3e00 /*按姓名查找*/#define F5 0x3f00 /*列出所有学生成绩*/#define F6 0x4000 /*统计*/struct stuType /*定义结构体变量*/ char NO11; /*学号长度为10*/ char XM10; char AGE2; /*年龄长度为2*/ float CJ4; /*包含4门成绩*/;/*-2-*/int JY_NO(char *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)!=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); /*使文件指针指向头*/ 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(ttChinese:%.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_num)!=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 SN 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);/*姓名只能用英文请重新输入*/ return 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 Error! 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 stu,stu0=,; /*对stu0xianfuzhi*/ 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); 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,&stu.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(!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; else 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(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); 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 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); 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.);*/ /* 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(ttSNttNametChinesetMathtEnglishtTotaln); 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(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=fopen(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)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 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(tNumber 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 zuoye 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 qie xuehao zhineng shi10wei.xingming shulu fuhe zhongguoren de xingming,zhineng yong zhongwen pinying,qie zuichangwei5 ge hanzhi.n chi chenxu zai Turbo C2.0xia yunxing tongguo nn ); getch();/*-13-*/int GetKey(void) /*此函数返回一个按键的数值*/ int key; key=bioskey(0); /*bioskey为调用BIOS键盘接口*/ if(key8) /*位移*/ key=key&0x00ff; 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执业药师考前冲刺练习及答案详解(有一套)
- 应急处置安全培训内容课件
- 2025年兰州资源环境职业技术大学考核招聘急需紧缺专业硕士研究生模拟试卷及答案详解(典优)
- 2024-2025学年度安阳学院单招《语文》综合提升测试卷附参考答案详解(夺分金卷)
- 2024-2025学年文化教育职业技能鉴定能力提升B卷题库附参考答案详解(典型题)
- 江西科技学院电视播音主持期末考试考前冲刺练习题附答案详解(预热题)
- 2025年工业互联网平台网络切片技术在工业互联网数据安全中的应用报告
- 2025年罕见病药物研发激励政策下产业链上下游企业合作模式研究报告
- 2025年生态修复工程中生态系统服务功能评估与生态系统服务评估技术人才培养体系
- 铁塔组立施工合同
- 电力系统分析基础教案-按课时
- 台达伺服asda-b2系列技术手册
- 云南省三校生语文课件
- 园艺产品的主要贮藏方法与原理课件
- 社会及其构成要素
- 环境风险评价(共84张)课件
- 函数极限说课
- 农业经济学ppt全套教学课件
- 果蔬贮藏保鲜概论:第五章 采收与采后商品化处理(第2节 分级 Sorting)
- 弱电桥架安装及电缆敷设施工方案(PPT)
- FQFNew8.0+供应商自审表格使用手册
评论
0/150
提交评论