学生信息管理系统txt.docx

上传人:b****4 文档编号:6352386 上传时间:2023-05-09 格式:DOCX 页数:17 大小:287.88KB
下载 相关 举报
学生信息管理系统txt.docx_第1页
第1页 / 共17页
学生信息管理系统txt.docx_第2页
第2页 / 共17页
学生信息管理系统txt.docx_第3页
第3页 / 共17页
学生信息管理系统txt.docx_第4页
第4页 / 共17页
学生信息管理系统txt.docx_第5页
第5页 / 共17页
学生信息管理系统txt.docx_第6页
第6页 / 共17页
学生信息管理系统txt.docx_第7页
第7页 / 共17页
学生信息管理系统txt.docx_第8页
第8页 / 共17页
学生信息管理系统txt.docx_第9页
第9页 / 共17页
学生信息管理系统txt.docx_第10页
第10页 / 共17页
学生信息管理系统txt.docx_第11页
第11页 / 共17页
学生信息管理系统txt.docx_第12页
第12页 / 共17页
学生信息管理系统txt.docx_第13页
第13页 / 共17页
学生信息管理系统txt.docx_第14页
第14页 / 共17页
学生信息管理系统txt.docx_第15页
第15页 / 共17页
学生信息管理系统txt.docx_第16页
第16页 / 共17页
学生信息管理系统txt.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

学生信息管理系统txt.docx

《学生信息管理系统txt.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统txt.docx(17页珍藏版)》请在冰点文库上搜索。

学生信息管理系统txt.docx

学生信息管理系统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<number<<""<name<<""<sex<<""<add<

p=p->next;

}

cout<number<<""<name<<""<sex<<""<add<

}

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<<"找到学号为"<number<<''<

}

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<<"共有"<length()<<"个学生"<

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操作及彩单重复

展望:

在此程序基础之上还可以进行添加其他功能,例如添加学生的成绩。

且不会对原程序任何影响。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2