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