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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构实习报告.docx

1、数据结构实习报告河 南 工 程 学 院实 习 报 告 课 程 数据结构 系(部) 计算机学院 专 业 计算机科学与技术 班 级 XXX班 姓 名 XXX 学 号 XXXXX 2013年 6 月 25 日实 习 (训) 报 告 评 语等 级: 评阅人: 职称: 年 月 日 河南工程学院实习(训)报告 实习内容: 学生成绩管理系统 实习时间:自 6 月 24 日 至 6 月 29 日 共 5 天 实习地点: 学校机房 实习单位: 计算机学院 指导教师: 李芳 系主任: 曲宏山 目 录一、设计目标 1二、课题分析与设计 11课题需求分析 12 存储结构设计 23 算法设计 24.程序流程图 5三、程

2、序清单 6四、测试 201测试数据 202 测试结果及分析 20五、总结 241收获 242 不足 24一、设计目标 要求能够实现输入记录、查询记录、维护记录、排序记录等功能。1. 输入记录。对每个学生的学号、姓名、性别、班级、数学、英语、语文成绩进行输入并存储,在程序的运行过程中,数据的存储可以采用结构体数组或者链表,但是最终应该存储在文件中。2. 维护记录。能够实现添加、删除、修改学生记录。3. 查询记录。根据姓名查询学生的成绩。如果查询时学生数据并没有读入到结构体数组或者链表中,则应该先从文件中读出数据并存储在结构体数组或者链表中,然后在结构体数组或者链表中查询满足条件的数据。4. 排序

3、记录。可以按总分、平均分、课程、单科成绩进行排序。二、课题分析与设计1课题需求分析1.在设计时考虑以下几个方面:操作简单。因为使用者多为非计算机专业人员,所以该系统要求设计的界面美观,操作方便。要充分考软件界面友好和操作方便,便愈使用人员快速上手。易于维护。一个软件的好坏,关键在于产品的可靠,稳定,便于维护。2开发语言的选择针对世界上流行的大量软件和开发工具,经过认真分析其优缺点,结合目前的软硬件开发环境,选用微软WINDOWS平台下的Visual C+作为软件开发工具。选用工具有几下几方面优点:1 C语言简洁、紧凑、使用方便、灵活。有32个关键字。C语言程序比其他许多高级语言简练,源程序短,

4、因此输入程序时工作量小。2 运算符丰富。3 数据类型丰富,具有现代语言的各种数据结构。4 C语言是完全模块化和结构化的语言。用函数作为程序的模块单位,便于实现程序的模块化。5 语法限制不太严格,程序设计自由度大。6 生成目标代码质量高,程序执行效率高。7 用C语言编写的程序可移植性好。综上所述,Visual C+可以满足学生成绩管理的要求,所以用来开发学生成绩管理系统是非常合适的。2存储结构设计void SaveLinkToFile(void)STUDENT *p;FILE *fp;p=headLink-next;if(p=NULL)printf(现在没有学生信息,请先输入学生信息nn);re

5、turn;fp=fopen(student.txt,w+);if(!fp)printf(文件不存在n);return;while(p)fprintf(fp,%s %s %s %f %f %fn,p-studentNumber,p-studentName,p-className,p-mark1,p-mark2,p-mark3);p=p-next;fclose(fp);保存链表数据到文件中3算法设计 void main()CreateHeadLink();ReadInfoFormFile();DesplayMenu(); 主函数调用,对整个模块进行总体概括。switch(choose)case 1

6、:OutputInformation();/*显示所有学生的信息*/break;case 2:DesplayInfoBystudentName();break;case 3:p=MallocNode();/*先申请一个新结点*/GetInformation(p);/*要求用户输入信息到新结点中*/InsertOneNode(p);/*将新结点加到链表中*/break;case 4:DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/break;case 5:ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/break;case

7、6:ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/break;case 7:SaveLinkToFile();/*保存数据*/break;case 8:DesplayMarkSegment();/*显示不及格的学生成绩*/break;case 9:CompositorByTotalMark();/*按平均成绩排序*/break;case 10: CompositorByeachMark1(); break;case 11: CompositorByeachMark2(); break;case 12: CompositorByeachMark3(); brea

8、k;case 13:SaveLinkToFile();/*保存数据后再退出*/free(headLink);break;default:break;DesplayMenu();/*递归调用*/功能:定义菜单函数,通过输出函数显示系统功能。利用switch语句实现多分支选择结构,完成递归调用。算法思路:switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句4.程序流程图三、程序清单程序清单:#incl

9、ude#include#include#includetypedef struct STUDENT char studentSex5;char studentNumber10;/*学生学号*/char studentName20;/*学生姓名*/char className20;/*班级名称*/char yearName20;/*学期名称*/float mark1;/*第1门成绩*/float mark2;/*第2门成绩*/float mark3;/*第3门成绩*/struct STUDENT *next;STUDENT;STUDENT *headLink;/*链表表头指针*/*以下是函数声明

10、*/void ReadInfoFormFile(void);void DesplayMenu(void);void CreateHeadLink(void);STUDENT *MallocNode(void);void GetInformation(STUDENT *t);void OutputInformation(void);void DesplayInfoBystudentName(void);void DesplayOneNode(STUDENT *t);void InsertOneNode(STUDENT *t);void DeleteNodeBystudentNumber(void

11、);void ChangeMarkByName(void);void ChangeMarkByNumber(void);void SaveLinkToFile(void);void DesplayMarkSegment(void);void CompositorByTotalMark(void);void CompositorByeachMark1(void);void CompositorByeachMark2(void);void CompositorByeachMark3(void);int choose;/*用于接受用户的选择*/*主函数*/void main()CreateHeadL

12、ink();ReadInfoFormFile();DesplayMenu();/*函数功能:从文件中读学生信息到链表中*/void ReadInfoFormFile(void)FILE *fp;STUDENT *p;fp=fopen(student.txt,r);if(!fp)printf(文件不存在n);return;p=MallocNode();while(fscanf(fp,%s%s%s%f%f%f,p-studentNumber,p-studentName,p-className,&(p-mark1),&(p-mark2),&(p-mark3)0)InsertOneNode(p);p=

13、MallocNode();fclose(fp);/*函数功能:显示菜单,根据用户的输入完成相应的功能*/void DesplayMenu(void)STUDENT *p;printf(*请选择相应功能*nn);printf(| 1 按班级输出学生成绩单 |n);printf(| 2 按姓名查询 |n);printf(| 3 增加学生 |n);printf(| 4 删除学生 |n);printf(| 5 按班级修改学生成绩 |n);printf(| 6 按学期修改学生成绩 |n);printf(| 7 保存所有学生信息 |n);printf(| 8 显示不及格学生成绩 |n);printf(|

14、9 按总成绩或平均成绩排序并输出成绩 |n);printf(| 10 按语文成绩排序并输出成绩 |n);printf(| 11 按英语成绩排序并输出成绩 |n);printf(| 12按数学成绩排序并输出成绩 |n);printf(| 13 退出 |n);/printf(| 10 |nn);scanf(%d,&choose);/*取得用户的选择*/switch(choose)case 1:OutputInformation();/*显示所有学生的信息*/break;case 2:DesplayInfoBystudentName();break;case 3:p=MallocNode();/*先

15、申请一个新结点*/GetInformation(p);/*要求用户输入信息到新结点中*/InsertOneNode(p);/*将新结点加到链表中*/break;case 4:DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/break;case 5:ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/break;case 6:ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/break;case 7:SaveLinkToFile();/*保存数据*/break;case 8:DesplayMarkS

16、egment();/*显示不及格的学生成绩*/break;case 9:CompositorByTotalMark();/*按平均成绩排序*/break;case 10: CompositorByeachMark1(); break;case 11: CompositorByeachMark2(); break;case 12: CompositorByeachMark3(); break;case 13:SaveLinkToFile();/*保存数据后再退出*/free(headLink);break;default:break;DesplayMenu();/*递归调用*/*函数功能:建立链

17、表表头*/void CreateHeadLink(void)STUDENT *p;p=(STUDENT*)malloc(sizeof(STUDENT);headLink=p;p-next=NULL;/*函数功能:申请一个新结点,并将其初始化*/STUDENT *MallocNode(void)STUDENT *p;int i;p=(STUDENT*)malloc(sizeof(STUDENT);if(p=NULL)return NULL;for(i=0;istudentNumberi=0;for(i=0;istudentNamei=0;for(i=0;iclassNamei=0;p-mark1

18、=0.0;p-mark2=0.0;p-mark3=0.0;p-next=NULL;return p;/*函数功能:取得用户输入的学生信息*/void GetInformation(STUDENT *t)printf(*请输入学生学号:n);scanf(%s,t-studentNumber);printf(*请输入学生姓名:n);scanf(%s,t-studentName);printf(*请输入学生性别:n);scanf(%s,t-studentSex);printf(*请输入该生所在班级:n);scanf(%s,t-className);printf(*请输入语文成绩:n);scanf(%

19、f,&(t-mark1);printf(*请输入英语成绩:n);scanf(%f,&(t-mark2);printf(*请输入数学成绩:n);scanf(%f,&(t-mark3);/*函数功能:在链表的结尾处增加一个结点*/void InsertOneNode(STUDENT *t)STUDENT *p;p=headLink;while(p-next)p=p-next;p-next=t;/*函数功能:根据用户输入的学生姓名显示该学生的信息*/void DesplayInfoBystudentName(void)STUDENT *p;char studentName20;char flag=0

20、;p=headLink-next;printf(请输入学生姓名:n);scanf(%s,studentName);while(p)if(strcmp(p-studentName,studentName)=0)printf(学号 t姓名 t班级 t语文 t英语 t数学 t总成绩 t平均成绩nn);DesplayOneNode(p);flag=1;break;p=p-next;if(!flag)printf(对不起,不存在姓名为 %s 的学生n,studentName);/*函数功能:输出一个结点的信息*/void DesplayOneNode(STUDENT *t)printf(%st,t-st

21、udentNumber);printf(%st,t-studentName);printf(%st,t-className);printf(%.2ft,t-mark1);printf(%.2ft,t-mark2);printf(%.2ft,t-mark3);printf(%.2ft,t-mark1+t-mark2+t-mark3);printf(%.2ftn,(t-mark1+t-mark2+t-mark3)/3);/*函数功能:根据用户输入的学号删除该学生*/void DeleteNodeBystudentNumber(void)char studentNumber10;STUDENT *p

22、,*q;char flag=0;printf(请输入要删除的学生学号:);scanf(%s,studentNumber);p=headLink;q=headLink-next;while(q) if(strcmp(q-studentNumber,studentNumber)=0) p-next=q-next; free(q); flag=1; break; p=p-next; q=q-next; if(!flag)printf(不存在该学号的学生n);return;printf(成功删除n);/*函数功能:显示所有学生的信息*/void OutputInformation(void)STUDE

23、NT *p;p=headLink-next;if(p=NULL)printf(现在没有学生信息,请先输入学生信息nn);return;printf(学号t姓名t班级t语文t英语t数学t总成绩t平均成绩nn);while(p)DesplayOneNode(p);p=p-next;/*函数功能:根据输入的班级修改成绩*/void ChangeMarkByName(void)STUDENT *p;int a;char studentName20;char flag=0;float mark1,mark2,mark3;p=headLink-next;printf(请输入学生班级:n);scanf(%d

24、,&a);printf(请输入学生姓名:n);scanf(%s,studentName);while(p)if(strcmp(p-studentName,studentName)=0)printf(请输入新的语文成绩:n);scanf(%f,&mark1);printf(请输入新的英语成绩:n);scanf(%f,&mark2);printf(请输入新的数学成绩:n);scanf(%f,&mark3);p-mark1=mark1;p-mark2=mark2;p-mark3=mark3;flag=1;printf(修改成功n);break;p=p-next;if(!flag)printf(对不起,不存在班级为 %s 的学生n,studentName);/*函数功能:根据输入的学期修改成绩*/void ChangeMarkByNumber(void)STUDENT *p;int b;char studentNumber20;char flag=0;float mark1,mark2,mark3;p=headLink-next;printf(请输入学生所在学期:n);scanf(%d,&b);printf(请输入学生学号:n);scanf(%s,studentNumber);while(p)if(strcmp(p-studentNumber,studentNumber)=

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

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