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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(高等教育C语言学生管理系统实验设计报告Word格式.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

高等教育C语言学生管理系统实验设计报告Word格式.docx

1、相当于打开文件并读取文件中所有学生的数据(包括班级、学号、姓名、成绩等)到动态链表。、统计功能。根据录入的数据项在动态链表中计算学生成绩(包括总分,平均分以及各分数段的人数及其信息)。可按成绩、学号或姓名排序,而成绩排序又可按单科成绩或总成绩排序。、插入功能。、退出功能。退出系统或退出程序,可增加一个退出函数语句,在退出时可提示保存文件,防止数据丢失。2. 概要设计在需求分析的基础上,确定系统总体框架(即系统功能结构图、系统模块结构图)。 系统各个功能的详细解释。1.Enter list创建链表。输入学生的成绩和其他信息,并且自动计算总成绩和平均成绩2. Delete a record fro

2、m list删除记录。根据学号在动态链表中查找并删除一个学生的成绩记录。3.Print list显示记录。自动按总成绩从高到低排序后显示动态链表中所有学生的成绩记录。4.Search record on name查找记录。根据学号在动态链表中查找并显示一个学生的成绩记录。5.Save the file保存数据。将动态链表的所有数据写入(或存入、存到)二进制文件中。6.Load File读取数据。读取文件中所有学生的数据(包括班级、学号、姓名、成绩等)到动态链表。7.Compute the score 统计数据。将动态链表的所有学生数据进行各分数段的统计。8.Insert record to l

3、ist插入记录。在动态链表中插入一个学生的成绩记录。9.Quit 退出。如菜单返回值为0程序结束。3. 详细设计1)、数据结构设计系统使用了结构体类型存储学生的成绩记录和其他记录。typedef struct S1 char no9;/*学号*/ char name15; /*姓名*/ char sex; /*性别*/ int age; /*年龄*/ int score4; /*成绩*/ float sum; /*总分*/ float average; /*平均分*/ int order; /*排名*/ struct S1 *next;STUDENT;2)、算法结构设计系统使用了以下函数来实现

4、系统各个模块的功能。函数名称函数功能student *enter_list()创建链表,完成数据录入功能 void compute_the_score()对学生成绩排序并确定名次void insert_record()按学号插入一个结点数据void print_list()显示所有已经建立好的节点的节点号和该节点中数据项内容void search_record()按学号查找并显示一个结点数据void delete_a_record()按学号查找并删除一个结点数据void save_the_file()保存数据到文件模块void load_the_file()加载存储在外部介质的文件到内存或导入

5、信息模块void init()显示菜单并获得用户键盘输入的选项*void main()程序从主函数开始执行 系统主要功能的实现过程和方法。在界面状态下,输入1后调用student *enter_list()函数创建动态链表,即提示输入初始的学生信息,其中包括学生的学号、姓名、性别和数学、英语、物理、历史的成绩,若输入为0退出返回主菜单。输入完成后,系统调用void compute_the_score()函数计算每个学生的总成绩和平均成绩,还可以调用void save_the_file() 函数对指定的文件进行写操作,把输入到动态链表的所有学生信息保存到文件中。在界面状态下,输入8后调用void

6、 insert_record() 函数在动态链表中插入一个学生的成绩记录,并且链表结点数加1。在插入记录过程中若学号输入0则返回主菜单。在界面状态下,输入3后先调用void print_list() 函数对学生成绩排序并确定名次,而这个函数运用冒泡法进行排序,排序完毕后再调用void print_list() 函数显示所有已经建立好的节点的节点号和该节点中数据项内容,即按总成绩从高到低排序后显示动态链表中所有学生的成绩记录。输出所有记录到屏幕上显示后自动则返回主菜单。在界面状态下,输入4后调用void search_record()函数,即先用一个指针变量接收输入的学号,再与动态链表中各结点的

7、学号一一比较,如果没有则返回失败信息,如果找到就将输出此学生全部信息到屏幕上显示出来。在查找记录过程中若学号输入0则提示找不到并返回主菜单。在界面状态下,输入2后调用void delete_a_record()函数,即先用一个变量接收输入的学号,再与动态链表中各结点的学号一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,并且链表结点数减1。在删除记录过程中若学号输入0则提示找不到并返回主菜单。在界面状态下,输入5后调用void save_the_file() 函数,先用一个文件(FILE)类型结构体的指针变量fp接收fopen(文件名,文件使用方式)函数的返回值(地址值),若打

8、开操作失败,其返回值为NULL(即地址值为0,是一个无效的指向)。若打开操作成功,返回值为指向被打开文件的文件信息区(结构体变量)的起始地址,该返回值要立即赋值给文件类型指针变量(例:/FILE *fp)保存起来,否则fopen函数返回值的丢失会导致无法对被打开的文件进行操作。最后使用fclose(fp)函数关闭文件。在界面状态下,输入6后调用void load_the_file()加载存储在外部介质的文件到内存或导入信息模块读取文件中所有学生的数据(包括班级、学号、姓名、成绩等)到动态链表。在界面状态下,输入9后用一个函数void quit()来实现,可首先提示将信息保存到文件中,释放动态创

9、建的内存空间,再退出此程序。3)流程图4. 代码设计#includestdlib.h#define TOTALSTU 10long no;char name15;char sex;int age;int score4;float sum;float average;int order;struct S1 *next;student;int n;char flag=0;student *head; /*链表头结点指针*/char filename12;student *enter_list() /*建立链表,输入成批学生信息*/student *p1,*p2;n=0;p1=p2=(student

10、*)malloc(sizeof(student);printf( Please input student info: (Press 0 to end) n);Num:scanf(%ld,&p1-no);if(p1-no=0) return(0);Name:%c,p1-name);gets(p1-Age:%dage);Sex (m/f):sex);while(p1-sex!=f&m)printf(Error!please input again:nMath:score0);English:score1);Physics:score2);History:score3);head=NULL;no!

11、=0) /*输入为0时结束*/n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=(student*)malloc(sizeof(student);nNum:no=0) break;Sex(m/f):nMath: scanf(p2-next=NULL;return(head);void insert_record() /*插入学生节点*/student *p0;student *p1;student *p2;p0=(student*)malloc(sizeof(student);p1=p2=head; /*p1指向原链表*/no:* name:* sex

12、:* age:* score:*,*,*,*n /*插入学生记录,保存在study中*/p0-,p0-gets(p0-%ld Name:%s Sex:%c Age:%d Record: Math:%d,English:%d,Physics%d,History:%dn,no,p0-name,p0-sex,p0-age,p0-score0,p0-score1,p0-score2,p0-if(head=NULL) head=p0; elsewhile(p0-nono)&(p1-next!=NULL) /*按Num升序插入*/p1=p1-next;if(p0-nono)if(head=p1) head

13、=p0;next=p0;void search_record() /*根据学生学号,查找学生记录*/student *p;long number;p=head;n*Enterlist is empty!*nreturn;Please input the Num you want to search:number);while(p-=number&p-=NULL)p=p-if(p-no=number)n* found it *n%d,Physics:%d,History:,p-no,p-name,p-sex,age,p-score0,p-score1,p-score2,p- /*查找完成后显示*

14、/ else printf(%ld cant be foundn,number);nEnterlist is empty!Please input the Num you want to delete: /*输入要删去记录的学生学号*/p1=head;while(no!no&=NULL) /*与链表中的学生学号依次比较*/if(no=p1-no) /*找到了,将该节点删去*/if(p1=head)head=p1-next=p1-has delete:%ldn,no);n=n-1;%ld not been found! /*找不到,提示*/There are %d recordsn,n);if(

15、head!do Student: Num:%-5ld Name:%-10s Sex:sex,p- Record:%-5d English:%-10d Physics:%d History: while(p!=NULL);void compute_the_score() /*整理学生成绩*/int i,j,m,k=0;float thesum=0;student *aTOTALSTU;student *p0,*p ;p0=head; /* 用指针P0调用动态链表 */while(p0!=NULL) /*计算各节点总分及平均成绩*/thesum=0;for(j=0;jscorej;sum=thesum;average=(float)(p0-sum)/4;p0=p0-=NULL) /*将动态链表各节点地址赋给指针数组 */ak+=p0;m=k;ak=NULL;for(i=0;im-1;i+) /*冒泡法排序,使各节点按总分降序排列 */m-1-i;if(*aj).sum=90: *ni+) /* 均分在90分以上(含90)学生名单*/if(*ai).average=90) printf(=80:i+) /* 均分在80分以上学生名单*/=80)=70:i+) /* 列出70分以上学生名单*/=70) prin

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2