C语言学生成绩管理系统整理.docx
- 文档编号:10943784
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:24
- 大小:92.56KB
C语言学生成绩管理系统整理.docx
《C语言学生成绩管理系统整理.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统整理.docx(24页珍藏版)》请在冰豆网上搜索。
C语言学生成绩管理系统整理
课程设计报告
课程名称C语言课程设计
课题名称成绩管理系统
专业
班级
学号
姓名
指导教师
20``年``月``日
湖南工程学院
课程设计任务书
课程名称C语言课程设计
课题成绩管理系统
专业班级
学生姓名
学号
指导老师
任务书下达日期0000年0月0日
任务完成日期0000年0月00日
C语言课程设计任务书
设计课题1:
成绩管理系统
问题描述:
成绩管理系统主要管理学生考试成绩的基本信息。
在系统中,每个学生是一条记录,包括姓名、学号、所选课程,而每个学生对应课程有相应成绩。
系统要对一个有N个学生的班级所选课程成绩统一进行管理。
包括了学生成绩的录入、显示、修改、排序、保存等操作。
1、功能设计要求:
1)本系统采用两个结构体数组进行数据存储。
学生结构体应该包括学生的基本信息(学号、姓名、所选课程),课程结构包括各项课程的基本信息(所选的各门课程对应的成绩)
2)设计主菜单界面,确定函数个数。
设计菜单应包含以下功能:
Ø录入信息(学生基本信息录入、课程成绩基本信息录入)
Ø显示(显示学生基本情况和所选课程成绩)
Ø修改信息(学生基本信息修改、成绩基本信息修改)
Ø成绩统计(各科成绩最高分,平均分)
Ø退出系统
3)要求:
建立两个结构体数组(或链表、文件),包括至少3门课程成绩和5个学生的必要信息,能对数据进行补充、修改。
执行一个具体的功能之后,程序将重新显示菜单。
3、要求:
1)用C语言实现系统;
2)函数功能要划分好(结构化程序设计);
3)界面友好(良好的人机交互),加必要的注释;
4)提供程序测试方案。
目录
一、系统介绍1
二、总体设计1
2.1程序模块1
2.2.函数分析1
2.3.总体结构2
三.主要模块的实现3
四.程序调试6
五.总结与体会13
六.源程序清单14
一、系统介绍
成绩管理系统主要管理学生考试成绩的基本信息。
在系统中,每个学生是一条记录,包括姓名、学号、所选课程,而每个学生对应课程有相应成绩。
系统要对一个有N个学生的班级所选课程成绩统一进行管理。
包括了学生成绩的录入、显示、修改、排序、保存等操作。
二、总体设计
2.1程序模块
主界面voidhomepage()。
显示全部成绩voiddisplay()。
录入插入voidinput()。
删除记录voiddel()。
排序voidsort()。
等待界面voidwaiting()。
退出界面voidquit()。
2.2.函数分析
主函数:
调用所定义的函数,实现本系统要求的功能
主界面函数:
显示主页面,并连接其它函数模块
显示函数:
显示按要求查询的信息
录入插入函数:
录入或插入所需信息
删除记录函数:
删除数据中原有的信息
排序函数:
按照要求排列出信息的顺序
等待界面函数:
在显示期间一个缓冲页面
退出界面函数:
退出现有页面并返回子菜单
2.3.总体结构
.
三.主要模块的实现
主函数(main)
通过对函数的调用实现录入、显示、修改、排序、保存等功能,有机的联系了所有的模块,是整个系统正常完整的运行。
主页面函数voidhomepage()
这个函数主要利用了printf输出了完整的主页面,并且通过函数的调用使这个页面和本程序的其他功能模块连接了起来!
显示全部成绩函数voiddisplay()
这个函数主要通过printf输出提示,操作者输入所查找方向,调用先前建立的数组中的存储数据,再通过printf函数按照一定的顺序全部完整的输出出来。
完成了整个成绩的输出,显示。
录入插入函数voidinput()
这个函数先用到if语句判断输入成绩是否正确,for语句判断学号是否正确,然后用到for,printf,scanf三的函数完成了对所有学生信息的录入,并且保存到系统中,又用if,else判断输入数量是否超出数组的容纳量
删除记录函数voiddel()
这个函数先用for,if来判断所输入信息是否属于该系统信息,找到信息后用del()函数删除掉原有的信息,并且用if,else选择是否继续。
排序函数voidsort()
这个函数用printf输出操作提示,可以用for,if来实现对每一种方式的排序,在按数字时用通过函数的调用地方法完成进入每一种排序的页面。
退出界面函数voidquit()
这个函数主要通过printf输出“谢谢是由本程序”,完成对整个程序运行结束的提醒。
删除模式
输入信息
四.程序调试
五.总结与体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在一个多星期的日子里,我学到很多很多的的东西,同时不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于完成课程设计。
同时,我也学得到很多实用的知识,在次,对给予过我帮助的各位指导老师和所有同学表示忠心的感谢!
参考文献
《C语言程序设计案例教程》张基温编著清华大学出版社
C程序设计(第三版)谭浩强著清华大学出版社
《C语言程序设计方法》邓文新张宏烈著哈尔滨工业大学出版社
《C语言课程设计案例精编》中国水利水电出版社
六.源程序清单
#include
#include
#include
#include
voidhomepage()。
//主界面
voiddisplay()。
//显示全部成绩
voidinput()。
//录入插入
voiddel()。
//删除记录
voidsort()。
//排序
voidwaiting()。
//等待界面
voidquit()。
//退出界面
structstudent
{
intnum。
charname[15]。
floatscore[3]。
floatavg。
}。
intcount=0。
//当前学生个数
intsort_type=0。
//当前排序类型
structstudentstu[10]。
voidmain()
{
inti,k=0。
charusername[15],pwd[6]。
system("colorED")。
printf("\n\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\t★★★★★★★★★\n")。
printf("\t★★★★欢迎使用学生成绩管理系统★★★★★\n")。
printf("\t★★★★★★★★★\n")。
printf("\t★★★★★★★★★\n")。
printf("\t★★★★XXXXX★★★★★\n")。
printf("\t★★★★★★★★★\n")。
printf("\t★★★★XXXXXX★★★★★\n")。
printf("\t★★★★★★★★★\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\n\t\t\t请按回车键继续!
\n")。
getchar()。
system("cls")。
homepage()。
}
voidhomepage()//主页面函数
{
charn。
printf("\n\n")。
printf("\t\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\t\n")。
printf("\t1.显示成绩\n")。
printf("\t\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\t\n")。
printf("\t2.录入成绩\n")。
printf("\t\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\t\n")。
printf("\t3.删除记录\n")。
printf("\t\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\t\n")。
printf("\t4.排序\n")。
printf("\t\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\t\n")。
printf("\t0.退出程序\n")。
printf("\t\n")。
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。
printf("\t\n")。
while((n!
='1')&&(n!
='2')&&(n!
='3')&&(n!
='4')&&(n!
='0'))
{
printf("\n请选择:
")。
fflush(stdin)。
//函数清空
scanf("%c",&n)。
switch(n)
{
case'1':
display()。
break。
case'2':
if(count<10)
input()。
else
{
printf("记录数已满\n")。
Sleep(2000)。
system("cls")。
homepage()。
}
break。
case'3':
del()。
break。
case'4':
sort()。
case'0':
quit()。
break。
default:
//不执行
printf("\n选项错误\n")。
}
}
}
voiddisplay()//显示全部成绩函数
{
inti。
charc。
system("cls")。
switch(sort_type)
{
case0:
printf("\t\t未排序:
\n\n")。
break。
case1:
printf("\t\t按学号排序:
\n\n")。
break。
case2:
printf("\t\t按成绩1排序:
\n\n")。
break。
case3:
printf("\t\t按成绩2排序:
\n\n")。
break。
case4:
printf("\t\t按成绩3排序:
\n\n")。
break。
case5:
printf("\t\t按平均成绩排序:
\n\n")。
break。
}
printf("\t学号\t姓名\t英语\t数学\t物理\t平均成绩\n")。
for(i=0。
i i++) { printf("\t%d\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg)。 } printf("\n\n按任意键返回\n")。 c=getch()。 system("cls")。 homepage()。 } voidinput()//录入插入函数 { inti,numcheck。 charc。 system("cls")。 do { printf("学号: \n")。 scanf("%d",&stu[count].num)。 numcheck=1。 if(stu[count].num<0) printf("请输入正整数: \n")。 for(i=0。 i i++) { if(stu[count].num==stu[i].num) { numcheck=0。 printf("学号重复,重新输入: \n")。 } } }while(! numcheck)。 printf("姓名: \n")。 fflush(stdin)。 gets(stu[count].name)。 for(i=0。 i<3。 i++) { printf("第%d门课成绩: \n",i+1)。 scanf("%f",&stu[count].score[i])。 } stu[count].avg=(stu[count].score[0]+stu[count].score[1]+stu[count].score[2])/3。 printf("是否继续输入(y/n): \n")。 do { c=getchar()。 if(c=='y'||c=='Y') { count++。 if(count<10) input()。 else { printf("记录数已满\n")。 Sleep(2000)。 system("cls")。 homepage()。 } } elseif(c=='n'||c=='N') { count++。 system("cls")。 homepage()。 } else。 }while((c! ='y')&&(c! ='n')&&(c! ='Y')&&(c! ='N'))。 } voiddel()//删除记录函数 { inti,j,del_num,match=0。 charc。 system("cls")。 printf("请输入要删除的学生学号: \n")。 scanf("%d",&del_num)。 waiting()。 //等待函数 for(i=0。 i i++) { if(stu[i].num==del_num)//匹配输出 { match=1。 for(j=i。 j j++) stu[j]=stu[j+1]。 } } if(! match) printf("没有要找的学号.\n")。 printf("是否继续删除? (y/n)")。 fflush(stdin)。 do { c=getchar()。 if(c=='y'||c=='Y') { count--。 del()。 //删除记录 } elseif(c=='n'||c=='N') { count--。 system("cls")。 homepage()。 } else。 }while((c! ='y')&&(c! ='n'))。 } voidsort()//排序函数 { inti,j。 intchoice。 structstudenttemp。 system("cls")。 printf("\t\t请选择排序功能: \n")。 printf("\t1.按学号排序\n")。 printf("\t2.按成绩1排序\n")。 printf("\t3.按成绩2排序\n")。 printf("\t4.按成绩3排序\n")。 printf("\t5.按平均成绩排序\n")。 do { scanf("%d",&choice)。 }while((choice! =1)&&(choice! =2)&&(choice! =3)&&(choice! =4)&&(choice! =5))。 switch(choice) { case1: //按学号 { for(i=0。 i i++) { for(j=0。 j j++) { if(stu[j].num>stu[j+1].num) { temp=stu[j]。 stu[j]=stu[j+1]。 stu[j+1]=temp。 } } } sort_type=1。 break。 } case2: { for(i=0。 i i++) { for(j=0。 j j++) { if(stu[j].score[0] { temp=stu[j]。 stu[j]=stu[j+1]。 stu[j+1]=temp。 } } } sort_type=2。 break。 } case3: { for(i=0。 i i++) { for(j=0。 j j++) { if(stu[j].score[1] { temp=stu[j]。 stu[j]=stu[j+1]。 stu[j+1]=temp。 } } } sort_type=3。 break。 } case4: { for(i=0。 i i++) { for(j=0。 j j++) { if(stu[j].score[2] { temp=stu[j]。 stu[j]=stu[j+1]。 stu[j+1]=temp。 } } } sort_type=4。 break。 } case5: { for(i=0。 i i++) { for(j=0。 j j++) { if(stu[j].avg { temp=stu[j]。 stu[j]=stu[j+1]。 stu[j+1]=temp。 } } } sort_type=5。 break。 } } system("cls")。 waiting()。 homepage()。 } voidwaiting() { inti。 printf("\n\t请稍侯...........")。 for(i=0。 i<25。 i++) { switch(i%4) { case1: printf("\b\\")。 break。 case2: printf("\b-")。 break。 case3: printf("\b/")。 break。 case0: printf("\b|")。 break。 } Sleep(100)。 } system("cls")。 } voidquit() { system("cls")。 printf("\n\n")。 printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。 printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。 printf("\t\n")。 printf("\t谢谢使用本程序\n")。 printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n")。 printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n")。 } 计算机与通信学院课程设计评分表 课程名称: C语言程序设计 项目 评价 设计方案的合理性与创造性 设计与调试结果 设计说明书的质量 答辩陈述与回答问题情况 课程设计周表现情况 综合成绩 教师签名: 日期: (注: 1.此页附在课程设计报告之后;2.综合成绩按优、良、中、及格和不及格五级评定。 )
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 成绩管理系统 整理