摘 要
C++是由C发展而来的,与C兼容。所以它可以用于面向过程的结构化程序设计,但是它又有自己的特点,它也可以用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。
虽然C++仍然允许使用从C继承来的传统用法,但是仍然提倡使用C++的新方法。面向对象的程序设计主要有四个特点:封装,继承,多态,抽象。学好C++,绝不是一个纯技术的问题,需要综合考虑多方面的因素,作出合理的决策和安排。因此必须强调多编程,多上机实践。本次课设三个题目要求设计管理系统,我选择了公司人员信息管理系统,编写的程序涵盖了C++语言中的封装,继承,多态(虚函数的使用),文件操作。在设计过程中我尽量秉持着靠近实际应用的原则,用心的从一个管理者的角度出发并解决了自己在程序中的多处不足和缺陷,例如在输入编号设计中,设计了关于数据有效性的操作等。在系统设计中我加强了界面的美观设计,使程序在简洁的基础上可读性更强,更人性化!最后我在设计过程中也尝试了创新的方法,也收到了很好的效果。总之,两周的课设过去了,我感觉自己在整体上有了一个很大的提高,知识更加系统化,理论化,我会继续努力和不断地钻研!!!
本文利用Microsoft Visual C++6.0编写程序,实现了用户对公司职员信息的增加﹑更改﹑删除﹑查找﹑显示﹑存储等操作。
目 录
摘 要 ................................................................................................................................. - 0 - 目 录 ................................................................................................................................. - 1 - 课程设计任务书 ................................................................................................................. - 2 -
第一章 绪论 ..................................................................................................................... - 3 -
1.1 课程设计的目的 ............................................................................................... - 3 -
1.2 课程设计的背景和意义 ................................................................................... - 3 -
1.3 课程设计环境 ................................................................................................... - 3 -
第二章 需求分析 ............................................................................................................. - 4 -
2.1 问题描述 ........................................................................................................... - 4 -
制作公司人员信息管理系统实现数据录入、数据删除、数据保存和数据显示以及数据查询等一些功能。 ..................................................................................... - 4 -
2.2 功能要求 ......................................................................................................... - 4 -
2.3 问题的解决方案 ............................................................................................. - 4 -
第三章 系统设计 ............................................................................................................. - 5 -
3.1 数据设计 ........................................................................................................... - 5 -
3.1.1 类设计 ................................................................................................. - 5 -
3.1.2 类之间的关系 ..................................................................................... - 5 -
3.1.3 函数设计 ............................................................................................. - 5 -
3.2 结构设计 ........................................................................................................... - 6 -
3.2.1 系统流程图 ......................................................................................... - 6 -
3.2.2 界面设计 ............................................................................................. - 6 -
第四章 系统实现 ............................................................................................................. - 8 -
4.1 类实现 ............................................................................................................... - 8 -
4.2 函数实现 ........................................................................................................... - 9 -
4.3 主函数实现 ..................................................................................................... - 19 -
第五章 系统测试 ........................................................................................................... - 21 -
5.1 模块测试 ......................................................................................................... - 21 -
5.2 课程设计过程中遇到的问题 ......................................................................... - 25 - 总 结 ............................................................................................................................... - 26 - 致 谢 ............................................................................................................................... - 26 - 参考文献 ........................................................................................................................... - 26 - 附 录 ............................................................................................................................... - 27 -
第 - 1 - 页 共 53 页
课程设计任务书
第 - 2 - 页 共 53 页
第一章 绪论
1.1 课程设计的目的
C++作为一种面向对象的程序设计语言,它支持对类的抽象.了解面向对象的程序设计思想及其方法,其核心概念--类,包括类及其派生类的声明实现利用类来解决具体问题,并达到以下目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
1.2 课程设计的背景和意义
C++是一门实践性很强的课程,光靠听课和看书是学不好的。衡量学习好坏的标准不是懂不懂。因此必须强调多编程,多上机实践。所以开设了这次课程设计,目的在于使学生达到熟练掌握C++语言的基本知识和技能,掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。这对于进一步巩固C++知识是一个很好的机会。
同时我们在这次课程设计的过程中学到了很多课本以外的知识,解决了很多以前没有碰到的问题,可以说对程序设计这门课有了一个新的认识。
1.3 课程设计环境
本次课设采用的是Microsoft Visual C++6.0编写程序
第 - 3 - 页 共 53 页
第二章 需求分析
2.1 问题描述
制作公司人员信息管理系统实现数据录入、数据删除、数据保存和数据显示以及数据查询等一些功能。
2.2 功能要求
(1)创建人事管理数据表,该表反映职工的基本信息,其中包含职工编号、职工姓名、基本工资、职称等字段。
(2)根据自己的喜好设计系统封面
(3).系统应包括记录编辑和记录查询等功能模块。记录编辑功能完成职工记录编辑的记录增加、记录删除和记录查询等功能。记录查询功能可以对数据集中的记录进行查询,要求按职工编号进行查询
2.3 问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
2)分析系统中的各个实体及它们之间的关系;
3)根据问题描述,设计系统的类层次;
4)完成类层次中各个类的描述;
5)完成类中各个成员函数的定义;
6)完成系统的应用模块;
7)功能调试;
8)完成系统总结报告。
第 - 4 - 页 共 53 页
第三章 系统设计
3.1 数据设计
3.1.1 类设计
本次程序设计一共定义了五个类:Employee, Manager,Salemanager,Technology和Salesman。
在Employee类里定义了Empoyee类的缺省构造函数和它的析构函数,set函数用于实现新增成员的输入,change函数实现数据的更改,delete1函数用于实现数据的删除,display函数用于实现数据的显示。getnum用于实现在查找的时候得到编号。数据成员有num,name,gz,zc分别表示员工的编号,姓名,工资,职称。
Manager,Salemanager,Technology和Salesman类公有继承Employee类,它们的函数功能,数据成员与基类的基本相同,只是在Salemanager类里多了sum数据成员来计算它的工资,在Technology类里多了time数据成员来计算它的工资,Salesman类里多了sum1 数据成员用于计算它的工资。
3.1.2 类之间的关系
Employee类和他的四个派生类:Manager,Salemanager,Technology,Salesman.,设计为继承关系,主要是为了继承他们共有的数据成员和成员函数,因为每个类里都要用到编号,姓名,职称这几个数据成员和修改,删除,增加,显示,得到编号,这几个成员函数。所以用继承更加方便。
3.1.3 函数设计
在五个类里定义了它们的的缺省构造函数和它的析构函数,set函数用于实现新增成员的输入,通过for循环给对象数组赋值来实现。change函数实现数据的更改,通过for循环给对象数组重新赋值来实现。delete1函数用于实现数据的删除,通过for循环给对象数组赋零值来实现。display函数用于实现数据的显示,通过for循环使对象数组挨个输出来实现。getnum用于实现在查找的时候得到编号,通过返回编号的值来实现。
为了使代码的层次清晰,程序中还定义了六个普通函数:add用于实现信息维护时的增加,通过调用各自类里的set增加函数来实现。change1用于实现信息维护时的修改,通过调用各自类里的change函数和getnum函数来实现。delete2用于实现信息维护时的删除,通过调用各自类里的delete1函数和getnum函数来实现。search用于实现信息维护时的查找,通过调
第 - 5 - 页 共 53 页
用各自的getnum函数和display函数来实现。show用于实现信息维护时的显示,通过调用类里的display函数来实现。save用于实现信息维护时的保存,在函数利用到了文件的操作,通过把数组的内容写进二进制文件来实现数据的保存。
3.2 结构设计
3.2.1 系统流程图
3.2.2 界面设计
//欢迎界面
cout<<setw(20)<<"****************************欢迎进入员工信息管理系统****************************"<<endl;
cout<<setw(50)<<"***********************\n";
//以下是操作界面
cout<<setw(50)<<" 请选择您所需的操作 \n";
cout<<setw(50)<<" 操作1,并按回车键 \n";
cout<<setw(50)<<" 返回0,并按回车键 \n";
第 - 6 - 页 共 53 页
cout<<setw(50)<<"***********************\n";
cout<<"信息维护1:新增2:更改3:删除4:查找5:显示6:保存0:退出=>"; cout<<setw(50)<<" ***************************\n";
cout<<setw(50)<<" 请选择您所需查找的对象 \n";
cout<<setw(50)<<" 经理: 1,并按回车键 \n";
cout<<setw(50)<<" 销售经理2:,并按回车键 \n";
cout<<setw(50)<<" 技术人员3:,并按回车键 \n";
cout<<setw(50)<<" 销售人员4:,并按回车键 \n";
cout<<setw(50)<<" 返回 0:,并按回车键 \n";
cout<<setw(50)<<" ***************************\n";
以上这些循环都是通过switch语句实现的
第 - 7 - 页 共 53 页
第四章 系统实现
4.1 类实现
class Employee //基类
{
public:
Employee(){} //缺省构造函数 ~Employee(){} //析构函数
void display()//显示员工信息 void change() //修改员工信息 int getnum() //得到编号 void delete1() //删除员工信息 void set() //输入员工信息
protected:
int num; //编号 int gz; //年龄
string name;; //姓名 string zc; //性别
};
class Manager:virtual public Employee //经理类
{
public:
Manager(){} //缺省构造函数 ~Manager(){} //析构函数 void display()//显示员工信息 void set() //输入员工信息 void change() //修改员工信息 void delete1() //删除员工信息 };
class Salemanager:virtual public Employee //销售经理类
{
public:
Salemanager(){} //构造函数 ~Salemanager(){} //析构函数 void display()//显示员工信息 void set() //输入员工信息 void change() //修改员工信息 void delete1() //删除员工信息 protected:
int sum;//销售额
};
class Technology:virtual public Employee //技术人员类
{
public:
第 - 8 - 页 共 53 页
Technology(){} //构造函数 ~Technology(){} //析构函数
void display()//显示员工信息 void set() //输入员工信息
void change() //修改员工信息 void delete1() //删除员工信息 protected:
int time; //工作时间
};
class Salesman:virtual public Employee
{
public:
Salesman(){} //构造函数 ~Salesman(){} //析构函数
void display()//显示员工信息 void set() //输入员工信息
void change() //修改员工信息 void delete1() //删除员工信息
protected:
int sum1; //月销售额
};
4.2 函数实现
//定义几个全局变量
Manager m[N]; Salemanager s[N]; Technology t[N]; Salesman s1[N];//对象数组 int a,q,ID,b; int i; //输入数据时的标记
static a1=0,a2=0,a3=0,a4=0;//静态全局变量用于记录各员工个数
void add()//增加功能
{
cout<<setw(50)<<" ****************************\n";
cout<<setw(50)<<" 请选择您所需增加的操作 \n";
cout<<setw(50)<<" 经理: 1,并按回车键 \n";
cout<<setw(50)<<" 销售经理2:,并按回车键 \n";
cout<<setw(50)<<" 技术人员3:,并按回车键 \n";
cout<<setw(50)<<" 销售人员4:,并按回车键 \n";
cout<<setw(50)<<" 返回 0:,并按回车键 \n";
cout<<setw(50)<<" ****************************\n";
cin>>q;
while(q!=0){ switch(q)
{ case 1:
第 - 9 - 页 共 53 页
}
} cout<<"请输入要增加经理数:"<<endl; cin>>a; { m[a1].set(); //调用类的set函数进行输入 a1++;//设置全局静态变量用于计数} break; cout<<"请输入要增加的销售经理数:"<<endl; cin>>a; {s[a2].set(); a2++;} for( i=0;i<a;i++) case 2: for( i=0;i<a;i++) break; cout<<"请输入要增加的技术人员数:"<<endl; cin>>a; for(i=0;i<a;i++) {t[a3].set(); a3++;} break; cout<<"请输入要增加的销售人员数:"<<endl; cin>>a; for(i=0;i<a;i++) { s1[a4].set(); a4++;} break; case 3: case 4: } break;
void change1()//修改功能
{
cout<<setw(50)<<" ***************************\n"; cout<<setw(50)<<" 请选择您所需修改的对象 \n"; cout<<setw(50)<<" 经理: 1,并按回车键 \n"; cout<<setw(50)<<" 销售经理2:,并按回车键 \n"; cout<<setw(50)<<" 技术人员3:,并按回车键 \n"; cout<<setw(50)<<" 销售人员4:,并按回车键 \n"; cout<<setw(50)<<" 返回 0:,并按回车键 \n"; cout<<setw(50)<<" ***************************\n"; cin>>q;
while(q!=0)
第 - 10 - 页 共 53 页
{ int k;
switch(q)
{ case 1: cout<<"输入编号(1001—1100):"; //设置数据的有效性判断 cin>>ID; while(ID<1000||ID>1100) { cout<<"编号的范围应在(1001~1100),请重新操作!"<<endl; cout<<"输入编号(1001—1100):"; cin>>ID; } k=0; //k用来控制是否存在这个号码的员工,以下k的作用与此相同 { } if(k==0) cout<<"此人不存在!"<<endl; break; cout<<"输入编号(2001—2100):"; cin>>ID; while(ID<2000||ID>2100) { cout<<"编号的范围应在(2001~2100),请重新操作!"<<endl; cout<<"输入编号(2001—2100):"; cin>>ID; } k=0; for(i=0;i<a2;i++) { if(s[i].getnum()==ID) {s[i].change(); k++; break; } } if(k==0) cout<<"此人不存在!"<<endl; break; cout<<"输入编号(3001—3100):"; cin>>ID; while(ID<3000||ID>3100) {
第 - 11 - 页 共 53 页 for(i=0;i<a1;i++) if(m[i].getnum()==ID) //调用类里的getnum函数得到编号 {m[i].change();//调用change函数进行修改 k++; break;} case 2: case 3:
}
} cout<<"编号的范围应在(3001~3100),请重新操作!"<<endl; cout<<"输入编号(3001—3100):"; cin>>ID; } k=0; for(i=0;i<a3;i++) } if(k==0) cout<<"此人不存在!"<<endl; break; cout<<"输入编号(4001—4100):"; cin>>ID; while(ID<4000||ID>4100) { cout<<"编号的范围应在(4001~4100),请重新操作!"<<endl; cout<<"输入编号(4001—4100):"; cin>>ID; } k=0; for(i=0;i<a4;i++) { } if(k==0) cout<<"此人不存在!"<<endl; break; if(s1[i].getnum()==ID) {s1[i].change(); k++; break; } if(t[i].getnum()==ID) {t[i].change(); k++; break; } { case 4: } break;
void delete2()//删除
{
cout<<setw(50)<<" ***************************\n"; cout<<setw(50)<<" 请选择您所需删除的对象 \n"; cout<<setw(50)<<" 经理: 1,并按回车键 \n"; cout<<setw(50)<<" 销售经理2:,并按回车键 \n";
第 - 12 - 页 共 53 页
cout<<setw(50)<<" 技术人员3:,并按回车键 \n"; cout<<setw(50)<<" 销售人员4:,并按回车键 \n"; cout<<setw(50)<<" 返回 0 :,并按回车键 \n"; cout<<setw(50)<<" ***************************\n"; cin>>q;
while(q!=0)
{
switch(q) {int k; case 1: cout<<"输入编号(1001—1100):"; cin>>ID; while(ID<1000||ID>1100) { cout<<"编号的范围应在(1001~1100),请重新操作!"<<endl; cout<<"输入编号(1001—1100):"; cin>>ID; } k=0; { } if(k==0) cout<<"此人不存在!"<<endl; break; cout<<"输入编号(2001—2100):"; cin>>ID; while(ID<2000||ID>2100) { cout<<"编号的范围应在(2001~2100),请重新操作!"<<endl; cout<<"输入编号(2001—2100):"; cin>>ID; } k=0;
第 - 13 - 页 共 53 页 for(i=0;i<a1;i++) if(m[i].getnum()==ID) { } m[i].delete1(); //调用delete1函数进行删除 cout<<"删除成功!"<<endl; k++; break; case 2:
for(i=0;i<a2;i++)
{ } if(k==0) if(s[i].getnum()==ID) { } s[i].delete1(); cout<<"删除成功!"<<endl; k++; break; cout<<"此人不存在!"<<endl; break; case 3: cout<<"输入编号(3001—3100):"; cin>>ID; while(ID<3000||ID>3100) { cout<<"编号的范围应在(3001~3100),请重新操作!"<<endl; cout<<"输入编号(3001—3100):"; cin>>ID; } k=0; for(i=0;i<a3;i++) { } if(k==0) cout<<"此人不存在!"<<endl; break; cout<<"输入编号(4001—4100):"; cin>>ID; while(ID<4000||ID>4100) { cout<<"编号的范围应在(4001~4100),请重新操作!"<<endl; cout<<"输入编号(4001—4100):"; cin>>ID;
第 - 14 - 页 共 53 页 if(t[i].getnum()==ID) { } t[i].delete1(); cout<<"删除成功!"<<endl; k++; break; case 4:
}
} } k=0; for(i=0;i<a4;i++) { } if(k==0) cout<<"此人不存在!"<<endl; break; if(s1[i].getnum()==ID) { } s1[i].delete1(); cout<<"删除成功!"<<endl; k++; break; break;
void search()//查找
{
int k=0;
cout<<setw(50)<<" *****************************\n"; cout<<setw(50)<<" 查找方式1:按编号查找\n";
cout<<setw(50)<<" 2:返回,并按回车键 \n";
cout<<setw(50)<<" ****************************\n"; cin>>b;
while(b!=0) {
switch(b)
{ case 1:
cout<<setw(50)<<" ***************************\n"; cout<<setw(50)<<" 请选择您所需查找的对象 \n"; cout<<setw(50)<<" 经理: 1,并按回车键 \n"; cout<<setw(50)<<" 销售经理2:,并按回车键 \n"; cout<<setw(50)<<" 技术人员3:,并按回车键 \n";
cout<<setw(50)<<" 销售人员4:,并按回车键 \n"; cout<<setw(50)<<" 返回 0:,并按回车键 \n"; cout<<setw(50)<<" ***************************\n"; cin>>q;
第 - 15 - 页 共 53 页
} while(q!=0) { case 1: cout<<"输入编号(1001—1100):"; cin>>ID; while(ID<1000||ID>1100) { cout<<"编号的范围应在(1001~1100),请重新操作!"<<endl; cout<<"输入编号(1001—1100):"; cin>>ID; } { switch(q) for(i=0;i<a1;i++) { k=0; if(m[i].getnum()==ID) { cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓名"<<"│ cout<<"├—————┼—————┼—————┼—————┤"<<endl; m[i].display(); //调用类里的display函数进行输出 k++; break; } cout<<"├—————┼—————┼—————┼—————┤"<<endl; "<<setw(10)<<"级别"<<"│"<<setw(10)<<"工资"<<"│"<<endl;
if(k==0)
cout<<"此人不存在!"<<endl; break;
case 2:
cout<<"输入编号(2001—2100):"; cin>>ID;
while(ID<2000||ID>2100)
{
cout<<"编号的范围应在(2001~2100),请重新操作!"<<endl;
cout<<"输入编号(2001—2100):"; cin>>ID;
}
for(i=0;i<a2;i++)
{ k=0;
if(s[i].getnum()==ID)
{
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
第 - 16 - 页 共 53 页
cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓名"<<"│"<<setw(10)<<"级别"<<"│"<<setw(10)<<"工资"<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl; s[i].display(); k++; break;
}
}
if(k==0)
cout<<"此人不存在!"<<endl; break;
case 3:
cout<<"输入编号(3001—3100):"; cin>>ID;
while(ID<3000||ID>3100)
{
cout<<"编号的范围应在(3001~3100),请重新操作!"<<endl;
cout<<"输入编号(3001—3100):" ; cin>>ID;
}
for(i=0;i<a3;i++)
{ k=0;
if(t[i].getnum()==ID)
{
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓名"<<""<<setw(10)<<"级别"<<"│"<<setw(10)<<"工资"<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl; t[i].display(); break;
}
}
if(k==0)
cout<<"此人不存在!"<<endl; break;
case 4:
cout<<"输入编号(4001—4100):"; cin>>ID;
while(ID<4000||ID>4100)
{
cout<<"编号的范围应在(4001~4100),请重新操作!"<<endl;
cout<<"输入编号(4001—4100):"; cin>>ID;
}
第 - 17 - 页 共 53 页 │
for(i=0;i<a4;i++)
{ k=0;
if(s1[i].getnum()==ID)
{
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓名"<<"│"<<setw(10)<<"级别"<<"│"<<setw(10)<<"工资"<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
s1[i].display(); break;
}
}
if(k==0)
cout<<"此人不存在!"<<endl; break;
} break;
} break;
} break;
}
}
void show()//显示
{
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓名"<<"│"<<setw(10)<<"级别"<<"│"<<setw(10)<<"工资"<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
for( i=0;i<a1;i++) { m[i].display();}//调用类里的display函数来实现输出 for( i=0;i<a2;i++) { s[i].display();}
for( i=0;i<a3;i++) { t[i].display();}
for( i=0;i<a4;i++) { s1[i].display();}
}
void save()//利用二进制文件操作来保存数据
{
ofstream outfile1("manager.txt",ios::binary);
if(!outfile1)
{ cerr<<"manager.txt open error!"<<endl; abort(); }
for(i=0;i<a1;i++)
第 - 18 - 页 共 53 页
{ outfile1.write((char*)&m[i],sizeof(m[i])); }
outfile1.close();
ofstream outfile2("salemanager.txt",ios::binary);
if(!outfile2)
{ cerr<<"salemanager.txt open error!"<<endl; abort(); } for(i=0;i<a2;i++)
{ outfile2.write((char*)&s[i],sizeof(s[i])); }
outfile2.close();
ofstream outfile3("technology.txt",ios::binary);
if(!outfile3)
{ cerr<<"technology.txt open error!"<<endl; abort(); } for(i=0;i<a3;i++)
{ outfile3.write((char*)&t[i],sizeof(t[i])); }
outfile3.close();
ofstream outfile4("salesman.txt",ios::binary);
if(!outfile3)
{ cerr<<"salesman.txt open error!"<<endl; abort(); } for(i=0;i<a4;i++)
{ outfile4.write((char*)&s1[i],sizeof(s1[i])); }
outfile4.close();}
4.3 主函数实现
int main()
{ int choice=1;
while(choice!=0)
{
//***********以下是欢迎界面**********
cout<<setw(20)<<"****************************欢迎进入员工信息管理系统****************************"<<endl;
cout<<setw(50)<<"***********************\n";
cout<<setw(50)<<" 请选择您所需的操作 \n";
cout<<setw(50)<<" 操作1,并按回车键 \n";
cout<<setw(50)<<" 返回0,并按回车键 \n";
第 - 19 - 页 共 53 页
cout<<setw(50)<<"***********************\n";
cin>>choice;
switch(choice)
{ case 1:
while(1)
{ cout<<setw(20);
while (choice!=0)
{
//以下是信息维护的选择操作
cin>>choice;
switch (choice)
{
case 1: //实现增加功能 add(); break;
case 2://实现修改功能 change1(); break;
case 3: //实现删除功能 delete2(); break;
case 4: //实现查找功能 search(); break;
case 5: //实现显示功能 show(); break;
case 6: //实现保存功能
{ save(); cout<<"写入文件成功!"<<endl; break; } case 0: break;
}
}
case 0:
break;
default:
cout<<"请从0和1之间选择操作!"<<endl; break;
}
}
}
return 0;
}
第 - 20 - 页 共 53 页
第五章 系统测试
5.1 模块测试
(1)进入欢迎界面按1 进入操作 按0 退出,如图5-1所示
图5-1
(2)如果按了其他数字系统会提醒你重新操作,在0和1之间选择,如图5-2所示
图 5-2
(3)在信息维护里按相应的数字进行操作,按1进行添加,如图5-3所示
第 - 21 - 页 共 53 页
图5-3
(4)添加了一个经理系统提示增加的个数,然后输入信息,在编号里有关于数据有效性的判断如图5-4所示
图5-4
(5)增加完以后,按5显示当前信息,如图
5-5
图5-5
(6)按2进行更改,系统提示输入员工的新信息,如图5-6所示
第 - 22 - 页 共 53 页
图5-6
(7)更改完以后按5显示更改完以后的信息,如图5-7所示
图5-7
(8)按3进行删除,系统提示删除成功,可以进行其它操作,如图5-8所示
图5-8
(9)删除以后按5,进行显示,如图5-9所示
第 - 23 - 页 共 53 页
图5-9
(10)按4进行查找,如果用户不存在则显示此人不存在的信息
图5-10
(11) 用户存在的话,则输出他的全部信息,如图5-11所示
图5-11
(12)按6写入文件,系统提示保存成功,如图5-12,所示
第 - 24 - 页 共 53 页
图5-12
(13.) 保存以后的文件内容,如图5-13所示
图5-13
(14) 按0退出系统,界面如图
5-14
图5-14
5.2 课程设计过程中遇到的问题
在程序设计过程中,我在用switch语句的时候把break的位置放错,导致程序无法运行。在文件操作的时候,如果后面有case语句,或者default语句,要把文件操作的内容括起来,否则系统提示错误。如果在一个函数中有多个case语句用到一个变量,则要把这个变量定义为这个函数内的全局变量,否则在运行时系统会报错。而且在运行过程中碰到如果变量是string类型,不能将它用于strcmp,只有将变量改为字符数组,才可以进行字符比较的操作。
第 - 25 - 页 共 53 页
总 结
本次课设我做的是公司人员管理系统,其优点是有友好的界面,可以有效地进行数据的增加,更改,删除,查找,显示和保存,并且在输入数据时有关于数据有效性的判断。但是也有一些缺点,就是删除数据时是把内容赋为空值,而不能把他从内存中彻底删除,导致内存空间的浪费。究其原因主要是对链表的掌握不熟练,所以以后要加强对链表知识的学习。总之,两周的课设,让我感觉自己在整体上有了一个很大的提高,知识更加系统化,理论化,我会继续努力和不断地钻研!!!
致 谢
本课题在选题及进行过程中得到斯琴老师的悉心指导。论文行文过程中,斯琴老师多次帮助我分析思路,开拓视角,在我遇到困难想放弃的时候给予我最大的支持和鼓励。斯琴老师严谨求实的治学态度,踏实坚韧的工作精神,将使我终生受益。再多华丽的言语也显苍白。在此,谨向斯琴老师致以诚挚的谢意和崇高的敬意。同时也要感谢我的同学陈红在编写代码的过程中给予我的帮助。
参考文献
[1]吕凤翥. C++语言基础教程.清华大学出版社 .19xx年3月第一版
[2]郑莉 董渊 张瑞丰. C++语言程序设计. 清华大学出版社.. 2005
[3]张国峰.C++语言及其程序设计教程. 电子工业出版社. 1997
[4]和克智.C++程序设计. 西安交通大学出版社.2004
[5]张基温.C++程序开发教程. 清华大学出版社.2002-12
[6]揣锦华.C++程序设计语言. 西安电子科技大学出版社.2003-2
[7]裘宗燕.c++程序设计语言(特别版). 机械工业出版社.2002-7
[8]候捷译.C++设计新思维. 华中科技大学出版社.2003-3
第 - 26 - 页 共 53 页
附 录 将源程序代码附到附录中。
程序源代码如下:
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
const int N=100;
using namespace std;
class Employee
{
public:
Employee(){}
~Employee(){}
void display()//显示员工信息
{
cout<<"│"<<setw(10)<<num<<"│"<<setw(10)<<name<<"│"<<setw(10)<<zc<<"│"<<setw(10)<<gz<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl; }
void change()
{
"<<endl;
}
int getnum() {return num;}
char *getzc() {return zc;}
void delete1()
{
num=0; name="***";
第 - 27 - 页 共 53 页 cout<<"请输入雇员的新信息:"<<endl; cout<<"编号"<<setw(5)<<"姓名"<<setw(5)<<"职称"<<setw(5)<<"工资 cin>>num; cin>>name; cin>>zc; cin>>gz;
} strcpy(zc,"###"); gz=0;
void set() //输入员工信息
{
"<<endl;
}
protected:
int num; //编号
int gz; //年龄
string name;; //姓名
char zc[20]; //职称
};
class Manager:virtual public Employee
{
public:
Manager(){}
~Manager(){}
void display()//显示员工信息
{
cout<<"│"<<setw(10)<<num<<"│"<<setw(10)<<name<<"│"<<setw(10)<<zc<<"│"<<setw(10)<<gz<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl; }
void set() //输入员工信息
{
cout<<"请输入经理信息:"<<endl; cout<<"编号(编号范围:1001—1100):"; cin>>num; while(num<1000||num>1100) {
第 - 28 - 页 共 53 页 cout<<"请输入雇员信息:"<<endl; cout<<"编号"<<setw(5)<<"姓名"<<setw(5)<<"职称"<<setw(5)<<"工资 cin>>num; cin>>name; cin>>zc; cin>>gz;
} } cout<<"编号的范围应在(1001~1100),请重新操作!"<<endl; cout<<"编号(编号范围:1001—1100):"; cin>>num; cout<<setw(5)<<"姓名:"; cin>>name; cout<<setw(5)<<"职称:"; cin>>zc; cout<<setw(5)<<"工资:"; cin>>gz;;
void change() {
}
void delete1() {
num=0; name="***"; strcpy(zc,"###"); gz=0;
第 - 29 - 页 共 53 页 cout<<"请输入经理的新信息:"<<endl; cout<<"编号(编号范围:1001—1100):"; cin>>num; while(num<1000||num>1100) { } cout<<setw(5)<<"姓名:"; cin>>name; cout<<setw(5)<<"职称:"; cin>>zc; cout<<setw(5)<<"工资:"; cin>>gz; cout<<"编号的范围应在(1001~1100),请重新操作!"<<endl; cout<<"编号(编号范围:1001—1100):"; cin>>num;
}
protected:
};
class Salemanager:virtual public Employee
{
public:
Salemanager(){}
~Salemanager(){}
void display()//显示员工信息
{
cout<<"│"<<setw(10)<<num<<"│"<<setw(10)<<name<<"│"<<setw(10)<<zc<<"│"<<setw(10)<<5000+sum*0.005<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl; }
void set() //输入员工信息
{
}
void change()
{
第 - 30 - 页 共 53 页 cout<<"请输入销售经理信息:"<<endl; cout<<"编号(编号范围:2001—2100)"; cin>>num; while(num<2000||num>2100) { } cout<<setw(5)<<"姓名:"; cin>>name; cout<<setw(5)<<"职称:"; cin>>zc; cout<<setw(5)<<"销售总额:"; cin>>sum; cout<<"编号的范围应在(2001~2100),请重新操作!"<<endl; cout<<"编号(编号范围:2001—2100):"; cin>>num;
cout<<"请输入销售经理的新信息:"<<endl;
cout<<"编号(编号范围:2001—2100)";
cin>>num;
while(num<2000||num>2100)
{
cout<<"编号的范围应在(2001~2100),请重新操作!"<<endl; cout<<"编号(编号范围:2001—2100):";
cin>>num;
}
cout<<setw(5)<<"姓名:";
cin>>name;
cout<<setw(5)<<"职称:";
cin>>zc;
cout<<setw(5)<<"销售总额:";
cin>>sum;
}
void delete1()
{
num=0;
name="***";
strcpy(zc,"###");
sum=0;
}
protected:
int sum;
};
class Technology:virtual public Employee
{
public:
Technology(){}
~Technology(){}
void display()//显示员工信息
{
cout<<"│"<<setw(10)<<num<<"│"<<setw(10)<<name<<""<<setw(10)<<zc<<"│"<<setw(10)<<time*100<<"│"<<endl;
第 - 31 - 页 共 53 页 │
cout<<"├—————┼—————┼—————┼—————┤"<<endl; }
void set() //输入员工信息
{
}
void change()
{
cout<<"请输入技术人员的新信息:"<<endl; cout<<"编号(编号范围:3001—3100):"; cin>>num; while(num<3000||num>3100) { } cout<<setw(5)<<"姓名:"; cin>>name; cout<<setw(5)<<"职称:"; cin>>zc;
第 - 32 - 页 共 53 页 cout<<"请输入技术人员信息:"<<endl; cout<<"编号(编号范围:3001—3100):"; cin>>num; while(num<3000||num>3100) { } cout<<setw(5)<<"姓名:"; cin>>name; cout<<setw(5)<<"职称:"; cin>>zc; cout<<setw(5)<<"工作时间:"; cin>>time;; cout<<"编号的范围应在(3001~3100),请重新操作!"<<endl; cout<<"编号(编号范围:3001—3100):"; cin>>num; cout<<"编号的范围应在(3001~3100),请重新操作!"<<endl; cout<<"编号(编号范围:3001—3100):"; cin>>num;
} cout<<setw(5)<<"工作时间:"; cin>>time;
void delete1()
{
}
protected:
int time;
};
class Salesman:virtual public Employee
{
public:
Salesman(){}
~Salesman(){}
void display()//显示员工信息
{
cout<<"│"<<setw(10)<<num<<"│"<<setw(10)<<name<<"│"<<setw(10)<<zc<<"│"<<setw(10)<<sum1*0.04<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl; }
void set() //输入员工信息
{
cout<<"请输入销售人员信息:"<<endl; cout<<"编号(编号范围:4001—4100):"; cin>>num; while(num<4000||num>4100) { }
第 - 33 - 页 共 53 页 num=0; name="***"; strcpy(zc,"###"); time=0; cout<<"编号的范围应在(4001~4100),请重新操作!"<<endl; cout<<"编号(编号范围:4001—4100):"; cin>>num;
} cout<<setw(5)<<"姓名:"; cin>>name; cout<<setw(5)<<"职称:"; cin>>zc; cout<<setw(5)<<"当月销售额:"; cin>>sum1;
void change() {
}
void delete1() {
}
protected: int sum1; };
第 - 34 - 页 共 53 页 cout<<"请输入销售人员的新信息:"<<endl; cout<<"编号(编号范围:4001—4100):"; cin>>num; while(num<4000||num>4100) { } cout<<setw(5)<<"姓名:"; cin>>name; cout<<setw(5)<<"职称:"; cin>>zc; cout<<setw(5)<<"当月销售额:"; cin>>sum1; cout<<"编号的范围应在(4001~4100),请重新操作!"<<endl; cout<<"编号(编号范围:4001—4100):"; cin>>num; num=0; name="***"; strcpy(zc,"###"); sum1=0;
Manager m[N]; Salemanager s[N]; Technology t[N]; Salesman s1[N]; int a,q,ID,b; int i;
static a1=0,a2=0,a3=0,a4=0;//记录各员工个数
void add()//增加功能
{
cout<<setw(50)<<" ****************************\n";
cout<<setw(50)<<" 请选择您所需增加的操作 \n";
cout<<setw(50)<<" 经理: 1,并按回车键 \n";
cout<<setw(50)<<" 销售经理2:,并按回车键 \n";
cout<<setw(50)<<" 技术人员3:,并按回车键 \n";
cout<<setw(50)<<" 销售人员4:,并按回车键 \n";
cout<<setw(50)<<" 返回 0:,并按回车键 \n";
cout<<setw(50)<<" ****************************\n";
cin>>q;
while(q!=0)
{
switch(q)
{ case 1: cout<<"请输入要增加经理数:"<<endl; cin>>a; for( i=0;i<a;i++) { } break; cout<<"请输入要增加的销售经理数:"<<endl; cin>>a; { s[a2].set(); a2++; } break;
第 - 35 - 页 共 53 页 m[a1].set(); a1++; case 2: for( i=0;i<a;i++)
}
} case 3: cout<<"请输入要增加的技术人员数:"<<endl; cin>>a; for(i=0;i<a;i++) { t[a3].set(); a3++; } break; cout<<"请输入要增加的销售人员数:"<<endl; cin>>a; for(i=0;i<a;i++) { s1[a4].set(); a4++; } break; case 4: } break;
void change1()//修改功能
{
cout<<setw(50)<<" ***************************\n"; cout<<setw(50)<<" 请选择您所需修改的对象 \n"; cout<<setw(50)<<" 经理: 1,并按回车键 \n"; cout<<setw(50)<<" 销售经理2:,并按回车键 \n"; cout<<setw(50)<<" 技术人员3:,并按回车键 \n"; cout<<setw(50)<<" 销售人员4:,并按回车键 \n"; cout<<setw(50)<<" 返回 0:,并按回车键 \n"; cout<<setw(50)<<" ***************************\n"; cin>>q;
while(q!=0)
{
int k; switch(q)
第 - 36 - 页 共 53 页
{ case 1: cout<<"输入编号(1001—1100):"; cin>>ID; while(ID<1000||ID>1100) { cout<<"编号的范围应在(1001~1100),请重新操作!"<<endl; cout<<"输入编号(1001—1100):"; } k=0; { } if(k==0) { cout<<"此人不存在!"<<endl; } break; cout<<"输入编号(2001—2100):"; cin>>ID; while(ID<2000||ID>2100) { cout<<"编号的范围应在(2001~2100),请重新操作!"<<endl; cout<<"输入编号(2001—2100):"; } k=0;
第 - 37 - 页 共 53 页 cin>>ID; for(i=0;i<a1;i++) if(m[i].getnum()==ID) { } m[i].change(); k++; break; case 2: cin>>ID;
for(i=0;i<a2;i++) { } if(k==0) { cout<<"此人不存在!"<<endl; } break; cout<<"输入编号(3001—3100):"; cin>>ID; while(ID<3000||ID>3100) { cout<<"编号的范围应在(3001~3100),请重新操作!"<<endl; cout<<"输入编号(3001—3100):"; } k=0; for(i=0;i<a3;i++) { } if(k==0) {
第 - 38 - 页 共 53 页 if(s[i].getnum()==ID) { } s[i].change(); k++; break; case 3: cin>>ID; if(t[i].getnum()==ID) { } t[i].change(); k++; break;
}
} } cout<<"此人不存在!"<<endl; } break; cout<<"输入编号(4001—4100):"; cin>>ID; while(ID<4000||ID>4100) { cout<<"编号的范围应在(4001~4100),请重新操作!"<<endl; cout<<"输入编号(4001—4100):"; } k=0; for(i=0;i<a4;i++) { } if(k==0) { cout<<"此人不存在!"<<endl; } break; if(s1[i].getnum()==ID) { } s1[i].change(); k++; break; case 4: cin>>ID; break;
void delete2()//删除
{
cout<<setw(50)<<" ***************************\n"; cout<<setw(50)<<" 请选择您所需删除的对象 \n";
第 - 39 - 页 共 53 页
cout<<setw(50)<<" 经理: 1,并按回车键 \n"; cout<<setw(50)<<" 销售经理2:,并按回车键 \n"; cout<<setw(50)<<" 技术人员3:,并按回车键 \n"; cout<<setw(50)<<" 销售人员4:,并按回车键 \n"; cout<<setw(50)<<" 返回 0 :,并按回车键 \n"; cout<<setw(50)<<" ***************************\n"; cin>>q;
while(q!=0)
{
switch(q) { int k; cout<<"输入编号(1001—1100):"; while(ID<1000||ID>1100) { cout<<"编号的范围应在(1001~1100),请重新操作!"<<endl; cout<<"输入编号(1001—1100):"; } case 1: cin>>ID; cin>>ID; k=0; { } if(k==0) { cout<<"此人不存在!"<<endl;
第 - 40 - 页 共 53 页 for(i=0;i<a1;i++) if(m[i].getnum()==ID) { } m[i].delete1(); cout<<"删除成功!"<<endl; k++; break;
} break; cout<<"输入编号(2001—2100):"; cin>>ID; while(ID<2000||ID>2100) { cout<<"编号的范围应在(2001~2100),请重新操作!"<<endl; cout<<"输入编号(2001—2100):"; } k=0; { } if(k==0) { cout<<"此人不存在!"<<endl; } break; cout<<"输入编号(3001—3100):"; cin>>ID; while(ID<3000||ID>3100) { cout<<"编号的范围应在(3001~3100),请重新操作!"<<endl; cout<<"输入编号(3001—3100):"; if(s[i].getnum()==ID) { } s[i].delete1(); cout<<"删除成功!"<<endl; k++; break; case 2: cin>>ID; for(i=0;i<a2;i++) case 3: cin>>ID;
第 - 41 - 页 共 53 页
} k=0; for(i=0;i<a3;i++) { } if(k==0) { cout<<"此人不存在!"<<endl; } break; cout<<"输入编号(4001—4100):"; cin>>ID; while(ID<4000||ID>4100) { cout<<"编号的范围应在(4001~4100),请重新操作!"<<endl; cout<<"输入编号(4001—4100):"; } k=0; for(i=0;i<a4;i++) { if(s1[i].getnum()==ID) { s1[i].delete1(); cout<<"删除成功!"<<endl; k++; break;
第 - 42 - 页 共 53 页 if(t[i].getnum()==ID) { } t[i].delete1(); cout<<"删除成功!"<<endl; k++; break; case 4: cin>>ID;
}
} } } } if(k==0) { cout<<"此人不存在!"<<endl; } break; break;
void search()//查找
{
int k=0;
cout<<setw(50)<<" *****************************\n";
cout<<setw(50)<<" 查找方式1:按编号查找\n";
cout<<setw(50)<<" 2:返回,并按回车键 \n";
cout<<setw(50)<<" ****************************\n";
cin>>b;
while(b!=0)
{
switch(b) { case 1: cout<<setw(50)<<" ***************************\n";
cout<<setw(50)<<" 请选择您所需查找的对象 \n"; cout<<setw(50)<<" 经理: 1,并按回车键 \n"; cout<<setw(50)<<" 销售经理2:,并按回车键 \n"; cout<<setw(50)<<" 技术人员3:,并按回车键 \n";
cout<<setw(50)<<" 销售人员4:,并按回车键 \n"; cout<<setw(50)<<" 返回 0:,并按回车键 \n";
cout<<setw(50)<<" ***************************\n"; cin>>q;
while(q!=0) {
第 - 43 - 页 共 53 页
switch(q) { case 1: cout<<"输入编号(1001—1100):"; while(ID<1000||ID>1100) { cin>>ID; cout<<"编号的范围应在(1001~1100),请重新操作!"<<endl; cout<<"输入编号(1001—1100):"; } cin>>ID; for(i=0;i<a1;i++) { k=0; if(m[i].getnum()==ID&&strcmp(m[i].getzc(),"经理")==0) { cout<<"├—————┼—————┼—————┼—————┤"<<endl; cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓 cout<<"├—————┼—————┼—————┼—— m[i].display(); k++; break; 名"<<"│"<<setw(10)<<"级别"<<"│"<<setw(10)<<"工资"<<"│"<<endl; ———┤"<<endl; } } if(k==0) { cout<<"此人不存在!"<<endl; } break; case 2: cout<<"输入编号(2001—2100):"; cin>>ID;
第 - 44 - 页 共 53 页
")==0)
while(ID<2000||ID>2100) { cout<<"编号的范围应在(2001~2100),请重新操作!"<<endl; cout<<"输入编号(2001—2100):"; } { k=0; if(s[i].getnum()==ID&&strcmp(s[i].getzc(),"销售经理{ cout<<"├—————┼—————┼—————┼—— cin>>ID; for(i=0;i<a2;i++) ———┤"<<endl; cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<" cout<<"├—————┼—————┼—————┼— } if(k==0) cout<<"此人不存在!"<<endl; break; cout<<"输入编号(3001—3100):"; while(ID<3000||ID>3100) { } s[i].display(); k++; break; 姓名"<<"│"<<setw(10)<<"级别"<<"│"<<setw(10)<<"工资"<<"│"<<endl; ————┤"<<endl; { } case 3: cin>>ID; cout<<"编号的范围应在(3001~3100),请重新操作!"<<endl; cout<<"输入编号(3001—3100):";
第 - 45 - 页 共 53 页
")==0)
cin>>ID; } { k=0; if(t[i].getnum()==ID&&strcmp(t[i].getzc(),"技术人员{ cout<<"├—————┼—————┼—————┼—— for(i=0;i<a3;i++) ———┤"<<endl; cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<" cout<<"├—————┼—————┼—————┼— } if(k==0) cout<<"此人不存在!"<<endl; break; cout<<"输入编号(4001—4100):"; cin>>ID; while(ID<4000||ID>4100) { } t[i].display(); break; 姓名"<<"│"<<setw(10)<<"级别"<<"│"<<setw(10)<<"工资"<<"│"<<endl; ————┤"<<endl; { } case 4: cout<<"编号的范围应在(4001~4100),请重新操作!"<<endl; cout<<"输入编号(4001—4100):"; } for(i=0;i<a4;i++) { k=0;
第 - 46 - 页 共 53 页 cin>>ID;
")==0)
}
} } if(s1[i].getnum()==ID&&strcmp(s1[i].getzc(),"销售人员{ cout<<"├—————┼—————┼—————┼—————┤"<<endl; cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<" cout<<"├—————┼—————┼—————┼— } break; } break; } if(k==0) cout<<"此人不存在!"<<endl; break; } s1[i].display(); break; 姓名"<<"│"<<setw(10)<<"级别"<<"│"<<setw(10)<<"工资"<<"│"<<endl; ————┤"<<endl; { } break;
void show()//显示
{
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓名"<<"│"<<setw(10)<<"级别"<<"│"<<setw(10)<<"工资"<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl; for( i=0;i<a1;i++) { m[i].display();}
for( i=0;i<a2;i++) { s[i].display();}
for( i=0;i<a3;i++) { t[i].display();}
第 - 47 - 页 共 53 页
for( i=0;i<a4;i++) { s1[i].display();} }
void save()//保存
{
ofstream outfile1("manager.txt",ios::binary); if(!outfile1)
{
}
for(i=0;i<a1;i++)
{
}
outfile1.close();
ofstream outfile2("salemanager.txt",ios::binary); if(!outfile2)
{
}
for(i=0;i<a2;i++)
{
}
outfile2.close();
ofstream outfile3("technology.txt",ios::binary); if(!outfile3)
{
}
for(i=0;i<a3;i++)
{
outfile3.write((char*)&t[i],sizeof(t[i]));
第 - 48 - 页 共 53 页 cerr<<"manager.txt open error!"<<endl; abort(); outfile1.write((char*)&m[i],sizeof(m[i])); cerr<<"salemanager.txt open error!"<<endl; abort(); outfile2.write((char*)&s[i],sizeof(s[i])); cerr<<"technology.txt open error!"<<endl; abort();
}
outfile3.close();
ofstream outfile4("salesman.txt",ios::binary);
if(!outfile3)
{
cerr<<"salesman.txt open error!"<<endl; abort();
}
for(i=0;i<a4;i++)
{
outfile4.write((char*)&s1[i],sizeof(s1[i]));
}
outfile4.close();
}
int main()
{
int choice=1;
while(choice!=0)
{
cout<<setw(20)<<"****************************欢迎进入员工信息管理系统****************************"<<endl;
cout<<setw(50)<<"***********************\n";
cout<<setw(50)<<" 请选择您所需的操作 \n";
cout<<setw(50)<<" 操作1,并按回车键 \n";
cout<<setw(50)<<" 返回0,并按回车键 \n";
cout<<setw(50)<<"***********************\n";
cin>>choice;
switch(choice)
{
case 1:
while(1) { cout<<setw(20); while (choice!=0) {
第 - 49 - 页 共 53 页
cout<<"信息维护1:新增2:更改3:删除4:查找5:显示6:保存0:退出=>";
cin>>choice;
switch (choice) { case 1: //实现增加功能 } add(); break; change1(); break; delete2(); break; search(); break; show(); break; { save(); cout<<"写入文件成功!"<<endl; break; } break; case 2://实现修改功能 case 3: //实现删除功能 case 4: case 5: case 6: case 0: } case 0: break; cout<<"请从0和1之间选择操作!"<<endl;
第 - 50 - 页 共 53 页 default:
} } break; }
return 0; }
第 - 51 - 页 共 53 页
第 - 52 - 页 共 53 页