资源描述
课程设计说明书
题 目: 学生信息管理系统
学 院: 信息工程学院
班 级: 软件09-1
年 1 月 21 日
X X 大学课程设计(论文)任务书
课程名称: 面向对象程序设计课程设计 学院: 信息工程学院 班级: 软件09-1
学生姓名: X X X ___ 学号: 0000
指导老师: X X X
一、题目
学生信息管理系统
二、目标和意义
《面向对象程序设计课程设计》课程设计是计算机科学和技术专业实践性步骤之一,经过课程设计综合训练能够使学生深入了解和掌握面向对象程序设计课程基础知识;掌握面向对象程序设计思绪和方法;基础含有利用面向对象方法和 C++编程思想来完成系统设计能力。
三、要求(包含原始数据、技术参数、设计要求、图纸量、工作量要求等)
1. 要求利用面向对象方法和C++编程思想来完成系统设计;
2. 要求在设计过程中,建立清楚类层次;
3. 在系统中最少要定义一个类,类中要有各自属性和方法;
4. 在系统设计中,最少要用到面向对象一个机制。
四、工作内容、进度安排
1. 依据课程设计要求,确定设计题目;(0.5天)
2. 查找相关资料,进行应用程序总体结构、使用功效设计;(0.5天)
3. 进行应用程序界面设计和源程序代码编写;(2.5天)
4. 设计说明书撰写、答辩(1.5天)
五、关键参考文件
[1]《C++语言程序设计(第三版)》,郑莉,清华大学出版社,
[2]《C++程序设计教程》,钱能主编,清华大学出版社,1999.4
[3]《C++程序设计课程设计》,刘振安,机械工业出版社,.8
审核意见
系(教研室)主任(签字)
指导老师下达时间 1月 17日
指导老师签字:_______________
目录
序言 1
第一章 系统概述 2
1.1 功效介绍 2
1.2 设计思绪 2
第二章 系统功效分析和设计 3
2.1 初始录入功效 3
2.2 添加函数 3
2.3 删除函数 3
2.4 修改函数 3
2.5 查询函数 4
2.5.1 按学号查询 4
2.5.2 按姓名查询 4
2.6 显示函数 4
2.7 退出系统 4
第三章 调试及运行结果 5
3.1 主菜单 5
3.2 显示功效 5
3.3 增加功效 5
3.4 删除功效 6
3.5 修改功效 6
3.6 查询功效 6
第四章 总结 8
4.1 碰到问题及处理方法 8
4.2 收获和体会 8
序言
学生信息管理系统,是针对学校人事处大量业务处理工作而开发管理软件,是经典管理信息系统。
它是一个教育单位不可缺乏部分,它内容对于学校管理者来说是至关关键,能有效帮助学校和老师掌握学生情况。在传统模式下利用人工进行学生信息管理,存在着较多缺点,如:效率底,保密性差,时间一长将产生大量文件和数据,更不便于查找,更新,维护等。诸如这些情况,令学校管理者对学生信息管理带来了很大困难,严重影响了教育工作者工作效率。伴随科学技术不停提升,使用日趋成熟计算机技术来替换传统人工模式,来实现学生信息现代化管理,其强大功效已为大家深刻认识,它已进入人类社会各个领域并发挥着越来越关键作用。作为计算机应用一部分,使用计算机对学生信息进行管理,含有着手工管理所无法比拟优点。比如:检索快速、查找方便、易修改、可靠性高、存放量大、数据处理快捷、保密性好、寿命长、成本低等。这些优点能够极大地提升学生信息管理效率,也是学校实现科学化、正规化管理关键条件。所以,开发这么一套管理软件成为很有必需事情。
第一章 系统概述
1.1 功效介绍
本软件是一个简单学校学生信息管理系统,软件窗口为DOS页面。
学生信息管理系统功效关键是实现学校学生信息化管理。经过学生信息管理系统,教学管理人员能够实现对学生信息增加、删除、修改和查询等操作。本系统最大优点就是操作简便快捷等。
1.2 设计思绪
将学生信息定义为一个student类,在类中包含私有数据组员int num、string name、string sex、string politic、string address,分别表示学号、姓名、性别、政治面貌、家庭住址。
公有组员函数包含set( ) ,add( ) ,del( ) ,change( ) ,research( ) ,show( ) ,分别用来实现对学生信息数据初始录入、增加数据、删除数据、修改数据、查询数据、显示全部数据功效。
然后定义了一个menu( ) 菜单函数,使功效菜单显示在运行窗口以提醒用户怎样进行操作。
主函数是一个程序必不可少,在主函数中,使用一个switch语句来选择调用主菜单中各个功效函数。
第二章 系统功效分析和设计
在本章中,关键是介绍各个功效函数设计思绪和实现方法。
2.1 初始录入功效
此函数实现功效关键是,对学生信息初始化录入功效,在初始时,文件中没有任何数据,能够经过次函数输入任意个学生信息,在输入时经过一个if条件语句来实现控制循环,当输入姓名是“0”时,使用break语句就跳出循环,即停止输入学生信息。
在此函数中使用文件处理方法,先建立一个文件输出流对象,以写方法打开f1.txt文件,使输入学生信息全部写入文件。
2.2 添加函数
此函数实现功效关键是,添加一个学生信息,也就是说调用一次这个函数只能添加一个学生信息。在此函数中也使用文件处理方法,但使用是以追加方法打开文件,使输入学生信息写在文件里原有信息后面。
2.3 删除函数
此函数实现功效关键是,删除一个学生信息。在此函数中,先以读方法打开文件,读出文件里信息在显示在屏幕上,用户再依据提醒信息输入想要删除第多个人信息,关闭文件。再以写方法打开文件,以一个if条件语句控制,再重新将学生信息写入文件(除了计划删除那个学生信息),因为是以写方法打开文件,所以文件里原有输入就全部没有了,存入新数据。
2.4 修改函数
此函数实现功效关键是,修改一个学生信息。此函数设计方法和删除函数设计思想相类似,应用思想全部是将学生信息重新写入文件方法,将原有数据覆盖。
2.5 查询函数
在查询功效中,能够按多条件查询,本系统分为两个查询条件,即按学号查询和按姓名查询。使用if语句来选择查询条件。
2.5.1 按学号查询
依据提醒信息输入学号后,然后使用一个for循环语句,从第一个学生开始检索,假如该学生学号和输入学号相等,则输出该学生信息,因为学生学号是唯一固定,所以并使用break语句跳出循环。
当无查询结果时,会输出一条提醒信息“无此人信息!” 。
2.5.2 按姓名查询
依据提醒信息输入姓名后,然后使用一个for循环语句,从第一个学生开始检索,假如该学生姓名和输入姓名一样,则输出该学生信息,因为学生姓名有可能反复出现,所以不能使用break语句跳出循环,应该从第一个学生开始检索直到最终一名学生。
当无查询结果时,会输出一条提醒信息“无此人信息!” 。
2.6 显示函数
此函数实现功效关键是,显示全部学生信息。先是从文件中读取学生信息,然后在输出到显示窗口中。用一个for循环语句,来把全部学生信息全部输出。
2.7 退出系统
当输入“0”时,就能退出系统,这是经过while语句来控制实现。
第三章 调试及运行结果
3.1 主菜单
主菜单显示以下:
图3-1 主菜单
3.2 显示功效
按6则显示全部信息,图3-2:
图3-2 显示功效
3.3 增加功效
进入主菜单后选择2,进入增加功效,按要求输入学生信息,增加数据前显示图3-2:
增加后显示图3-3:
图3-3 增加后
3.4 删除功效
进入主菜单后选择3,进入删除功效,按要求输入要删除学生信息,删除数据前显示图3-3:
删除数据后显示图3-4:
图3-4 删除后
3.5 修改功效
进入主菜单后选择4,进入修改功效,按要求输入要修改学生信息,修改数据前显示图3-4:
修改后图3-5:
图3-5 修改后
3.6 查询功效
进入主菜单后选择5,进入查询功效,图3-6:
图3-6选择查询条件
按学号查询图3-7:
按姓名查询图3-8:
图3-7 按学好查询:
图3-8按姓名查询
第四章 总结
4.1 碰到问题及处理方法
首先,是对文件处理不够熟练,经过看书和搜集部分资料处理了这个问题;其次,是在编写程序过程中出现了部分语法错误,后经过调试逐一处理。
4.2 收获和体会
此次c++面向对象课程设计,在指导老师精心教导下,我们学会了怎样用C++编写一个简单应用程序。首先要对程序设计要求有一个比较明确认识,然后系统分析和系统设计,最终是代码设计和调试。程序实现上,设计了简单菜单界面,将各个功效集中出现在主菜单中,便于调用。
依据C++课程所学概念、理论和方法,根据C++程序设计基础步骤,设计出一个合适规模程序;深入加深对C++语言了解和掌握。理论联络实际,加深和巩固所学理论知识,提升实践能力和计算机综合利用能力。我们编写程序过程是辛劳和愉快,程序编写标准很关键,只要我们在编程,就必需不停改善,才能愈加好提升编程能力。
参考文件
[1] 《C++语言程序设计(第三版)》,郑莉,清华大学出版社,
[2]《C++语言程序设计案例教程》,郑莉,清华大学出版社,
[3]《C++程序设计教程》,钱能主编,清华大学出版社,1999.4
[4]《C++程序设计》,谭浩强,清华大学出版社,
[5]《C++程序设计实践指导》,谭浩强,清华大学出版社,
[6]《C++程序设计课程设计》,刘振安,机械工业出版社,.8
附录:程序代码
#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;
#define M 200 //能够存信息总量
int N=0; //学生总量
class student
{
public:
student();
void set(); //初始化信息,第一次对信息录入
void add(); //添加学生信息
void del(); //删除某学生信息
void change(); //修改某学生信息
void search(); //查询某学生信息
void display(); //显示全部学生信息
private:
static int num;
string name,sex,politic,address;
};
int student::num=110;
student::student() {}
void student::set()
{
int i;
string setname,setsex,setpolitic,setaddress;
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;
cout<<"请输入姓名:"<<endl;
cin>>setname;
name=setname;
if(setname=="0") break;
if(setname!="0")
{
N++;
num++;
outfile<<num<<" ";
outfile<<setname<<" ";
cout<<"请输入性别:"<<endl;
cin>>setsex;
sex=setsex;
outfile<<setsex<<" ";
cout<<"请输入政治面貌:"<<endl;
cin>>setpolitic;
politic=setpolitic;
outfile<<setpolitic<<" ";
cout<<"请输入家庭住址:"<<endl;
cin>>setaddress;
address=setaddress;
outfile<<setaddress<<endl;
}
}
outfile.close(); //----关闭文件----
}
void student::add()
{
string addname,addsex,addpolitic,addaddress;
//----以追加方法录入信息,直接将信息追加到以前文件末尾----
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>>addsex;
outfile<<addsex<<" ";
cout<<"请输入政治面貌:"<<endl;
cin>>addpolitic;
outfile<<addpolitic<<" ";
cout<<"请输入家庭住址:"<<endl;
cin>>addaddress;
outfile<<addaddress<<endl;
outfile.close();
cout<<"已添加成功!"<<endl;
}
void student::del()
{
int k,i;
int num[M];
string name[M],sex[M],politic[M],address[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>>sex[i];
cout<<setw(9)<<sex[i];
infile>>politic[i];
cout<<setw(9)<<politic[i];
infile>>address[i];
cout<<setw(9)<<address[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<<sex[i]<<" ";
outfile<<politic[i]<<" ";
outfile<<address[i]<<" "<<endl;
}
}
outfile.close();
N=N-1;
cout<<"已删除成功!"<<endl;
}
void student::change()
{
int i,k;
int num[M];
string name[M],sex[M],politic[M],address[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>>sex[i];
cout<<setw(9)<<sex[i];
infile>>politic[i];
cout<<setw(9)<<politic[i];
infile>>address[i];
cout<<setw(9)<<address[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>>sex[k];
cout<<"请输入政治面貌:"<<endl;
cin>>politic[k];
cout<<"请输入家庭住址:"<<endl;
cin>>address[k];
for(i=0;i<N;i++)
{
outfile<<num[i]<<" ";
outfile<<name[i]<<" ";
outfile<<sex[i]<<" ";
outfile<<politic[i]<<" ";
outfile<<address[i]<<" "<<endl;
}
outfile.close();
cout<<"已修改成功!"<<endl;
}
void student::search()
{
int i,n,w=0,num[M],a[M];char ch;
string searchname,name[M],sex[M],politic[M],address[M],b[M][4];
cout<<"a.按学号查找 b.按姓名查找"<<endl;
ifstream infile("f1.txt",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>>sex[i];b[i][1]=sex[i];
infile>>politic[i];b[i][2]=politic[i];
infile>>address[i];b[i][3]=address[i];
}
cout<<"请输入a或b!"<<endl;
cin>>ch;
if(ch=='a')
{
cout<<"请输入学号!"<<endl;
cin>>n;
for(i=0;i<N;i++)
if(a[i]==n)
{
w=1;
cout<<" 学号 姓名 性别 政治面貌 家庭住址"<<endl;
cout<<" ";
cout<<setw(9)<<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]<<endl;
}
if(w==0)
cout<<"无此人信息!"<<endl;
}
else if(ch=='b')
{
cout<<"请输入姓名!"<<endl;
cin>>searchname;
for(i=0;i<N;i++)
if(name[i]==searchname)
{
w=1;
cout<<" 学号 姓名 性别 政治面貌 家庭住址"<<endl;
cout<<" ";
cout<<setw(9)<<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]<<endl;
}
if(w==0)
cout<<"无此人信息!"<<endl;
}
else cout<<"没有此选项!"<<endl;
}
void student::display()
{
int k,num;
string name,sex,politic,address;
ifstream infile("f1.txt",ios::in);
if(!infile)
{
cerr<<" open error"<<endl;
exit(1);
}
cout<<" 学号 姓名 性别 政治面貌 家庭住址"<<endl;
for(k=0;k<N;k++)
{
cout<<" ";
infile>>num;
cout<<setw(9)<<num;
infile>>name;
cout<<setw(9)<<name;
infile>>sex;
cout<<setw(9)<<sex;
infile>>politic;
cout<<setw(9)<<politic;
infile>>address;
cout<<setw(9)<<address<<endl;
}
infile.close();
}
student stu;
void main()
{
char ch;
void menu();
menu();
cin>>ch;
while(ch!='0')
{
system("cls");
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<<"* 1.输入 *"<<endl;
cout<<"* 2.添加 *"<<endl;
cout<<"* 3.删除 *"<<endl;
cout<<"* 4.修改 *"<<endl;
cout<<"* 5.查询 *"<<endl;
cout<<"* 6.显示全部 *"<<endl;
cout<<"* 0.退出 *"<<endl;
cout<<"******************"<<endl;
}
展开阅读全文