C大作业职员信息管理系统.docx
《C大作业职员信息管理系统.docx》由会员分享,可在线阅读,更多相关《C大作业职员信息管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
C大作业职员信息管理系统
(C++项目报告文档)
C++程序设计
职员信息管理系统
VersionC++6.0
生命科学与技术学院
生物医学工程专业1004班
指导教师:
彭娅婷
日期:
2011年07月03日
开发团队人员姓名
学号
任务
成绩
刘奔
U201012635
浏览信息模块
Word文档3,4部分
张博
U201012636
信息录入模块,
添加信息模块
李扬
U201012637
信息排序
Word文档2(2,3,4,5)
张亚伦
U201012638
修改信息模块,
显示所有信息模块
杨龙
U201012639
删除信息模块
Word文档5,6部分
齐中阳
U201012640
查询信息模块
main函数的完成
胡宇
U201012641
保存文档模块
Word文档1,2
(1)部分
(1)项目目标
(2)系统主要功能概述
(3)可行性分析
(4)项目运行环境
(1)概要设计
(2)详细设计
1)UML图(类的结构和层次)
2)字段说明
(3)项目命名约定
(4)项目分工表
(5)项目进度表
1项目(职员信息管理系统)需求分析
1.1项目目标
开发一职员信息管理系统,实现职员信息的录入,修改,查询,删除,保存等功能。
1.2系统主要功能概述
1.添加信息模块:
初始化成员信息,包括职工号,姓名,性别,年龄,学历,工资,住址,电话,给成员排序;
2.删除信息模块:
删除某位员工信息数据;
3.修改信息模块:
依据职工的序号修改某位员工的信息;
4.信息查询模块:
依据职员的序号查询某位职员的信息;
5.信息浏览模块:
浏览当前所有职员信息;
6:
信息排序模块:
依据职工号,姓名,薪酬为职工排序;
7:
保存信息模块:
将所录信息存入文档。
1.3可行性分析
1.1.系统可行性:
1:
硬件支持:
电脑(笔记本电脑,台式电脑)可以运行程序;
2:
软件支持:
Windows,VC++6.0作为程序运行平台
2.2.技术可行性:
依据本学期学习C++知识,运用面向对象设计,团队成员协作完成。
3.3.使用可行性
采用简单的GUI界面,用户经过短期培训即可方便使用系统。
1.4项目运行环境
CPU
奔腾Ⅳ1.4G或以上
内存
512M或以上
硬盘
80GB或以上
服务器端OS
Windows2000/NT/Server
客户端OS
Windows2000/XP
网络配置
局域网
2项目(职员信息管理系统)设计
2.1概要设计:
建立Employee类,List类,依据要求设计一个主函数,构造函数,析构函数,以及10个功能函数,分别为:
(1)InfoInput;//实现信息录入(有重载)
(2)InfoScan;//用于浏览信息
(3)InfoQuery;//查询信息
(4)InfoSort;//信息排序
(5)InfoSwap
(6)InfoDelete;//删除信息
(7)InfoModify;//修改信息
(8)InfoAdd;//添加信息
(9)showall;//显示所有信息
(10)SaveFile();//保存文档
2.2详细设计
UML图
List
私有成员变量
num;
employee*phead;
Employee
私有成员变量:
num;name;sex;
age;edu;salary;
address;tele;
ordernum;
公有成员函数
employee();
Show();
Show1.
List
公有成员函数
List()
{
phead=newemployee;
num=0;
}
voidInfoInput(char*n,char*name,char*sex,intage,char*edu,floatsal,char*addres,char*tele);//信息录入
voidInfoInput();//信息录入函数重载
voidInfoScan();//浏览信息
voidInfoQuery();//查询信息
voidInfoSort();//信息排序
voidInfoSwap(employee*p,employee*q);
voidInfoDelete();//删除信息
voidInfoModify();//修改信息
voidInfoAdd();//添加信息
voidshowall();//显示所有信息
voidSaveFile();//保存为文件
~List();//析构函数
2.3项目命名约定
类名:
大写字母开头如:
Employee,List
类属性:
采用匈牙利命名法(即第一个字母小写并表明数据类型)如:
void,char,int,float,
类方法:
每个单词均为大写字母开头如:
InfoInput();InfoScan();InfoQuery();InfoSort();InfoSwap();InfoDelete();InfoModify();InfoAdd();showall();SaveFile();
变量:
采用匈牙利命名法(即第一个字母小写并表明数据类型)如:
char*num;char*name;char*sex;intage;char*edu;floatsalary;char*addres;
char*tele;intordernum;intnum;
2.4项目分工表
姓名
分配任务/完成的功能模块
备注
刘奔
浏览信息模块
Word文档3,4部分
张博
信息录入模块,
添加信息模块
李扬
信息排序
Word文档2(2,3,4,5)
张亚伦
修改信息模块,
显示所有信息模块
杨龙
删除信息模块
Word文档5,6部分
齐中阳
查询信息模块
main函数的完成
胡宇
保存文档模块
Word文档1,2
(1)部分
2.5项目进度表
第18周
项目讨论以及做项目需求分析
第18周
项目概要设计,确定分工
第19周
项目详细设计,编写文档初稿、创建数据
第19周
开发功能模块
第19周
开发模块功能,测试模块功能并修改
第19周
整体测试并修改
第20周
形成项目文档,项目检查,文档检查
3项目(职员信息管理系统)功能介绍
1.添加信息模块:
初始化成员信息,包括职工号,姓名,性别,年龄,学历,工资,住址,电话,给成员排序;
2.删除信息模块:
删除某位员工信息数据;
3.修改信息模块:
依据职工的序号修改某位员工的信息;
4.信息查询模块:
依据职员的序号查询某位职员的信息;
5.信息浏览模块:
浏览当前所有职员信息;
6:
信息排序模块:
依据职工号,姓名,薪酬为职工排序;
7:
保存信息模块:
将所录信息存入文档。
4项目(职员信息管理系统)功能测试
测试内容
预计
实际
改善情况
当前信息浏览测试
会出现所有职员信息
如预计
信息录入测试
依照提示录入职员信息
如预计
查询测试
按职工号查询
按编号查询
按编号查询,无改动
排序测试
按编号排序
如预计
删除测试
删除职员信息
如预计
修改测试
改动后信息可存档
如预计
新添成员测试
增添新成员
如预计
保存文件测试
文件可正常保存
如预计
退出测试
正常退出程序
如预计
5项目使用说明
将程序正常编译后,按操作提示正常执行;如:
当前信息浏览输入2,按回车键即可;操作简单,容易掌握,
注意:
修改信息后,执行操作8,将修改后信息存档。
6项目(系统)总结
(写出项目实施过程中碰到的问题,如何解决的问题,有何收获等)
本次C++实验操作难度大,小组成员分配任务后花费很长时间,看课本,上网查询资料后,才能正常完成自己所负责模块操作,且程序编写“巡查模块”未如预期,后期改动较大;
通过本次试验,团队成员意识到互相团结协作,交流信息的重要性,且认识到自身存在的不足,以后还需多加努力
附录1程序源代码
#include
#include
#include
#include
#include
/*************************employee职工类************************/
classemployee
{
public:
char*num;
char*name;
char*sex;
intage;
char*edu;
floatsalary;
char*addres;
char*tele;
intordernum;
employee*next;
public:
employee()
{
name=NULL;
num=NULL;
sex=NULL;
edu=NULL;
salary=0.0;
addres=NULL;
tele=NULL;
ordernum=0;
next=NULL;
}
voidshow()
{
cout<}
voidshow1()
{
cout<<"序号:
"<"<"<"<"<"<"<"<"<}
};
/****************************List职工列表类************************/
classList
{
private:
intnum;
employee*phead;
public:
List()
{
phead=newemployee;
num=0;
}
voidInfoInput(char*n,char*name,char*sex,intage,char*edu,floatsal,char*addres,char*tele);//信息录入
voidInfoInput();//信息录入函数重载
voidInfoScan();//浏览信息
voidInfoQuery();//查询信息
voidInfoSort();//信息排序
voidInfoSwap(employee*p,employee*q);
voidInfoDelete();//删除信息
voidInfoModify();//修改信息
voidInfoAdd();//添加信息
voidshowall();//显示所有信息
voidSaveFile();//保存为文件
~List();//析构函数
};
/*********************InfoInput信息输入************************/
voidList:
:
InfoInput(char*n,char*name,char*sex,intage,char*edu,floatsal,char*addres,char*tele)
{
employee*p=newemployee;
employee*q=phead;
p->num=newchar[strlen(n)+1];
p->name=newchar[strlen(name)+1];
p->sex=newchar[strlen(sex)+1];
p->edu=newchar[strlen(edu)+1];
p->addres=newchar[strlen(addres)+1];
p->tele=newchar[strlen(tele)+1];
strcpy(p->num,n);
strcpy(p->name,name);
strcpy(p->sex,sex);
strcpy(p->edu,edu);
strcpy(p->addres,addres);
strcpy(p->tele,tele);
p->salary=sal;
p->age=age;
num++;
p->ordernum=num;
for(;q->next!
=NULL;q=q->next);
q->next=p;
}
/*********************重载InfoInput信息输入************************/
voidList:
:
InfoInput()
{
employee*p=phead;
intnumber;
charnum[20];
charname[10];
charsex[4];
intsexnum;
intage;
charedu[10];
floatsal;
charaddres[50];
chartele[20];
cout<<"请录入信息:
"<cout<<"输入要添加的职工人数:
";
cin>>number;
for(inti=0;i{
cout<<"\n输入第"<
cout<<"\n请输入职工号:
";
cin>>num;
intflag;
while
(1)
{
flag=0;
for(p=phead->next;p;p=p->next)
if(strcmp(num,p->num)==0){flag=1;break;}
if(flag==1)
{cout<<"该职工号已存在,请输入其它职工号:
";
cin>>num;
}
elsebreak;
}
cout<<"\n请输入职工姓名:
";
cin>>name;
cout<<"\n请输入职工性别(1、男2、女):
";
do{cin>>sexnum;
if(sexnum==1)strcpy(sex,"男");
elseif(sexnum==2)strcpy(sex,"女");
elsecout<<"\n输入有误,重新输入:
";
}
while(sexnum!
=1&&sexnum!
=2);
cout<<"\n请输入职工年龄(数字):
";
do{
cin>>age;
if(age<0||age>130)cout<<"年龄输入有误,重新输入:
";
}while(age<0||age>130);
cout<<"\n请输入职工学历:
";
cin>>edu;
cout<<"\n请输入职工工资(数字):
";
cin>>sal;
cout<<"\n请输入职工住址:
";
cin>>addres;
cout<<"\n请输入职工电话:
";
cin>>tele;
InfoInput(num,name,sex,age,edu,sal,addres,tele);
}
showall();
}
/**********************InfoScan信息浏览************************/
voidList:
:
InfoScan()
{
showall();
}
/*********************InfoQuery信息查询***********************/
voidList:
:
InfoQuery()
{
employee*p=phead->next;
cout<<"输入查询职工的序号:
"<intorder;
cin>>order;
while(order>num)
{
cout<<"此人不存在,请在1-"<";
cin>>order;
}
for(inti=0;i{
if(p->ordernum==order)
{
p->show1();
break;
}
p=p->next;
}
}
/*******************InfoSwap交换信息函数***************************/
voidList:
:
InfoSwap(employee*p,employee*q)
{
employeetemp;
temp.num=p->num;
p->num=q->num;
q->num=temp.num;
temp.name=p->name;
p->name=q->name;
q->name=temp.name;
temp.sex=p->sex;
p->sex=q->sex;
q->sex=temp.sex;
temp.age=p->age;
p->age=q->age;
q->age=temp.age;
temp.edu=p->edu;
p->edu=q->edu;
q->edu=temp.edu;
temp.salary=p->salary;
p->salary=q->salary;
q->salary=temp.salary;
temp.addres=p->addres;
p->addres=q->addres;
q->addres=temp.addres;
temp.tele=p->tele;
p->tele=q->tele;
q->tele=temp.tele;
}
/*************************InfoSort排序*************************/
voidList:
:
InfoSort()
{
employee*p;
employee*q;
cout<<"---排序方式:
------------------------"<cout<<"|*1.按职工号升序排列*|"<cout<<"|*2.按姓名升序排列*|"<cout<<"|*3.按职工薪酬升序排列*|"<cout<<"------------------------------------"<intsortway;
cin>>sortway;
switch(sortway)
{
case1:
{
for(inti=0;ifor(p=phead->next,q=p->next;q;q=q->next,p=p->next)
{
if(strlen(p->num)>strlen(q->num))
InfoSwap(p,q);
}
cout<showall();
};break;
case2:
{
for(inti=0;ifor(p=phead->next,q=p->next;q;q=q->next,p=p->next)
{
if(strcmp(p->name,q->name)>0)
InfoSwap(p,q);
}
cout<showall();
};break;
case3:
{
for(inti=0;ifor(p=phead->next,q=p->next;q;q=q->next,p=p->next)
{
if(p->salary>q->salary)
InfoSwap(p,q);
}
cout<showall();
};break;
}
}
/***********************InfoDelete删除信息************************/
voidList:
:
InfoDelete()
{
employee*p=phead->next;
employee*q=phead;
cout<<"请输入要删除职工的序号:
";
intordernum;
do{
cin>>ordernum;
if(ordernum>num||ordernum<=0)cout<<"输入有误!
请重新输入1-"<";
}while(ordernum>num||ordernum<=0);
while(p->ordernum!
=ordernum)
{
p=p->next;
q=q->next;
}
cout<name<<"吗?
(y/n)"<charsure;
cin>>sure;
if(sure=='y')
{
q->next=p->next;
delete[]p->name;
delete[]p->num;
delete[]p->sex;
delete[]p->edu;
delete[]p->addres;
delete[]p->tele;
deletep;
p=NULL;
num--;
employee*f=phead->next;
for(inti=0;i{
f->ordernum=i