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