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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

学生成绩管理系统链表版.docx

1、学生成绩管理系统链表版 C语言应用实验报告题 目学生成绩管理系统(链表版)第1章 需求分析 3第2章 总体设计 32.1 系统的程序流程图 32.2系统的全局变量和常量 32.3系统的函数介绍 3第3章 详细设计 33.1 主函数设计 33.2 录入函数设计 43.3 排序函数设计 43.4 查找函数设计 43.5修改函数设计 43.6插入函数设计 43.7 删除函数设计 43.8 保存函数设计 43.9 显示函数设计 43.10 退出函数设计 4第4章 测试 5总结 5参考文献 5附录 程序源代码 5第1章第1章需求分析(1) 能完成学生成绩的插入、查询、修改、删除、输出等功能;(2)采用单

2、链表存储结构实现;(3) 所有数据以外部文件方式保存第2章第2章总体设计2.1 系统的程序流程图绘制一个系统的总体程序流程图,主要展示系统从开始以后,可以经过哪些流程,最后结束。按姓名修改某位同学的成绩按姓名修改某位同学的成绩输出链表内容输出链表内容2.2系统的全局变量和常量系统全局变量int n;char a;头文件:#include stdio.h#include time.h#include string.h#include stdlib.h#include conio.h2.3系统的函数介绍把系统中的每个函数的原型列出来,解释一下函数的返回值及形式参数的含义;最后,再介绍一下每个函数的

3、功能。void Create(int n) /创建链表void List() /输出链表内容void list() /输出链表所有内容void save() /文件保存void save1() /文件保存void read() /文件读取void read1() /文件读取void SAVE() /保存到可浏览文件void SAVE1() /保存到可浏览文件void sort_data_copy(Lstu *p,Lstu *s) /交换排序时的值void sort() /对初始成绩进行排序void sort1() /对所有数据进行排序void search_print(Lstu *p) /输出

4、查找信息void search_choose() /选择按分数段查找方式void search() /查找void modify_choose(Lstu *p,int n) /选择修改方式void modify() /按姓名修改void Insert() /按序号插入void del() /按姓名删除void statistics() /成绩统计int menu() /菜单(主界面)第3章第3章详细设计按函数,写出函数的原型声明,并画出每个函数的程序流程图。 3.1 主函数设计函数3.2 录入函数设计添加的信息包括学号(不允许重复)、姓名(不允许重复)、语文成绩、数学成绩和英语成绩,如流程图所

5、示:本程序采用的是尾插法,就是每次将新申请的结点插在终端结点的后面,其执行过程如图所示。尾插法建立单链表操作示意图3.3 排序函数设计可按照学号、语文成绩、数学成绩、英语成绩和平均分分别排序。如图所示:3.4 查找函数设计按姓名、学号和分数段查找学生成绩的流程图分别如下图4.3所示。图4.3按姓名查找学生成绩信息流程图在单链表中,即使知道被访问结点的位置i,也不能像顺序表那样直接按序号访问,而只能从头指针出发,设置一个工作指针p,顺next域逐个结点往下搜索。当p指向某个结点时判断是否为第i个结点,若是则查找成功;否则,将工作指针p后移,即将p指向原来所指结点的后继结点。直到p为NULL时查找

6、失败。单链表查找过程如图4.4所示。图4.4单链表查找过程的示意图按学号查询学生成绩信息同按姓名查找学生成绩信息,此处不再详细列出。(3)学生成绩修改模块3.5修改函数设计首先要查找与要修改数据相匹配的信息,若没有则返回失败。否则把相应的信息输出,然后再重新输入新的数据并保存到单链表。3.6插入函数设计首先要确定插入数据的位置,执行插入操作,然后再输入数据并保存到单链表。3.7 删除函数设计当选择删除功能时,首先输入要删除的同学的姓名,然后输入要删除的同学的学号,如果该同学存在并且姓名与学号匹配的上,则进行删除操作,否则返回失败。其流程图如下:删除操作定义为将单链表的第i个结点删去。因为在单链

7、表中结点ai存储地址在其前驱结点ai-1的指针域,所以必须首先找到ai-1的存储地址p,然后令p的next域指向ai 的后继结点,即把结点ai 从链上摘下来,最后释放结点ai的存储空间,如图4.6所示。 在单链表中删除结点指针的变化情况3.8 保存函数设计输入学生信息应保存到学生基本信息文件中,修改后的信息将可保存到可浏览的文件,如图所示:3.9 显示函数设计从单链表表头遍历整个单链表,将所有数据输出。其部分代码如下:void read() /文件读取 FILE *fp; Lstu *p,*p1; if(fp=fopen(初始值二进制.txt,rb)=NULL) printf(Cannot o

8、pen the filen); exit(0); head=(Lstu*)malloc(sizeof(Lstu); p1=head; while(!feof(fp) p=(Lstu *)malloc(sizeof(Lstu); if(fread(p,sizeof(Lstu),1,fp)=1) p1-next=p; p1=p1-next; head=head-next;fclose(fp);3.10 退出函数设计第4章第4章测试主要进行功能性测试,即验证各个功能模块是否正确运行。可以采用运行系统进行截图的方法来验证系统结果的正确性。在完成了系统各方面的设计后,并不是可以运行就完成的,为了保证系统

9、性能的稳定性跟安全性等,就要对系统做测试。测试环境如下: 硬件:P4C 2.4GHz,500GB硬盘,2内存; 软件:Windows 7 Personal SP1,分辨率1366*768,Microsoft Visual C+ 6.0。运行的主界面如图所示:1点击1输入学生相关信息,如图所示:2浏览初始学生信息,如图所示:3查看初始学生总分及平均分,如图所示:4查找,如图所示:按姓名查找:5初始学生成绩排序,如图所示:按平均成绩进行排序:6插入新成绩,如图所示:7按姓名修改某位学生的成绩,如图所示:选择修改数学成绩:8按姓名删除某位学生的成绩,如图所示:9浏览所有学生的信息及排名,如图所示:1

10、0保存最终结果到可浏览的文件中,如图所示:统计,如图所示:总结写这次实验课的收获和感想。参考文献附录 程序源代码/程序名称:xsglxt.CPP/程序功能:采用链表与文件实现一个简单的学生成绩管理系统。#include stdio.h#include time.h#include string.h#include stdlib.h#include conio.h#define NULL 0typedef struct Lstu int cla,ID; long num; char name20; char sex20; float chinese,math,english; float sum

11、,ave; Lstu *next;Lstu;Lstu *head;void Create(int n) /创建链表 Lstu *p,*s; int i; for(i=0;icla); printf(请输入学号: );scanf(%ld,&p-num); printf(请输入姓名: );scanf(%s,p-name); printf(请输入性别: );scanf(%s,p-sex); printf(请输入语文成绩: );scanf(%f,&p-chinese); printf(请输入数学成绩: );scanf(%f,&p-math); printf(请输入英语成绩: );scanf(%f,&p

12、-english); p-sum=p-chinese+p-math+p-english; p-ave=p-sum/3; head=p; if(n=1) p-next=NULL; else s=(Lstu *)malloc(sizeof(Lstu); printf(请输入第%d个人的信息n,i+1); printf(请输入班级: );scanf(%d,&s-cla); printf(请输入学号: );scanf(%ld,&s-num); printf(请输入姓名: );scanf(%s,s-name); printf(请输入性别: );scanf(%s,s-sex); printf(请输入语文成

13、绩: );scanf(%f,&s-chinese); printf(请输入数学成绩: );scanf(%f,&s-math); printf(请输入英语成绩: );scanf(%f,&s-english); s-sum=s-chinese+s-math+s-english; s-ave=s-sum/3; p-next=s; p=s; s-next=NULL; void List() /输出链表内容 Lstu *p; int i=0; p=head; if(p=NULL) printf(Sorry,Its a Empty Listn); else printf(nnt-n); printf(t%

14、-5s%-5s %-10s%-8s%-7s%-10s%-10s%-10sn,序号,班级,学号,姓名,性别,语文成绩,数学成绩,英语成绩); printf(t-n); while (p)i+;p-ID=i; printf(t %-4d%-5d %-7d %-8s%-7s%-10.2f%-10.2f%-10.2fn,p-ID,p-cla,p-num,p-name,p-sex,p-chinese,p-math,p-english); printf(t-n); p=p-next; void list() /输出链表所有内容 Lstu *p; int i=0; p=head; if(p=NULL) pr

15、intf(Sorry,Its a Empty Listn); else printf(n -n); printf( %-5s%-5s %-7s %-8s%-7s%-10s%-10s%-10s%-8s%-8sn,序号,班级,学号,姓名,性别,语文成绩,数学成绩, 英语成绩,总分,平均分); printf( -n); while (p)i+;p-ID=i; printf( %-4d%-6d%-12d%-8s%-7s%-10.2f%-10.2f%-10.2f%-8.2f%-8.2fn,p-ID,p-cla,p-num,p-name,p-sex, p-chinese,p-math,p-english,

16、p-sum,p-ave); printf( -n); p=p-next; void save() /文件保存 FILE *fp; Lstu *p; p=head; if(fp=fopen(初始值二进制.txt,wb)=NULL) printf(Cannot open the file ); exit(0); while(p) fwrite(p,sizeof(Lstu),1,fp); p=p-next; fclose(fp);void save1() /文件保存 FILE *fp; Lstu *p; p=head; if(fp=fopen(初始值二进制备用.txt,wb)=NULL) print

17、f(Cannot open the file ); exit(0); while(p) fwrite(p,sizeof(Lstu),1,fp); p=p-next; fclose(fp);void read() /文件读取 FILE *fp; Lstu *p,*p1; if(fp=fopen(初始值二进制.txt,rb)=NULL) printf(Cannot open the filen); exit(0); head=(Lstu*)malloc(sizeof(Lstu); p1=head; while(!feof(fp) p=(Lstu *)malloc(sizeof(Lstu); if(

18、fread(p,sizeof(Lstu),1,fp)=1) p1-next=p; p1=p1-next; head=head-next;fclose(fp);void read1() /文件读取 FILE *fp; Lstu *p,*p1; if(fp=fopen(初始值二进制备用.txt,rb)=NULL) printf(Cannot open the filen); exit(0); head=(Lstu*)malloc(sizeof(Lstu); p1=head; while(!feof(fp) p=(Lstu *)malloc(sizeof(Lstu); if(fread(p,size

19、of(Lstu),1,fp)=1) p1-next=p; p1=p1-next; head=head-next;fclose(fp);void SAVE() /保存到可浏览文件 FILE *fp; Lstu *p;int i=0; p=head; if(fp=fopen(初始值可浏览文件.txt,w+)=NULL) printf(Cannot open the file ); exit(0); fprintf(fp,nnt-n); fprintf(fp,t%-5s%-5s %-10s%-8s%-7s%-10s%-10s%-10sn,序号,班级,学号,姓名,性别,语文成绩,数学成绩,英语成绩);

20、 fprintf(fp,t-nn);while(p) i+;p-ID=i; fprintf(fp,t %-4d%-5d %-7d %-8s%-7s%-10.2f%-10.2f%-10.2fn,p-ID,p-cla,p-num,p-name, p-sex,p-chinese,p-math,p-english); fprintf(fp,t-n); p=p-next; fclose(fp);void SAVE1() /保存到可浏览文件 FILE *fp;char filename20; Lstu *p;int i=0; p=head; printf(请输入保存到可浏览文件的文件名: ); scanf

21、(%s,filename); if(fp=fopen(filename,w+)=NULL) printf(Cannot open the file ); exit(0); fprintf(fp,n -n); fprintf(fp, %-5s%-5s %-7s %-8s%-7s%-10s%-10s%-10s%-8s%-8sn,序号,班级,学号,姓名,性别,语文成绩,数学成绩, 英语成绩,总分,平均分); fprintf(fp, -n);while(p) i+;p-ID=i; fprintf(fp, %-4d%-5d %-7d %-8s%-7s%-10.2f%-10.2f%-10.2f%-8.2f

22、%-8.2fn,p-ID,p-cla,p-num,p-name,p-sex, p-chinese,p-math,p-english,p-sum,p-ave); fprintf(fp,-n); p=p-next; fclose(fp);void sort_data_copy(Lstu *p,Lstu *s) /交换排序时的值 int cla1; cla1=p-cla;p-cla=s-cla;s-cla=cla1; long num1; num1=p-num;p-num=s-num;s-num=num1; char name120; strcpy(name1,p-name);strcpy(p-na

23、me,s-name);strcpy(s-name,name1); char sex120; strcpy(sex1,p-sex);strcpy(p-sex,s-sex);strcpy(s-sex,sex1); float chinese1; chinese1=p-chinese;p-chinese=s-chinese;s-chinese=chinese1; float math1; math1=p-math;p-math=s-math;s-math=math1; float english1; english1=p-english;p-english=s-english;s-english=e

24、nglish1; float sum1; sum1=p-sum;p-sum=s-sum;s-sum=sum1; float ave1; ave1=p-ave;p-ave=s-ave;s-ave=ave1;void sort() /对初始成绩进行排序 Lstu *p,*s; int n;char a; read();p=head; if(p=NULL) printf(Sorry,Its a Empty Listn); printf(n按Enter键继续n);a=getch(); elsewhile(1)system(cls);printf(n排序前结果为:n);read();list(); printf(t *=*=*=*=*=*=*=*=*=*=*=按学号排序(1)n); printf(t *=*=*=*=*=*=*=*=*=*=*=按语文成绩排序(2)n); printf(t *=*=*=*=*=*=*=*=*=*=*=按数学成绩排序(3)n); printf(t *=*=*=*=*=*=*=*=*=*=*=按英语成绩排序(4)n); printf(t *=*=*=*=*=*=*=*=*=*=*=按平均分排序(5)

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

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