学生成绩管理系统(链表版).doc
《学生成绩管理系统(链表版).doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统(链表版).doc(28页珍藏版)》请在咨信网上搜索。
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)采用单链表存储结构实现;(3)所有数据以外部文件方式保存第2章 第2章总体
2、设计2。1 系统的程序流程图绘制一个系统的总体程序流程图,主要展示系统从开始以后,可以经过哪些流程,最后结束.按姓名修改某位同学的成绩按姓名修改某位同学的成绩输出链表内容输出链表内容进入系统浏览初始学生信息按姓名修改某位同学的成绩输入同学的相关信息查找按姓名删除某位同学的成绩初始学生成绩排序浏览所有同学的信息及排名插入新的成绩查看初始学生总分及平均分保存最终结果到可浏览文件退出系统主菜单统计学生信息录入2。2系统的全局变量和常量系统全局变量int n;char a;头文件:include stdio。h#include ”time.h”#include ”string。h”include ”s
3、tdlib.hinclude ”conio。h”2.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)/交换排
4、序时的值void sort()/对初始成绩进行排序void sort1()/对所有数据进行排序void search_print(Lstu *p)/输出查找信息void search_choose() /选择按分数段查找方式void search() /查找void modify_choose(Lstu p,int n)/选择修改方式void modify() /按姓名修改void Insert()/按序号插入void del() /按姓名删除void statistics() /成绩统计int menu() /菜单(主界面)第3章 第3章详细设计按函数,写出函数的原型声明,并画出每个函数的程
5、序流程图。 3。1 主函数设计函数3。2 录入函数设计添加的信息包括学号(不允许重复)、姓名(不允许重复)、语文成绩、数学成绩和英语成绩,如流程图所示:开始插入数据输入学生成绩信息调用类成员函数采用单链表保存数据结束调用类成员函数保存数据到文件中本程序采用的是尾插法,就是每次将新申请的结点插在终端结点的后面,其执行过程如图所示.尾插法建立单链表操作示意图3。3 排序函数设计可按照学号、语文成绩、数学成绩、英语成绩和平均分分别排序。如图所示:结束输入排序编号判断抱歉,没有此排序输出学生的信息排序开始NY3。4 查找函数设计按姓名、学号和分数段查找学生成绩的流程图分别如下图4。3所示。结束输入要查
6、找姓名判断抱歉没有该学生输出该学生的信息按姓名查找开始NY图4。3按姓名查找学生成绩信息流程图在单链表中,即使知道被访问结点的位置i,也不能像顺序表那样直接按序号访问,而只能从头指针出发,设置一个工作指针p,顺next域逐个结点往下搜索。当p指向某个结点时判断是否为第i个结点,若是则查找成功;否则,将工作指针p后移,即将p指向原来所指结点的后继结点。直到p为NULL时查找失败。单链表查找过程如图4.4所示。图4。4单链表查找过程的示意图按学号查询学生成绩信息同按姓名查找学生成绩信息,此处不再详细列出.(3)学生成绩修改模块3.5修改函数设计首先要查找与要修改数据相匹配的信息,若没有则返回失败。
7、否则把相应的信息输出,然后再重新输入新的数据并保存到单链表。返回主菜单开始修改操作输入姓名姓名一致执行修改功能NY3。6插入函数设计首先要确定插入数据的位置,执行插入操作,然后再输入数据并保存到单链表。开始插入操作选择要插入的位置判断插入的位置执行插入功能NY返回主菜单3。7 删除函数设计当选择删除功能时,首先输入要删除的同学的姓名,然后输入要删除的同学的学号,如果该同学存在并且姓名与学号匹配的上,则进行删除操作,否则返回失败。其流程图如下:开始删除操作输入姓名姓名姓名一致执行删除功能返回主菜单NY删除操作定义为将单链表的第i个结点删去.因为在单链表中结点ai存储地址在其前驱结点ai-1的指针
8、域,所以必须首先找到ai-1的存储地址p,然后令p的next域指向ai 的后继结点,即把结点ai从链上摘下来,最后释放结点ai的存储空间,如图4.6所示。在单链表中删除结点指针的变化情况3.8 保存函数设计输入学生信息应保存到学生基本信息文件中,修改后的信息将可保存到可浏览的文件,如图所示:开始保存操作输入保存到文件名判断文件名的格式执行删除功能返回主菜单NY3.9 显示函数设计从单链表表头遍历整个单链表,将所有数据输出。其部分代码如下:void read() /文件读取 FILE fp; Lstu p,*p1; if((fp=fopen(初始值二进制.txt”,rb))=NULL) prin
9、tf(”Cannot open 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) p1next=p; p1=p1next; head=head-next;fclose(fp);3.10 退出函数设计第4章 第4章测试主要进行功能性测试,即验证各个功能模块是否正确运行。可以采用运行系统进行截图的方法来验证系统结果的正确性.在完成了系统各方面的设计后,并不是可以运
10、行就完成的,为了保证系统性能的稳定性跟安全性等,就要对系统做测试。测试环境如下:l 硬件:P4C 2。4GHz,500GB硬盘,2内存;l 软件:Windows 7 Personal SP1,分辨率1366768,Microsoft Visual C+ 6.0。运行的主界面如图所示: 点击1输入学生相关信息,如图所示: 浏览初始学生信息,如图所示: 查看初始学生总分及平均分,如图所示: 查找,如图所示:按姓名查找: 初始学生成绩排序,如图所示:按平均成绩进行排序: 插入新成绩,如图所示: 按姓名修改某位学生的成绩,如图所示:选择修改数学成绩: 按姓名删除某位学生的成绩,如图所示: 浏览所有学生
11、的信息及排名,如图所示: 保存最终结果到可浏览的文件中,如图所示:统计,如图所示:总结写这次实验课的收获和感想。参考文献附录 程序源代码/程序名称: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,e
12、nglish; float sum,ave; Lstu next;Lstu;Lstu *head;void Create(int n) /创建链表Lstu p,*s;int i;for(i=0;in;i+) if(i=0)p=(Lstu )malloc(sizeof(Lstu));printf(”请输入第%d个人的信息n,i+1);printf(”请输入班级: );scanf(d,pcla); printf(请输入学号: ”);scanf(ld”,p-num); printf(”请输入姓名: );scanf(”s”,pname);printf(”请输入性别: ”);scanf(”%s,psex
13、);printf(请输入语文成绩: ”);scanf(”f”,&pchinese);printf(请输入数学成绩: ”);scanf(%f”,pmath);printf(”请输入英语成绩: ”);scanf(%f”,penglish);psum=pchinese+pmath+p-english;pave=p-sum/3;head=p;if(n=1) pnext=NULL; elses=(Lstu )malloc(sizeof(Lstu);printf(”请输入第%d个人的信息n”,i+1);printf(请输入班级: ”);scanf(d,&scla); printf(”请输入学号: );sc
14、anf(”%ld”,s-num); printf(”请输入姓名: );scanf(”s”,s-name);printf(”请输入性别: ”);scanf(s,ssex);printf(请输入语文成绩: ”);scanf(”f”,&schinese);printf(”请输入数学成绩: );scanf(%f”,&smath);printf(”请输入英语成绩: );scanf(”f”,senglish);ssum=schinese+s-math+senglish;save=ssum/3; p-next=s;p=s;s-next=NULL;void List() /输出链表内容 Lstu p;int
15、i=0; p=head; if(p=NULL)printf(Sorry,Its a Empty Listn”);elseprintf(”nnt-n”);printf(”t-5s%5s %10s-8s%7s%-10s%10s%10sn,”序号”,”班级”,”学号”,姓名,性别,语文成绩,”数学成绩”,”英语成绩”);printf(”t-n”);while (p)i+;pID=i; printf(”t 4d-5d -7d %8s%7s%-10.2f-10.2f10。2fn,pID,pcla,p-num,p-name,psex,pchinese,pmath,penglish); printf(”t-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 链表版
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。