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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

学生成绩信息管理系统 课程设计2.docx

1、学生成绩信息管理系统 课程设计2 软件设计报告题 目: 学生成绩信息管理系统 院系名称:电子信息工程学院专业名称:电子信息工程班 级:电子0902班内序号: 学生姓名 : 指导教师: 时间:2010年6月7日 至2010年6月18日 一、课程设计目的1.熟悉C语言程序的编辑、编译链接和运行的过程,至少能够用一种编译器较熟练地编辑、编译及调试程序。 2.掌握C语言数据类型,如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。 3.熟练运用if语句和switch语句以及嵌套应用。涉及循环调用的,了解并掌握三种控制语句while、do-while和for语句。 4.学习并掌握C语言定义函数的

2、基本方法、声明函数及调用函数的方法和过程。 5. 掌握文件和文件指针的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。 6.掌握结构体类型变量、数组的定义和使用。 7.了解指针和链表的概念,掌握指针的定义和使用指针变量的方法以及链表的正确用法。灵活使用链表来储存学生信息。 8. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串二、课程设计内容简介学生成绩管理主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序(3)能查询学生成绩,不及格科目及学生名单(4

3、)能按班级输出学生的成绩单开发工具Visual C+ 6.0运行平台Windows XP三、需求分析系统功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分。(3)能根据学生的平均成绩进行排序(4)能查询学生总成绩,平均分(5)能按学号,姓名输出学生的成绩单(6)可以保存到文件(附加功能)(7)可以从文件读入已有的文件(附加功能)(8)以菜单方式工作性能描述:各种功能都可以满足;程序相对较小,因而运行时反应比较迅速,不存在响应不及时地问题。四、概要设计1.学生成绩管理系统模块图:2.程序可以满足以下功能:1.各模块间通过菜单切换和调用2.主函

4、数通过调用菜单函数实现对各功能模块的调用,各功能模块间根据需要可相互调用。3.程序能够保证各模块功能的独立和数据共享。4.相近功能以级联菜单的形式集成。五、详细设计1.主要功能模块的流程图如下:主函数定义变量 输入 正确 输入密码 错误进入界面重新输入sum=read_message();Do循环(choice!=0)输入数字(05)进行选择Case1input_message();break;Case2output_message(); break;Case3insert_message(); break;Case4del_message();break;Case5sort_message(

5、);break;Case6revise_message();break;Case7read_message();break;Case8inqure_message();break;Case9save_messsage();break;Case10Count_message();break;Case0Break;Clrscr();save_message(sum);添加信息:定义变量Clrscr();Do循环(flag=1)输入信息 choice= Y|ygetch();elseFlag=1;Flag=0;查询模块:定义变量Clrscr();循环(choice!=0)请选择要查询的序号:1姓名;

6、2学号Case 1按姓名查询Case 2按学号查询输入Choice=1|2数字Choice=0继续循环退出循环输出模块:定义变量clrscr();Do循环(si.num!=0)输出信息i+;修改模块:定义变量Do循环(flag=1)clrscr();输入数字(08)进行Case1:姓名 Case2:英语 Case3:数学 Case4:计算机Case0:返回主菜单重新求总成绩和平均分 choice= Y|y getch(); elseflag=1;flag=0;排序模块:定义变量Do循环(choice!=0)clrscr();输入数字(06)进行Case 1: sort_math();break

7、;case 2: sort_english();break;Case3:_computer();break;Case 0: break; 保存模块定义变量(fp=fopen(“student_list.txt” 是 ,“wb”)=NULL 否输出文件错误;return 0;For循环if(fwrite(&si,sizeof是(struct s_type),1,fp)!=1) 否写文件错误读取模块定义变量 if(fp=fopen(student_list.txt是rb)=NULL) 否输出文件错误;returnwhile循环while(feof(fp)!=1)if(si.num=0) 是 否 b

8、reak;else i+;fclose(fp);2. 主要函数说明:mangercode_message ()类型 void密码模块 只有密码正确才可打开,以便使用者保护所存储的信息。read_message()类型 void读取模块 可以将所处出的信息读取出来,方便使用。save_message()类型 void保存模块 可将所输入的信息以文件形式保存起来,具体输入信息会以txt格式保存。input_message()类型 void录入模块 以键盘形式输入学生的成绩信息。output_message()类型 void浏览模块 将所输入的学生信息打印输出,出现在显示器上。inqure_mess

9、age()类型 void查询模块 可按学生学号和学生姓名查询学生成绩 insert_message()类型 void添加模块 可随时添加一名学生信息。del_message()类型 void删除模块 可按学号删除其中一名学生的所有成绩信息。sort_message()类型 void排序模块 可将录入的学生成绩信息按平均分由大到小排序。revise_message()类型 void修改模块 可读学生的姓名学号及各科成绩进行修改。count_message()类型 void统计模块 将学生的所有成绩相加,并按总成绩排名。manger_message()类型 void管理模块 显示该程序的主菜单。六

10、、调试与测试1总体过程编译和调试工具:选择Visual C+6.0,该工具稳定,其中有一个强大的调试工具,我比较熟悉。2遇到的问题在两周的时间里,不断地对程序及各模块进行修改、编译、调试,其间遇到很多问题,这里只选几个有代表性的具体讨论。(1)调试“创建”模块时,遇到如下的一段程序:运行中,当输入错误的成绩时,程序可能会进入死循环。据分析,程序本身并没有错误,但由于涉及指针的操作,所以在运行中出现了未知的错误。开始时怀疑是程序代码的缺陷,但经过反反复复的分析和调试后确定了原因,。通过这一问题的深入研究,使我对C语言的特性有了进一步的了解。(2) 借用了老师所给例子中的一个创建链表函数,与习惯不

11、同的是,该函数是从尾到头来建立的。与顺序建立的链表相比,在实际运行中并没有多大区别,但不失为一种创新的思路,值得我们学习。(3)测试用例具有一定的广泛性。创建链表时输入了不同班级、学期的成绩,而且及格与不及格交叉输入,经过多番调试,运行结果也符合预期。说明程序具有一定的可靠性和稳定性。七、出现错误C:Documents and SettingsXY桌面myprj3.c(24) : error C2065: student : undeclared identifierError executing cl.exe. 未声明的标志 c:documents and settingsxy桌面myprj

12、15.c(36) : warning C4013: getch undefined; assuming extern returning int getch未定义 ,假定一个虚伪指令返回整型c:documents and settingsxy桌面myprj15.c(50) : fatal error C1004: unexpected end of file found 期待的结尾未建立c:documents and settingsxy桌面myprj2.c(32) : error C2143: syntax error : missing ; before error C2447: miss

13、ing function header (old-style formal list?) 前缺少;warning C4060: switch statement contains no case or default labels switch指令没有包含case和default符号error C2043: illegal break 非法的breakexpected constant expression 预期的常量表达式cannot allocate an array of constant size 0 不能分配一个数组的常量0的大小八、参考文献:1. 王曙燕主编,C语言程序设计,科学出

14、版社,2005年2. 谭浩强,C程序设计,清华大学出版社 2002年#include#include#include#include#define N 10#define CODE 321int sum;void mangercode_message() /*密码模块*/ int m; void manger_message(); printf(n *请输入一个密码*n); scanf(%d,&m); switch(m) case 321: printf(n 进入下一菜单nn); manger_message(); default: printf(n 你不能进入n); break; print

15、f(n 按任意键返回主菜单n); struct stu_type int number; char name20; int math; int english; int computer; int score; int average;stuN;int read_message() FILE *fp; int i; fp=fopen(d:studentscore.txt,rt); if(fp=NULL) printf( 无学生信息,不能读n); else i=0; for(;) if(fread(&stui,sizeof(struct stu_type),1,fp)!=1) break; i+

16、; return i; fclose(fp); void save_message() /*保存模块*/ FILE *fp;int i;fp=fopen(d:studentscore.txt,wt+);if(fp=NULL) printf( 不能读n);for(i=0;i=sum;i+) fwrite(&stui,sizeof(struct stu_type),1,fp);fclose(fp);int input_message() /*录入模块*/ int i=0,choice; do printf(nn第%d个学生,i+1); printf(nn 学号:); scanf(%d,&stui.

17、number); printf(nn 姓名:); getchar(); scanf(%s,stui.name); printf(nn 数学); scanf(%d,&stui.math); printf(nn 英语); scanf(%d,&stui.english); printf(nn 计算机); scanf(%d,&puter); stui.score=stui.math+stui.english+puter; stui.average=stui.score/3; printf(nn 总成绩为:%d,stui.score); printf(nn 平均分为:%d,stui.average);

18、i+; sum=i; printf(nn 是否继续?(1.是 2.否); scanf(%d,&choice); if(choice=1) printf(n 继续!); else break; while(choice=1); printf(n 学生成绩完毕); printf(nn 按任意键返回主菜单!); getch(); return (-i); system(cls);void output_message(int i) /*浏览模块*/ int j; printf(nn 学生成绩表n); printf(n*); printf(nn 学号 姓名 数学 英语 计算机 总成绩 平均分); pr

19、intf(nn-); for(j=0;j=i;j+) printf(nn%d %s %d %d %d %d %d,stuj.number,stuj.name,stuj.math,stuj.english,puter,stuj.score,stuj.average); printf(nn); printf(n*n); printf( 按任意键返回主菜单!); getch(); system(cls);void inqure_num() /*查询模块*/ int i,j=0,inqure_num; printf(n输入学生学号:); scanf(%d,&inqure_num); for(i=0;i

20、N;i+) if(stui.number=inqure_num) printf(n 该学生信息n); printf(nn-n); printf(nn学号-姓名-数学-英语-计算机-总成绩-平均分nn); printf(%3d%8s%5d%7d%8d%10d%14d,stui.number,stui.name,stui.math,stui.english,puter,stui.score,stui.average); printf(nn-n); else j+; if(j=N) printf(n 这个学生不存在!); printf(nn 按任意键返回主菜单!); getch(); system(

21、cls);void inqure_name() int i,j=0; char inqure_name20; printf(n输入学生姓名:); scanf(%s,inqure_name); for(i=0;iN;i+) if (strcmp(stui.name,inqure_name)=0) printf(n 该学生信息n); printf(nn-n); printf(nn学号-姓名-数学-英语-计算机-总成绩-平均分nn); printf(%3d%8s%5d%7d%8d%10d%14d,stui.number,stui.name,stui.math,stui.english,puter,s

22、tui.score,stui.average); printf(nn-n); else j+; if(j=N) printf(n 这个学生不存在!); printf(nn 按任意键返回主菜单!); getch(); system(cls);void inqure_message() int choice; do printf( 1.按学号查询nn); printf( 2.按姓名查询nn); printf( 0.退出nn); scanf(%d,&choice); switch(choice) case 1:inqure_num();break; case 2:inqure_name();brea

23、k; case 0:break; while(choice!=0);int insert_message(int i) /*添加模块*/ int choice; char flag; printf(nn 增加一个学生信息!); printf(n*); do i+; stui.number=sum+1; printf(nn 新学生的学号); scanf(%d,&stui.number); printf(nn 新学生的姓名); getchar(); scanf(%s,&stui.name); printf(nn 数学成绩); scanf(%d,&stui.math); printf(nn 英语成绩

24、); scanf(%d,&stui.english); printf(nn 计算机成绩); scanf(%d,&puter); stui.score=stui.math+puter+stui.english; stui.average=stui.score/3; printf(nn 总成绩%d,stui.score); printf(nn 平均分%d,stui.average); sum=i; printf(nn 是否继续?(1.是 2.否); scanf(%d,&choice); if(choice=1) printf(n 继续); flag=1; else flag=0; while(flag=1); printf(n 按任意键返回主菜单!); return i; system(cls);void del_message() /*删除模块*/ int i=0,j,choice,del_num; do printf(n 输入要删除的学号); scanf(%d,&del_num); for(i=0;iN;i+) if(stui.number=del_num) printf(nn 删除他的信息); for(j=i;jN;j+) stuj=stuj+1; printf(nn 删除他的信息:n); printf(nn 学号 姓名 数学 英语 计算机 总成绩 平均分);

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

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