1、防灾科技学院实 训 报 告 书专 业 计算机科学与技术 系 别 灾害信息工程系 报告题目 计算机科学与技术认识实习(C 语言) 报 告 人 班 级 指导教师 带队教师 实习时间 实习单位 教 务 处 监 制2报告内容摘要:学生成绩管理系统运用到了菜单制作,结构体构建,选择法排序,升降序的转换,文件的写入与读取,循环体的应用,函数的调用于返回,数组名作为函数参数。 。 。 。 。 。贪吃蛇游戏运用到了坐标设计,easyz 库绘图,直线,矩形与圆的渐变,点、线、面、的相互配合,全局变量的计分,音乐的插入,背景图片的插入,函数的调用于返回。 。 。 。 。 。指导教师评语:成绩: 指导教师(签名):
2、 2013 年 月 日3目 录1 实训目的 32 实训要求 43 实训内容 44 学生成绩管理系统的设计与实现 .44.1 设计题目 44.2 需求分析 44.3 数据结构 44.4 数据文件 54.5 系统模块图 54.6 系统流程图 54.7 系统实现 65 贪吃蛇游戏的设计与实现 .145.1 设计题目 145.2 需求分析 145.3 数据结构 145.4 数据文件 155.5 系统模块图 155.6 系统流程图 165.7 系统实现 166 实训总结 197 参考文献 .2041 实训目的首先,通过实习,使学生学会为实际应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,从而能让
3、学生对 C 语言程序设计这门课能有一个更深刻的理解和认识;再者,实习相对于平时实验课来说,要完成的是一个难度较大的可执行综合性程序,培养学生处理复杂问题的能力,从而极大的提高学生的编程能力以及撰写文档的能力;并且本实习内容是当前社会最热门且尚处于研究阶段的课题之一,希望能通过实习,实际做到理论和实践紧密结合,同时也为后续课程打下坚实的基础知识。2 实训要求实习要求每个学生从实习项目集合中至少选择 2 个实习项目并参照相关实习资料独立操作,能正确分析现实生活中的问题,并抽象成数学模型,进行模块分析和编程,认真完成软件设计的全部过程,并完成实习报告。首先根据所选项目进行需求分析和算法分析,根据项目
4、实现的功能进行数据分析,设计相应的数据结构,同时为贯彻“程序设计=算法+ 数据结构”的思想,要求学生完成流程图的设计,然后根据流程图写出课程实习代码并上机调试,设计的功能应相对完善,每个学生须独立完成程序构思、基本结构设计、变量设计、函数设计、文件操作等任务。在设计中要综合运用所学内容,顺利调试通过并运行所编写的程序,最后完成课程实习报告,报告书应图文结合,须包含用户需求分析、系统模块图、流程图、数据结构设计、界面设计、功能模块实现与测试、设计的算法及主要程序代码等内容,并结合自己的实习情况写出实习总结。3 实训内容本次实习所选择的题目是学生成绩管理系统和贪吃蛇游戏 。在实习过程中完成了学生成
5、绩管理系统和贪吃蛇游戏的需求分析、系统功能模块的设计、系统流程图的设计、数据结构设计、界面设计以及代码的实现与测试。4 学生成绩管理系统的设计与实现4.1 设计题目使用 C 语言,在 vc6.0 环境下,实现一个简单实用的基于文件的小型学生成绩管理系统,并实现成绩的储存,查询,添加,删除,排序等基本操作,以方便成绩的管理。4.2 需求分析以某班不超过 30 人,进行 3 科考试为准。编程实现如下要求:(1) 录入每个学生的学号、姓名和各科考试成绩。(2) 计算每门课程和每个学生的总分和平均分。5(3) 按每个学生的总分由高到低或由低到高排出名次表。(4) 按学号、姓名由小到大排出成绩表。(5)
6、 按学号、姓名查询学生排名和考试成绩。(6) 按成绩分类并输出统计结果(7) 将每个学生的记录信息写入文件,并能读取出来。4.3 数据结构typedef structure studentlong num;char maneMAX_LEN;float scoreCOURSE_NUM;float sum;float aver;4.4 数据文件#include #include #include 4.5 系统模块图64.6 系统流程图4.7 系统实现1、主函数int main() /*主函数*/char ch;int n,i;STU sturecordSTU_NUM;float sumofcour
7、seCOURSE_NUM,averofcourseCOURSE_NUM;printf(“输入学生人数(nb;9、排序函数 void assortbynum()6 中(*compare)(stuj.sum,stuk.sum)改为 stuj.sum=0 while(1)while(!kbhit()if (!food.flag) setfoodcrd();showfood();showsnake();judgeslod();judgefood();17snakemove();Sleep(speed);changeskdir();2.初始化:void init() /*初始化*/ initgraph(
8、640,480);srand(time(NULL);food.flag=0;snake.crd0.x=0+SNAKELEN;snake.crd0.y=0;snake.crd1.x=0;snake.crd1.y=0;snake.node=2;snake.dir=right;3.随机产生食物:void setfoodcrd() /*随即生成食物 */food.crd.x=rand()%(600/SNAKELEN)*SNAKELEN;food.crd.y=rand()%(480/SNAKELEN)*SNAKELEN;food.flag=1; 4.画食物:void showfood() /*画食物*/
9、rectangle(food.crd.x,food.crd.y,food.crd.x+SNAKELEN,food.crd.y+SNAKELEN); 5.画蛇:void showsnake() /*画蛇*/ int i;for(i=snake.node-1;i=0;i-)rectangle(snake.crdi.x,snake.crdi.y,snake.crdi.x+SNAKELEN,snake.crdi.y+SNAKELEN);setcolor(BLACK);rectangle(snake.crdsnake.node.x,snake.crdsnake.node.y,snake.crdsnake
10、.node.x+SNAKELEN,snake.crdsnake.node.y+SNAKELEN);setcolor(RED);18rectangle(snake.crdsnake.node-1.x,snake.crdsnake.node-1.y,snake.crdsnake.node-1.x+SNAKELEN,snake.crdsnake.node-1.y+SNAKELEN); 6.蛇移动:void snakemove() /*蛇移动*/int i;for(i=snake.node;i0;i-)snake.crdi.x=snake.crdi-1.x;snake.crdi.y=snake.crd
11、i-1.y;switch(snake.dir)case up:snake.crd0.y-=SNAKELEN;break;case down:snake.crd0.y+=SNAKELEN;break;case left:snake.crd0.x-=SNAKELEN;break;case right:snake.crd0.x+=SNAKELEN;showsnake();void changeskdir() /*改变蛇的方向*/char key;key=getch();switch(key)casew: caseW: if(snake.dir!=down) snake.dir=up; break;c
12、ases: caseS: if(snake.dir!=up) snake.dir=down; break;casea: caseA: if(snake.dir!=right) snake.dir=left; break;cased: caseD: if(snake.dir!=left) snake.dir=right; break; 8.判断蛇是否死亡:void judgeslod() /*判蛇是否死亡*/int i;if(snake.crd0.x=640|snake.crd0.y=480)gameover();for(i=snake.node-1;i0;i-)if(i=snake.crd0.
13、x=snake.crdi.x 199.判断蛇是否吃到食物:void judgefood() /*判断蛇是否吃到食物 */if(snake.crd0.x=food.crd.xsetcolor(BLACK);rectangle(food.crd.x,food.crd.y,food.crd.x+SNAKELEN,food.crd.y+SNAKELEN);setcolor(RED); food.flag=0; 6 实训总结通过这九天的学习,我学到了许多真正的实用的 c 语言编程技巧。通过对学生成绩管理系统和贪吃蛇游戏的编写,也让我学到了许多的有用的东西。例如:结构体的定义;数组的定义及应用;顺序查找方
14、法;函数调用;数组名作为函数参数;数组元素作为函数参数;文件的读写操作;菜单项的制作和选择。 。 。 。 。 。培养了我的结构化程序、模块化程序设计的方法和能力。除这些外,最让我受益的是学会了利用 vc 和 easyz 库绘图,可以做出许多好看的图象,提高了兴趣,还有学习和掌握了 C 语言中的图形处理函数及其应用,提高了基本的分析问题和利用计算机求解问题的能力,通过提交课程实习报告,提高了专业文档书写的能力。通过这次实训,也使我们发现了许多问题。 在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有
15、些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好 C 语言,也学好用 C 语言编写一个按要求的系统。 还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。 首先我要继续学习好 C 语言的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。 总之,这一切都成为我记忆里面的一个篇章,更是在 C 语言编程上的一个里程碑。207 参考文献1 谭浩强. C+程序设计设计实践指导( 第 1 版 )M.清华大学出版社.2005.72 谭浩强. C+程序设计题解与上机指导.清华大学出版社.2005.3 苏小红. C 语言程序设计.高等教育出版社.2011.44 丰继林. C 语言实训教程 。清华大学出版社.2013.1.1