学生信息管理系统 设计说明书(含源代码)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2013年秋季学期
面向对象课程设计
题目:学生信息管理系统
专业班级: 计算机科学与技术二班
姓名:刘俊锋
学号:12240224
指导教师:庞淑侠
成绩:
前言
学生信息管理系统,是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统。

它是一个教育单位不可缺少的部分,它的内容对于学校管理者来说是至关重要的,能有效的帮助学校和老师掌握学生的情况。

在传统模式下利用人工进行学生信息管理,存在着较多的缺点,如:效率底,保密性差,时间一长将产生大量的文件和数据,更不便于查找,更新,维护等。

诸如这些情况,令学校管理者对学生的信息管理带来了很大困难,严重影响了教育工作者的工作效率.随着科学技术的不断提高,使用日趋成熟的计算机技术来代替传统的人工模式,来实现学生信息的现代化管理,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点。

例如:检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低等。

这些优点能够极大地提高学生信息管理的效率,也是学校实现科学化、正规化管理的重要条件。

因此,开发这样一套管理软件成为很有必要的事情。

目录
摘要 (4)
第一章系统总体设计 (5)
1.1系统功能模块图 (5)
1。

2类与函数的关系 (5)
第二章详细设计 (7)
2。

1 初始录入功能 (7)
2。

2 添加函数 (7)
2.3 删除函数 (7)
2.4 修改函数 (7)
2。

5 查询函数 (8)
2。

5.1 按姓名查询 (8)
2。

5。

2 按学号查询 (8)
2。

6 显示函数 (8)
2。

7 退出系统 (8)
第三章系统测试 (9)
3.1测试方法 (9)
3.2测试用例 (9)
3.3测试结果 (9)
第四章软件使用说明书 (13)
总结 (14)
参考文献 (15)
致谢 (16)
附录:程序代码 (17)
摘要
本系统主要利用所学的C++知识实现一个学生管理系统的设计。

首先需要编写出调用各个功能的主函数,告诉使用者这个系统有哪些功能和相应的操作,通过switch语句来选择相应操作;再者编写student来定义一个学生类,在类中定义公有和私有数据成员,通过学生类的成员函数的实现,来获得某个学生信息的内容,如:姓名,年龄,性别,出生年月等相关信息.利用对应的成员函数分别可以进行增、删、改、查的操作.
关键词:信息管理;面向对象;类;模块。

第一章系统总体设计
学生信息管理系统是一套功能强大、操作简单而又实用的模拟学生信息管理软件,它可以被广泛应用于各个学校的学生资料管理中,开发此系统的目的主要是可以实现学校学生的信息化管理。

通过学生信息管理系统,教学管理人员可以实现对学生信息的增加、删除、修改和查询等操作.本系统最大的优点就是操作简便快捷等。

1。

1系统功能模块图
根据用户需求,本系统将主要实现以下功能(如图1—1):
图1—1 系统功能模块图
其中:
信息输入:包括对学生姓名,性别,年龄,出生年月等的输入。

信息删除:可以对已经录入的学生信息进行修改。

信息查询:可以对储存在文本里的信息读写查询。

1。

2类与函数的关系
将学生信息定义为一个student类,在类中包含私有数据成员int num、
string name、string age、string sex、string birth、string politic、string address、string telephone,分别表示学号、姓名、年龄、性别、出生年月、政治面貌、家庭住址、电话号码。

公有成员函数包括set( ) ,add( ),del(),change( ) ,research( ),display( ) ,分别用来实现对学生信息的数据初始录入、增加数据、删除数据、修改数据、查询数据、显示所有数据功能(如图表1。

2所示)。

然后定义了一个menu()菜单函数,使功能菜单显示在运行窗口以提示用户如何进行操作.
主函数是一个程序必不可少的,在主函数中,使用一个switch语句来选择调
图表1.2
第二章详细设计
在本章中,主要是介绍各个功能函数的设计思路和实现方法。

2.1 初始录入功能
此函数实现的功能主要是,对学生信息的初始化录入功能,在初始时,文件中没有任何数据,可以通过次函数输入任意个学生的信息,在输入时通过一个if 条件语句来实现控制循环,当输入选择是“0”时,使用break语句就跳出循环,即停止输入学生信息。

在此函数中使用文件处理的方式,先建立一个文件输出流对象,以写的方式打开f1.txt文件,使输入的学生信息都写入文件。

2.2 添加函数
此函数实现的功能主要是,添加一个学生的信息,也就是说调用一次这个函数只能添加一个学生的信息.在此函数中也使用文件处理的方式,但使用的是以追加的方式打开文件,使输入的学生信息写在文件里原有信息的后面。

2。

3 删除函数
此函数实现的功能主要是,删除一个学生的信息.在此函数中,先以读的方式打开文件,读出文件里的信息在显示在屏幕上,用户再根据提示信息输入想要删除第几个人的信息,关闭文件.再以写的方式打开文件,以一个if条件语句控制,再重新将学生信息写入文件(除了打算删除的那个学生的信息),由于是以写的方式打开的文件,所以文件里原有的输入就都没有了,存入的新的数据。

2。

4 修改函数
此函数实现的功能主要是,修改一个学生的信息。

此函数的设计方法和删除
函数的设计思想相类似,应用的思想都是将学生信息重新写入文件的方法,将原有数据覆盖。

2.5 查询函数
在查询功能中,可以按多条件查询,本系统分为两个查询条件,即按姓名查询和按学号查询。

使用if语句来选择查询条件。

2.5.1 按姓名查询
调用switch()选择语句,根据提示信息输入姓名后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的姓名和输入的姓名一样,则输出该学生的信息,由于学生的姓名有可能重复出现,所以不能使用break语句跳出循环,应该从第一个学生开始检索直到最后一名学生。

当无查询结果时,会输出一条提示信息“无此人信息!” .
2。

5.2 按学号查询
根据提示信息输入学号后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的学号和输入的学号相等,则输出该学生的信息,由于学生的学号是唯一固定的,所以并使用break语句跳出循环。

当无查询结果时,会输出一条提示信息“无此人信息!” .
2。

6 显示函数
此函数实现的功能主要是,显示所有学生的信息。

先是从文件中读取学生信息,然后在输出到显示窗口中.用一个for循环语句,来把所有学生的信息都输出。

2。

7 退出系统
当输入“0”时,就能退出系统,这是通过while语句来控制实现的。

第三章系统测试
3。

1测试方法
采用实例录入的方式,测试每个函数的工作结果是否正确.
3.2测试用例
本系统采用实际学生信息为数据原型进行测试,所用数据为:
姓名:刘XX;年龄:20,;性别:男;出生年月:19940914;政治面貌:团员;家庭住址:湖南省郴州市资兴市矿工南路;电话:183********.
姓名:甲;年龄:18;性别:男;出生年月:19960101:;政治面貌:群众;家庭住址:四海为家;电话:123456789。

3。

3测试结果
本系统主要完成基本信息的添加,删除,修改和查询功能。

主菜单显示(如图3。

1所示):
图3.1主菜单
按1选择输入学生信息(如图3。

2所示):
图3.2
按任意键确认,开始输入(如图3。

3所示):
图3.3输入信息添加学生信息(如图3。

4所示):
图3。

4添加信息显示所有学生信息(如图3.5所示):
图3.5显示界面查询学生信息(如图3。

6和图3.7所示):
图3。

6按姓名查询
图3.7按学号查询删除学生信息(如图3.8所示):
图3.8删除信息再次查询确认数据正常删除(如图3.9所示):
图3.9确认已删除修改学生信息(如图3。

10所示):
图3.10修改数据最后,选择数字键0,安全退出系统(图略).
第四章软件使用说明书
1、系统运行环境
VC++6。

0
2、系统操作提示
本系统主要实现学生信息管理,首先用户进入主菜单界面(如图3。

1所示),然后按照相应的数字键操作,本系统简单通俗,操作界面友好,适用于中小型学生信息管理.
总结
此次c++面向对象课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。

首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。

程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。

根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握.理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。

我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。

参考文献
[1].郑莉。

C++语言程序设计(第三版).清华大学出版社,2004[2].郑莉。

C++语言程序设计案例教程.清华大学出版社,2005 [3]。

钱能。

C++程序设计教程.清华大学出版社,1999。

4 [4].谭浩强。

C++程序设计。

清华大学出版社,2004
[5].谭浩强。

C++程序设计实践指导.清华大学出版社,2005 [6]。

刘振安.C++程序设计课程设计。

机械工业出版社,2004。

8
致谢
在这次管理信息系统的课程设计中,曾遇到过不少问题,单靠我个人的努力,很难按时完成该课程设计.在此,我衷心感谢我的指导老师——庞淑侠。

庞淑侠老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益非浅。

最后,衷心感谢在课设过程中,庞淑侠、年福忠等老师的悉心指导!
附录:程序代码
#include〈iostream〉
#include<fstream〉//输入输出文件流类头文件
#include<string>
#include<iomanip>
using namespace std;
#define M 200 //可以存信息的总量
int N=0; //学生总量
class student //定义一个student的类
{
public:
student();//成员函数
void set();//初始化信息,第一次对信息的录入
void add(); //添加学生信息
void del(); //删除某学生信息
void change();//修改某学生信息
void search();//查询某学生信息
void display(); //显示全部学生信息
private:
static int num;//定义为学号
string name,age,sex,birth,politic,address,telephone;
};
int student::num=100;
student::student(){}
void student::set() //主要适用于第一次输入使用

int i;
char n;
string setname,setage,setsex,setbirth,setpolitic,setaddress,settelephone;
ofstream outfile; // ofstream用来创建一个文件,outfile输出文件
outfile.open(”f1.txt”,ios::out);//以写的方式打开文件
if(!outfile)

cerr〈〈" open error"<<endl;
exit(1);

//-———依次录入相应个数的学生信息--——
for(i=0;i〈M;i++)
{
cout<〈"按任意键继续,按0停止输入:”〈<endl;
cin〉〉n;
if(n=='0’) break;
if(n!='0’)

N++;
num++;
outfile<〈num;
cout〈〈”请输入姓名:"<<endl;
cin>>setname;
name=setname;
outfile〈〈setname〈<””;
cout<<”请输入年龄:"〈〈endl;
cin>〉setage;
age=setage;
outfile<<setage<〈" ";
cout〈<"请输入性别:”〈〈endl;
cin>〉setsex;
sex=setsex;
outfile<<setsex<<””;
cout〈〈"请输入出生年月:"<〈endl;
cin〉〉setbirth;
birth=setbirth;
outfile〈〈setbirth<<””;
cout〈〈"请输入政治面貌:”〈〈endl;
cin>〉setpolitic;
politic=setpolitic;
outfile〈〈setpolitic<〈" ”;
cout<<"请输入家庭住址:”<〈endl;
cin〉>setaddress;
address=setaddress;
outfile〈<setaddress〈〈" ";
cout〈<"请输入电话:"〈<endl;
cin>>settelephone;
telephone=settelephone;
outfile<<settelephone〈〈endl;
}
}
outfile。

close();//—--—关闭文件——--

void student::add()

string addname,addage,addsex,addbirth,addpolitic,addaddress,addtelephone;
ofstream outfile(”f1.txt”,ios::app); //以输出方式打开文件,以追加的方式录入信息,直接将信息追加到以前文件的末尾
if(!outfile)
{
cerr<<”open error”〈〈endl;
exit(1);
}
N=N+1;
cout〈〈”请输入您要添加的数据”<<endl;//依次输入相应的数据,并且追加到之前的文件中去
num++;
outfile〈<num<<" ";
cout〈〈”请输入姓名:"<〈endl;
cin〉〉addname;
outfile〈<addname<<””;
cout〈〈”请输入年龄:”<〈endl;
cin〉>addage;
outfile<〈addage〈〈" ";
cout<〈"请输入性别:"〈〈endl;
cin〉>addsex;
outfile〈〈addsex<<”";
cout〈<”请输入出生年月:”〈<endl;
cin〉>addbirth;
outfile〈<addbirth〈〈" ";
cout<〈”请输入政治面貌:”〈<endl;
cin>>addpolitic;
outfile<<addpolitic〈<" ";
cout〈<"请输入家庭住址:"〈〈endl;
cin>〉addaddress;
outfile〈<addaddress<〈”";
cout〈<"请输入电话:”〈〈endl;
cin>〉addtelephone;
outfile〈〈addtelephone<〈endl;
outfile.close();
cout<<"已添加成功!"〈<endl;
}
void student::del()//删除信息模块

int k,i;
int num[M];
string name[M],age[M],sex[M],birth[M],politic[M],address[M],telephone[M];
ifstream infile(”f1.txt”,ios::in);
if(!infile)

cerr<〈" open error”<<endl;
exit(1);

for(i=0;i<N;i++)

cout〈<" ";
infile〉>num[i];
cout〈<setw(9)<〈num[i]; //setw()默认填充的内容为空格
infile>〉name[i];
cout<<setw(9)<〈name[i];
infile〉〉age[i];
cout〈〈setw(9)〈〈age[i];
infile>〉sex[i];
cout<〈setw(9)<〈sex[i];
infile>>birth[i];
cout〈〈setw(9)<〈birth[i];
infile>〉politic[i];
cout<〈setw(9)<<politic[i];
infile>>address[i];
cout<〈setw(9)〈<address[i];
infile〉〉telephone[i];
cout<〈setw(9)〈<telephone[i]〈〈endl;

cout〈<”你想删除第几个?”〈<endl;
cin>>k;
k=k—1;
infile.close();
ofstream outfile("f1。

txt",ios::out); //以写的方式打开,将数组存取的信息从内存中输出到文件中去
if(!outfile)

cerr<<" open error"<〈endl;
exit(1); //退出程序

for(i=0;i〈N;i++)

if(i!=k)

outfile〈〈num[i]<〈”";
outfile〈〈name[i]<<" ";
outfile〈〈age[i]<<" ";
outfile〈〈sex[i]<<" ";
outfile<<birth[i]〈〈" ”;
outfile<〈politic[i]〈<”";
outfile〈〈address[i]〈〈”";
outfile〈<telephone[i]<〈" "〈〈endl;

}
outfile。

close();
N=N-1;
cout〈<”已删除成功!”<〈endl;

void student::change()//修改信息模块
{
int i,k;
int num[M];
string name[M],age[M],sex[M],birth[M],politic[M],address[M],telephone [M];
ifstream infile(”f1.txt",ios::in);
if(!infile)
{
cerr〈<”open error"<<endl;
exit(1);
}
for(i=0;i〈N;i++)
{
cout<<”";
infile>>num[i];
cout〈<setw(9)〈〈num[i];
infile>〉name[i];
cout<<setw(9)〈〈name[i];
infile〉〉age[i];
cout<<setw(9)〈<age[i];
infile〉〉sex[i];
cout〈〈setw(9)<<sex[i];
infile〉〉birth[i];
cout〈〈setw(9)<<birth[i];
infile>〉politic[i];
cout<〈setw(9)〈〈politic[i];
infile〉〉address[i];
cout〈〈setw(9)〈〈address[i];
infile〉〉telephone[i];
cout〈〈setw(9)<<telephone[i]<<endl; }
infile.close();
ofstream outfile(”f1。

txt",ios::out);
if(!outfile)
{
cerr〈〈”open error"〈<endl;
exit(1);
}
cout〈<”你想修改第几个数据?”〈<endl; cin〉〉k;
k=k-1;
cout<〈"请输入新的数据:"<<endl;
cout〈<"请输入姓名:”〈〈endl;
cin〉〉name[k];
cout〈<"请输入年龄:”<〈endl;
cin〉>age[k];
cout〈〈”请输入性别:"<〈endl;
cin〉〉sex[k];
cout〈<”请输入出生年月:"<〈endl;cin〉>birth[k];
cout<<"请输入政治面貌:"〈〈endl;cin〉>politic[k];
cout〈〈"请输入家庭住址:”<<endl;cin〉>address[k];
cout<〈”请输入电话:"<〈endl;
cin>〉telephone[k];
for(i=0;i<N;i++)
{
outfile<〈num[i]〈<””;
outfile〈〈name[i]<<" ";
outfile<〈age[i]〈〈" ";
outfile<〈sex[i]<<" ”;
outfile〈〈birth[i]〈〈””;
outfile〈<politic[i]<〈””;
outfile〈<address[i]<<””;
outfile〈<telephone[i]<<endl;
}
outfile.close();
cout<〈”已修改成功!”〈<endl;
}
void student::search()//查询信息模块
{
int i,n,w=0,num[M],a[M];
char ch;
string searchname,name[M],age [M],sex[M],birth[M],politic[M],address[M],telephone[M],b[M][7];
ifstream infile("f1。

txt”,ios::in); //ios:in作为读操作
if(!infile)

cerr〈<”open error"〈〈endl;
exit(1);
}
for(i=0;i〈N;i++)

infile>>num[i];a[i]=num[i];
infile>>name[i];b[i][0]=name[i];
infile>〉age[i];b[i][1]=age[i];
infile>〉sex[i];b[i][2]=sex[i];
infile〉〉birth[i];b[i][3]=birth[i];
infile>>politic[i];b[i][4]=politic[i];
infile>>address[i];b[i][5]=address[i];
infile〉>telephone[i];b[i][6]=telephone[i];

cout<〈"a.按姓名查找 b.按学号查找”〈〈endl;
cout<<”请输入a或者b!"<〈endl;
cin〉>ch;
switch(ch)
{case ’a':{
cout〈<"请输入姓名:"〈<endl;
cin〉>searchname;
for(i=0;i<N;i++)
if(name[i]==searchname)

w=1;
cout<<”学号姓名年龄性别出生年月政治面貌家庭住址”<〈" "<<”电话"〈<endl;
cout〈<a[i];
cout〈〈setw(9)〈〈b[i][0];
cout<<setw(9)<<b[i][1];
cout<<setw(9)〈〈b[i][2];
cout〈<setw(9)<<b[i][3]<〈””;
cout〈〈setw(9)〈〈b[i][4]〈<" ";
cout<〈setw(9)〈<b[i][5]<〈”";
cout〈<setw(9)<〈b[i][6]<<endl;

if(w==0)
cout<<"无此人信息!"<〈endl;
}break;
case 'b': {
cout<<”请输入学号:”〈<endl;
cin>〉n;
for(i=0;i〈N;i++)
if(a[i]==n)
{
w=1;
cout〈<"学号姓名年龄性别出生年月政治面貌家庭住址"<〈”"<<”电话”<〈endl;
cout<〈a[i];
cout<<setw(9)〈<b[i][0];
cout〈<setw(9)<〈b[i][1];
cout〈〈setw(9)〈〈b[i][2];
cout<〈setw(9)〈〈b[i][3]<<”";
cout<<setw(9)<<b[i][4]〈〈””;
cout<〈setw(9)<〈b[i][5]〈<”";
cout〈〈setw(9)<〈b[i][6]<〈endl;

if(w==0)
cout〈〈”无此人信息!”〈<endl;
}break;
}

void student::display()//显示信息模块

int k,num;
string name,age,sex,birth,politic,address,telephone;
ifstream infile(”f1.txt",ios::in);
if(!infile)
{
cerr〈〈”open error”<〈endl;
exit(1);
}
cout<〈”学号姓名年龄性别出生年月政治面貌家庭住址"<<”"<〈”电话”<〈endl;
cout〈〈"—--—-—---—---——-———-——--—-—-—-—-----—-—-——-———-—————-——--——-————--——-—-----——-—"<<endl;
for(k=0;k〈N;k++)
{
infile>〉num;
cout〈<num;
infile〉〉name;
cout<<setw(9)<<name;
infile〉>age;
cout〈<setw(9)〈<age;
infile>>sex;
cout〈〈setw(9)〈<sex〈<”";
infile>>birth;
cout<〈setw(9)<<birth〈〈””;
infile>>politic;
cout<<setw(9)〈〈politic〈〈”";
infile>〉address;
cout<〈setw(9)<<address<〈endl;
infile>>telephone;
cout〈<setw(9)<<telephone〈〈endl;
cout〈<”——-——--—---—————-—-—-—-—---—-—--———-—-———--————--——-—--————-—-—-————---—-—--—-—"〈<endl;
}
infile。

close();
}
student stu;//类的对象stu
void main()

char ch;
void menu();
menu();
cin>>ch;
while(ch!='0’)
{
switch(ch)
{
case ’1’:stu.set();break;
case ’2’:stu。

add();break;
case '3’:stu。

del();break;
case ’4’:stu。

change();break;
case '5':stu。

search();break;
case '6':stu.display();break;
case '0’:cout〈〈”退出系统!”;break;
default:cout<〈"对不起,没有此选项,请确认后重新选择!”<<endl;break;

menu();
cin>>ch;

}
void menu()
{
cout〈<”********************************”<<endl;
cout<〈" ***欢迎使用本学生信息管理系统***"<〈endl;
cout〈<”********************************"<<endl;
cout〈<”*** ***"〈<endl;
cout<〈”***1。

输入学生信息***"〈<endl;
cout<〈" *** ***"〈<endl;
cout<〈”***2。

添加学生信息***"〈<endl;
cout〈<”******"<〈endl;
cout〈〈" *** 3.删除学生信息***”〈〈endl;
cout〈<" *** ***"<〈endl;
cout<〈" *** 4.修改学生信息***”<<endl;
cout〈<”*** ***"〈<endl;
cout〈〈”*** 5.查询学生信息***”<〈endl;
cout〈<”*** ***”〈<endl;
cout<〈”*** 6.显示全部学生信息***"<<endl;
cout〈<" ******"<<endl;
cout<<" ***0.退出本管理系统***”<<endl;
cout<<”*** ***”<〈endl;
cout<<" ********************************"〈〈endl;
cout〈〈"请按键选择(0~6):”<〈endl;
}。

相关文档
最新文档