




免费预览已结束,剩余15页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、设计分析该设计是设计一个实用的小型学生成绩管理系统。它有录入,查询,修改,删除,保存的基本功能,并且能够对指定文件操作,也可将多个文件组成一个文件。二、系统设计说明1 程序运行主界面再根据用户的不同需求来选择不同的操作2 模块功能设计2.1.建立学生基本信息使用动态链表技术,用creat()函数实现学生基本信息的录入;2.2查询记录(1)可以按学号方式查询记录。(2)能给出查询记录的信息。(3)如果查询的信息不存在,输出提示信息。2.3插入学生记录(1)可以在已有记录后面追加新的记录。 (2)可以随时增加新的记录,他们仅保存在向量数组中。(3)如果没有记录存在,给出提示信息。2.4修改记录(1)可以按学号方式查找要修改的记录内容。(2)给出将被修改记录的信息,经确认进行修改。(3)如果已经是空表,应给出提示信息并返回主菜单。(4)如果没有找需要找到修改的信息,输出提示信息。2.5删除记录(1)可以按学号方式删除记录。(2)标志将被删除的记录,可以再次取消标志,经确认后删除已经标志的记录。(3)如果已经是空表,删除时应给出提示信息并返回主菜单。(4)如果没有要删除的信息,输出信息。(5)删除操作及限于内存,只有执行存储操作时,才能覆盖原记录。 2.6文件存储(1)可以按默认名字或者指定名字存储记录文件。(2)更新存储标志。三、系统技术文档1、 系统各主要模块流程图1.1输入数据模块程序开始首先输入学生的学号再输入姓名在提示语句下,输入学生的科目与成绩当输入的学号为000000000时,循环结束将结果在显示屏上输出,并保存在文本文档中程序结束1.2查找信息模块程序开始通过学号的方式进行查找如果没有此人,给出提示语句输出查找的学生的学号与姓名输出查找人的成绩将计算结果在显示屏中显示出来程序结束1.3修改信息模块程序开始通过学号进行修改如果没有此人,给出提示语句重新输入学生的学号与姓名重新输入学生的各科成绩将计算结果在显示屏上显示出来并覆盖原来的文本文档程序结束1.4删除信息模块程序开始通过学号方式进行删除如果没有此人,给出提示信息输入要删除学生的学号删除该学生的所有记录将计算结果返回到显示屏中显示出来程序结束2软件总体测试方案与测试记录2.1测试方案将程序编写完成后,开始整体测试。分别就不同的模块功能进行测试,看程序是否能够正确的运行出结果,是否有逻辑错误。2.2测试部分记录(1)数据的录入过程(2)数据的查询3局部测试方案与测试记录3.1测试方案局部测试分别进行了数据的修改与数据的插入两个模块的测试;3.2测试部分记录(1)修改模块(2)插入信息模块4软件调试与修改记录4.1软件调试软件调试采用单步调试的方法,查看其运行过程。保证每一步执行和预期是一致的。然后进行大量的的尝试不同的数据进行调试,保证没有其他错误。4.2修改记录在整个程序的编写过程中,总是伴随着程序的修改。一直调试到能够正确运行出结果为止。5测试结论经过以上的测试步骤后,软件的运行结果没有任何问题。可以初步断定,这个软件的功能是比较稳定的。已经达到了设计的基本要求。6其他运行情况记录删除后的状况:四、系统使用说明书:1. 在visual.c+里打开“学生管理.cpp”,编译与调试,最后运行程序;2. 根据运行界面上的文字提示,选择不同的任务编码,已达到不同的操作功能;五、设计体会及今后的改进意见通过这次的设计,我学到了很多。首先,学会了如何建立一个动态链接即就是creat()函数;还有此次设计用到了好多链表的操作,比如说:链表的输出、链表的插入、链表的删除;这些都是有一定的编程难度的。再者,本次设计是一个模块划分比较清晰地程序,每个模块都有自己的函数与应该实现的功能;最后,用到了文件的操作,这是C+课最后所讲到的知识;本次设计所包含的知识面比较广,所以必须要把所学的知识融会贯通才行;当然,软件也有些许不足之处,比如:没有实现从母表中提取子表;软件的一些细节性问题还是有待进一步完善的。参考程序:#include#include#include#include#include#define NULL 0using namespace std;int n;/定义全局变量n用来确定学生的人数struct student /定义一个学生信息结构体 char class_020; string num; /学生的学号用九位字符表示,为使用方便用string类 char name20; string subject6; float average6; float final_score6; student *next; stud100;/各个模块函数 char filename20; void meun(int m); /菜单函数 student *creat() ; / 创建链表函数 void print(student *head); / 输出链表函数 void search(student *head); / 查找信息函数 void Insert(struct student *head);/插入信息函数 student *del(student *head,string num) ; void update(struct student *head) ;/修改信息函数 void Dele(student *head); / 删除信息函数 /文件操作的两个函数 void save() ; /保存函数 void read(); /读入函数 /菜单函数void meun(int m) static student *head; switch(m)case 1: head=creat();print(head);break;case 2: Insert(head);break;case 3: search(head);break;case 4: update(head);break;case 5: Dele(head);break;case 6: save();break;void meun1()int m;char c;docout*endl;cout *菜单*endl;cout* 1输入数据 *endl;cout* 2插入信息 *endl;cout* 3查找信息 *endl;cout* 4修改信息 *endl;cout* 5删除信息 *endl;cout* 6保存信息 *endl;coutm;meun(m);cout你要继续操作吗?(y/n):c;system(cls);while(c=y);if(c=n)cout谢谢使用,再见!endl;/主函数入口int main() system(cls); time_t t; time(&t); /密码设置 cout*欢迎进入学生管理系统*nendl 当前系统时间是: ctime(&t) endl ; cout请输入你的登录密码,只有四次机会!str; if(str=123456) cin.get();cout文件路径与文件名?格式应为:盘符:文件名.txtfilename; meun1(); else for(i=1;i=3;i+) couti次密码错误,请重新输入密码!str; if(i=3) cout您无权使用本系统!endl; return 0; /建立动态链表 student *creat() int i; student *head,*p1,*p2; n=0; p1=p2=new student; cout输入学生学号和成绩(要结束学号输入000000000):endl; cout请输入第n+1个学生的信息:endl; coutp1-num; coutp1-class_0; coutp1-name; coutsubject0=语文; p1-subject1=英语; p1-subject2=数学; p1-subject3=物理; p1-subject4=化学; p1-subject5=生物; for(i=0;i6;i+) cout科目:; coutsubjectiendl; coutp1-averagei; coutp1-final_scorei; coutnum!=000000000) n=n+1; if(n=1) head=p1; else p2-next=p1; p2=p1; p1=new student; cout请输入第n+1个学生的数据:endl; coutp1-num; if(p1-num = 000000000)break; coutp1-class_0; coutp1-name; p1-subject0=语文; p1-subject1=英语; p1-subject2=数学; p1-subject3=物理; p1-subject4=化学; p1-subject5=生物; for(i=0;i6;i+) cout科目:; coutsubjectiendl; coutp1-averagei; coutp1-final_scorei; coutnext=NULL; return(head); / 链表的输出void print(student *head) student *p; p=head; int i,j=0; if(head != NULL) do cout学号 班级 姓名 endl; coutendl; coutnumnum; coutclass_0class_0); coutnamename); coutendl; for(i=0;i6;i+) cout 科目 平时成绩 期末成绩 最终成绩endl;coutsubjectisubjecti; coutaverageiaveragei; coutfinal_scoreifinal_scorei; coutaveragei)*0.3+(p-final_scorei)*0.7)next; coutsetw(100)endl; while(p!=NULL); save(); /删除结点student *del(student *head,string num) student *p1,*p2; if(head=NULL) cout空链表,无删的对象num&p1-next!=NULL)p2 = p1;p1=p1-next;if(num=p1-num)if(p1=head)head = p1-next;else p2-next = p1-next;n = n - 1;else cout查无此人;return(head);/判断是否能够删除信息void Dele(student *head) string del_num; print(head);coutdel_num;while(del_num != 000000000)head = del(head,del_num);print(head);coutdel_num; /查询信息void search(student *head) print(head);if(head=NULL)cout这是一个空链表,无查找项endl;meun1();int i;string num;student *p1;coutnum; p1=head; while(p1-num!=000000000) if(p1-num=num) coutnum ; coutclass_0 ; coutname ; for(i=0;i6;i+) coutsubjecti ; coutaveragei ; coutfinal_scorei ; coutaveragei)*0.3+(p1-final_scorei)*0.7num!=num&p1-next=NULL) coutnext;/插入结点struct student *insert(struct student *head,struct student *stud)struct student *p0,*p1,*p2;p1 = head;p0 = stud;if(head = NULL)head = p1;p0-next=NULL;elsewhile(p0-num != p1-num)&(p1-next!=NULL)p2=p1;p1=p1-next;if(p0-numnum)if(head = p1)head = p0;else p2-next = p0;p0-next = p1;elsep1-next = p0;p0-next = NULL;n = n+1;return(head);/插入判断void Insert(struct student *head)struct student *stu;int i;cout输入你想插入的数据:endl;stu = new student ;coutstu-num;coutstu-class_0;coutstu-name;for(i=0;i6;i+) coutstu-subjecti; coutstu-averagei; coutstu-final_scorei; coutnum !=000000000)cout输入你想插入的数据:;stu = new student ;coutstu-num;if(stu-num =000000000)break;coutstu-class_0; coutstu-name;stu-subject0=语文; stu-subject1=英语; stu-subject2=数学; stu-subject3=物理; stu-subject4=化学; stu-subject5=生物; for(i=0;i6;i+) coutstu-subjecti; coutstu-averagei; coutstu-final_scorei; coutendl;head = insert(head,stu);print(head);/修改信息void update(struct student *head)struct student *stu;string del_num;int i;print(head);coutdel_num;while(del_num != 000000000)head = del(head,del_num);coutnum = del_num; coutstu-class_0;coutstu-name;stu-subject0=语文; stu-subject1=英语; stu-subject2=数学; stu-subject3=物理; stu-subject4=化学; stu-subject5=生物; for(i=0;i6;i+)coutstu-subjecti;coutstu-averagei; coutstu-final_scorei;coutendlsetw(10); head = insert(head,stu); print(head); coutdel_num; /信息保存 void save() ofstream outfile(filename,i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古峰市教育科学研究中心竞争性比选教研员5人考前自测高频考点模拟试题及答案详解(有一套)
- 2025吉林市事业单位招聘1381名工作人员(含专项招聘)模拟试卷及答案详解一套
- 2025湖南郴州市汝城县事业单位招聘引进高层次和急需紧缺人才21人考前自测高频考点模拟试题及完整答案详解
- 2025辽宁抚顺市龙晟保安服务有限责任公司招聘拟聘用人员模拟试卷及答案详解(名校卷)
- 2025年马鞍山市公安局招聘警务辅助人员45人考前自测高频考点模拟试题带答案详解
- 2025海南三亚市第二人民医院第一次(考核)招聘员额制工作人员(第12号)模拟试卷及答案详解(有一套)
- 2025年孝感高新区公开招聘教师35人模拟试卷及答案详解(必刷)
- 2025贵州中医药大学第一附属医院高层次人才引才13人模拟试卷及答案详解(有一套)
- 2025国航股份西南分公司乘务员岗位高校毕业生校园招聘(四川)考前自测高频考点模拟试题附答案详解(典型题)
- 2025安徽理工大学第一附属医院第二批紧缺岗位招聘14人模拟试卷及答案详解(全优)
- 中国沈阳铁路局劳动合同8篇
- 高考3500词汇表(完整版)
- 《同人作品著作权法律问题研究》
- 首都博物馆实践学习任务单-1
- (新版标准日本语初级下册)第25课 教学课件 知识点+练习
- 德国企业的共同治理模式
- 集成电路器件与SPICE模型9
- 民宿经营管理培训教材
- 住院医师规范化培训临床实践能力结业考核专科技能操作评分表(皮肤科)真菌镜检
- 2022年宜昌市不动产登记中心事业单位工作人员招聘笔试试题及答案
- 做新时代马克思主义的信仰者与实践者课件
评论
0/150
提交评论