ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:32.37KB ,
资源ID:8371648      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8371648.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生成绩管理系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

学生成绩管理系统.docx

1、学生成绩管理系统 学生成绩管理系统一、 课程设计的目的1、 进一步掌握和利用C语言进行程设计的能力; 2、 进一步理解和运用结构化程序设计的思想和方法 3、 初步掌握开发一个小型实用系统的基本方法 4、 学会编辑一个较长程序的基本方法 5、 学会利用流程图表示算法 6、 掌握书写程序设计的能力(书写课程设计报告)二、 设计方法论证1、 设计思路可以通过所学过的方法检查姓名和输入学生学号的正确性来建设程序。因为学生的分数是0-100之间,所以可以通过IF语句判断输入的分数是否合理来建立程序。我们用指针、读取等知识可以建一个学生信息的列表,这样我们可以通过姓名的查找来了解学生的成绩,还可以统计成绩

2、优秀的人的个数。最后附加时间、指导教师等完善课程设计,使程序更充实。2、 设计方法和基本原理1、功能要求:要求完成以下功能:1)判断输入的姓名和学号是否存在2)从屏幕上读取一个学生的信息(包括学号、姓名、年龄)并将信息存入到数据文件中。3)能够按学号、姓名、年龄对学生的信息进行检索并将检索结果显示在屏幕上。4)可以按学号录入学生成绩(语文、数学、英语),并求出成绩及格和优秀的雪生。5)要求有错误提示功能,例如姓名只能以字符形式输入,输入错误提示重新输入。2、分析系统中的各个函数之间的关系;1)、f1()查看学生信息用来查看学生信息记录,如学生学号、姓名、年龄等。2)、f2()输入学生成绩3)、

3、f3()按学号查找可按“学号”查询;能给方式出查询记录的信息;查询的信息不存在,输出提示信息。4)、f4()按姓名查找可按“姓名”查询方式;能给出查询记录的信息;查询的信息不存在,输出提示信息。5)、f5()列出所有学生成绩6)、f6()统计 为查找提供方便。3、 流程图 4、 程序 #include #include /*头文件*/#include#include#include#include#include#include#define NULL 0#define ESC /* 退出 */#define F1 /* 查看帮助信息,调用HelpMassage()函数 */#define F

4、2 /*输入学生成绩*/#define F3 /*按学号查找*/#define F4 /*按姓名查找*/#define F5 /*列出所有学生成绩*/#define F6 /*统计*/suct stuType /*定义结构体变量*/ char NO11; /*学号长度为10*/ char XM10; float CJ4; /*包含4门成绩*/;int JY_NO(char *stu_num,FILE *fp) /*检验学号的正确性*/ suct stuType stud; int NO; char *p=stu_num; if(scmp(stu_num,#)=0) return 1; /*若输

5、入#返回真值,不再循环输入*/ while(*p!=0) /*学号必须是数字,否则返回重新输入*/ NO=(int)*p; if(NO57) puts(非法学号!请重新输入!n); return 0; else p ; /*指针加1*/ if(slen(stu_num)!=10) /*若学号长度不为10,则返回重新输入*/ puts(学号长度不对!n); return 0; if(getchar()!=n) /*若学号后面的字符不是回车符,则学号长度大于10*/ printf(学号长度大于10个!请重新输入!n); dowhile(getchar()!=n); /*用getchar接收多余的字

6、符*/ return 0; else rewind(fp); /*使文件指针指向头*/ while(!feof(fp) /*若文件指针未到结尾,就继续执行下面的循环,feof遇到文件结束符返回非零值,否则返回0*/ fread(&stud,sizeof(suct stuType),1,fp); /*读取一定长度的数据*/ if(scmp(stu_num,stud.NO)=0) /*学号的唯一性*/ printf(学号重复,请重新输入!n); printf(该学生成绩如下:n); printf(语文:%.1fn,stud.CJ0); printf(数学:%.1fn,stud.CJ1); prin

7、tf(英语:%.1fn,stud.CJ2); printf(总评:%.1fn,stud.CJ3); return 0; return 1;int JY_NO2(char *stu_num) /*检验学号*/ int NO; char *p=stu_num; if(scmp(stu_num,#)=0)return 1; /*若输入“#”,则返回真值结束*/ if(slen(stu_num)!=10) /*学号长度为10*/ puts(ttt学号长度不对!n); return 0; while(*p!=0) /*学号必须用数字,若包含有字母,或其它字符则返回假值重新输入*/ NO=(int)*p;

8、 if(NO57) puts(ttt非法学号!请重新输入!n); return 0; else p ; /*指针加1*/ if(getchar()!=n) /*检验学号长度是否大于10,并把多余的字符去掉*/ printf(ttt学号长度大于10个!请重新输入!n); dowhile(getchar()!=n); return 0; return 1;int JY_XM(char *stu_XM) /*检验姓名*/ int PD; char *p; p=stu_XM; while(*p!=0) /*姓名只能用中文*/ PD=(int)*p; if(PD0) puts(姓名只能用中文,请重新输入

9、!n); return 0; else p ; /*使指针加1,指向下一汉字*/ if(getchar()!=n) /*姓名长度不得大于5个*/ printf(姓名长度大于5个!请重新输入!n); dowhile(getchar()!=n); return 0; return 1; /*字符串全为汉字返回真*/int JY_CJ(float stu_CJ) /*学生成绩只能在0100之间*/ if(stu_CJ100) printf(输入错误,成绩只能在0100之间!n); return 0; return 1;void CreatFile() /*输入文件*/ FILE *fp; suct

10、stuType stu,stu0=,; /*对stu0先赋值*/ fp=fopen(stu.dat,wb ); /*打开或创建一个二进制文件,打开时将原来的内容删除*/ if(fp=NULL) printf(文件打开失败!n按任意键返回.); getch(); return; else while(1) stu=stu0; do printf(n请输入学号:); /*输入学号并检验其正确性*/ scanf(.s,stu.NO); while(!JY_NO(stu.NO,fp); if(scmp(stu.NO,#)=0)break; do printf(n请输入姓名:); /*输入姓名并检验其正

11、确性*/ scanf(.s,stu.XM); while(!JY_XM(stu.XM); do printf(请输入语文成绩:); /*输入成绩并检验其正确性*/ scanf(%f,&stu.CJ0); while(!JY_CJ(stu.CJ0); do printf(n请输入数学成绩:); /*同上*/ scanf(%f,&stu.CJ1); while(!JY_CJ(stu.CJ1); do printf(n请输入英语成绩:); scanf(%f,&stu.CJ2); while(!JY_CJ(stu.CJ2); do printf(n请输入总评成绩:); scanf(%f,&stu.CJ

12、3); while(!JY_CJ(stu.CJ3); fwrite(&stu,sizeof(suct stuType),1,fp); /*写文件*/ fclose(fp); /*关闭文件*/void Search_Xuehao() /*按学号查询*/ FILE *fp; int flag; suct stuType stu,stud; fp=fopen(stu.dat,rb); if(fp=NULL) /*若文件打不开则输出下面的信息*/ printf(文件打开失败!n按任意键返回.); getch(); return; else do puts(n输入“#”结束查询); do printf(

13、请输入要查询的学号:); scanf(.s,stu.NO); while(!JY_NO2(stu.NO); if(scmp(stu.NO,#)=0)break; /*若输入“#”则结束循环*/ flag=0; rewind(fp); while(fread(&stud,sizeof(suct stuType),1,fp) /*检查文件指针结束*/ if(scmp(stu.NO,stud.NO)=0) /*比较学号*/ puts(t该学生成绩如下:); printf(学号:%sn,stud.NO); printf(姓名:%sn,stud.XM); printf(语文:%.1fn,stud.CJ0

14、); printf(数学:%.1fn,stud.CJ1); printf(英语:%.1fn,stud.CJ2); printf(总评:%.1fn,stud.CJ3); flag=1; /*记录学号是否查到*/ if(flag=0)puts(无此学号!); while(scmp(stu.NO,#)!=0); fclose(fp); /*关闭文件*/void Search_Xingming() /*按姓名查找*/ FILE *fp; int flag=0; suct stuType stu,stud; fp=fopen(stu.dat,rb); if(fp=NULL) printf(文件打开失败!

15、n按任意键返回.); getch(); return; else do do printf(请输入要查询的学生姓名:); scanf(.s,stu.XM); while(!JY_XM(stu.XM); rewind(fp); /*文件指针指向头*/ while(fread(&stud,sizeof(suct stuType),1,fp) if(scmp(stu.XM,stud.XM)=0) /*比较姓名是否相同*/ puts(该学生姓名如下:); printf(学号:%sn,stud.NO); printf(姓名:%sn,stud.XM); printf(语文:%.1fn,stud.CJ0);

16、 printf(数学:%.1fn,stud.CJ1); printf(英语:%.1fn,stud.CJ2); printf(总评:%.1fn,stud.CJ3); flag=1; /*记录姓名是否被查到*/ if(flag=0)puts(n无此学生!); puts(是否继续(y-继续,其他返回)?); while(getch()=y); fclose(fp); /* puts(请按任意键继续.);*/ /* getch();*/int ListFile(void) /*输出文件,列出所有学生成绩*/ FILE *fp; int REC=0; /*记录学生人数*/ suct stuType st

17、u; fp=fopen(stu.dat,rb); if(fp=NULL) printf(文件打开失败!n按任意键返回.); getch(); return 1; else printf(学生成绩如下:n); printf(学号t姓名t语文t数学t英语t总评n); rewind(fp); while(fread(&stu,sizeof(suct stuType),1,fp) /*每读取一个长度的数据就输出*/ printf(%s,stu.NO); printf(t%s,stu.XM); printf(t%.1f,stu.CJ0); printf(t%.1f,stu.CJ1); printf(t%

18、.1f,stu.CJ2); printf(t%.1f,stu.CJ3); printf(n); REC ; if(REC =0) /*每输出20个学生成绩,停一下*/ printf(请按任意键继续.n); getch(); fclose(fp); /*关闭文件*/ printf(请按任意键继续.); getch();void Statistics() /*统计及格和优秀人数*/ FILE *fp; int REC=0,pass4=0,good4=0; /*REC-记录个数,即人数,pass-及格人数,good-优秀人数*/ float highest4=0,score4=0; /*highes

19、t-最高分,score-总分*/ suct stuType stu; fp=fopen(stu.dat,rb); if(fp=NULL) printf(文件打开失败!n按任意键返回.); getch(); return; else rewind(fp); while(fread(&stu,sizeof(suct stuType),1,fp) REC ; score0=score0 stu.CJ0; /*语文*/ if(stu.CJ0=60)pass0 ; if(stu.CJ0=80)good0 ; if(highest0=60)pass1 ; if(stu.CJ1=80)good1 ; if(

20、highest1=60)pass2 ; if(stu.CJ2=80)good2 ; if(highest2=60)pass3 ; if(stu.CJ3=80)good3 ; if(highest3stu.CJ3)highest3=stu.CJ3; if(REC=0) /*可以防止记录为0是REC作除数而造成的错误*/ printf(未输入学生记录!按任意键返回.); getch(); return; else printf(语文t 数学t 英语t 总评n); /*输出统计信息*/ printf(ttt平均分: %.1ft %.1ft %.1ft %.1fn,score0/REC,score1/

21、REC,score2/REC,score3/REC); printf(ttt最高分: %.1ft %.1ft %.1ft %.1fn,highest0,highest1,highest2,highest3); printf(ttt优秀人数:%dt %dt %dt %dn,good0,good1,good2,good3); printf(ttt及格人数:%dt %dt %dt %dn,pass0,pass1,pass2,pass3); fclose(fp); printf(n请按任意键继续.); getch(); /*从键盘读取一个字符,但不显示于屏幕*/ void HelpMessage()

22、clrscr(); printf(nnnnn 此系统是应老师所布置的作业编制而成,该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。n n 使用方法:系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓名输入符合中国人的姓名,只能用中文,且最长为5个汉字。n 此程序在Turbo C2.0下运行通过nn 由于是初学者,水平有限此系统还有许多不够完整和严密性,敬请指正!); getch();int GetKey(void) /*此函数返回一个按键的数值*/ int key; key=bioskey(0);

23、 /*bioskey为调用BIOS键盘接口*/ if(key8) /*位移*/ key=key&0x00ff; return key; /*返回按键*/void main() int key; suct date d; /*定义时间结构体*/ geate(&d); /*读取系统日期并把它放到结构体d中*/ clrscr(); /*清除屏幕*/ printf(nnnnn); printf(*n); /*版本信息*/ printf(学生成绩管理系统1.0 n); printf(*n); printf( 制作群: 404 1工作室 n); printf( 指导老师:- n); printf( 制作时

24、间:2004年5月 n); printf(*n); printf(请按任意键继续.); /*while(!kbhit();*/ getch(); /*从键盘读取一个字符,但不显示于屏幕*/ system(cls); /*调用DOS的清屏函数,TC中可用clrscr代替*/ while(1) /*主菜单*/ printf(nnnnn); printf(*n); printf(*tF1 -帮助 *n); printf(*tF2 -输入数据并存入文件 *n); printf(*tF3 -根据学号查询成绩 *n); printf(*tF4 -根据姓名查询成绩 *n); printf(*tF5 -输出文

25、件内容 *n); printf(*tF6 -统计及格和优秀人数 *n); printf(*tESC-退出系统 *n); printf(*n); printf(n请输入选项tt%d年%d月%d日nn,d.da_year,d.da_mon,d.da_day); /*提示信息,并显示当前系统日期*/ key=GetKey(); /*调用自定义函数,读取一个键*/ switch(key) case F1: HelpMessage(); break; case F2: CreatFile(); break; case F3: Search_Xuehao(); break; case F4: Search_Xingming();break; case F5: L

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1