ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:178.90KB ,
资源ID:20484359      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20484359.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(何文培241311030综合设计实训报告终极版副本 2Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

何文培241311030综合设计实训报告终极版副本 2Word格式.docx

1、1.系统功能:本实训的题目是学生成绩管理系统,实现的是对学生成绩的系统管理。包括学生信息的创建、删除、插入或添加、保存、格式化输出;学生信息,成绩的修改或更新、成绩的统计、汇总、排序。检索及输出。2.对系统通过单链表实现对学生成绩的管理。具有如下功能: (1)输入记录 (2)从表中删除记录 (3)按照姓名查找所有记录 (4)将单链表中的记录保存到文件 (5)从文件中读入记录(6)计算所有学生的总分和平均分(7)插入记录到表中(8)复制文件(9)排序(10)添加记录到文件中(11)索引(12)分类合计四,系统环境1. 运行环境硬件环境:CPU 80386 内存32MB、硬盘200MB以上微机软件

2、环境:MS-DOS 5.0以上操作系统/WINDOWS 9X以上系统 Turbo c2.0集成环境,UCDOS汉字系统 visual C+以上图:上图是学生信息管理系统的流程图。(1)数据结构 链表是线性表中的一种,线性表中分为顺序存储结构和链式结构。线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上相邻,因此可以随机查找表中的没一个元素,。Typedef struct z Char no 11 Char name 15 Int score n Float sum Float average ; Int order; Struct z1*next;Student;(2) main(

3、)主函数主函数是程序的入口,采用模块化的设计。首先在主程序种打印欢迎界面,声明一些必要的变量,作为一无限循环程序,循环体作为一开关语句,该语句设置一个断点,其中条件值通过调用过主菜单函数得到的返回值。根据该值,调用相应的功能函数。同时设置一个断点,当返回值为一定条件是结束程序。(3)memnu_select()函数 为了美化界面,制作单边框窗口,窗口中显示主菜单。通过putch()输出图形符号的ASCII码值(十六进制),到达显示的目。 Putch(0xda) Putch(0xc4)对菜单的选项的选择是利用移动光标按回车键进行选择。 4 init()初始化 单链表需要一个头指针来指向表的第一个

4、结点面对单链表的访问是从头指针开始的。初始化单链表为空,用null表示,该值在文件stdlib.h中定义为常数0.5 creat()创建链表 当用户选择输入增加记录后,进入该函数,输入学生信息,并把信息输入链表。在输入过程中,有相关的提示。当输入的时候,会出现弹出到主菜单,在生成单链时,每次新输入的结点都放在表头,这样最先输入的结点存放在表头,这样最先输入的结点存放在最后。(7).append()追加记录到文件尾 当想要在文件尾增加一条记录时使用该函数,首先输入新结点信息,然后输入要追加的文件名,按追加方式打开文件,将新信息写入文件。(8).insert() 插入结点 在指定结点前面插入新结点

5、,申请空间得到指针info,输入新结点信息,存放info中,设链表头指针为h,p为指定结点的指针,q为P的前驱指针。从头结点开始循环移动指针p查找指定结点,查找和插入时分两种情况处理:1).指针p 为空,如果p等于h,说明链表为空,则新结点即为头结点,修改指针h=info。否则,说明表中没有指定结点,则新结点插入在表尾部,此是q把指的结点是最后一个结点,所以修改指针q-next=info。2).指针p不为空,如果p等于h,说明新结点插入在当前第一个结点之前,为新的头结点,修改指针info-next=p,h=info。否则,说明新结点的位置应在q和p两个结点之间,修改指针info-next=p,

6、q-(9).print()显示所有记录 采用顺序访问的方法显示和查找记录,定义一个指向结点的临时变量p,初值为单链表的头指针,输出指针所记录的数据后,将指针后移一个记录,直到p指针值为空,则所有记录输出完毕。(10).search()查找结点按照姓名来查找记录。从头结点开始顺序查找,若没有记录显示没有,遇到一个匹配的记录则显示此记录,后到尾结点结束。(11).save()保存记录到文件将学生信息保存到指定的文件中。按照文件读写要求,先定义一个只想文件的指针,输入要保存的磁盘文件名,如果输入的是绝对路径,则文件保存到指定的位置;如果只要文件名,则文件保存在TC默认的路径。如果文件打不开,则退出程

7、序,否则选择一种写文件方式,打开文件。如果文件打不开,则退出程序,否则选择一种写入文件方式,从链表的头指针。 开始,顺序将记录写入文件,直到所有记录写完,标志就是移动指针空。(12).load()从文件中加载记录 按照文件读写要求,先定义一个指向文件的指针,输入要读入数据的磁盘文件名,然后确定文件的打开方式。如果文件打不开,则退出函数,否则选择一种读文件方式,从文件头开始,将记录写入内存,直到文件尾。文件打开方式和读入方式的确定要依据输出文件是二进制文件,块写操作,读入也应设置为二进制打开方式,块读取方式。每读入一条记录,都要做好指链接关系,本函数将新结点链接到当前链表的尾部,链表的顺序和文件

8、保存的顺序一致。(13).copy()备份文件将文件读写功能结合到一起,先输入源文件名,再输入目标文件名,然后利用文件读写函数将源文件中的信息写到目标文件中,以达到备份文件的目的。(14).computer()计算所有学生的课程的总成绩成绩和总平均成绩(15).sort()排序本函数实现按总分排序的功能。在算法上,选择直接插入算法,即:每步将一个待排序的按其排序码值的大小插到前面已经排好序的表中,直到全部插入为止。先将链表的头结点看作是已经排好序的结点,然后取下一个结点作为待排序的结点,插入到已排好序的表中。具体做法为:(1. 先将原表头结点作为新排好序表的头结点h,原表下一个节点作为原表头结

9、点h1。(2. 原表头结点为待排序结点,将其总分与新表结点的总分进行比较,如果待排序结点总分大,则插在表头,否则插在其后,原表头结点移一位。(3. 重复第二步,即将原表头结点的总分与新表结点的总分进行比较,如果待排序结点总分小,则移动新表指针,直到找到合适的位置将其插入。当原表为空时,所有结点排序完毕。排好序后,系统自动将名次数据写入结点数据域的order中。(16).index()索引 定义临时工指针后,将原表的头指针的下一个结点作为指针,再使第一个结点定义为新表的头结点。当原表不为空时,进行排序。(17).total()分类合计追加班别信息,对各班的总成绩和总平均成绩进行平均成绩统计并显示

10、。(18).exit() 退出程序4.系统的界面设计(1) 主菜单(2) 创建链表(3)删除记录(4)显示全部记录(5) 查找记录(6)保存文件(7)读文件(8)计算总分和平均分(9)插入记录(10)复制文件(11)排序(12)追加记录(13)索引(14)分类合计5系统实现1.使用的语言 C语言2.模块代码实现(以下举3例为参考)模块1模块名称:创建链表输入:学号,姓名,成绩输出:输出一个二维表模块代码:STUDENT *create() int i;float s; STUDENT *h=NULL,*info; for(;) info=(STUDENT *)malloc(sizeof(STU

11、DENT); if(!info) printf(nout of memory); return NULL; inputs(enter no:,info-no,11); if(info-no0=) break;enter name:, info-name,15); printf(please input %d scoren,N); s=0; for(i=0;iscorei);scorei100|info-scorei0); s=s+info-scorei; info-sum=s;average=(float)s/N;order=0;right=h; h=info; return(h);模块2从表

12、中删除一个记录输入需要删除的学生学号输出要删除学生信息二维表 STUDENT *delete(STUDENT *h) STUDENT *p,*q; char s11; clrscr();please delete non scanf(%s,s); q=p=h; while(strcmp(p-no,s)&p!=NULL) q=p; p=p-right; if(p=NULL)nlist no %s studentn else *have found*n|no | name |sc1 |sc2 |sc3 | sum| ave |order|n|-|-|-|-|-|-|-|-|n printf(|%-

13、11s|%-15s|%4d|%4d|%4d|%-6.2f|%-6.2f|%5d|n,p-no, p-name,p-score0,p-score1,p-score2,p-sum,average,p-order);*end*n getch(); if(p=h) h=p- else q-right=p- free(p); printf(n have delete no %s studentndo not forget saven return(h);模块3按姓名查找学生记录输入学生姓名以二维表的形式输出查询到的信息 void search(STUDENT*h) STUDENT *p; char s1

14、5;please enter name for searchn p=h; while(strcmp(p-name,s)& p=p- if(p=NULL)elsenn*have found*n p-sum,p-3.集成测试各个模块间的相互关联和借口测试1. 创建链表、显示链表、从链表中删除信息、按名查找、插入之间的集成测试当创建完成一个链表是,按显示链表,则以二维表的形式显示创建链表的信息;当要从链表删除一个学生的信息时,输入要删除学生的学号,显示删除成功,再按显示链表,则显示删除后的信息;当要查找信息时,输入查找学生的姓名,则显示要查找的学生信息;插入学生信息时,输入在某个学生学号之前插入,再

15、输入插入学生的信息,插入完成后,按显示,则显示插入完成后的链表。以上测试表面:创建链表、显示链表、从链表中删除信息、按名查找、插入之间的接口和联系是正确的。说明该集成测试成功。2. 创建链表、显示、保存、载入、排序、分类合计、追加之间的集成测试当完成了一个链表的创建后,按显示,在窗口中显示该链表的信息;排序后,按显示,此时会显示排序后的信息,在排序栏会有学生成绩名次;分类合计后,按显示,此时会显示各个班级的总分和均分;按保存时,会提醒你输入保存路径,若路径无误,回车后保存成功;按加载,提醒输入加载路径,若输入路径无误,则加载成功,且按显示后悔显示载入的学生信息;排序分类显示均正常;追加,会提醒

16、输入添加的学生信息,输入完成后,提醒输入追加文件,若文件路径无误,则追加成功,按显示,则显示更新后的信息。以上测试说明创建链表、显示、保存、载入、分类合计、追加之间的联系正常,接口无误。说明测试成功! 六、总结这次实训,我主要是负责前期工作的准备,了解相关的链表形式,数据结构,函数类型等的研究。下面我来总结一下这几个发那个面的感想。数据结构:链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。 这二者的共同点就是可以对表的添加,删除,查找,排序等操作比较方便,所以我们采用的是链表的形式来存储学生的相关信息。线性顺序存储结构的特点是逻辑关系上的相邻的两个元素物理位置上也相邻,所他可以随机存

17、取表中的任一元素。链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。我说一下在创建链表的时候的相关注意的事项,我们一般是用creat()函数来创建链表的,当用户选择输入添加的记录后,进入该函数,输入了学生的序号,学号,姓名,还有相关的信息后。并在这个过程中把信息加入了链表。注意的是,在输入的过程中,有相关的提示,入学号我们先定的是10位,字符型。同时对某些信息做了限定,就拿分数来说吧,如果输入的分数不在0100之间的话,系统就会显示“bad data”的提示,这是提示我们从新输入。在输入的过程中,如果想要结束输入学生的信息时,就在”enter no”时输入”。当输入结束了以后。回到

18、主菜单的界面,按“3“。再按enter键,就会显示出我们所输入的学生信息的具体情况。并计算出了学生的总成绩,平均成绩,并将学生的名次置0.再等待排序结束后就赋予新值。特别注意的是,我们对生成链表时结点的存入顺序的理解,开始的时候我们理解的是,每次新输入的结点放在表的后面,然后最先输入的结点存依次放在后面。后来在老师的知道下我们对程序进行了理解,在总结了许多的程序的规律的时候,认识当初的理解是错误的,其实,数据输入结束后返回链表的头指针到方函数。在生成链表时,没次新输入的结点放在表头,这样使得最先输入的结点存放在最后。除了在程序的分析过程中,我学到的相关的处理问题的能力外,我更多的学到的是团队方面的,管理方面的能力。一个好的团队,领导者的能力很重要,我是我们这四人小团队的小组长。实话,我在程序方面的理解能力是大大的不足的,我主要偏重的是协调和管理团队的开发进度和交流能力。一个好的领导,应该有也下几点能力:1:有相当丰富的专业知识2:有发现问题的能力,3:能把计划变成现实的能力。4:良好的交际,沟通,团队协作能力。最后我想说的是:我们毕竟只是初学者,这样的程序对我们来说难度还是太大,也至于在最初的时候我对这一切是茫然的,最后慢慢的摸索,我逐渐知道了一些知识。我自认为我没有编程的天赋,今后也不准备向这方面发展,但我在校期间还是会加油的学习。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1