




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件技术基础班级:021114 学号:02111352 姓名: 文洲 时间:2014.01.02一、学籍管理系统线性表的应用文本界面为管理员 1.输入信息 2.保存信息 3.查询信息 4.修改并保存 5.显示全部 6.删除信息 7.退出系统 学生 1信息查询 (1)输入姓名 (2)输入学号 退出系统各功能显示效果模块图:学生和管理员输入管理员进入界面后增加学生成绩和导入学生成绩保存学生成绩学生进入界面后,按学生姓名查询并输出成绩程序代码:#include <iostream>#include <string>#include <fstream>using n
2、amespace std;#define password 123456;/people.hclass stupeople/人员类 基类public:int getage();/年龄char* getname();/姓名char* getsex();/性别void display();/输出信息void peosearch();/查询信息void peosave();/保存信息private:char name20;char sex4;int age;/student.hclass stustudent:public stupeoplepublic:int getnumber();/学号dou
3、ble getcscore();/语文double getmscore();/高数double getescore();/外语double getpscore();/C+double getdscore();/数据库double getsscore();/体育double getave();/平均成绩double getsum();/总成绩void stuenterinfo();/输入信息void display();/输出信息void stusearch();/查找信息void stusave();/保存信息void stuload();/加载信息private:int number;dou
4、ble cscore;double mscore;double escore;double dscore;double pscore;double sscore;double sumscore;double avescore;/admin.hclass stuadmin:public stustudent /派生类 管理员类public:void change();/更改信息 void del();/删除信息private:int newage;int newnumber;char newsex;char newname; char changename20; double newcscore
5、; double newmscore; double newescore; double newdscore; double newpscore;double newsscore; double newsumscore; double newavescore;int i,j,p6;char A,B,x;stuadmin sa;struct studentinfointnumber;charname20;charsex4;intage ;doublecscore;doublemscore;doubleescore;doublepscore; doubledscore;doublesscore;
6、doublesumscore; doubleavescore;intflag;s;/人员类的相关函数的定义int stupeople:getage()return age;char* stupeople:getname()return name;char* stupeople:getsex()return sex;/学生类的相关函数的定义int stustudent:getnumber()return number;double stustudent:getcscore()return cscore;double stustudent:getmscore()return mscore;doub
7、le stustudent:getescore()return escore;double stustudent:getpscore()return pscore;double stustudent:getdscore()return dscore;double stustudent:getsscore()return sscore;double stustudent:getsum()sumscore=cscore+mscore+escore+pscore+dscore+sscore;return sumscore;double stustudent:getave()/平均成绩avescore
8、=sumscore/6;return avescore;void stustudent:stuenterinfo()/输入信息cout<<"请输入学号:"cin>>s.number;cout<<endl;cout<<"请输入姓名:"cin>>;cout<<endl;cout<<"请输入性别:"cin>>s.sex;cout<<endl;cout<<"请输入年龄:"cin>>
9、s.age;cout<<endl;cout<<"请输入各科成绩:"<<endl;cout<<"语文:"cin>>s.cscore;cout<<endl;cout<<"高数:"cin>>s.mscore;cout<<endl;cout<<"外语:"cin>>s.escore;cout<<endl;cout<<"C+:"cin>>s.
10、pscore;cout<<endl;cout<<"数据库:"cin>>s.dscore;cout<<endl;cout<<"体育:"cin>>s.sscore; cout<<endl; cout<<"信息输入成功!"<<endl;s.flag=0;s.sumscore=s.cscore+s.mscore+s.escore+s.pscore+s.dscore+s.sscore;s.avescore=s.sumscore/6;voi
11、d stustudent:stusave()/保存信息 ofstream out("information.txt",ios:app|ios:binary);if(out) out.write(char*)&s, sizeof s); cout<<"信息保存成功!"<<endl;else cout<<"文本为空!"<<endl;out.close();void stustudent:display()/显示信息ifstream ifile;ifile.open("inf
12、ormation.txt",ios:binary);if(ifile)while(ifile.read(char*)&s,sizeof s)!=0)if(s.flag=0) cout<<"学号:"<<s.number<<"姓名:"<<<<"性别:"<<s.sex<<"年龄:"<<s.age<<"语文:"<<s.cscore<<"
13、;高数:"<<s.mscore<<"外语:"<<s.escore<<"C+:"<<s.pscore<<"数据库:"<<s.dscore<<"体育:"<<s.sscore<<"总分:"<<s.sumscore<<"平均分:"<<s.avescore<<endl;else cout<<&quo
14、t;文本为空!"<<endl;ifile.close();void stustudent:stusearch()/查询信息char stuname20;int e=0;cout<<"请输入您要查找的姓名:"cin>>stuname;ifstream ifile;ifile.open("information.txt",ios:binary);if(ifile)while(ifile.read(char*)&s,sizeof s)!=0)if(strcmp(stuname,)=0)&
15、& s.flag=0) cout<<"学号:"<<s.number<<"姓名:"<<<<"性别:"<<s.sex<<"年龄:"<<s.age<<"语文:"<<s.cscore<<"高数:"<<s.mscore<<"外语:"<<s.escore<<"C
16、+:"<<s.pscore<<"数据库:"<<s.dscore<<"体育:"<<s.sscore<<"总分:"<<s.sumscore<<"平均分:"<<s.avescore<<endl;e=1;break;else cout<<"文本未建立!"<<endl;ifile.close();if(e=0)cout<<"没有相关
17、信息!"<<endl;/管理员类的相关函数的定义void stuadmin:change()char changename20;int e;cout<<"请输入您要修改的姓名:"cin>>changename;fstream ifile("information.txt",ios:in|ios:out);while(ifile.read(char*)&s,sizeof s)!=0)if(strcmp(changename,)=0)&&s.flag=0) cout<&l
18、t;"学号:"<<s.number<<"姓名:"<<<<"性别:"<<s.sex<<"年龄:"<<s.age<<"语文:"<<s.cscore<<"高数:"<<s.mscore<<"外语:"<<s.escore<<"C+:"<<s.pscore&l
19、t;<"数据库:"<<s.dscore<<"体育:"<<s.sscore<<"总分:"<<s.sumscore<<"平均分:"<<s.avescore<<endl;e=1;break;if(e=0)cout<<"没有相关信息!"<<endl;if(e=1) int choose;cout<<"t请选择修改方式:"<<endl&l
20、t;<endl;cout<<"1.修改学号:"<<endl;cout<<"2.修改姓名:"<<endl;cout<<"3.修改性别:"<<endl;cout<<"4.修改年龄:"<<endl;cout<<"5.修改语文成绩:"<<endl;cout<<"6.修改高数成绩:"<<endl;cout<<"7.修
21、改外语成绩:"<<endl; cout<<"8.修改C+成绩:"<<endl; cout<<"9.修改数据库成绩:"<<endl; cout<<"10.修改体育成绩:"<<endl;cout<<endl;cout<<"请选择:"<<endl;cin>>choose;switch(choose)case 1: cout<<"请输入学生学号:"&l
22、t;<endl;cin>>s.number;break; case 2: cout<<"请输入学生姓名:"<<endl;cin>>;break;case 3:cout<<"请输入学生性别<m男 n女>:"<<endl;cin>>s.sex;break;case 4: cout<<"请输入学生年龄:"<<endl;cin>>s.age;break;case 5: cout<<&
23、quot;请输入学生语文成绩:"<<endl;cin>>s.cscore;break;case 6: cout<<"请输入学生高数成绩:"<<endl;cin>>s.mscore;break;case 7: cout<<"请输入学生外语成绩:"<<endl;cin>>s.escore;break;case 8: cout<<"请输入学生C+成绩:"<<endl;cin>>s.pscore;bre
24、ak; case 9: cout<<"请输入数据库成绩:"<<endl;cin>>s.dscore;break; case 10: cout<<"请输入学生体育成绩:"<<endl;cin>>s.sscore;break;/*default:cout<<"t输入错误,返回主菜单!"<<endl;adminwelcome();*/cout<<"信息输入成功!"<<endl;s.flag=0;s.su
25、mscore=s.cscore+s.mscore+s.escore+s.pscore+s.dscore+s.sscore;s.avescore=s.sumscore/6;ifile.seekp(-(sizeof s),ios:cur);ifile.write(char*)&s,sizeof s);cout<<"信息已修改并保存!"<<endl;ifile.close(); void stuadmin:del()/删除信息char delname20;int e=0;cout<<"请输入您要删除的学生姓名:"&l
26、t;<endl;cin>>delname;fstream ifile;ifile.open("information.txt",ios:in|ios:out);while(ifile.read(char*)&s,sizeof s)!=0)if(strcmp(delname,)=0)&&s.flag=0) cout<<"学号:"<<s.number<<"姓名:"<<<<"性别:"<<
27、;s.sex<<"年龄:"<<s.age<<"语文:"<<s.cscore<<"高数:"<<s.mscore<<"外语:"<<s.escore<<"C+:"<<s.pscore<<"数据库:"<<s.dscore<<"体育:"<<s.sscore<<"总分:"
28、<<s.sumscore<<"平均分:"<<s.avescore<<endl;e=1;break;if(e=0)cout<<"没有相关信息!"<<endl;if(e=1)s.flag=1;ifile.seekp(-(sizeof s),ios:cur);ifile.write(char*)&s,sizeof s);cout<<"信息删除成功!"<<endl;ifile.close();/欢迎界面void studentwelcome
29、()/学生欢迎界面 cout<<"*"<<endl; cout<<"*欢迎使用学生信息管理系统*"<<endl; cout<<"*"<<endl; cout<<"tt 1.查询信息 tt 2.退出系统"<<endl; cout<<"*"<<endl; docout<<"请输入您要进行的操作编号(1或2):"cin>>i;cout<
30、;<endl;if(i<1|i>2)cout<<"对不起,请输入1或2这两个选择数字!"<<endl; while (i<1|i>2);switch(i)case 1: sa.stusearch(); studentwelcome();break;case 2:exit(0);break;void adminwelcome()/管理员欢迎界面 cout<<"*"<<endl; cout<<"*欢迎使用学生信息管理系统*"<<endl;
31、 cout<<"*"<<endl; cout<<"t1.输入信息 t2.保存信息 t3.查询信息 t4.修改并保存"<<endl; cout<<"t5.显示全部 t6.删除信息 t7.退出系统 "<<endl; cout<<"*"<<endl; do cout<<"请输入您要进行的操作编号(1-7):"cin>>j;cout<<endl;if(j<1|j>
32、;7)cout<<"对不起,请输入1-7这几个选择数字!"<<endl; while(j<1|j>7);switch(j)case 1: sa.stuenterinfo();adminwelcome();break;case 2: sa.stusave();adminwelcome();break;case 3: sa.stusearch();adminwelcome();break;case 4: sa.change();adminwelcome();break;case 5: sa.display();adminwelcome();b
33、reak;case 6: sa.del();adminwelcome();break;case 7:exit(0);break;void main()/主函数do cout<<"*"<<endl;cout<<"*欢迎使用学生信息管理系统*"<<endl;cout<<"*"<<endl;cout<<"请选择您的登陆身份:"<<endl;cout<<"tt A 学生 tt B管理员"<&
34、lt;endl;cout<<"选择(A或B):"cin>>x;if (x='A')studentwelcome();else if (x='B')cout<<".正在验证您的身份,请输入指令(6位):"cin>>p6;if(p6=123456)cout<<"身份验证成功!"<<endl;adminwelcome();else cout<<"您输入的指令错误!"cout<<"系统将
35、自动返回."<<endl; main(); else if (x!='A'&&x!='B')cout<<"输入错误!t系统将返回主界面."<<endl;cout<<endl; while(x!='A'&&x!='B');2.最小生成树在城市交通建设中的应用连通图广泛应用于交通建设,求连通图的最小生成树是最主要的应用。比如要在n个城市间建立通信联络网,要考虑的是如何保证n点连通的前提下最节省经费,就应用最小生成树。求图的最小
36、生成树有两种算法,一种是Prim(普里姆)算法,另一种是Kruskal(克鲁斯卡尔)算法。本文通过将城市各地点转换成连通图,再将连通图转换成邻接矩阵。在Microsoft Visual C+上,通过输入结点和权值,用普里姆算法获得权值最小边来得到最小生成树,从而在保证各个地点之间能连通的情况下节省所需费用。本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进行了总结。一、系统设计数据信息以结构体和数组形式储存,结点的信息结构体定义如下:struct graphchar tnode;char
37、hnode;double quanzhi;gr100;char node50=" "图的存储结构为:#define INFINITY INT_MAX /最大值#define MAX_VERTEX_NUM 20 /最多的顶点个数typedef enumDG,DN,UDG,UDN GraphKind; /有向图、有向网、无向图、无向网typedef struct ArcCell VRType adj; /顶点关系类型:图:0、1 网:权值 InfoType *info;/该弧相关信息指针ArcCell,AdjMaTrixMAX_VERTEX_NUM MAX_VERTEX_NUM
38、;typedef struct VertexType vexsMAX_VERTEX_NUM;/顶点向量 AdjMaxtrix arcs; /邻接矩阵 int vexnum,arcnum; /顶点数和弧或边数 GraphKind kind; /图的种类标志 Mgraph;Prim算法: void prim(mgraph g,int k,int n) /核心算法Prim算法实现函数int i,j,min,p; /定义整型变量i,j用于循环 min和p分别用于临时存放最小权值及其下标struct /定义型类型数据closedge用于临时存放下标和最小边int adjvex;int lowcost;c
39、losedge100; for(i=1;i<=n;i+) /初始化辅助数组if(i!=k) closedgei.adjvex=k;closedgei.lowcost=g.vki;closedgek.lowcost=0; /将节点加入生成树中for(i=1;i<n;i+) /循环比较最小权值且将最小权值的点加入生成树中并打印输出p=1; /初始化p min=maxvalue; /初始化最小权值for(j=1;j<=n;j+) /循环n次比较最小权值if(closedgej.lowcost!=0&&closedgej.lowcost<min) /当前节点不在
40、已生成树中且权值最下min=closedgej.lowcost; /替换最小权值为当前节点的权值p=j; /记录该节点下标printf("%d_ _%dn",closedgep.adjvex,p,min); /打印最小的权值的下标和最小边closedgep.lowcost=0; /将该节点加入生成树中 for(j=1;j<=n;j+) /刷新临时存放空间if(g.vpj) < (closedgej.lowcost)closedgej.lowcost=g.vpj; /赋值最小边closedgej.adjvex=p; /赋值最小边对应下标二、最小生成树应用C编写的程
41、序测试数据:假设如图结果应该如下程序运行如图:程序代码:#include <stdio.h>#define maxsnum 10#define maxvalue 99typedef struct /定义邻接矩阵int vmaxvaluemaxvalue; m; /邻接矩阵用m表示m input(int n) /输入各节点间边的权值m x; /定义x为m类型while(n<=0|n>maxnum) /控制输入出错重新执行printf("输入有误,请重新输入:"); scanf("%d",&n);for(int i=1;i<=n;i+) /双层循环控制每个节点到其他各节点的权值for(int j=0;j<=n;j+) int temp; if(i=j) /各节点到自身的权重赋为0x.vij=0; else if(i<j) /赋值其他各点到比其大的下标的节点printf("请输入节点%d到节点%d的权:",i,j);scanf(&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鹤壁翊诚化工有限公司介绍企业发展分析报告模板
- 中国运输包装行业市场运行现状及未来发展预测报告
- 佛山一模语文试题
- 2024-2025学年高中英语Module2TrafficJamSectionⅡGrammar课后篇巩固提升外研版必修4
- 2024-2025学年高中生物第3章第3节细胞核-系统的控制中心演练强化提升含解析新人教版必修1
- 2024-2025学年高中历史第三单元近代中国经济结构的变动与资本主义的曲折发展单元整合教学案新人教版必修2
- 2024-2025学年高中生物第一章无菌操作技术实践第一节微生物的分离和培养第1课时微生物分离和培养的基本理论知能演练轻巧夺冠苏教版选修1
- 2024-2025学年高中语文第二单元第4课归去来兮辞并序练习含解析新人教版必修5
- 中国抗哮喘药行业市场发展现状及投资方向研究报告
- 2024-2025学年高中物理第十章热力学定律第3节热力学第一定律能量守恒定律练习含解析新人教版选修3-3
- 《计算机应用基础》教学教案-02文字录入技术
- 2023年1月浙江省高考英语真题及详细解析
- 2023年大疆科技行业发展概况分析及未来五年行业数据趋势预测
- 乡镇卫生院院感知识培训
- 中国航天日扬帆起航逐梦九天(课件)-小学主题班会通用版
- 老年医学概论智慧树知到答案章节测试2023年浙江大学
- 幼儿园食堂生鲜进货记录表
- nasm cpt考试试题及答案
- 2023年吉林省吉林市统招专升本民法自考真题(含答案)
- 幼儿园大班教案《改错》含反思
- 国企治理三会一层详解
评论
0/150
提交评论