下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DSA护理中的儿科护理与护理
- 孕期乳房护理与母乳喂养准备
- 护理教学中的学生主体性发挥
- 九年级上册语文期末作文押题常考主题范文6篇
- 第二章第三节河流第1课时
- 地址识别与反欺诈系统设计
- 房地产 -日内瓦办公室2025年第三季度 Snapshot Office Geneva Q3 2025
- 城市发展戏剧影响
- 2026 年中职康复治疗技术(言语治疗)试题及答案
- 办公楼网络升级服务协议2025
- 2025-2026学年教科版小学科学新教材三年级上册期末复习卷及答案
- 中投公司高级职位招聘面试技巧与求职策略
- 2026中国大唐集团资本控股有限公司高校毕业生招聘考试历年真题汇编附答案解析
- 2025福建三明市农业科学研究院招聘专业技术人员3人笔试考试备考题库及答案解析
- 统编版(部编版)小学语文四年级上册期末测试卷( 含答案)
- 养老金赠予合同范本
- 2025年南网能源公司社会招聘(62人)考试笔试参考题库附答案解析
- 2025年河南中原国际会展中心有限公司社会招聘44名笔试备考题库附答案解析
- 推广示范基地协议书
- 消防员心理健康教育课件
- 2025年服装行业五年发展时尚产业与可持续发展报告
评论
0/150
提交评论