C语言学生成绩管理系统_第1页
C语言学生成绩管理系统_第2页
C语言学生成绩管理系统_第3页
C语言学生成绩管理系统_第4页
C语言学生成绩管理系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内蒙古科技大学课程设计说明书内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 学生成绩管理系统学生姓名:学 号:专 业:班 级:指导教师:27内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目学生成绩管理系统指导教师时间2012.12.312013.1.4一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能w力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。某班学生成绩管理

2、,包括以下功能:v 从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里v 打开文件后,计算每个人的总分和平均分,排序并保存v 具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)v 具有插入、删除和修改功能v 具有输出文件数据信息的功能三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和

3、花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天  选择课程设计题目,分析课题的要求第二天  编程第三天  编程及调试第四天  写课程设计报告第五天  提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工业出版社

4、目 录内蒙古科技大学课程设计任务书第一章 需求分析31.1引言31.2任务概述31.3数据描述31.4功能需求31.5性能需求4第二章概要设计42.1总体设计42.2数据类型设计(或数据结构设计)52.3接口设计 /函数声明52.4运行界面设计6第三章详细设计83.1输入模块设计83.2输出模块设计93.3查找模块设计93.4排序模块设计103.5保存及读取模块设计11第四章测试分析144.1测试程序执行情况14第五章课程设计总结15附录:程序代码16参考文献35第一章 需求分析1.1 引言为方便对学生成绩进行高效的管理,编写该程序以提高学生成绩管理效率。使用该程序之后,学校管理者可以查询某位

5、学生、某个科目的成绩情况,还可以对学生成绩进行排名,对学生的数据进行修改和删除。通过本系统可以很好的掌握学生成绩的分布,减轻管理人员的负担,也使学生的成绩和信息长时期的保留1.2 任务概述本课程设计主要解决学生成绩管理问题。使用计算机进行信息管理,不仅提高了工作效率,而且大大的提高了其安全性.尤其对于复杂的信息管理,计算机能够充分发挥它的优越性.学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。在课程设计中,系统开发平台为Windows XP,程序设计设计语言采用Visual C+,程序运行平台为Windows 2000/XP。在程序设计中,采用了面

6、向对象解决问题的方法。程序通过调试运行,初步实现了设计目标。1.3 功能需求1) 录入数据:将学生姓名、语文、数学、英语成绩写入文件。2) 增加人员:增加学生,并将学生姓名和成绩写入文件。3) 删除人员:删除学生信息和成绩。4) 修改数据:修改学生成绩。5) 按总成绩查询:根据总分查询学生成绩,包括平均分。6) 按姓名查询:根据学生姓名查询学生成绩,包括总分和平均分。7) 输出所有学生成绩:输出文件中所有学生数据。8) 按平均分排名:按照平均分从高到低排序。1.4 性能需求1) 硬件环境l 处理器:Inter CR300或是更高。l 内存:128MB(建议 196MB)。l 硬盘空间:20MB

7、。2) 软件环境l 操作系统: Windows 2000/ XP 或是Windows 2000/Windows NT Server 4.0。1.5 任务计划1) 选择课程设计题目,分析课题的要求2) 编程3) 编程及调试4) 写课程设计报告5) 提交课程设计报告(打印稿及电子稿)第二章 概要设计2.1 总体设计利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。我们很清晰的看到自己的各个科目成绩和每个科目的排名和总分排名以及所有学生的成绩分布,而且还是零失误,所有的都是一目了然。极大的方便了学生和老师。为提高成绩管理效率,管理人员的工作负担。 2.2 数据类型设计(或数据结构设计)对学

8、生成绩进行管理的系统,主要划分为以下三个模块:1) 操作:包括增加学生记录、修改学生记录、删减学生记录。2) 查询:包括按总成绩查询、按姓名查询、输出所有学生成绩。3) 排名:按按平均成绩排名。学生成绩管理系统操作查询排名增加学生记录修改学生记录删减学生记录按姓名查询输出全部数据按平均分排名2.3 接口设计函数名函数格式函数功能structStruct 结构体名成员列表;用于结构体的定义IfelseIf(表达式) 语句2Else 语句2执行真假值判断,根据逻辑计算的真假值,返回不同结果scanfInt scanf(char * format,args,);从标准输入设备按format指向的格式

9、字符串所规定的格式,输入数据给args所指向单元2.4 运行界面设计/*主菜单*/ printf("n- 学生成绩管理系统-n"); printf("1. 增加学生记录n"); printf("2. 修改学生记录n"); printf("3. 删除学生记录n"); printf("4. 按姓名查询学生记录n"); printf("5. 按平均成绩排序n"); printf("6. 退出n"); printf("请选择(1-6):");

10、scanf("%d",&choice); getchar(); switch(choice) case 1: Student_Insert(); break; case 2: Student_Modify(); break; case 3: Student_Delete(); break; case 4: Student_Select(); break; case 5: Student_SortByAverage(); Student_Display(); break; case 6: exit(); break; IO_WriteInfo(); 第三章 详细设计3

11、.1 输入模块设计void Student_Insert() while(1) printf("请输入学号:"); scanf("%s",&studentsnum.ID); getchar(); printf("请输入姓名:"); scanf("%s",&studentsnum.Name); getchar(); printf("请输入成绩:"); scanf("%f",&studentsnum.Mark1); getchar(); printf(&q

12、uot;请输入成绩:"); scanf("%f",&studentsnum.Mark2); getchar(); printf("请输入成绩:"); scanf("%f",&studentsnum.Mark3);getchar();printf("请输入成绩:"); scanf("%f",&studentsnum.Mark4);getchar();printf("请输入成绩:"); scanf("%f",&stud

13、entsnum.Mark5);getchar(); studentsnum.Average=Avg(studentsnum); num+; printf("是否继续?(y/n)");if (getchar()='n') break; 3.2 输出模块设计void Student_Display()int i; printf("%10s%10s%8s%8s%8s%8s%8s%10sn","学号","姓名","成绩","成绩","成绩",&qu

14、ot;成绩","成绩","平均成绩"); printf("-n");for (i=0;i<num;i+)printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%10.2fn",studentsi.ID,studentsi.Name, studentsi.Mark1,studentsi.Mark2,studentsi.Mark3,studentsi.Mark4,studentsi.Mark5,studentsi.Average);3.3 查找模块设计void Student

15、_Select() while(1) char name20; int index; printf("请输入要查询的学生的姓名:"); scanf("%s",&name); getchar(); index=Student_SearchByName(name); if (index=-1) printf("学生不存在!n");elseprintf("你要查询的学生信息为:n"); Student_DisplaySingle(index);printf("是否继续?(y/n)");if (

16、getchar()='n')break;3.4 排序模块设计void Student_SortByAverage()int i,j; struct Student tmp; for (i=0;i<num;i+)for (j=1;j<num-i;j+)if (studentsj-1.Average<studentsj.Average)tmp=studentsj-1; studentsj-1=studentsj; studentsj=tmp;/*显示学生信息*/ void Student_Display()int i; printf("%10s%10s%

17、8s%8s%8s%8s%8s%10sn","学号","姓名","成绩","成绩","成绩","成绩","成绩","平均成绩"); printf("-n");for (i=0;i<num;i+)printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%10.2fn",studentsi.ID,studentsi.Name, studentsi.Mark1,s

18、tudentsi.Mark2,studentsi.Mark3,studentsi.Mark4,studentsi.Mark5,studentsi.Average);3.5 保存及读取模块设计/*将学生信息从文件读出*/ void IO_ReadInfo()FILE *fp; int i; if (fp=fopen("Database.txt","rb")=NULL)printf("不能打开文件!n"); return;if (fread(&num,sizeof(int),1,fp)!=1)num=-1;elsefor(i=0;

19、i<num;i+)fread(&studentsi,sizeof(struct Student),1,fp);fclose(fp);/*将学生信息写入文件*/void IO_WriteInfo()FILE *fp; int i; if (fp=fopen("Database.txt","wb")=NULL)printf("不能打开文件!n"); return;if (fwrite(&num,sizeof(int),1,fp)!=1)printf("写入文件错误!n");for (i=0;i&l

20、t;num;i+)if (fwrite(&studentsi,sizeof(struct Student),1,fp)!=1)printf("写入文件错误!n");fclose(fp);第四章 测试分析4.1 测试程序执行情况第五章 课程设计总结此次C语言课程设计,在指导教师的精心教导下,我们学会了如何用C编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。根据C语言课程所学的概念、理论和方法,按照C语言程序设计的基本步骤,设计出一

21、个适当规模的程序;进一步加深对C语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。附录:程序代码#include<stdio.h>/*定义学生结构体*/ struct Student char ID20; char Name20; float Mark1; float Mark2; float Mark3;float Mark4;float Mark5;float Average; ; /*声明学生数组及学生数量*/ struct

22、 Student students1000;int num=0; /*求平均值*/ float Avg(struct Student stu) return (stu.Mark1+stu.Mark2+stu.Mark3+stu.Mark4+stu.Mark5)/5; /*通过学号返回数组下标*/ int Student_SearchByIndex(char id) int i; for (i=0;i<num;i+) if (strcmp(studentsi.ID,id)=0) return i;return -1; /*通过姓名返回数组下标*/ int Student_SearchByN

23、ame(char name) int i; for (i=0;i<num;i+) if (strcmp(studentsi.Name,name)=0) return i; return -1; /*显示单条学生记录*/ void Student_DisplaySingle(int index) printf("%10s%10s%8s%8s%8s%8s%8s%10sn","学号","姓名","成绩","成绩","成绩","成绩","成绩&qu

24、ot;,"平均成绩"); printf("-n");printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%10.2fn",studentsindex.ID,studentsindex.Name, studentsindex.Mark1,studentsindex.Mark2,studentsindex.Mark3,studentsindex.Mark4,studentsindex.Mark5,studentsindex.Average); /*插入学生信息*/ void Student_Insert()

25、while(1) printf("请输入学号:"); scanf("%s",&studentsnum.ID); getchar(); printf("请输入姓名:"); scanf("%s",&studentsnum.Name); getchar(); printf("请输入成绩:"); scanf("%f",&studentsnum.Mark1); getchar(); printf("请输入成绩:"); scanf("

26、%f",&studentsnum.Mark2); getchar(); printf("请输入成绩:"); scanf("%f",&studentsnum.Mark3);getchar();printf("请输入成绩:"); scanf("%f",&studentsnum.Mark4);getchar();printf("请输入成绩:"); scanf("%f",&studentsnum.Mark5);getchar(); stude

27、ntsnum.Average=Avg(studentsnum); num+; printf("是否继续?(y/n)");if (getchar()='n') break; /*修改学生信息*/ void Student_Modify() float mark1,mark2,mark3,mark4,mark5; while(1) char id20; int index; printf("请输入要修改的学生的学号:"); scanf("%s",&id); getchar(); index=Student_Sear

28、chByIndex(id); if (index=-1) printf("学生不存在!n");else printf("你要修改的学生信息为:n"); Student_DisplaySingle(index); printf("- 请输入新值-n"); printf("请输入学号:"); scanf("%s",&studentsindex.ID); getchar(); printf("请输入姓名:"); scanf("%s",&stude

29、ntsindex.Name); getchar(); printf("请输入成绩:"); scanf("%f",&studentsindex.Mark1); getchar(); printf("请输入成绩:"); scanf("%f",&studentsindex.Mark2); getchar(); printf("请输入成绩:"); scanf("%f",&studentsindex.Mark3);getchar();printf("请

30、输入成绩:"); scanf("%f",&studentsindex.Mark4);getchar();printf("请输入成绩:"); scanf("%f",&studentsindex.Mark5);getchar(); studentsindex.Average=Avg(studentsindex);printf("是否继续?(y/n)");if (getchar()='n') break; /*删除学生信息*/ void Student_Delete() int

31、i;while(1) char id20; int index; printf("请输入要删除的学生的学号:"); scanf("%s",&id); getchar(); index=Student_SearchByIndex(id); if (index=-1) printf("学生不存在!n");else printf("你要删除的学生信息为:n"); Student_DisplaySingle(index); printf("是否真的要删除?(y/n)"); if (getchar

32、()='y') for (i=index;i<num-1;i+) studentsi=studentsi+1;num-;getchar();printf("是否继续?(y/n)");if (getchar()='n')break;/*按姓名查询*/ void Student_Select() while(1) char name20; int index; printf("请输入要查询的学生的姓名:"); scanf("%s",&name); getchar(); index=Studen

33、t_SearchByName(name); if (index=-1) printf("学生不存在!n");elseprintf("你要查询的学生信息为:n"); Student_DisplaySingle(index);printf("是否继续?(y/n)");if (getchar()='n')break; /*按平均值排序*/ void Student_SortByAverage()int i,j; struct Student tmp; for (i=0;i<num;i+)for (j=1;j<nu

34、m-i;j+)if (studentsj-1.Average<studentsj.Average)tmp=studentsj-1; studentsj-1=studentsj; studentsj=tmp;/*显示学生信息*/ void Student_Display()int i; printf("%10s%10s%8s%8s%8s%8s%8s%10sn","学号","姓名","成绩","成绩","成绩","成绩","成绩","平均成绩"); printf("-n");for (i=0;i<num;i+)printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%10.2fn",studentsi.ID,studentsi.Name, studentsi.Mark1,studentsi.Mark2,studentsi.Mark3,studentsi.Mark4,studentsi.Mark5,studentsi.Average);/*将学生信息从文件读出*/ void IO_ReadInfo()FILE *fp; in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论