资源描述
*******************
实践教学
******************
江西理工大学软件学院
春季学期
C++语言程序设计 课程设计
(第四组)
题 目: 职员信息管理系统
专业班级:_______
姓 名:________
学 号: 112121
指导老师: 吉宝玉
成 绩:____
6月 25日
目录
摘 要 0
前 言 0
正 文 0
1.系统功效分析 0
2. 系统总体设计 0
3.具体设计 0
4.系统测试 0
5.软件使用说明书 0
设计总结 0
参考文件 0
致 谢 0
附录:原程序代码 0
摘要
伴随经济高速发展,一个好职员信息管理程序在企业及用人单位饰演着关键角色,为了设计一个功效强大职员信息管理系统,在设计中我们做出了明细分工,目标是要让本组组员全部从这次课程设计中学到编程经验和团体精神。“职员信息管理系统”,系统以菜单方法工作,编写存放有职员基础信息,包含职职员号,姓名,性别,出生年月,学历,职务,工资,住址,电话等,而且要求录入职员号不反复;录入职员号信息要求用文件形式保留,并能够对其进行浏览、查询、修改、删除等基础操作,建立职员信息管理文件。
关键词:职员信息管理;文件;浏览;查询;修改。
序言
伴随信息技术在管理上越来越深入而广泛应用,管理信息系统实施在技术上已逐步成熟。管理信息系统是一个不停发展新型学科,任何一个单位要生存要发展要高效率把内部活动有机组织起来,就必需建立本身特点相适应管理信息系统。
本组设计是一个相关职员信息管理数据库系统,经过这个系统,管理员能够简捷方便对职员信息进行增加、删除、修改等功效,而用户也能够经过这个系统对职员信息进行查询等功效。在日益发展现代社会,一个高效实用职员信息管理系统已经是企业必不可少一个管理工具,它能够使企业在管理方面降低很多时间,本课程设计针对现代社会企业对职员信息管理而设计, 使职员管理愈加简捷,愈加方便,界面友好,易于操作。采取开发环境是visual stdio .在设计中,我们放弃传统面对过程结构化设计思想,因为面向过程结构体或链表方法存放每个职员静态属性:编号、姓名、性别、年纪、电话、工资等数据有很多不方便也有很多不安全,所以我们采取C++对象编程思想来把每个职员数据封装成一个人员对象。使得操作方法愈加合理,安全。也使本组课程设计组员愈加了解面向对象程序设计处理问题思维方法。
正文
一.系统功效分析
该职员管理系统针对职员信息数据处理设计了以下功效:
1. 添加职员信息
添加职员信息,提供职员信息添加,在该模块中设计了安全检验机制,即确定是否添加职员信息,若对职员信息添加不满意,则能够选择重新输入。还设置有返回主菜单选项以方便用户。
2. 修改职员信息
修改职员信息设置了职员人数检验,果职员人数NUM值为0,则返回主菜单。假如职员人数NUM不为0,则进入删除职员信息界面。修改职员信息板块功效强大,界面友好,用循环控制修改某职员属性,这么使得操作极为方便。
3. 删除职员信息
删除职员信息中设计了对职员人数检验,假如职员人数NUM值为0,则返回到主菜单。假如职员人数NUM不为0,则进入删除职员信息界面。界面包含职员信息列表,和删除选项,方便用户操作。
4. 职员职员查找
经过find()函数进行查找。该函数比较简单,经过循环一次比较Per[n].num是否和你输入num是否相等,假如相等,则输入到屏幕上,假如未找到任何匹配职员,则显示“未找该职员”。
5. 保留职员信息
保留职员信息,即为将目前全部职员信息存入到workerlist.txt中。这里我们采取是C++ofstream写入文件对象进行控制。
6. 职员信息排序
对职员信息进行排序,包含按职员编号排序(从小到大),按职员工资进行排序(从高到低)。其中也设置了职员人数检验机制,即:假如职员人数为0,则直接返回主菜单。
7. 职员信息显示
对职员信息进行显示,包含职员工号,姓名,年纪,学历,工资地址,电话等信息。方便对职员了解。
二. 系统总体设计
1,编写要求:
1) 先申明职员人员结构,该结构中包含编号、姓名、出生年月、性别,职称,部门,基础工资等组员变量,并定义人员结构数组;
2) 编写主函数,要求提供一界面,许可工作人员输入、修改和删除职员信息;
3) 将职员信息分别按编号由小到大、基础工资由大到小次序进行显示,要求采取不一样排序算法;
4) 给出某职员编号,可对该职员信息进行查找,若找到,显示对应信息,不然显示“该职员不存在”,要求用次序查找和二分查找法进行查找;
5) 将全部职员信息保留在磁盘上。
界面:
**********************************************
* 职员管理系统 *
* ------------------------------- *
* 1. 职员信息输入 *
* 2. 职员信息修改 *
* 3. 职员信息删除 *
* 4. 职员信息查找 *
* 5. 职员信息保留 *
* 6. 职职员资排行 *
* 7. 职员信息显示 *
* 0. 退出 *
**********************************************
2,编写目标:
完成题目所要求全部功效,并加入本组自己设计风格,在界面友好基础上,增加部分附加功效,使得功效更为强大,最终得到一个可靠性高,易于操作职员信息管理系统。
3,功效划分
该系统能够按功效进行模块划分,图
主菜单
添加职员信息
修改职员信息
职员删除信息
职员信息查询
职员信息排序
保留职员信息
Switch()
退出
While()
开始main()
读取数据
系统模块图
其中:
(1) 主菜单模块完成用户命令接收,此模块也是职员信息管理入口,用户所要进行多种操作均需在此模块中进行选择,并进而调用其它模块实现对应功效。
(2) 信息添加模块完成职员信息输入功效,输入信息包含职员号、姓名、性别,出生年月、学历、职务、工资、住址、电话等。
(3) 信息显示模块完成已录入职员信息显示。
(4) 信息查询模块完成职员信息查询,查询时对应有按编号查询和按姓名查询两种方法。
(5) 信息修改模块完成职员信息修改功效。
(6) 信息删除功效模块完成职员信息删除功效。
(7) 信息排序模块完成对职员信息排序,排序内容包含工号,工资等。
(8) 信息保留模块完成对职员信息保留。
4.数据结构
本系统中关键数据结构就是职员信息,包含职员号、姓名、性别、出生年月、学历、职务、工资、住址、电话等,在处理过程中各项能够作为一个职员不一样属性来进行处理。
5.程序步骤
系统实施应从功效菜单选择开始,依据用户选择来进行后续处理,直到用户选择退出系统为止,其间应对用户选择做出判定及异常处理。系统步骤图图所表示:
开始
菜单选择
输入?
浏览?
查询?
修改?
否
否
删除?
信息输入
信息浏览
信息查询
信息修改
信息删除
是
是
是
是
是
结束
否
否
否
UML图
Class
_cout:string
_num:string
_workerlist:string
+add:void
+dele:void
+modify:void
+save:void
+search:void
+showworker:void
+sort:void
+workerlist:void
三. 具体设计(编码实现)
小组模块分工(本人负责:职员信息修改模块和保留模块)
void WorkerList::modify()//职员信息修改函数实现
{
if(NUM<=0)
{
cout<<"没有职员信息存入,系统将返回主菜单"<<endl;
menu();
}
else
{ cout<<"职员信息以下:"<<endl;
cout<<"工号\t姓名\t性别\t学历\t年纪\t工资\t地址\t电话"<<endl;
for(int i=0;i<count;i++)
cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<'\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<endl;
}
cout<<"请输入需要修改信息职员工号:"<<endl;
string num1;
cin>>num1;
int j=0,k;
int flag=1;
while(flag)
{
for(;j<count;j++)
{
if(num1==w[j].num)
{
flag=0;
k=j;
break;
}
}
if(flag)
{
cout<<"不存在此职员,请重新输入:"<<endl;
j=0;
cin>>num1;
}
}
cout<<"你选择职员信息为:"<<endl;
cout<<"工号\t姓名\t性别\t学历\t年纪\t工资\t地址\t电话"<<endl;
cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].sex<<'\t'<<w[k].edu<<'\t'<<w[k].age<<'\t'<<w[k].salary<<'\t'<<w[k].address<<'\t'<<w[k].tel<<endl;
cout<<endl;
cout<<"***********************************************"<<endl;
cout<<"** 1.修改工号 **"<<endl;
cout<<"** 2.修改姓名 **"<<endl;
cout<<"** 3.修改性别 **"<<endl;
cout<<"** 4.修改学历 **"<<endl;
cout<<"** 5.修改年纪 **"<<endl;
cout<<"** 6.修改工资 **"<<endl;
cout<<"** 7.修改地址 **"<<endl;
cout<<"** 8.修改电话 **"<<endl;
cout<<"** 0.返回主菜单 **"<<endl;
cout<<"***********************************************"<<endl;
cout<<endl;
cout<<"请选择数字编号~8"<<endl;
int i3;
cin>>i3;
while(i3<0||i3>8)
{
cout<<"输入有误,请重新输入:"<<endl;
cin>>i3;
}
switch(i3)
{
case 1:
cout<<"请输入新职职员号:";
cin>>w[k].num;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 2:
cout<<"请输入新职员姓名:";
cin>>w[k].name;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 3:
cout<<"请输入新职员性别:";
cin>>w[k].sex;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 4:
cout<<"请输入新职员学历:";
cin>>w[k].edu;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 5:
cout<<"请输入新职员年纪:";
cin>>w[k].age;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 6:
cout<<"请输入新职职员资:";
cin>>w[k].salary;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 7:
cout<<"请输入新职员地址:";
cin>>w[k].address;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 8:
cout<<"请输入新职员电话:";
cin>>w[k].tel;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 0:
menu();
default:
break;
}
职员信息保留模块
void WorkerList::save()
{
if(NUM<=0)
{
cout<<"没有职员信息存入,系统将返回主菜单"<<endl;
menu();
}
else
{
ofstream fout;
fout.open("D:\\worker.txt",ios::out);
cout<<"文件正在保留......请稍候!!"<<endl;
cout<<"数据保留成功!!!"<<endl;
fout<<"已保留职员信息以下:"<<endl;
fout<<"工号\t姓名\t性别\t学历\t年纪\t工资\t地址\t电话"<<endl;
for(int i=0;i<count;i++)
fout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<'\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<endl;
cout<<"系统返回主菜单:"<<endl;
menu();
fout.close();
}
}
四. 系统测试
经过对职员信息添加,修改,删除,保留,排序,查找等功效进行检测。未发觉任何异常现象。在这里:我们将测试结果图片贴在了下面
5.软件使用说明书
(1)依据正确提醒安装软件。
(2)PC台式机和便携式电脑全部可运行。
(3) 打开该程序系统,浏览菜单,依据需要选择功效,进行各项操作。
操作以下:
点击开始菜单,进入菜单选择。
输入:将所需信息输入。
输出:职员基础信息。
输入:依据不一样需要选择,当信息输入显示犯错误时,进入浏览信息,找犯错误。当错误不能更正,则退出浏览信息。
进入查询信息:则屏幕会出现已一个对话框——按工号查找,把对应所需信息状态(是否借出)。当查询不能显示需要时进入修改程序,把所输入信息进行修改,使之正确能够正常运行或进入删除信息中,重新输入自己所要信息。
当信息输入正确,进入你所需要菜单程序中:
职员信息:显示职员号、姓名、性别、出生年月、学历、职务、工资、住址、电话等。
管理员信息:显示出职员信息管理责任人及她们工号。
设计总结
在本系统开发过程中,因为组是首次开发软件,在知识、经验方面全部存在着不足。另外,在整个开发过程中,时间也比较仓促。所以,该系统肯定会存在部分缺点和不足。因为对职员信息管理整个步骤不够熟悉,在需求分析时未能做到完全满足用户需求。
尽管本管理系统存在着很多不足,但其功效全方面、易于以后程序更新、数据库管理轻易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需。经过开发这个系统,我组掌握了项目基础开发过程,用到知识巩固了我组对C语言学习,但在这次设计中最大收获并不是掌握这几门开发工具应用,而是学会了设计系统思维方法,和和同学们之间相互帮助精神。
参考文件
[1] 王连相 c++程序设计教程 ,中国铁道出版社,
[2] 谭浩强 C语言程序设计教程,安徽出版社,1999
[3] 谭浩强 C程序设计题解和上机指导,清华大学出版社,1999
[4] C语言实际应用,安徽科学技术出版社,
[5] C语言函数手册,机械工业出版社,1999
[6] C语言实用程序荟萃,西安电子科技大学出版社,1993
鸣谢。
致 谢
在编写程序过程中,我们得到了老师精心指导和孜孜不倦教育,在老师指导下,我们能力得到了提升,同时养成了科学、严谨作风和习惯,在此,我们对老师精心栽培表示衷心感谢!
感谢我们小组同学对我帮助和指点,尤其感谢我舍友在很时期,在生活和学习上帮我很多忙。在课设立即完成之际,我心情无法平静,从开始进入课题到课设顺利完成,有多少可敬师长、同学、好友给了我无言帮助,在这里请接收我真挚谢意。
附录:
本组组员。
组长:龚贵彬。组员:樊后涛,任宁宁,方磊,余望明,宋帅。
1. 了解工作要求,明确分工内容,网上查阅相关资料。全部组员共同参与。
2. 主函数,显示菜单函数编写。由余望明完成。
3. 编写信息添加模块,由任宁宁完成。
4. 职员信息修改,保留模块编写,由龚贵彬完成。
5职员信息查询模块,由樊后涛完成。
6.职员信息删除模块,由宋帅完成。
7. 职员信息排序模块,由方磊完成
8. 需求分析设计由任宁宁和樊后涛完成
9.文本编写由龚贵彬完成。
最终总结调试。由全部组员共同完成。
源程序代码:
#include<iostream>
#include"string"
#include<fstream>
#include <stdlib.h>
#include <stdio.h>
#define N 100//N作为最大职员总数
int f=0;//f作为开关
using namespace std;
string p;//p作为接收菜单选项字符串
void menu();//显示菜单
class worker
{
public:
worker(){}
void show();//职员信息显示
~worker(){}
friend class WorkerList;
private:
string num,name,sex,edu,address,tel;
int age,salary;
};
class WorkerList
{
private:
worker w[N];
int NUM;//用来计算职员数目
int count;//用来临时统计目前操作第多个职员
public:
void add();//职员信息录入
void sort();//职员信息排序
void search();//职员信息查找
void dele();//职员信息删除
void modify();//职员信息修改
void save();//职员信息以文件形式保留
void showworker();//显示职员信息在屏幕上
WorkerList(){
NUM=0;
count=0;
}
};
void menu()
{
cout<<endl;
cout<<"***********************************************"<<endl;
cout<<"** **"<<endl;
cout<<"** 职员信息管理系统主菜单 **"<<endl;
cout<<"** **"<<endl;
cout<<"** 1.职员信息添加 **"<<endl;
cout<<"** 2.职员信息修改 **"<<endl;
cout<<"** 3.职员信息删除 **"<<endl;
cout<<"** 4.职员信息排序 **"<<endl;
cout<<"** 5.职员信息查找 **"<<endl;
cout<<"** 6.职员信息显示 **"<<endl;
cout<<"** 7.职员信息保留 **"<<endl;
cout<<"** 0.退出 **"<<endl;
cout<<"** **"<<endl;
cout<<"***********************************************"<<endl;
cout<<endl;
}
void domain()//主菜单函数实现
{
WorkerList wl;
while(1)
{
system("cls");
menu();
cout<<"请选择数字编号~7"<<endl;
int i1;
cin>>i1;
while(!(i1>=0&&i1<=7))
{
cout<<"输入有误,请重新输入:"<<endl;
cin>>i1;
}
switch(i1)
{
case 1:
wl.add();break;
case 2:
wl.modify();break;
case 3:
wl.dele();break;
case 4:
wl.sort();break;
case 5:
wl.search();break;
case 7:
wl.save();break;
case 6:
wl.showworker();break;
case 0:
cout<<"系统退出!!"<<endl;
exit(0);
default:
break;
}
cout<<"是否返回主菜单? Y/N"<<endl;
cin>>p;
if(p=="n"||p=="N")
{ cout<<"系统退出!!"<<endl;
exit(0);
}
//getchar();
}
}
void WorkerList::add()//职员信息添加函数实现
{
cout<<"请输入职员信息:"<<endl;
cout<<"工号\t姓名\t性别\t学历\t年纪\t工资\t地址\t电话"<<endl;
string num;
cin>>num;
for(int i=0;i<NUM;i++)
while(num==w[i].num)
{
cout<<"此职员编号已存在,请重新输入:"<<endl;
cin>>num;
}
w[NUM].num=num;
cin>>w[NUM].name>>w[NUM].sex>>w[NUM].edu>>w[NUM].age>>w[NUM].salary>>w[NUM].address>>w[NUM].tel;
++NUM;
count=NUM;
}
void worker::show()//显示职员信息函数实现
{
cout<<"工号\t姓名\t性别\t学历\t年纪\t工资\t地址\t电话"<<endl;
cout<<num<<'\t'<<name<<'\t'<<sex<<'\t'<<edu<<'\t'<<age<<'\t'<<salary<<'\t'<<address<<'\t'<<tel<<endl;
cout<<endl;
}
void WorkerList::modify()//职员信息修改函数实现
{
if(NUM<=0)
{
cout<<"没有职员信息存入,系统将返回主菜单"<<endl;
menu();
}
else
{ cout<<"职员信息以下:"<<endl;
cout<<"工号\t姓名\t性别\t学历\t年纪\t工资\t地址\t电话"<<endl;
for(int i=0;i<count;i++)
cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<'\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<endl;
}
cout<<"请输入需要修改信息职员工号:"<<endl;
string num1;
cin>>num1;
int j=0,k;
int flag=1;
while(flag)
{
for(;j<count;j++)
{
if(num1==w[j].num)
{
flag=0;
k=j;
break;
}
}
if(flag)
{
cout<<"不存在此职员,请重新输入:"<<endl;
j=0;
cin>>num1;
}
}
cout<<"你选择职员信息为:"<<endl;
cout<<"工号\t姓名\t性别\t学历\t年纪\t工资\t地址\t电话"<<endl;
cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].sex<<'\t'<<w[k].edu<<'\t'<<w[k].age<<'\t'<<w[k].salary<<'\t'<<w[k].address<<'\t'<<w[k].tel<<endl;
cout<<endl;
cout<<"***********************************************"<<endl;
cout<<"** 1.修改工号 **"<<endl;
cout<<"** 2.修改姓名 **"<<endl;
cout<<"** 3.修改性别 **"<<endl;
cout<<"** 4.修改学历 **"<<endl;
cout<<"** 5.修改年纪 **"<<endl;
cout<<"** 6.修改工资 **"<<endl;
cout<<"** 7.修改地址 **"<<endl;
cout<<"** 8.修改电话 **"<<endl;
cout<<"** 0.返回主菜单 **"<<endl;
cout<<"***********************************************"<<endl;
cout<<endl;
cout<<"请选择数字编号~8"<<endl;
int i3;
cin>>i3;
while(i3<0||i3>8)
{
cout<<"输入有误,请重新输入:"<<endl;
cin>>i3;
}
switch(i3)
{
case 1:
cout<<"请输入新职职员号:";
cin>>w[k].num;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 2:
cout<<"请输入新职员姓名:";
cin>>w[k].name;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 3:
cout<<"请输入新职员性别:";
cin>>w[k].sex;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 4:
cout<<"请输入新职员学历:";
cin>>w[k].edu;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 5:
cout<<"请输入新职员年纪:";
cin>>w[k].age;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 6:
cout<<"请输入新职职员资:";
cin>>w[k].salary;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 7:
cout<<"请输入新职员地址:";
cin>>w[k].address;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 8:
cout<<"请输入新职员电话:";
cin>>w[k].tel;
cout<<"修改信息已保留,现返回主菜单:"<<endl;
menu();
break;
case 0:
menu();
default:
break;
}
}
void WorkerList::showworker()//职员信息显示函数实现
{
if(NUM<=0)
{
cout<<"没有职员信息存入,系统将返回主菜单"<<endl;
menu();
}
else
cout<<"已保留职员信息以下:"<<endl;
cout<<"工号\t姓名\t性别\t学历\t年纪\t工资\t地址\t电话"<<endl;
for(int i=0;i<count;i++)
cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<'\t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<endl;
/*cout<<"是否返回主菜单? Y/N"<<endl;
cin>>p;
while(1)
{
if(p=="y"||p=="Y")
{
menu();
}
else if(p=="n"||p=="N")
{
cout<<"系统退出!!"<<endl;
exit(0);
}
else
{
cout<<"输入有误,请重新输入:";
cin>>p;
}
}*/
}
void WorkerList::search()
{
if(NUM<=0)
{
cout<<"没有职员信息存入,系统将返回主菜单"<<endl;
menu();
}
else
cout<<"请选择查找方法:"<<endl;
cout<<"***********************************************"<<endl;
cout<<"** 1.按工号查找 **"<<endl;
cout<<"** 2.按姓名查找 **"<<endl;
cout<<"** 3.按工资查找
展开阅读全文