学生信息管理系统txt.docx
- 文档编号:11480948
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:17
- 大小:287.88KB
学生信息管理系统txt.docx
《学生信息管理系统txt.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统txt.docx(17页珍藏版)》请在冰豆网上搜索。
学生信息管理系统txt
学生信息管理系统
完成时间2013年5月27日
1、编程目的
(1)对C++语法、基础知识进行综合运用,编写具有一定综合应用价值的稍大一些的程序,掌握面向对象程序设计(OOP)的思想,培养学生使用面向对象的程序设计思想分析和解决实际问题的能力;
(2)掌握在VisualC++集成开发环境下编辑、编译、链接和运行一个C++程序的基本方法;
(3)加深对所学知识的理解和掌握;
(4)培养文档报告书面表达和思辨的能力。
2、系统简介
利用面向对象的方法以及C++的编程思想来完成学生信息管理系统的设计。
学生信息包括:
学号、姓名、性别、班级、联系电话等等信息(也可自主设计其他的学生相关信息)。
要求实现学生信息的增加、修改、查询、删除、浏览等基本功能。
学生信息保存在文件中,要求文件中至少要记录10位学生信息的相关数据。
3、编程思路
本程序建立了带表头节点的链表类、菜单类、主函数。
菜单类包括增加学生信息、删除信息、查找、浏览等功能。
链表类包括建立链表和删除链表
4、总体设计
下表是根据程序画的基本结构图:
5、关键技术说明
运用了面向对象设计中的类和链表,类是逻辑上相关的函数及数据的封装,它是对所要处理的问题的抽象描述。
类实际上也就相当于用户自定义的类型,和基本数据类型的不同之处在于,类这个特殊类型中同时包含了对数据进行操作的函数。
链表类的基本操作应该包括:
生成新节点、插入节点、删除节点、访问/修改节点数据、遍历链表等。
因此,在链表类中应该包含完成上述操作的成员函数,以及为了实现这些函数而添加的一些辅助函数,为了方便链表类对象间的赋值,还应重载“=”运算符。
另外,由于面向对象的封装特性,当然还要提供一些接口函数。
6、源代码
#include
#include
classStuList;
classStudent
{
friendStuList;
private:
charname[9];
charsex[6];
charadd[20];
intnumber;
Student*next;
public:
Student(char*val=NULL,char*sal=NULL,char*adl=NULL,intNo=0)
{
number=No;next=NULL;
if(val!
=NULL)
strcpy(name,val);
if(sal!
=NULL)
strcpy(sex,sal);
if(adl!
=NULL)
strcpy(add,adl);
}
};
classStuList//带表头节点的链表类
{
private:
Student*head,*current;
intcount;
public:
StuList()
{
current=head=newStudent;
count=2003060;
cout<<"链表已建立"< } ~StuList() { makeEmpty(); deletehead; cout<<"链表已删除"< } //以下是成员函数 voidmakeEmpty(); voidadd(char*value,char*salue,char*adl); voidinsert(intNo,char*value,char*salue,char*adl); voidremove(intNo); voidprint(); voidsearchStu(char*value); intlength() { returncount-2003060; } }; voidStuList: : makeEmpty()//清空链表 { Student*p; while(head->next! =NULL) { p=head->next; head->next=p->next; deletep; } current=head; count=0; } voidStuList: : add(char*value,char*salue,char*adl)//将新元素value插入到最后 { Student*newStu; newStu=newStudent(value,salue,adl); while(current->next! =NULL) current=current->next; newStu->next=current->next; current=current->next=newStu; newStu->number=count+1; count++; cout< } voidStuList: : insert(intNo,char*value,char*salue,char*adl)//将新元素value插入,使他的学号变为No { Student*newStu; Student*node=head; newStu=newStudent(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< } voidStuList: : remove(intNo)//删除元素value { Student*p,*q; q=head->next; while(q! =NULL) { if(q->number==No)break; q=q->next; } if(q==NULL) { cout<<"没找到! "< return; } p=head; while(p! =NULL)//找到q的前一个节点p { if(p->next==q)break; p=p->next; } p->next=q->next; deleteq; count--; p=p->next; while(p! =NULL) { p->number--; p=p->next; } cout<<"学号"< } voidStuList: : print()//输出链表 { Student*p; if(head->next==NULL)//链表为空 { cout<<"链表为空! "< return; } cout<<"学号"<<"姓名"<<"性别"<<"地址"< p=head->next; while(p->next! =NULL) { cout< p=p->next; } cout< } voidStuList: : searchStu(char*value)//查找含数据value的节点,返回该地址 { current=head->next; while(current! =NULL) { if(strcmp(current->name,value)==0)break; current=current->next; } if(current==NULL)cout<<"没找到! "< elsecout<<"找到学号为"< } classMenu//菜单类 { char*c1,*c2; public: Menu() { c1="*"; c2="*\n"; } voidshow() { cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< } }; voidmain() { charcmd; StuList*list=NULL; Menumenu; menu.show(); do{ cout< "; cin>>cmd; if(list==NULL)//检查输入的命令是否合适 while(cmd! ='1'&&cmd! ='9'&&cmd! ='0') { cout<<"还没有建立链表,请先建立链表"; cin>>cmd; } switch(cmd)//匹配命令 { case('1'): //建表 list=newStuList; break; case('2'): //加入学生到链表后 charinsname2[9],inssex2[6],insadd2[20]; cout<<"请输入姓名,性别(maleorfemale),地址。 "< cin>>insname2; cin>>inssex2; cin>>insadd2; list->add(insname2,inssex2,insadd2); break; case('3'): //按学号插入一个学生 charinsname3[9],inssex3[6],insadd3[20]; intinsnum; cout<<"学号(200306x): "; cin>>insnum; cout<<"姓名: "; cin>>insname3; cout<<"性别: "; cin>>inssex3; cout<<"地址: "; cin>>insadd3; list->insert(insnum,insname3,inssex3,insadd3); break; case('4'): //删除一个学生 intrem; cout<<"学号(200306x): "; cin>>rem; list->remove(rem); break; case('5'): //显示所有学生 list->print(); break; case('6'): //按姓名查找一个学生 charsear[9]; cout<<"姓名: "; cin>>sear; list->searchStu(sear); list->print(); break; case('7'): //学生总数 cout<<"共有"< break; case('8'): //清空链表 list->makeEmpty(); cout<<"链表为空"< break; case('9'): //显示菜单 menu.show(); break; case('0'): //退出 if(list==NULL)break; chartemp; cout<<"删除链表退出? (y/n): "; cin>>temp; if(temp=='y') { list->~StuList();list=NULL; } elsecmd=10; break; default: cout<<"请输入菜单中的命令! "< } }while(cmd! ='0'); } 7、测试(程序有相似只列出部分程序)。 () (1)开始界面: (2)加入学生资料: 本程序可以添加很多的学生资料(加一个为例) (3)插入一个学生: (4)移除一个学生信息: (5)显示学生人数: 由于移除一个学生,下面的学生学号自动升一位。 (6)按姓名查找: 8、系统评价及展望 优点: (1)界面友好(良好的人机交互),提供菜单选项,并给出足够的选择信息以及提示信息。 (2)程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中断执行。 (3)源程序要加适当的注释,使程序容易阅读; (4)可无限添加学生资料 缺点: (1)学生学号是系统默认的,如果要更改学号要重新编写程序。 (2)本程序要进行操作,首先要建立链表,否则不能进行。 (3)界面中的9操作及彩单重复 展望: 在此程序基础之上还可以进行添加其他功能,例如添加学生的成绩。 且不会对原程序任何影响。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 txt
![提示](https://static.bdocx.com/images/bang_tan.gif)