C 编写的学生成绩管理系统.docx
《C 编写的学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C 编写的学生成绩管理系统.docx(11页珍藏版)》请在冰豆网上搜索。
C编写的学生成绩管理系统
华北科技学院计算机系综合性实验
实验报告
课程名称C程序设计
实验学期2010至2011学年第2学期
学生所在系部计算机系
年级2010级专业班级信管B101
学生姓名程天航学号201008034118
任课教师王德志
实验成绩
计算机系制
实验报告须知
1、学生上交实验报告时,必须为打印稿(A4纸)。
页面空间不够,可以顺延。
2、学生应该填写的内容包括:
封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等.
3、教师应该填写的内容包括:
实验成绩、教师评价等。
4、教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。
综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。
任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。
5、未尽事宜,请参考该课程的实验大纲和教学大纲。
《C程序设计》课程综合性实验报告
开课实验室:
年月日
实验题目
《学生成绩管理系统的设计》
一、实验目的
通过该实验把C语言中基本知识(如:
顺序结构、选择结构、循环结构、数组、函数、指针、链表等)得到综合应用.完成学生成绩管理系统基本功能设计,提高学生的编程能力和分析问题、解决问题的能力。
二、设备与环境
PC兼容机、Windows操作系统、Vc++软件等。
三、实验内容
1、实验内容
对学生基本信息,包括学号、姓名、至少三门课成绩。
1学生基本信息录入;
2学生基本信息的输出;
3按学号查询学生信息;
4按学号修改某学生信息并输出;
5求每个人平均成绩;
6删除某学生信息;
7添加某学生信息
8输出平均分大于80分的同学信息;
9根据平均成绩综合排名;(此功能用链表处理的同学可不做)
2、实验要求
a、用结构体数组或链表存储学生信息
b、基本功能用函数实现;
c、至少完成实验内容中4个功能,学生可以自己增加或减少题目功能;
d、程序能正确执行、输入与输出有必要的提示信息、界面美观;
e、用菜单调用加分。
用链表加分。
f、按指定时间交综合性实验实验报告(打印稿),把综合性实验实验报告和C程序(电子版)发到服务器上(不传电子版没成绩)。
四、实验结果及分析
程序用链表来做的,因为完成功能有学生信息录入,成绩输出,修改学生信息,
按学号查询,删除学生信息,添加信息,输出大于80分的学生,计算平均值等。
使用了函数调用,指针,等应用。
包涵大部分所学知识。
程序运行如下
启动:
菜单界面如下
界面美观只是一个基本功能,为了让使用者更方便使用。
用的printf做的界面,用到了getchar选择子程序,和goto语句返回,
做了一个简单的菜单程序,程序的关键在于选择调用部分这里用到了几个
特别的函数就是包括在main函数的清屏,这个功能会在下面提到。
功能一键入:
输入学生信息
此处可以添加班级人数,按班级人数添加学生信息,输入成绩和学号还有名字,
都是通过链表做的所以一次成型,这里用的链表就是
&p—>xh,&p—>xm,&p->gs,&p->yy,&p-〉wl依次为学生信息输入为学号姓名
高数,英语,物理,然后按顺序一次存放在每个人的信息中保存,然后
通过p-〉next=xshead—>next;xshead-〉next=p;继续进行下个学生成绩的
录入工作。
此处注意的是每个函数的长度和类型不能输入错误,还有就是不能过多输入,
因为超过了一名同学的信息会进入第二个同学的信息中。
这是用这种方式
输入的一个比较麻烦的地方,可以改成一次录入或者按提示输入的方法,
具体就是把每个链表的指针分别放在不同的scanf语句里再加上printf
提醒输入就是printf(“输入学生学号:
”);scanf(“%d",&p-〉xh);…
这样依次输入。
功能二:
输出学生信息
此处直接计算了学生三科成绩的平均分,虽然计算平均成绩是一个子程序,
但是菜单不会调用,因为程序本身不用输出.这里按照链表的格式输出的
p—>xh,p-〉xm,p—>gs,p->yy,p-〉wl,p->pj就是一次输出链表的数据,和输
入雷同,然后也是使用p=p—〉next;跳到下一组数据上继续输出地址中的
数据。
功能三:
添加学生信息
此处设置时候是直接引用的键入学生信息的那个程序实现的,但是可能造成的
结果就是添加的学生在第一或者最后位置,不能进行位置排列。
功能四:
删除学生信息
删除这个程序目前还有使用问题,还没解决,有一定几率可以使用。
因为
可能出现程序卡死,所以还没发现问题在报告出来之前如果有问题就这部
分就不再修改。
功能五:
修改学生信息
修改学生信息本身没有问题,因为直接引用的文档里的程序。
修改的查询用到的是链表的学号部分,这里使用的是按照学号查询,但是
可以添加别的查找方法,比如按照名字,都可以做到的,主要在
structxsnode*p=xshead-〉next;这情况下做的,因为要查找要先找到
表头才可以。
功能六:
查询学生信息
这个也没什么好说的,就是一个查询程序,调用的表头的第一个数据来实现
的.这和修改信息一样的,就是查找部分而已.
功能七:
输出平均分大于80分的学生信息
其实这个程序的用途不是很大,只是多了一个功能而已.
特有功能:
清屏
好处是可以使屏幕更加清洁干爽,使用的主要是一个goto函数,虽然这个
函数尽量不使用,但是这里稍微使用下可以达到更好的效果,那个system
(“cls”)部分是引用的别的程序,不过这个程序感觉很好。
case'1':
create(xshead);getchar();break;
case’2’:
average(xshead);output(xshead);getchar();break;
case’3':
tianjia(xshead);getchar();break;
case'4':
shanchu(xshead);getchar();break;
case’5’:
average(xshead);xiugai(xshead);getchar();break;
case’6’:
average(xshead);xuehao(xshead);getchar();break;
case'7':
pingjun80(xshead);getchar();break;
case’8':
gotoend;
注意后面的getchar()很重要,如果没有在清屏的时候就会出现把子
子程序的显示也消除了,所以都在最末添加了这句相当于回车确认。
总结:
这次实验目的是为了学会程序设计的基本思路,了解基本理念的一次实验。
在做这个实验的时候不但学会了链表的处理,和目录的调用,还学会了一些原来
不是特别熟悉的程序的功能的实现,比如在别的程序上学到的清屏操作,和程序
返回的原理等等,主要还是在链表上的学习,因为这个功能是C语言的一个特色
功能,具有很实用的意义,而且在以后的学习中要经常用到。
实际上大体程序还
是以老师的程序为主,但是在分析和了解之后也感受到一个程序的顺序性和调理
性,怎么说呢p=(structxsnode*)malloc(sizeof(structxsnode));这几句的实
际效果还是不是特别清楚但是只是知道是malloc的函数原型其作用是在动态存储
区中分配一个连续的空间,但是如果自己来定义这个函数可能就不知道这句话怎
么写才能完整表达。
scanf(”%d%s%d%d%d”,&p—>xh,&p—〉xm,&p—〉gs,&p->yy,&p-〉wl);
这个其实可以改成一个多提示的输入,提高输入的精确度,但是这里有点遗憾的
是没时间改这个部分了,因为其他地方错改进太多,导致这里有点不那么完美而已
。
但是菜单这部分和子函数部分还是很了解的,毕竟很多都是自己改的,虽然函数
很多沿用老是的程序,但是具体还是有很多修改的,然后就是对界面的美化和控制
改进,这里花了一点时间让界面更加友好,虽然都是printf的命令,但是也可以
控制输出漂亮的效果,控制上可以用了getchar的选择命令的方式,效果不错,
实验了几种方法,都成功了如果再用上接口程序那效果就更好了,总的说这个实验
花了大概一天的时间来改进,其中修改错误不少,出现了最头疼的LNK2001这些错
误但是改进之后还是觉得整体运行不错,和同学一起解决问题才是最大的意义所在
就是这样。
评定项目
A
B
C
D
评定项目
A
B
C
D
算法正确
界面美观,布局合理
程序结构合理
操作熟练
语法、语义正确
解析完整
实验结果正确
文字流畅
报告规范
题解正确
教师评价
其他:
评价教师签名:
年月日