




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除 华中科技大学计算机科学与技术学院C语言程序设计课程设计 实验报告 题目: 学生成绩信息管理系统 专业: 计算机应用与技术 班级: 01班 学号: 姓名: 成绩: 指导老师: 完成日期:2012年3月15日 目 录 一、概述 2 1、课程设计目的 2 2、课程设计要求. 2 3、实验环境. 2二、设计方案. 2 1、功能描述 . 2 2、数据结构设计. 3 3、各功能模块的详细描述. 3 4、程序结构 . 5三、实验结果. 6四、课程设计总结. 6五、参考文献. 8附录:源程序代码. 8一、概述1、课程设计目的:利用学生成绩信息管理系统实现对本班同学的C语言、计算机基础、高等数学、英语四门课的成绩信息进行管理,其中包括实现增加、插入、修改、删除、统计平均成绩功能。2、课程设计要求:1)只能使用C语言编程。2)要用十字交叉链表(可选)。3)要求实现数据文件的I/O操作,用文件保存数据。4)至少输出一份报表(屏幕显示即可)。5)课程设计报告要按要求格式撰写。3、实验环境:机房二、设计方案学生基本信息表:中文字段名类型及长度举例学号char12201141388姓名char20Zhangming性别Charm,f出生日期char121993/01/01班级char10Is0601,cs03C语言成绩Flaot计算机基础Flaot高等数学Flaot英语Flaot1、 功能描述:学生成绩信息管理系统由五大模块组成,即文件、数据维护、数据查询、数据统计和帮助。具体结构图如图所示:学生成绩信息管理系统文件数据维护数据统计帮助数据查询数 据 加 载数 据 保 存界 面 初 始 化增 加 数 据修 改 数 据删 除 数 据学 生 基 本 信 息查 询课程总体成绩信息查询 学 生 成 绩按课程和学号查询成绩平 均 成 绩各 科 成 绩成绩管理系统按学号查询学生名次退 出 系 统学生基本信息参考:中文字段名类型及长度举例学号char12012006015678姓名char20zhangming性别charm,f出生日期char121988/09/03班级char10is0601,cs03C语言成绩Flaot计算机基础Flaot高等数学Flaot英语Flaot帮 助 主 题系统版本版权说明数据统计2、数据结构设计:采用“自顶而下、逐步求精”的设计方法,即由全局到局部,由整体到细节,由抽象到具体,将复杂的大规模问题分解成相对简单的小规模问题,不断分解细化,直到每一个子问题都可以用明确具体的方法和步骤来解决为止的方法。3、各功能模块的详细描述文件:包括一系列与系统启动运行和系统结束运行相关的环境维护和数据保障操作,该模块又分为界面初始化、数据加载、数据保存以及退出系统几个部分。其中,界面初始化模块用于设置控制台窗口显示模式,设置窗口标题栏,清屏并显示系统菜单栏和系统状态栏;数据加载模块用于将分别存放在多个数据文件中的代码数据和基础数据读入内存,构造数据链表,同时输出数据加载相关信息;数据保存模块将内存中代码表数据和链表数据按缺省路径分别保存到各个数据文件;退出系统模块释放程序运行过程中申请的动态存储区,关闭控制台标准输入和输出设备句柄,将标题栏设为“运行结束”,清除屏幕窗口信息,结束系统运行。数据维护:该模块完成对学生基本信息的录入、修改和删除功能,保证数据的准确性、完整性和有效性。该模块又分为增加成绩、修改成绩、删除成绩三部分。数据查询:该模块提供对系统中学生的几种数据信息按多种条件查询的功能。该模块又分为按学号学生名次查询、按课程和学号查询成绩、课程总体信息查询以及学生基本信息查询四部分。其中,学生基本信息查询模块用于提供两种方式查询学生基本信息,一种方式是按学号进行精确查询,另一种方式是以学生姓名和学生类别等组合条件进行查询,并具有模糊查询功能。数据统计:该模块提供对几种基础数据进行多方面统计的功能。该模块又分为统计学生的平均成绩、各科成绩两部分。按学生成绩的高低顺序排序后输出学生的姓名、学号以及各科成绩。帮助:该模块为用户使用系统提供帮助信息,同时还提供系统版本信息,分帮助主题子模块和系统版本版权说明子模块。其中,帮助主题模块用于按关键词为用户提供帮助信息;系统版本版权说明模块用于显示系统的版本信息和系统版权信息。4、程序结构: 1)主控函数:#include#include#include /*Student *AppendNode(Student *head);void DisLink(Student *head);void DeleteMemory(Student *head);void search_StuNo(void);Student *InsertNode (Student *head);Student *DelNode(Student *head);Student *Start(Student *head);Student *Com(Student *head);*/typedef struct student char xuehao12; char name20; float c1; float c2; float c3; float c4; float c5; struct student *next;Student; 2)核心模块结构:说明:十字交叉链表由学生基本信息构成一个单向链表,链表中的每个结点描述一个同学的基本信息;同时每个结点都有一个头指针,它指向该生的学习成绩链。十字交叉链表的结构如图所示:三、实验结果四、课程设计总结 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。我的题目是文章处理系统的设计,对于我们这些新手来说,这是很大的考验,我一千次一万次的问自己,怎么才能找到课堂所学与实际应用的最佳结合点?怎么才能让自己的程序在篇幅上简单,在使用价值上丰富?怎样让自己的业余更靠近专业?怎样让自己的计划更具有序性,而不会忙无一用?机会是老师,学校,以及无数代教育工作者给的,而能力是自己的,耐性是需要的。经过自己的琢磨,听取了师姐,师兄们的建议,还查阅了很多书籍,才做到了心中有数,才了解了C语言课程设计的真正用意培养自学能力,养成程序编辑的好习惯。我从来不相信车到山前必有路的说法,认为那只是懒惰者自寻懒惰的借口,我要积极,要把握,要努力。回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在郭老师的辛勤指导下,终于游逆而解。同时,在郭老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。老天不会让我太过顺利,他在这最后的时刻设置的障碍,是要考验我的能力,他要置我于死地?在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。没有了柳暗花明的一天,那么我怎么能说经受住了考验?谢谢老师的那句话,她说:人力有所不能及,然而,人的精神是不会败倒的。我鼓起勇气,到处问,到处查资料,黄天不负有心人,在一篇文章上,终于看到了我所特别要求的函数,我实现了组合是关键的理论。不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。谢谢给我指点迷津的老师。五、参考文献 1、C语言实验课程设计,科学出版社。 2、曹老师编著的C语言程序设计,科学出版社。源程序代码:#include#includestruct Student *AppendNode(struct Student *head);void DisLink(struct Student *head);void DeleteMemory(struct Student *head);struct Student *InsertNode(struct Student *head);struct Student *DelNode(struct Student *head);struct Student *Start(struct Student *head);struct Student *Com(struct Student *head);struct Student char xuehao12; char name20; float c1; float c2; float c3; float c4; float c5; struct Student *next;main() int a; struct Student *head=NULL; int k=1; head=Start(head); DisLink(head); while(k) printf(1 增加数据n2 插入数据n3 删除数据n4 显示数据n5 退出n选择:); scanf( %d,&a); switch(a) case 1: head=AppendNode(head); DisLink(head); break; case 2: head=InsertNode(head); DisLink(head); break; case 3: head=DelNode(head); DisLink(head); break; case 4: DisLink(head); break; case 5: k=0; break; default: printf(请输入有效选择!n); ;struct Student *Start(struct Student *head) struct Student *p=NULL; struct Student *pr=head; p=(struct Student *)malloc(sizeof(struct Student); head=p; pr=p; strcpy(pr-xuehao,201141340); strcpy(pr-name,盼盼); pr-c1=93.1; pr-c2=89.5; pr-c3=92.7; pr-c4=78.9; pr-c5=(p-c1+p-c2+p-c3+p-c4)/4; p=(struct Student *)malloc(sizeof(struct Student); pr-next=p; pr=pr-next; strcpy(pr-xuehao,201141341); strcpy(pr-name,阳阳); pr-c1=87.2; pr-c2=85.4; pr-c3=90.9; pr-c4=67.8; pr-c5=(p-c1+p-c2+p-c3+p-c4)/4; p=(struct Student *)malloc(sizeof(struct Student); pr-next=p; pr=pr-next; strcpy(pr-xuehao,201141342); strcpy(pr-name,珊珊); pr-c1=74.7; pr-c2=69.8; pr-c3=75.9; pr-c4=78.5; pr-c5=(p-c1+p-c2+p-c3+p-c4)/4; p=(struct Student *)malloc(sizeof(struct Student); pr-next=p; pr=pr-next; strcpy(pr-xuehao,201141343); strcpy(pr-name,雯雯); pr-c1=95.1; pr-c2=81.3; pr-c3=78.5; pr-c4=87.5; pr-c5=(p-c1+p-c2+p-c3+p-c4)/4; p=(struct Student *)malloc(sizeof(struct Student); pr-next=p; pr=pr-next; strcpy(pr-xuehao,201141344); strcpy(pr-name,乐乐); pr-c1=79.5; pr-c2=85.8; pr-c3=88.1; pr-c4=96.1; pr-c5=(p-c1+p-c2+p-c3+p-c4)/4; pr-next=NULL; return head;void DisLink(struct Student *head) struct Student *p=head; int j=1; printf( 序号 学号 姓名 C语言 计算机基础 高等数学 英语 平均分n); while(p!=NULL) printf(%3d%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%8.2fn,j,p-xuehao,p-name,p-c1,p-c2,p-c3,p-c4,p-c5 ); p-c5=(p-c1+p-c2+p-c3+p-c4)/4; p=p-next; j+; struct Student *AppendNode(struct Student *head) struct Student *p=NULL; struct Student *pr=head; char xuehao9; char name20; float c1; float c2; float c3; float c4; p=(struct Student *)malloc(sizeof(struct Student); if(p=NULL) printf(No enough memory to alloc); exit(0); if(head=NULL) head=p; else while(pr-next!=NULL) pr=pr-next; pr-next=p; pr=p; printf(请输入学号:); scanf( %s,&xuehao); printf(请输入姓名:); scanf( %s,&name); printf(请依次输入C语言,计算机基础,高等数学 英语成绩:); scanf( %f%f%f%f,&c1,&c2,&c3,&c4); strcpy(pr-xuehao,xuehao); strcpy(pr-name,name); pr-c1=c1; pr-c2=c2; pr-c3=c3; pr-c4=c4; pr-next=NULL; return head;void DeleteMemory(struct Student *head) struct Student *p=head,*pr=NULL; while(p!=NULL) pr=p; p=p-next; free(pr); struct Student *DelNode(struct Student *head) struct Student *p=head,*pr=head; int i,j; printf(删除第几个数据?); scanf( %d,&i); for(j=1;jnext; if(p=head) head=p-next; else pr-next=p-next; free(p); return head; struct Student *InsertNode(struct Student *head) struct Student *pr=head,*p=head,*temp=NULL; int i,j,n; char xuehao9; char name20; float c1; float c2; float c3; float c4; p=(struct Student *)malloc(sizeof(struct Student); printf(请输入学号:); scanf( %s,&xuehao); printf(请输入姓名:); scanf( %s,&name); printf(请依次输入C语言,计算机基础,高等数学 英语成绩:); scanf( %f%f%f%f,&c1,&c2,&c3,&c4); 4; p-next=NULL; strcpy(p-xuehao,xuehao); strcpy(p-name,name); p-c1=c1; p-c2=c2; p-c3=c3; p-c4=c4; printf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核桃考试题及答案
- 婚检考试题及答案
- 动火考试题及答案
- 植物基础知识模拟练习题含答案
- 母婴保健法培训试题【附答案】
- 危重症患者的识别界定试题(附答案)
- 护理值班交接班制度试题(附答案)
- 定点停车理论考试试题(附答案)
- 2025保险委托居间合同书-责任保险代理服务
- 2025年度国有企业临时聘用合同工劳动合同
- 《油气管道无人机智能巡检系统技术管理规范》
- 2025年新版期权知识考试题库带答案
- 2025年度吉林辅警招聘考试题(含答案)
- 吉安市新庐陵投资发展有限公司及下属子公司2025年第二批面向社会公开招聘笔试备考题库及答案解析
- 幼儿园卫生及安全检查标准
- 儿童动漫消费偏好-洞察及研究
- 2025年12345热线考试题库
- 网络接入管理办法
- 隧道二衬安全注意事项
- 绿色矿山培训课件
- 银行科技架构管理办法
评论
0/150
提交评论