版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生信息管理系统完成时间 2013 年 5月 27日1、 编程目的(1) 对C+语法、基础知识进行综合运用,编写具有一定综合应用价值的稍大一些的程序,掌握面向对象程序设计(OOP的思想,培养学生使用面向对象的程序设计思想分析和解决实际问题的能力;(2) 掌握在Visual C+集成开发环境下编辑、编译、链接和运行一个 C+4程序的基本方法;(3) 加深对所学知识的理解和掌握;(4) 培养文档报告书面表达和思辨的能力。利用面向对象的方法以及 C+的编程思想来完成学生信息管理系统的设计。学生信息 包括:学号、姓名、性别、班级、联系电话等等信息(也可自主设计其他的学生相关信息) 要求实现学生信息的增
2、加、修改、查询、删除、浏览等基本功能。学生信息保存在文件中, 要求文件中至少要记录 10位学生信息的相关数据。3、编程思路本程序建立了带表头节点的链表类、菜单类、主函数。菜单类包括增 加学生信息、删除信息、查找、浏览等功能。链表类包括建立链表和删除链表4、总体设计下表是根据程序画的基本结构图:建立链表5、关键技术说明运用了面向对象设计中的类和链表,类是逻辑上相关的函数与数据的 封装,它是对所要处理的问题的抽象描述。类实际上也就相当于用户自定义的类型,和基本数据类型的不同之处 在于,类这个特殊类型中同时包含了对数据进行操作的函数。链表类的基本操作应该包括:生成新节点、插入节点、删除节点、访问 /
3、修改节点数 据、遍历链表等。因此,在链表类中应该包含完成上述操作的成员函数, 以及为了实现这些函数而添加的一些辅助函数, 为了方便链表类对象间的 赋值,还应重载“=”运算符。另外,由于面向对象的封装特性,当然还 要提供一些接口函数。6、源代码#include <iostream.h>#include <string.h>class StuList;class Studentfriend StuList;private:char name9;char sex6;char add20;int number;Student *next;public:*sal=NULL,cha
4、rStudent(char *val=NULL,char*adl=NULL,int No=0)number=No;next=NULL;if(val!=NULL)strcpy(name,val);if(sal!=NULL)strcpy(sex,sal);if(adl!=NULL)strcpy(add,adl);class StuList / 带表头节点的链表类private:Student *head,*current;int count;public:StuList()current=head=new Student;count=2003060;cout<<" 链表已建立
5、 "<<endl;StuList()makeEmpty();delete head;cout<<" 链表已删除 "<<endl;/以下是成员函数void makeEmpty();void add(char *value,char *salue,char *adl);*salue,charvoid insert(int No,char *value,char *adl);void remove(int No);void print();void searchStu(char *value);int length()return c
6、ount-2003060; ;void StuList:makeEmpty() / 清空链表Student *p;while(head->next!=NULL)p=head->next;head->next=p->next;delete p;current=head;将新元count=0;void StuList:add(char *value,char *salue,char *adl)/素 value 插入到最后Student *newStu;newStu=new Student(value,salue,adl);while(current->next!=NU
7、LL)current=current->next;newStu->next=current->next;current=current->next=newStu;newStu->number=count+1;count+;cout<<value<<" 已经加入表 "<<endl;*salue,charvoid StuList:insert(int No,char *value,char*adl)/ 将新元素 value 插入,使他的学号变为 NoStudent *newStu;Student *node=he
8、ad;newStu=new Student(value,salue,adl,No);while(node->next!=NULL)if(node->number=No-1)break;node=node->next; newStu->next=node->next; newStu->number=No;node=node->next=newStu;Student *p=node->next; while(p!=NULL)p->number+; p=p->next; count+;cout<<value<<&qu
9、ot; 已经插入 "<<endl;void StuList:remove(int No)/ 删除元素 valueStudent *p,*q; q=head->next; while(q!=NULL)if(q->number=No)break; q=q->next;if(q=NULL)cout<<" 没找到! "<<endl; return;p=head;while(p!=NULL)/ 找到 q 的前一个节点 p if(p->next=q)break; p=p->next; p->next=q-
10、>next;delete q; count-;p=p->next; while(p!=NULL)p->number-;p=p->next;coutvv"学号"vvNovv"已移除"<<e ndl;void StuList:print()/ 输出链表Student *p;if(head->next=NULL)/ 链表为空cout<<" 链表为空! "<<endl;return;性别 "<<" 地"<<p->nam
11、e<<"cout<<" 学号"<<"姓名"<<"址"<<e ndl;p=head->next;while(p->next!=NULL)cout<<p->number<<""<<p->sex<<" "<<p->add<<endl;p=p->next;cout<<p->number<<"
12、; "<<p->name<<" "<<p->sex<<" "<<p->add<<endl;void StuList:searchStu(char *value)/ 查找含数据 value 的节 点,返回该地址current=head->next;while(current!=NULL)if(strcmp(current->name,value)=0)break;current=current->next;if(current=NULL)c
13、out<<" 没找到! "<<endl;else cout<<" 找 到 学 号 为 "<<current->number<<''<<value<<" 在链表里 "<<endl;class Menu/ 菜单类char *c1,*c2;public:Menu()c1=" c2="*n"void show()cout<<endl;cout<<c1<<&quo
14、t;-*-*-*-*-*-*-*-*-*-*-*-*菜单* * * * *-*-*-*-*-*-*-*"<<c2;cout<<c1<<""<<c2;cout<<c1<<" 1.建立链表2.加入学生资料"<<c2;cout<<c1<<" 3.插入一个学生4.移除一个学生"<<c2;cout<<c1<<" 5.显示该表6.按姓名查找"<<c2;cout&l
15、t;<c1<<" 7.学生总数8.清空链表"<<c2;cout<<c1<<" 9.显示菜单0.退出程序"<<c2;cout<<c1<<""<<c2; cout<<c1<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-"<<c2;cout<<endl;void main()char cmd;StuList *
16、list=NULL;Menu menu;menu.show();docout<<endl<<" 请选择要进行的操作序号: " cin>>cmd;if(list=NULL)/ 检查输入的命令是否合适while(cmd!='1' && cmd!='9' && cmd!='0')cout<<" 还没有建立链表,请先建立链表 "cin>>cmd;case ('1'):/ 建表list=new StuList;
17、break;case ('2'):/ 加入学生到链表后char insname29,inssex26,insadd220;cout<<" 请输入姓名,性别( male or female ) , 地 址。 "<<endl;cin>>insname2;cin>>inssex2;cin>>insadd2;list->add(insname2,inssex2,insadd2);break;case ('3'):/ 按学号插入一个学生char insname39,inssex36,in
18、sadd320;int insnum;cout<<"学号 (200306x):"cin>>insnum;cout<<"姓名 :"cin>>insname3;cout<<"性别 :"cin>>inssex3;cout<<"地址 :"cin>>insadd3;list->insert(insnum,insname3,inssex3,insadd3);break;case ('4'):/ 删除一个学生in
19、t rem;cout<<"学号 (200306x):"cin>>rem;list->remove(rem);break;case ('5'):/ 显示所有学生list->print();break;case ('6'):/ 按姓名查找一个学生char sear9;cout<<"姓名: "cin>>sear;list->searchStu(sear);list->print();break;cout<<"共 有 "<<list->length()<<" 个 学 生"<<endl;break;case ('8'):/清空链表list->makeEmpty();cout<<"链表为空 "<<endl;break;case ('9'):/显示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026汽车零部件行业供应链整合与投资机会深度剖析重点报告
- 2026中国消费金融行业风险控制与市场拓展策略报告
- 2026汽车零部件行业技术升级产品创新竞争要素市场规模规划
- 2026中国新能源汽车行业发展规划技术突破市场前景评估报告
- 2026农村特色民宿旅游行业市场现状供需分析及投资评估规划分析研究报告
- 2026排水防涝行业城市基础设施市场技术分析报告
- 2026全域旅游发展战略规划系统性研究及目的地开发投资指导手册
- 2026中国工业自动化控制芯片实时操作系统适配性测试标准
- 002选择性必修第二册 第一章 安培力与洛伦兹力 第1-2节同步练习
- 2023年前台文员考试题
- 2026年秋季学期每周国旗下讲话稿
- 医务人员参与学术讲课取酬的合规管理专家共识解读总结2026
- 九上语文《唐诗三百首》要点梳理
- 2026年版医疗器械经营监督管理办法试卷测试题及答案
- 2026年新疆中考英语试卷
- 2025-2026学年湖北省武汉市江岸区八年级上册期中物理试卷 含答案
- 小区公共收益收支公示及使用审批管理办法
- 2025年贵州黔南人力资源开发有限责任公司招聘劳务派遣制专职民兵教练员5人笔试备考试题及答案解析
- 《五粮浓香型白酒智能化酿造体系要求》编制说明
- 2026年及未来5年市场数据中国采购代理行业市场发展数据监测及投资战略咨询报告
- 2025年工厂化学品安全操作培训
评论
0/150
提交评论