学生信息管理系统C课程设计_第1页
学生信息管理系统C课程设计_第2页
学生信息管理系统C课程设计_第3页
学生信息管理系统C课程设计_第4页
学生信息管理系统C课程设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、设计分析该设计是设计一个实用的小型学生成绩管理系统。它有录入,查询,修改,删除,保存的基本功能,并且能够对指定文件操作,也可将多个文件组成一个文件。二、系统设计说明1 程序运行主界面再根据用户的不同需求来选择不同的操作2 模块功能设计2.1.建立学生基本信息使用动态链表技术,用creat()函数实现学生基本信息的录入;2.2查询记录(1)可以按学号方式查询记录。(2)能给出查询记录的信息。(3) 如果查询的信息不存在,输出提示信息。2.3插入学生记录(1)可以在已有记录后面追加新的记录。 (2)可以随时增加新的记录,他们仅保存在向量数组中。(3) 如果没有记录存在,给出

2、提示信息。2.4 修改记录(1)可以按学号方式查找要修改的记录内容。(2)给出将被修改记录的信息,经确认进行修改。(3)如果已经是空表,应给出提示信息并返回主菜单。(4)如果没有找需要找到修改的信息,输出提示信息。2.5 删除记录(1)可以按学号方式删除记录。(2)标志将被删除的记录,可以再次取消标志,经确认后删除已经标志的记录。(3) 如果已经是空表,删除时应给出提示信息并返回主菜单。(4)如果没有要删除的信息,输出信息。(5)删除操作及限于内存,只有执行存储操作时,才能覆盖原记录。 2.6 文件存储(1)可以按默认名字或者指定名字存储记录文件。(2)

3、更新存储标志。三、系统技术文档1、 系统各主要模块流程图1.1输入数据模块程序开始首先输入学生的学号再输入姓名在提示语句下,输入学生的科目与成绩当输入的学号为000000000时,循环结束将结果在显示屏上输出,并保存在文本文档中程序结束1.2查找信息模块程序开始通过学号的方式进行查找如果没有此人,给出提示语句输出查找的学生的学号与姓名输出查找人的成绩将计算结果在显示屏中显示出来程序结束1.3修改信息模块程序开始通过学号进行修改如果没有此人,给出提示语句重新输入学生的学号与姓名重新输入学生的各科成绩将计算结果在显示屏上显示出来并覆盖原来的文本文档程序结束1.4删除信息模块程序开始通过学号方式进行

4、删除如果没有此人,给出提示信息输入要删除学生的学号删除该学生的所有记录将计算结果返回到显示屏中显示出来程序结束2软件总体测试方案与测试记录2.1测试方案将程序编写完成后,开始整体测试。分别就不同的模块功能进行测试,看程序是否能够正确的运行出结果,是否有逻辑错误。2.2测试部分记录(1)数据的录入过程(2)数据的查询3局部测试方案与测试记录3.1测试方案局部测试分别进行了数据的修改与数据的插入两个模块的测试;3.2测试部分记录(1)修改模块(2)插入信息模块4软件调试与修改记录4.1软件调试软件调试采用单步调试的方法,查看其运行过程。保证每一步执行和预期是一致的。然后进行大量的的尝试不同的数据进

5、行调试,保证没有其他错误。4.2修改记录在整个程序的编写过程中,总是伴随着程序的修改。一直调试到能够正确运行出结果为止。5测试结论经过以上的测试步骤后,软件的运行结果没有任何问题。可以初步断定,这个软件的功能是比较稳定的。已经达到了设计的基本要求。6其他运行情况记录删除后的状况:四、系统使用说明书:1. 在visual.c+里打开“学生管理.cpp”,编译与调试,最后运行程序;2. 根据运行界面上的文字提示,选择不同的任务编码,已达到不同的操作功能;五、设计体会及今后的改进意见通过这次的设计,我学到了很多。首先,学会了如何建立一个动态链接即就是creat()函数;还有此次设计用到了好多链表的操

6、作,比如说:链表的输出、链表的插入、链表的删除;这些都是有一定的编程难度的。再者,本次设计是一个模块划分比较清晰地程序,每个模块都有自己的函数与应该实现的功能;最后,用到了文件的操作,这是C+课最后所讲到的知识;本次设计所包含的知识面比较广,所以必须要把所学的知识融会贯通才行;当然,软件也有些许不足之处,比如:没有实现从母表中提取子表;软件的一些细节性问题还是有待进一步完善的。参考程序:#include<iostream>#include<fstream>#include<string>#include<ctime>#include<iom

7、anip>#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 *crea

8、t() ; / 创建链表函数 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(); /读入函数 /

9、菜单函数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<<"

10、; *菜单*"<<endl;cout<<"* 1输入数据 *"<<endl;cout<<"* 2插入信息 *"<<endl;cout<<"* 3查找信息 *"<<endl;cout<<"* 4修改信息 *"<<endl;cout<<"* 5删除信息 *"<<endl;cout<<"* 6保存信息 *"<<endl

11、;cout<<"请输入您想完成的操作:"cin>>m;meun(m);cout<<"你要继续操作吗?(y/n):"<<endl;cin>>c;system("cls");while(c='y');if(c='n')cout<<"谢谢使用,再见!"<<endl;/主函数入口int main() system("cls"); time_t t; time(&t); /密码设置

12、cout<<"*欢迎进入学生管理系统*n"<<endl << " 当前系统时间是: " << ctime(&t) << endl ; cout<<"请输入你的登录密码,只有四次机会!"<<endl; string str;int i=1; cin>>str; if(str="123456") cin.get();cout<<"文件路径与文件名?格式应为:盘符:文件名.txt"<

13、;<endl; cin>>filename; meun1(); else for(i=1;i<=3;i+) cout<<i<<"次密码错误,请重新输入密码!"<<endl; cin>>str; if(i=3) cout<<"您无权使用本系统!"<<endl; return 0; /建立动态链表 student *creat() int i; student *head,*p1,*p2; n=0; p1=p2=new student; cout<<&

14、quot;输入学生学号和成绩(要结束学号输入000000000):"<<endl; cout<<"请输入第"<<n+1<<"个学生的信息:"<<endl; cout<<"学号:" cin>>p1->num; cout<<"班级:" cin>>p1->class_0; cout<<"姓名:" ; cin>>p1->name; cout<

15、;<endl; p1->subject0="语文" p1->subject1="英语" p1->subject2="数学" p1->subject3="物理" p1->subject4="化学" p1->subject5="生物" for(i=0;i<6;i+) cout<<"科目:" cout<<p1->subjecti<<endl; cout<<&qu

16、ot;平时成绩:" cin>>p1->averagei; cout<<"期末成绩:" cin>>p1->final_scorei; cout<<endl; head=NULL; while(p1->num!="000000000") n=n+1; if(n=1) head=p1; else p2->next=p1; p2=p1; p1=new student; cout<<"请输入第"<<n+1<<"个学生的

17、数据:"<<endl; cout<<"学号:" cin>>p1->num; if(p1->num = "000000000")break; cout<<"班级:" cin>>p1->class_0; cout<<"姓名:" cin>>p1->name; p1->subject0="语文" p1->subject1="英语" p1->subje

18、ct2="数学" p1->subject3="物理" p1->subject4="化学" p1->subject5="生物" for(i=0;i<6;i+) cout<<"科目:" cout<<p1->subjecti<<endl; cout<<"平时成绩:" cin>>p1->averagei; cout<<"期末成绩:" cin>>p

19、1->final_scorei; cout<<endl; p2->next=NULL; return(head); / 链表的输出void print(student *head) student *p; p=head; int i,j=0; if(head != NULL) do cout<<"学号 "<<"班级 "<<" 姓名 "<<endl; cout<<endl; cout<<p->num<<" &quo

20、t; studj.num=p->num; cout<<p->class_0<<" " strcpy(studj.class_0,p->class_0); cout<<p->name<<" " strcpy(,p->name); cout<<endl; for(i=0;i<6;i+) cout<<" 科目 "<<" 平时成绩 "<<" 期末成绩"&

21、lt;<" 最终成绩"<<endl;cout<<p->subjecti<<" " studj.subjecti=p->subjecti; cout<<p->averagei<<" "studj.averagei=p->averagei; cout<<p->final_scorei<<" " studj.final_scorei=p->final_scorei; cout<<(p-

22、>averagei)*0.3+(p->final_scorei)*0.7)<<endl;j+; p=p->next; cout<<setw(100)<<endl; while(p!=NULL); save(); /删除结点student *del(student *head,string num) student *p1,*p2; if(head=NULL) cout<<"空链表,无删的对象"<<endl;meun1(); p1 = head;while(num!=p1->num&&

23、amp;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);cout<<"请输入你想删除的学号:"cin>>del_num;wh

24、ile(del_num != "000000000")head = del(head,del_num);print(head);cout<<"请输入你想删除的学号:"cin>>del_num; /查询信息void search(student *head) print(head);if(head=NULL)cout<<"这是一个空链表,无查找项"<<endl;meun1();int i;string num;student *p1;cout<<"请输入你想查找的学生

25、号:" cin>>num; p1=head; while(p1->num!="000000000") if(p1->num=num) cout<<p1->num<<" " cout<<p1->class_0<<" " cout<<p1->name<<" " for(i=0;i<6;i+) cout<<p1->subjecti<<" " c

26、out<<p1->averagei<<" " cout<<p1->final_scorei<<" " cout<<(p1->averagei)*0.3+(p1->final_scorei)*0.7<<endl; break; if(p1->num!=num&&p1->next=NULL) cout<<"没有该学生的信息!" else p1=p1->next;/插入结点struct student

27、 *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->num<=p1->num)if(head = p1)head = p0;else p2->next = p0;p

28、0->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 ;cout<<"学号:"cin>>stu->num;cout<<"班级:"cin>>stu-&

29、gt;class_0;cout<<"姓名:"cin>>stu->name;for(i=0;i<6;i+) cout<<"科目:" cin>>stu->subjecti; cout<<"平时成绩:" cin>>stu->averagei; cout<<"期末成绩:" cin>>stu->final_scorei; cout<<endl;head = insert(head,stu)

30、;print(head);while(stu->num !="000000000")cout<<"输入你想插入的数据:"stu = new student ;cout<<"学号:"cin>>stu->num;if(stu->num ="000000000")break;cout<<"班级:" cin>>stu->class_0; cout<<"姓名:"cin>>stu-

31、>name;stu->subject0="语文" stu->subject1="英语" stu->subject2="数学" stu->subject3="物理" stu->subject4="化学" stu->subject5="生物" for(i=0;i<6;i+) cout<<"科目:" cin>>stu->subjecti; cout<<"平时成绩:

32、" cin>>stu->averagei; cout<<"期末成绩:" cin>>stu->final_scorei; cout<<endl;head = insert(head,stu);print(head);/修改信息void update(struct student *head)struct student *stu;string del_num;int i;print(head);cout<<"请输入你想修改的学号:"cin>>del_num;whi

33、le(del_num != "000000000")head = del(head,del_num);cout<<"请重输入此学生的数据:"stu = new student ;stu->num = del_num; cout<<"班级:"cin>>stu->class_0;cout<<"姓名:"cin>>stu->name;stu->subject0="语文" stu->subject1="英语

34、" stu->subject2="数学" stu->subject3="物理" stu->subject4="化学" stu->subject5="生物" for(i=0;i<6;i+)cout<<"科目:"cin>>stu->subjecti;cout<<"平时成绩:"cin>>stu->averagei; cout<<"期末成绩:" cin&

35、gt;>stu->final_scorei;cout<<endl<<setw(10); head = insert(head,stu); print(head); cout<<"请输入你想修改的学号:" cin>>del_num; /信息保存 void save() ofstream outfile(filename,ios:out);int i,j;if(!outfile)cerr<<"open error"exit(1);for(j=0;j<n;j+) outfile<<"学号 "<<studj.num<<" "&l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论