资源描述
C++程序设计课程设计报告
课 题: 小型公司工资管理系统
专业班级:
学 号:
姓 名:
指导教师:
评阅意见:
评定成绩:
指导老师签名:
年 月 日
目录
1.设计系统的目的意义…………………………………………第1页
2.系统需求、功能分析…………………………………………第2页
3. 数据结构表……………………………………………………第3页
4。 数据测试表……………………………………………………第5页
5. 运行和调试……………………………………………………第7页
6. 课程心得体会…………………………………………………第16页
参考书目…………………………………………………………第17页
附录………………………………………………………………第18页
课程设计报告内容:
1、设计系统的目的意义
本次课程设计所编辑的C++程序是为了建立“小型公司工资管理系统”.
通过对该系统的建立进一步掌握面向过程和面面相对象程序的设计的几本方法和编程技巧,巩固所学理论知识,是理论与实践相结合,提高分析问题、解决问题的能力。
具体一点主要是为了进一步熟悉C++中类的概念、类的继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程;逐步熟悉程序设计的方法,并养成良好的编程习惯。
2、系统需求、功能分析
A、公司主要有四类雇员:经理、技术人员、销售人员、销售经理。要求储存雇员的编号、姓名、性别、所在部门、级别等信息,并进行工资计算.
B、工资的计算方法
(1)经理:领取固定月薪,固定月薪5000元;
(2)技术人员:按小时领取月薪,工作时间*小时工资(80元/小时); (3)销售人员:按巩固销售额领取月薪,0。33*销售额;
(4) 销售经理:既拿固定月薪也领取销售提成,0。33*销售额+固定月薪(5000元)。
C、功能分析
(1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;
(3)显示功能:可显示当前系统中所有记录,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存.
(6)统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数,或者统计男、女员工的数量,或者统计平均工资、最高工资、最低工资等信息.
(7)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。
(8) 退出功能:退出程序.
3、数据结构表
1.添加功能
2.查询功能
3.显示功能
4.查询功能
5.删除功能
打开程序
6.统计功能
ﻩ7.读取功能
8.退出功能
雇员
经理
技术人员
销售人员
销售经理
4、数据测试表
添加后的数据:
编号
姓名
性别
部门
等级
工资
1
张三
男
经理
A
5000元
2
李四
男
经理
A
5000元
3
王五
男
经理
A
5000元
4
李白
男
技术
B
4320元
5
杜甫
男
技术
B
3440元
6
洋洋
女
销售
C
2525元
7
丽丽
女
销售
C
2159元
8
武凯旋
男
销售
D
7525元
9
刘玲
女
销售
D
7159元
编辑后的数据:
编号
姓名
性别
部门
等级
工资
1
张三
男
经理
A
5000元
2
李四
男
经理
A
5000元
3
王五
男
经理
A
5000元
4
李白
男
技术
B
4320元
5
杜甫
男
技术
B
3440元
6
洋洋
女
销售
C
2525元
7
丽丽
女
销售
C
2159元
8
武凯旋
男
销售
D
7525元
9
李平
男
销售
D
7159元
按编号删除后的数据:
编号
姓名
性别
部门
等级
工资
2
李四
男
经理
A
5000元
3
王五
男
经理
A
5000元
4
李白
男
技术
B
4320元
5
杜甫
男
技术
B
3440元
6
洋洋
女
销售
C
2525元
7
丽丽
女
销售
C
2159元
8
武凯旋
男
销售
D
7525元
9
李平
男
销售
D
7159元
按姓名删除后的数据:
编号
姓名
性别
部门
等级
工资
2
李四
男
经理
A
5000元
3
王五
男
经理
A
5000元
5
杜甫
男
技术
B
3440元
6
洋洋
女
销售
C
2525元
7
丽丽
女
销售
C
2159元
8
武凯旋
男
销售
D
7525元
9
李平
男
销售
D
7159元
5、运行和调试
(1)添加功能
说明:输入1,选择添加功能
说明:输入1,选择添加经理
说明:输入2,添加技术人员
说明:输入3,添加销售人员
说明:输入4,添加销售经理
(2)查询功能
说明:输入2,选择查询功能
说明:输入1,编号查询
说明:输入2,姓名查询
(3)显示功能
说明:输入3,选择显示功能
(4)编辑功能
说明:输入4,选择编辑功能
说明:编辑后读取数据
(5)删除功能
说明:输入5,选择删除功能
说明:输入1,编号删除
说明:输入2,姓名删除
(6)统计功能
说明:输入6,选择统计功能
(7)读取功能
说明:输入7,选择读取功能
(8)退出功能
说明:输入8,选择退出功能
6、课程设计的心得
通过这次课程设计,加深了对类与派生的理解.类与派生类之间的关系,通过上机实践得到了进一步的深化。从数据成员的继承到派生类对象对基类成员函数的调用。
对于类的保护成员只能被本身的成员函数使用,而不能直接从类外通过对象直接调用,所以如果想单独调用对象内的被保护的数据成员或私有的数据成员时,应该通过友元函数来实现。
在编辑程序是应该多敲回车将花括号单列一行,一行只写一条语句如此可使程序看起来非常有层次感,检查错误的时候也会非常方便,最大可能的减轻了单个花括号不易检查的问题的难度。解决花括号不配对问题更好的方法是将程序分装打包成函数,放于主函数外,不过要注意定义在调用前的话,可以直接进行函数的调用,否则要先声明该函数,然后才能调用该函数。
虽然有了一年的上机课,但在课程设计这一段时间,使我收获了很多在上机课上无法学习到的知识,尤其是C++的流类库与输入输出。因为这一部分知识的不熟练,在程序设计过程中遇到了不少困难,但通过老师的指导和一次又一次的改写、调试,将这些困难都解决了,心中的喜悦感油然而生。
为了能使程序更加的完善,我也利用了不少的课余时间,查找了各方面的资料,当看到程序从一个头文件名到一个900多行的程序,到最后的成功运行,感觉自己这段时间的付出是非常值得的,也使我对C++产生了更浓厚的兴趣,对自己的学习以及将来的工作都是有很大的帮助的。
整个实习过程让我的C++知识得到了应用,体验了程序员编程时的喜怒哀乐,知识、心智,得到全方位提升,收获颇丰.
参考书目
[1]林小茶、陈维兴,《C++面向对象课程设计教程》,清华大学出版社,2009年
[2]谭浩强,《C语言程序设计》,清华大学出版社,2008年
附录
#include<iostream〉
#include〈string>
#include<fstream〉
#include<stdlib.h〉
using namespace std;
class employee //雇员类
{
protected:
ﻩint number; //编号
ﻩchar name[10]; //姓名
char sex[3]; //性别
char department[20]; //部门
char grade; //级别
ﻩint pay; //工资
ﻩemployee *next;
public:
ﻩfriend istream &operator〉〉(istream &input,employee &ob) //运算符”〉〉"重载为友元函数
ﻩ{
ﻩﻩinput〉>ob。name〉>ob。sex〉>ob。department;
ﻩ return input;
ﻩ}
ﻩfriend ostream &operator〈〈(ostream &output,employee &ob) //运算符”<〈”重载为友元函数
ﻩ{
ﻩﻩoutput<<ob.number〈〈’\t’<〈ob。name<〈'\t’<<ob。sex<〈’\t'〈〈ob。department〈<’\t’〈〈ob。grade〈<'\t’<<ob。pay〈<endl;
ﻩﻩreturn output;
ﻩ}
ﻩfriend void tianjia();//添加功能
friend void chaxun_number();
ﻩfriend void chaxun_name();
ﻩfriend void chaxun();//查询功能
ﻩfriend void xianshi();//显示功能
ﻩfriend void bianji();//编辑功能
ﻩfriend void shanchu_number();
ﻩfriend void shanchu_name();
ﻩfriend void shanchu();//删除功能
ﻩfriend void tongji();//统计功能
ﻩfriend void duqu();//读取功能
ﻩfriend int getnumber();//获取编号
};
class manager:virtual public employee//经理类 固定工资
{
public:
ﻩvoid get()
ﻩ{
ﻩ grade=’A’;
ﻩﻩpay=5000;
ﻩnumber=getnumber();
ﻩ}
};
void tianjia_manager()//经理数据添加
{
ﻩwhile(1)
{
ﻩﻩofstream ofs("d:\\file1.txt",ios::app);
ﻩﻩmanager ma;
ﻩﻩchar gra,ch;
ﻩ cout〈〈”请根据提示依次输入该经理的姓名,性别,部门,并按下回车确认完成输入:"<<endl;
ﻩﻩcin>>ma;
ﻩﻩma.get();
ﻩﻩgra=’A’;
ﻩﻩofs。write((char*)&gra,sizeof(char));
ﻩﻩofs.write((char*)&ma,sizeof(manager));
ﻩﻩofs.close();
ﻩﻩcout〈〈"是否还要添加数据:?Y OR N:\n”;
ﻩﻩcin>〉ch;
ﻩif(ch==’Y')
ﻩﻩﻩcontinue;
ﻩﻩelse
ﻩ ﻩcout<<”添加成功!”〈〈endl;
ﻩﻩsystem(”pause");
ﻩﻩbreak;
ﻩ}
}
class artisan:public employee//技术人员类 按小时领月薪
{
public:
ﻩvoid get()
ﻩ{
ﻩﻩint per,hour;
ﻩcout<<”请输入工作时间,按回车键完成输入:”〈<endl;
ﻩﻩcin〉>hour;
ﻩﻩper=80; //每小时工资80
ﻩﻩgrade='B’;
ﻩﻩpay=per*hour;
ﻩﻩnumber=getnumber();
ﻩ}
};
void tianjia_artisan()//技术人员数据添加
{
ﻩwhile(1)
ﻩ{
ﻩﻩofstream ofs(”d:\\file1。txt”,ios::app);
ﻩ artisan ar;
ﻩﻩchar gra,ch;
ﻩﻩcout<〈"请根据提示依次输入该技术人员的姓名,性别,部门,并按下回车确认完成输入:"<〈endl;
ﻩﻩcin>>ar;
ﻩﻩar。get();
ﻩﻩgra=’B’;
ﻩ ofs。write((char*)&gra,sizeof(char));
ﻩﻩofs.write((char*)&ar,sizeof(artisan));
ﻩﻩofs.close();
ﻩﻩcout〈<”是否还要添加数据:?Y OR N:\n”;
ﻩﻩcin〉〉ch;
ﻩ if(ch==’Y’)
ﻩ ﻩcontinue;
ﻩﻩelse
ﻩﻩﻩcout<<”添加成功!”〈<endl;
ﻩ system(”pause”);
ﻩﻩbreak;
ﻩ}
}
class salesman:virtual public employee//销售人员类 当月销售提成
{
public:
void get()
ﻩ{
ﻩﻩint score;
ﻩﻩcout〈<”请输入员工当月销售额,按回车键完成输入:”;
ﻩﻩcin>〉score;
grade=’C';
ﻩﻩpay=0.33*score;
ﻩﻩnumber=getnumber();
ﻩ}
};
void tianjia_salesman()//销售人员数据添加
{
ﻩwhile(1)
ﻩ{
ﻩﻩofstream ofs(”d:\\file1。txt",ios::app);
ﻩsalesman sa;
ﻩﻩchar gra,ch;
ﻩcout〈<"请根据提示依次输入该销售人员的姓名,性别,部门,并按下回车确认完成输入:”〈〈endl;
ﻩﻩcin〉〉sa;
sa.get();
ﻩﻩgra='C’;
ﻩﻩofs。write((char*)&gra,sizeof(char));
ﻩﻩofs.write((char*)&sa,sizeof(salesman));
ﻩﻩofs.close();
ﻩﻩcout〈〈”是否还要添加数据:?Y OR N:\n”;
ﻩ cin〉>ch;
ﻩif(ch=='Y’)
ﻩ ﻩcontinue;
ﻩelse
ﻩﻩﻩcout〈〈"添加成功!”<〈endl;
ﻩﻩsystem("pause”);
ﻩﻩbreak;
ﻩ}
}
class sales_manager:public manager,public salesman//销售经理类 当月销售提成+固定工资
{
public:
ﻩvoid get()
ﻩ{
ﻩ int score;
ﻩﻩcout〈〈"请输入员工当月销售额,按回车键完成输入:”;
ﻩﻩcin〉>score;
ﻩgrade='D';
ﻩﻩpay=0.33*score+5000;
ﻩﻩnumber=getnumber();
ﻩ}
};
void tianjia_sales_manager()//销售经理数据添加
{
ﻩwhile(1)
ﻩ{
ﻩ ofstream ofs(”d:\\file1。txt",ios::app);
ﻩﻩsales_manager sam;
ﻩﻩchar gra,ch;
ﻩﻩcout<<"请根据提示依次输入该销售经理的姓名,性别,部门,并按下回车确认完成输入:”〈〈endl;
ﻩﻩcin>>sam;
ﻩﻩsam。get();
ﻩﻩgra=’D';
ﻩﻩofs。write((char*)&gra,sizeof(char));
ﻩofs。write((char*)&sam,sizeof(sales_manager));
ﻩﻩofs.close();
ﻩcout〈〈”是否还要添加数据:?Y OR N:\n”;
ﻩﻩcin>〉ch;
ﻩﻩif(ch=='Y')
ﻩﻩﻩcontinue;
ﻩﻩelse
ﻩﻩﻩcout<<”添加成功!"〈<endl;
ﻩﻩsystem("pause");
ﻩbreak;
ﻩ}
}
int getnumber()
{
ﻩifstream ifs(”d:\\file1。txt”);
ﻩchar gra;
ﻩint n,max=0;
ﻩifs。read((char*)&gra,1);
ﻩwhile(!ifs。eof())
ﻩ{
ﻩﻩif(gra==’A’)
ﻩﻩ{
ﻩﻩ manager ma;
ﻩﻩﻩifs。read((char*)&ma,sizeof(manager));
ﻩ ﻩn=ma.number;
ﻩﻩ}
ﻩﻩelse if(gra=='B’)
ﻩ {
ﻩﻩﻩartisan ar;
ﻩ ifs。read((char*)&ar,sizeof(artisan));
ﻩ ﻩn=ar。number;
ﻩﻩ}
ﻩﻩelse if(gra=='C')
ﻩﻩ{
ﻩ ﻩsalesman sa;
ﻩ ﻩifs。read((char*)&sa,sizeof(salesman));
ﻩ ﻩn=sa。number;}
ﻩﻩelse if(gra==’D’)
ﻩﻩ{
ﻩﻩﻩsales_manager sam;
ﻩﻩifs.read((char*)&sam,sizeof(sales_manager));
ﻩﻩ n=sam.number;
ﻩﻩ}
ﻩﻩif(max<n) max=n;
ﻩﻩifs.read((char*)&gra,1);
ﻩ}
ﻩifs。close();
ﻩreturn max+1;
}
void tianjia()//添加功能函数定义
{
ﻩsystem("cls");
ﻩcout〈<”\t\t-———————-————-—————-——--——-—--—-—--————-—-—------—————--”<〈endl;
ﻩcout<<"\t\t|-——-—--—-———----—小型公司工资管理系统-—-——---—-——-—---|"<<endl;
ﻩcout<<"\t\t|-———------———-—-—--—1.经理数据添加——-----—--——--————--|”<〈endl;
ﻩcout<〈”\t\t|----——-—-—-———-—----2.技术人员添加-———---—---—-—————-—|”<<endl;
ﻩcout〈〈”\t\t|—-———-----——--———-——3。销售人员添加—-—-—-—-—---—-—-----|”<〈endl;
cout〈〈"\t\t|—————---—----—-—-—-—4.销售经理添加---—---—----——---—--|"〈<endl;
cout<<”\t\t|———-—--———--——--—--—5.返回上一层---—--——--————-—-—-—--|"<<endl;
ﻩcout<<"\t\t—-——-—-———--—--—-——---—----———-———-—-————----——----—-——-”〈<endl;
ﻩcout〈〈”请输入1—5选择相应添加:";
ﻩint se;
ﻩcin〉>se;
ﻩswitch(se)
ﻩ{
ﻩcase 1:tianjia_manager(); break;
ﻩcase 2:tianjia_artisan(); break;
ﻩcase 3:tianjia_salesman();break;
ﻩcase 4:tianjia_sales_manager();break;
ﻩcase 5:return;
ﻩ}
}
void chaxun_number()
{
ﻩint nu;
ﻩcout<〈"请输入编号:"<<endl;
ﻩcin〉>nu;
ﻩifstream ifs("d:\\file1.txt");
ﻩif(!ifs)
ﻩ{
ﻩﻩcout〈〈”文件打开失败!";
ﻩﻩsystem("pause”);
ﻩﻩreturn;
}
ﻩchar gra;
ﻩint flag=0;
ﻩifs.read((char*)&gra,1);
ﻩwhile(!ifs.eof())
ﻩ{
ﻩﻩif(gra==’A’)
ﻩﻩ{
ﻩﻩﻩmanager ma;
ﻩﻩ ifs.read((char*)&ma,sizeof(manager));
ﻩﻩ if(ma.number==nu)
ﻩﻩﻩ{
ﻩﻩ ﻩcout〈〈"编号"〈<’\t'〈<”姓名”<<’\t'〈<"性别"〈〈’\t'<<”部门"〈<'\t'〈<"级别”〈<’\t’〈〈”工资"<<endl;
ﻩﻩ ﻩcout〈<ma;
ﻩﻩﻩflag=1;
ﻩﻩﻩ}
ﻩﻩ}
ﻩelse if(gra==’B')
ﻩﻩ{
ﻩ artisan ar;
ﻩﻩﻩifs.read((char*)&ar,sizeof(artisan));
ﻩﻩﻩif(ar。number==nu)
ﻩﻩﻩ{
ﻩﻩ ﻩcout<〈”编号”〈〈’\t’〈<”姓名"〈〈’\t'〈<"性别"〈<'\t'<〈”部门”〈<’\t’<〈"级别”<<'\t'〈〈"工资”〈〈endl;
ﻩﻩﻩcout〈<ar;
ﻩﻩﻩﻩflag=1;
ﻩﻩﻩ}
ﻩﻩ}
ﻩﻩelse if(gra==’C')
ﻩﻩ{
ﻩﻩﻩsalesman sa;
ﻩﻩﻩifs.read((char*)&sa,sizeof(salesman));
ﻩﻩﻩif(sa.number==nu)
ﻩﻩ {
ﻩﻩﻩcout〈<”编号"〈<’\t'<<”姓名"<<’\t'〈<”性别”<<'\t'〈〈”部门"〈〈’\t'〈〈”级别”〈〈'\t’〈<”工资”<〈endl;
ﻩﻩﻩﻩcout<〈sa;
ﻩ ﻩflag=1;
ﻩﻩ}
ﻩﻩ}
ﻩﻩelse if(gra=='D’)
ﻩﻩ{
ﻩ ﻩsales_manager sam;
ﻩﻩﻩifs.read((char*)&sam,sizeof(sales_manager));
ﻩﻩﻩif(sam。number==nu)
ﻩﻩﻩ{
ﻩﻩﻩcout<〈"编号"〈〈’\t'<〈"姓名"〈〈’\t'〈〈"性别"<<'\t’<<”部门"〈〈'\t’〈<”级别"〈〈’\t’<<"工资"〈<endl;
ﻩﻩﻩﻩcout<<sam;
ﻩﻩ flag=1;
ﻩ ﻩ}
ﻩ }
ﻩﻩifs.read((char*)&gra,1);
ﻩ}
ﻩif(!flag)
ﻩﻩcout〈〈”没有找到要查询的编号"<〈endl;
ﻩifs。close();
ﻩsystem(”pause");
}
void chaxun_name()
{
ﻩchar na[10];
ﻩcout〈〈"请输入姓名:"<〈endl;
ﻩcin>〉na;
ﻩifstream ifs("d:\\file1。txt”);
ﻩif(!ifs)
ﻩ{
ﻩﻩcout<〈”文件打开失败!”;
ﻩﻩsystem("pause");
ﻩﻩreturn;
ﻩ}
char gra;
ﻩint flag=0;
ifs.read((char*)&gra,1);
ﻩwhile(!ifs。eof())
ﻩ{
ﻩ if(gra=='A’)
ﻩ{
ﻩﻩﻩmanager ma;
ﻩﻩﻩifs。read((char*)&ma,sizeof(manager));
ﻩﻩﻩif(strcmp(ma。name,na)==0)
ﻩ ﻩ{
ﻩﻩﻩcout<〈”编号"〈<’\t’<<”姓名”〈〈'\t’〈<"性别"〈〈'\t’<〈"部门"〈<’\t'〈〈”级别”<<’\t'〈<”工资"〈<endl;
ﻩ ﻩﻩcout<<ma;
ﻩﻩﻩﻩflag=1;
ﻩﻩﻩ}
}
ﻩelse if(gra=='B’)
ﻩﻩ{
ﻩﻩ artisan ar;
ﻩﻩﻩifs。read((char*)&ar,sizeof(artisan));
ﻩﻩ if(strcmp(ar.name,na)==0)
ﻩﻩﻩ{
ﻩﻩ ﻩcout〈〈”编号"〈<’\t'〈<”姓名"<<'\t'<〈”性别”<〈'\t'〈〈”部门"<<'\t'<<"级别”<<'\t'〈<”工资"〈<endl;
ﻩﻩﻩﻩcout〈〈ar;
ﻩﻩ ﻩflag=1;
ﻩ}
ﻩﻩ}
else if(gra==’C’)
ﻩﻩ{
ﻩ ﻩsalesman sa;
ﻩﻩﻩifs.read((char*)&sa,sizeof(salesman));
ﻩﻩﻩif(strcmp(sa.name,na)==0)
ﻩﻩﻩ{
ﻩﻩﻩcout〈〈”编号"<〈'\t’〈〈”姓名"〈<’\t'〈<"性别”〈〈’\t'〈〈”部门"〈〈'\t’〈〈”级别"<<’\t’〈<”工资”<<endl;
ﻩﻩﻩcout<<sa;
ﻩﻩﻩﻩflag=1;
ﻩﻩﻩ}
ﻩﻩ}
ﻩﻩelse if(gra=='D')
ﻩ{
ﻩﻩﻩsales_manager sam;
ﻩﻩﻩifs。read((char*)&sam,sizeof(sales_manager));
ﻩﻩif(strcmp(sam.name,na)==0)
ﻩﻩﻩ{
ﻩﻩﻩﻩcout<〈"编号"<〈’\t'〈〈"姓名”<<'\t'<<”性别”<〈'\t'<<”部门"〈〈’\t’<<"级别"〈<'\t'<〈"工资”〈<endl;
ﻩﻩﻩﻩcout<<sam;
ﻩﻩﻩflag=1;
ﻩﻩ }
ﻩ }
ﻩ ifs。read((char*)&gra,1);
}
ﻩif(!flag)
ﻩﻩcout<<"没有找到要查询的姓名”<〈endl;
ﻩifs。close();
system("pause");
}
void chaxun()//查询功能函数定义
{
ﻩsystem("cls");
ﻩcout<<”\t\t———-———--————-—-—----—————-——-————--————-—---——---——"<<endl;
ﻩcout<〈”\t\t|---------—-—-—-小型公司工资管理系统---—-———-—---——|”〈〈endl;
ﻩcout<〈"\t\t|—-——-—-—---———---—-—1.编号查找——-——-—--—-———------|”〈〈endl;
ﻩcout<〈"\t\t|———-————-———-—-——---2。姓名查找-—--——----——-——-————|”〈<endl;
cout<<”\t\t|-----—-——--———-—-——-3。返回上层-—---—--———-——--——-—|"〈〈endl;
ﻩcout<〈”\t\t----——-—--—-—--—----———-————--———----———--------—--—”〈〈endl;
ﻩcout〈<"请输入1-3选择相应查询:";
int se;
ﻩcin>〉se;
switch(se)
{
case 1: chaxun_number(); break;
case 2: chaxun_name();break;
case 3:return;
}
}
void xianshi()//显示功能函数定义
{
ﻩsystem("cls");
ﻩcout〈<”\t\t-———--—-—--————-——-———-—---———-——-————--—-—--—-———--"〈<endl;
ﻩcout〈〈”\t\t|-———-—------———小型公司工资管理系统—-——---—-—----—|”<<endl;
cout<<"\t\t|-——-———--—-————-——-—1.添加功能--—--------——--—-——-|"<〈endl;
ﻩcout〈<”\t\t|-———---—————----———-2。查询功能——-———--———-——---———|”〈<endl;
ﻩcout〈〈”\t\t|--——-—-—--—--—-——-——3。显示功能--—--—-——--——---—-—-|”〈<endl;
ﻩcout〈<"\t\t|--——-—-——-----——-——-4.编辑功能----—--——--------—-—|”<〈endl;
ﻩcout<〈”\t\t|—--———--—--——-——————5.删除功能--—--——-—--———--——--|"<<endl;
ﻩcout<〈"\t\t|——-—----——-—-—---—-—6.统计功能—————-—-—-—---——----|”〈<endl;
ﻩcout<〈”\t\t|---—---—----——-—-—--7.读取功能———--—--———-—--—--——|”<<endl;
ﻩcout<<"\t\t|—-————--—-——---——-——8。退出功能-—-—--———---—---—-—-|"〈<endl;
cout〈〈”\t\t---——-—--——---——----—————-—-—--—-———-———---——-—----—"〈〈endl;
cout〈<"请输入1-8选择相应功能:”;
ﻩint se;
ﻩcin〉〉se;
ﻩwhile(se〉8||se<1)
ﻩ{
ﻩﻩcout<〈"输入数据无效,请重新输入:";
ﻩﻩcin>〉se;
ﻩ}
cout〈<endl;
ﻩswitch(se)
ﻩ{
ﻩcase 1:tianjia();break;
ﻩcase 2:chaxun();break;
ﻩcase 3:xianshi();break;
ﻩcase 4:bianji();break;
ﻩcase 5:shanchu();break;
ﻩcase 6:tongji();break;
ﻩcase 7:duqu();break;
ﻩcase 8:exit(0);
ﻩ}
}
void bianji()//编辑功能函数定义
{
ﻩchar na[10];
int z=0;
cout<<”请输入需编辑者的姓名:"<〈endl;
ﻩcin>〉na;
ﻩfstream mystream("d:\\file1。txt",ios::in|ios::out);
ﻩif(!mystream)
ﻩ{
ﻩcout<<"文件打开失败!";
ﻩﻩsystem(”pause");
ﻩreturn;
}
ﻩchar gra;
ﻩint flag=0;
ﻩmystream。read((char*)&gra,1);
ﻩwhile(!mystream.eof())
ﻩ{
ﻩﻩif(gra==’A’)
ﻩ {
ﻩﻩﻩmanager ma;
ﻩﻩﻩmystream。read((char*)&ma,sizeof(manager));
ﻩ ﻩif(strcmp(ma。name,na)==0)
ﻩ ﻩ{
ﻩﻩﻩ cout〈〈ma;
ﻩﻩ ﻩcout〈〈”请根据提示依次输入该经理的姓名,性别,部门,并按下回车确认完成输入:”〈<endl;
ﻩ ﻩﻩcin〉〉ma;
ﻩﻩ mystream。seekp(—sizeof(manager),ios::cur);
ﻩﻩﻩﻩmystream。write((char*)&ma,sizeof(manager));
ﻩﻩ ﻩflag=1;
ﻩﻩﻩﻩmystream.seekg(sizeof(manager),ios::cur);
ﻩﻩﻩ}
ﻩﻩ}
ﻩﻩelse if(gra=='B’)
ﻩﻩ{
ﻩﻩﻩartisan ar;
ﻩﻩ mystream。read((char*)&ar,sizeof(artisan));
ﻩﻩﻩif(strcmp(ar.name,na)==0)
ﻩﻩﻩ{
ﻩﻩﻩﻩcout〈<ar;
ﻩﻩﻩ cout<〈"请根据提示依次输入该技术人员的姓名,性别,部门,并按下回车确认完成输入:”〈<endl;
ﻩﻩﻩﻩcin>>ar;
ﻩﻩﻩmystream。seekp(-sizeof(artisan),ios::cur);
ﻩﻩﻩﻩmystream。write((char*)&ar,sizeof(artisan));
ﻩﻩﻩﻩflag=1;
ﻩﻩ ﻩmystream.seekg(sizeof(artisan),ios::cur);
ﻩﻩﻩ}
ﻩ }
ﻩﻩelse if(gra=='C’)
ﻩﻩ{
ﻩ ﻩsalesman sa;
ﻩﻩﻩmystream。read((char*)&sa,sizeof(salesman));
ﻩ ﻩif(strcmp(sa。name,na)==0)
ﻩﻩﻩ{
ﻩﻩﻩﻩcout<〈sa;
ﻩﻩﻩ cout〈〈”请根据提示依次输入该销售人员的姓名,性别,部门,并按下回车确认完成输入:"<<endl;
ﻩ ﻩcin〉〉sa;
ﻩﻩﻩﻩmystream.seekp(-sizeof(salesman),ios::cur);
ﻩﻩﻩﻩmystream。write((char*)&sa,sizeof(salesman));
ﻩﻩﻩﻩflag=1;
ﻩﻩﻩﻩmystream。seekg(sizeof(salesman),ios::cur);
ﻩ ﻩ}
ﻩ }
ﻩ else if(gra=='D’)
ﻩﻩ{
ﻩﻩﻩsales_manager sam;
ﻩﻩﻩmystream.read((char*)&sam,sizeof(sales_manager));
ﻩﻩﻩif(s
展开阅读全文