




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档C+面向对象程序设计综合项目报告项目名称: 学生毕业设计管理系统 专 业: 软件技术 班 级: 软件0921 项目成员: 毛亚明 陈晓琴 王雪亮 报告日期:2010年12月30欢迎下载30欢迎下载。设计任务 一、基本要求(1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。(4)要求利用面向对象的方法以及C+的编程思想来完成系统的设计;(5)要求在设计的过程中,建立清晰的类层次; (6)在系统中至少要定义三个类,每个类中要有各自的属性和方法;二、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能及设计出比较友好的界面等。 三、设计方法和基本原理: 1、问题描述(功能要求): 某学校,主要有四类学生:专科生、本科生、硕士研究生和博士研究生。现在,需要存储这些学生的编号、姓名、年级和班级、级别、论文题目、指导老师和成绩,并显示全部信息。 要求: 1)其中,学生编号在生成学生信息时同时生成,每输入一个学生信息编号顺序加1。 2)程序对所有学生都有提升级别的功能 3)能按姓名或者编号显示、查找、增加、删除和保存各类学生的信息 2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法); (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。 四、程序设计和调试: ; 以对话框的形式,展现程序的实现。1、设计思路: 根据对学生信息的增删改查,为四个基本的模块,然后展开,运用文件流的方法,实现数据的保存。在原有基础上增加4个基本模块的一些功能,如以不同形式查看学生的信息。系统功能模块图类的层次图学生类学生信息结构体姓名学位学号 调试过程-Configuration: Test - Win32 Debug-Compiling.Test.cppH:C+项目学生毕业设计管理系统Test.cpp(50) : error C2039: next : is not a member of student H:C+项目学生毕业设计管理系统Test.cpp(23) : see declaration of studentH:C+项目学生毕业设计管理系统Test.cpp(159) : error C2039: next : is not a member of student H:C+项目学生毕业设计管理系统Test.cpp(23) : see declaration of studentH:C+项目学生毕业设计管理系统Test.cpp(159) : fatal error C1903: unable to recover from previous error(s); stopping compilation执行 cl.exe 时出错.Test.obj - 1 error(s), 0 warning(s)程序代码#include #include #include#include #includeusing namespace std;int amount=0;int num=100; /当前最高学号 ofstream *file50;struct info /学生信息结构体 string xy; string zy; string bj; string teacher; string lw; string score; struct info *next;class student /学生数据类 public: int id; string mun; string name; info sc3; class student *next; ;void input(student *head); /录入 /函数声明/void search1(student *head); /姓名查询void search2(student *head); /学号查询void change(student *head); /修改void shanchu(student *head); /删除void get(student *head); /取数据void display(); /显示菜单void show(student *head); /显示数据void readin(student *head); /保存数据string int_char(int);void main() /主函数 system(color f0); char x; bool flag2=0; student *head=new student; /初始化学生数据 head-next=NULL; cout endl; cout 学生毕业管理设计系统 endl; cout =-=-=-=-=-=-=-=-=-=- endl; cout 软件0921 -_-! endl; cout endl; cout endl; cout 作者: 王雪亮 毛亚明 陈晓琴 endl; cout x; if(x=0&x=8) flag2=1; else cout指令错误!endl; cout 请选择相应的数字进行操作: ; while(flag2=0); switch(x) case 1:cout*现在进行学生信息录入*n; input(head); cout输入的学生信息为:n; show(head); coutendl; display(); break; case 2: char z; cout*现在进行学生信息查询*n; cout请选择查询方式:; coutz; while(z!=0&z!=1) cout指令错误!endl; coutz; switch(z) case 0: search1(head);break;/按姓名查询 case 1: search2(head);break;/按学号查询 coutendl; display(); break; case 3: cout*现在进行学生信息修改*n; change(head); coutendl; display(); break; /按姓名修改 case 4: cout*现在进行学生信息删除*n; shanchu(head); show(head); coutendl; display(); break; /删除 case 5: cout*现在进行显示学生信息*n; show(head); coutendl; display(); break; /显示数据 case 6:cout*现在进行提取学生信息*n; get(head); coutendl; display(); break; case 7:cout*现在进行保存学生信息*n; readin(head); coutendl; display(); break; case 8: coutendl; cout &您已退出学生信息管理系统, 谢谢您的使用!& n; coutendl; exit(0); break; while(flag2=1);void display() /显示菜单 cout请选择你需要的项目: n; cout 1-录入; 2-查询; n; cout 3-修改; 4-删除; n; cout 5-显示; 6-提取; n; cout 7-保存; 8-退出; n; cout 请选择你需要的数字进行操作: ;void show(student *head) /显示学生数据 student *stu=head; cout| 学号 | 学位 | 姓名 | 学院 | 专业 | 班级 | 导师 | 论文 | 成绩| next!=NULL) stu=stu-next; cout| setw(9)(*stu).id; cout| setw(4)(*stu).mun; cout | setw(6)(*stu).name; cout | setw(4)(*stu).sc3.xy; cout | setw(4)(*stu).sc3.zy; cout | setw(4)(*stu).sc3.bj; cout | setw(4)(*stu).sc3.teacher; cout | setw(4)(*stu).sc3.lw; cout | setw(4)(*stu).sc3.score; cout|next; couta; ofstream outfile(D:课设学生信息.txt,ios:out); if(! outfile) cout打开文件错误!n; exit(0); while(a!=n) while(stu!=NULL) outfile*第amount个学生的数据:*n; outfilecout| 学号 | 学位 | 姓名 | 学院 | 专业 | 班级 | 导师 | 论文 |成绩|endl; outfile 学生信息: n | setw(9)(*stu).id| setw(4)(*stu).mun | setw(6)(*stu).name | setw(4) (*stu).sc3.xy | setw(4)(*stu).sc3.zy | setw(4)(*stu).sc3.bj | setw(4)(*stu).sc3.teacher | setw(4)(*stu).sc3.lw | setw(4)(*stu).sc3.scorenext; break; cout.成功将学生数据保存到中! ; outfile.close(); void input(student *head) /录入学生数据 char c; int j=0; student *p=head; filej=new ofstream(D:课设学生信息.txt,ios:app); do student *stu=new student; (*stu).id=num+1; num+; cout请输入学位(专科生,本科生,硕士研究生,博士研究生):(*stu).mun; cout请输入姓名:(*stu).name; cout请输入该生所在学院:(*stu).sc3.xy; cout请输入该生所在专业:(*stu).sc3.zy; cout请输入该生所在班级:(*stu).sc3.bj; cout请输入该生导师姓名:(*stu).sc3.teacher; cout请输入该生论文标题:(*stu).sc3.lw; cout请输入该生加权成绩:(*stu).sc3.score; stu-next=p-next; p-next=stu; amount+; coutc; p=p-next; while(c!=y&c!=n) cout指令错误!endl; coutc; while(c=y); j+; cout输入了 amount个学生的信息.next; bool flag=0; coutname; do if(stu!=NULL&name=(*stu).name) /输出总成绩 flag=1; cout您要查询的学生是:nameendl; cout| 学号 | 学位 | 姓名 | 学院 | 专业 | 班级 | 导师 | 论文 |成绩| endl; cout| setw(9)(*stu).id; cout| setw(4)(*stu).mun; cout | setw(6)(*stu).name; cout | setw(4)(*stu).sc3.xy; cout | setw(4)(*stu).sc3.zy; cout | setw(4)(*stu).sc3.bj; cout | setw(4)(*stu).sc3.teacher; cout | setw(4)(*stu).sc3.lw; cout | setw(4)(*stu).sc3.score; cout | next; while(stu!=NULL); if(flag=0) cout对不起!您要查询的学生不存在!endl; coutc; while(c!=y&c!=n) cout指令错误!endl; coutc; while(c=y); void search2(student *head)/用学号查询学生数据 char c;int no; do student *stu=head-next; int flag=0; coutno; do if(stu!=NULL&no=(*stu).id) flag=1; cout您要查询的学生是:nameendl; cout| 学号 | 学位 | 姓名 | 学院 | 专业 | 班级 | 导师 | 论文 |成绩| endl; cout| setw(9)(*stu).id; cout| setw(4)(*stu).mun; cout | setw(6)(*stu).name; cout | setw(4)(*stu).sc3.xy; cout | setw(4)(*stu).sc3.zy; cout | setw(4)(*stu).sc3.bj; cout | setw(4)(*stu).sc3.teacher; cout | setw(4)(*stu).sc3.lw; cout | setw(4)(*stu).sc3.score; cout|next; while(stu!=NULL); if(flag=0) cout对不起!您要查询的学生不存在!endl; coutc; while(c!=y&c!=n) cout指令错误!endl; cout您想继续查询吗?(y/n)c; while(c=y); void change(student *head) /修改学生数据 string name; char c; do bool flag2=0; student *stu=head ; info sc3; string mu; coutname; do if(name=(*stu).name) flag2=1; coutmu; coutsc3.xy; coutsc3.zy; coutsc3.bj; coutsc3.teacher; coutsc3.lw; coutsc3.score; (*stu).mun=mu; (*stu).sc3.xy=sc3.xy; (*stu).sc3.zy=sc3.zy; (*stu).sc3.bj=sc3.bj; (*stu).sc3.teacher=sc3.teacher; (*stu).sc3.lw=sc3.lw; (*stu).sc3.score=sc3.score; cout| 学号 | 学位 | 姓名 | 学院 | 专业 | 班级 | 导师 | 论文 | 成绩 | endl; cout| setw(9)(*stu).id; cout| setw(4)(*stu).mun; cout | setw(6)(*stu).name; cout | setw(4)(*stu).sc3.xy; cout | setw(4)(*stu).sc3.zy; cout | setw(4)(*stu).sc3.bj; cout | setw(4)(*stu).sc3.teacher; cout | setw(4)(*stu).sc3.lw; cout | setw(4)(*stu).sc3.score; cout|endl; coutnext; while(stu!=NULL); if(flag2=0) cout对不起!您要修改的学生不存在!请检查重新输入!endl; coutc; if(c!=y&c!=n) cout指令错误!请重新输入!; cinc; while(c=y); void shanchu(student *head)/删除学生数据 char c;int no; do int flag=0; coutno; student *q,*p; q=head; while(q-next!=NULL&q-next-id!=no) q=q-next; if(q-next!=NULL) flag=1; p=q-next; q-next=q-next-next; amount-; free(p); cout.成功删除! ; if(flag=0) cout对不起!您要删除的学生不存在!endl; coutc; while(c!=y&c!=n) cout指令错误!endl; coutc; while(c=y); void get(student *head) /提取学生数据 student *p; p=head; int j=0; string no; coutno; string aa; aa=int_char(p-next-id); while(p-next!=NULL) if(no=aa.substr(0,7) cout管理系统有您要提取的信息!next; if(j=1) break; if(j=1) int c,m=0; string b,b1,e,infoma6=xueyuan,zhuanye,banji,daoshi,lunwen,jiaquan; string kemu6=学院,专业,班级,导师,论文,加权; cout输入您想提取的信息代码:endl; cout学院 2-专业 3-班级endl; cout导师 5-论文 6-加权endl; coutc; string cla=class; e=no.substr(6,1); b1=cla+e; b=b1+infomac-1; char *f=new char20; for(int i=0;i20;i+) fi=bi; f=strcat(f,.txt); ofstream outfile(f,ios:out); if(! outfile) cout打开错误!endl; exit(1); outfilet您要提取的信息tttendl; outfile -endl; outfile| 学号 | 姓名 | ; outfilekemuc-1 |next!=NULL) outfile -endl; outfile|setw(11)next-id | setw(6)next-name |; switch(c) case 1:outfilesetw(5)next-sc3.xy |; outfileendl; break; case 2:outfilesetw(5)next-sc3.zy |; outfileendl; break; case 3:outfilesetw(5)next-sc3.bj |; outfileendl; break; case 4:outfilesetw(5)next-sc3.teacher |; outfileendl; break; case 5:outfilesetw(5)next-sc3.lw |; ou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论