C++项目报告之高校人事管理系统.docx
《C++项目报告之高校人事管理系统.docx》由会员分享,可在线阅读,更多相关《C++项目报告之高校人事管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
C++项目报告之高校人事管理系统
C++课程项目设计说明书
项目名称:
高校人事管理系统
班级:
生物技术班
项目组长:
王美庭
项目成员:
王田、喻易、谭继鹏、霍擎、杨锏
王美庭
指导教师:
叶涛
完成日期:
2012-06-26
成绩:
目录1
1项目(高校人事管理系统)需求分析1
1.1项目目标1
1.2系统主要功能概述1
1.3可行性分析1
1.4项目运行环境2
2项目(高校人事管理系统)设计3
2.1概要设计3
2.2详细设计3
2.3项目命名约定5
2.4项目分工表5
2.5项目进度表5
3项目(高校人事管理系统)功能介绍6
4项目(高校人事管理系统)功能测试6
5项目使用说明6
6项目(系统)总结7
7程序源代码7
1项目(高校人事管理系统)需求分析
1.1项目目标
1.开发一个高校人事管理系统,修改以前该系统的不足,提高系统的运作效率。
1.2系统主要功能概述
1.高校人事管理系统模块(系统流程图)
12
34
56
87
1.3可行性分析
1.系统/技术可行性:
windows安装了VC+6.0即可运行。
2.使用可行性
采用简单的GUI界面,用户经过短期培训即可方便使用系统。
1.4项目运行环境
CPU
奔腾Ⅳ1.4G或以上
内存
512M或以上
硬盘
80GB或以上
服务器端OS
Windows2000/NT/Server
客户端OS
Windows2000/XP
网络配置
局域网
2项目(高校人事管理系统)设计
2.1概要设计
设计一个person和school的类,再结合main函数实现搞笑人事管理系统的功能,大致模块如下:
2.2详细设计
UML图
类名:
person
私有成员变量:
Intno,chartype[20],charname[20],charsex[10],intage,chartime[20],charpos[20],chartechpos[20],charparty[20],charstudy[30]
person*mynext
公有成员函数:
person(intnnum,charntype[],charnname[],charnsex[],intnage,charntime[],charnpos[],charntechpos[],charnparty[],charnstudy[]),person(intnnum,charntype[],charnname[],charnsex[],intnage,charntime[],charnpos[],charntechpos[],charnparty[],charnstudy[],person*next)voidsetnext(person*next),person*getnext(),intgetnum(),char*getname(),char*getsex(),char*getpos(),char*gettechpos(),char*gettime(),char*getparty(),char*getstudy(),intgetage(),voidgetag(intas),char*gettype()。
类名:
school
私有成员变量:
person*myfirst,intfirstnum。
公有成员函数:
School(),School(intnnu,charntyp[],charnnam[],charnse[],intnag,charntim[],charnpo[],charntechpo[],charnpart[],charnstud[]),voidinsertatlast(intnnum,charntype[],charnname[],charnsex[],intnage,charntime[],charnpos[],charntechpos[],charnparty[],charnstudy[]),voidprintf(intr),voidprintf1(person*ahead),voidprintf(),voidadd(),boolremovedatnum(),boolfind1(),boolfind2(),boolupperson(),voidload(),voidsave(),~School()。
2.3项目命名约定
类名:
大写字母开头如:
School
类属性:
采用匈牙利命名法(即第一个字母小写并表明数据类型)如:
int
变量:
采用匈牙利命名法(即第一个字母小写并表明数据类型)如:
c
2.4项目分工表
姓名
分配任务/完成的功能模块
备注(贡献度,
设总分为60分)
喻易
人事管理系统资料的收集,让对该系统不熟的同学增加对其的了解,并协助霍擎进行类的定义。
10
霍擎
类的主编(person和school类)
10
王田
负责人事成员的信息输入,及对合并后运行时出现的一些问题进行修改和完善
10
谭继鹏
main函数主编
10
杨锏
对cpp文件进行存储模式的改编,即在系统运行中可对输入内容存储或者对已有文件的信息进行提取。
10
王美庭
word文档的初编和终编。
10
2.5项目进度表
6月15日~20日
互相学习,C++不熟练的同学帮助基础差一点的同学,以及本身C++的全面复习
6月21日
项目讨论以及做项目需求分析,功能分析。
项目概要设计,确定分工
6月22日~24日
项目详细设计,编写文档初稿、创建数据,编写CPP文件
6月25日
合并,部分功能测试和进行一些问题的修改。
整体测试并整合出最终的CPP文件
6月26日
文档编写、增添修改,形成最终文档。
3项目(高校人事管理系统)功能介绍
添加功能:
实现对新成员的添加。
删除功能:
对离校成员信息的清楚。
修改功能:
对于在校人员信息的变更加以补充和消减,创建最新信息!
查询功能:
实现对在校人员信息的提取。
数据存盘与装入功能:
对以上信息的变更加以存储,实现下一次信息的调用。
显示功能:
VC+6.0运行屏幕即可显示。
4项目(高校人事管理系统)功能测试
最主要是
1,同学基础还不牢固,在编程时出现了各种小的问题和疑惑,在之后经再次书本复习和网上查阅,解决了大部分问题。
2.合并时变量不同而出现了问题,后面经变量的修改实现统一化后,解决了问题。
5项目使用说明
运行程序后,选择1-8操作中的一种。
选1,增加人员资料。
需输入编号、职工分类码、姓名、性别、年龄、来院时间、职务、职称、加入党派、学历。
选2,删除人员信息。
输入要删除人员的编号。
假如此人员存在,会输出“编号为**的成员已被删除”假如人员不存在,会输出“要删除的成员不存在!
”
选3,修改人员信息。
输入要修改人员的编号,假如此人员存在,需要选择要修改的内容,包括姓名、性别、年龄、职工类型、职务、职称、学历、政治面貌、来院时间。
假如人员不存在,输出“没有此人”。
选4,查询人员信息。
要选择查询的方式。
1通过编号,2通过姓名。
选1,输入要查的编号。
假如此人员存在,会输出要相关人员信息。
假如人员不存在,会输出“无此人信息:
”选2,输如要查的姓名。
假如此人员存在,会输出要相关人员信息。
假如人员不存在,会输出“查无此人:
”。
选5,数据存盘。
会自动存盘,并输出“**人员和相关数据已经装入.....”。
选6,数据装入。
会自动装入数据,并输出“保存数据已完成”。
选7,显示所有信息。
会输出系统所存的所有员工的各项信息。
选8,退出。
6项目(系统)总结
通过程序设计,我们能够基本掌握C++程序设计的方法,并且在此基础上掌握类的构造方法,明确类中构造函数、成员函数的建立以及调用,并且,结合C++中字符串函数的编译系统给定的库函数,采用一定的逻辑编译,实现题目中要求的各项要求,达到基本实验目的,提高了团队的C++语言使用水平。
另外,最重要的是,我们在其中收获了团队协作精神,每个人都互相努力和协作,最终使我们的任务得以完成!
7程序源代码
#include
#include
#include
#include
classperson
{
private:
intno;//编号
chartype[20];//职工类型
charname[20];//姓名
charsex[10];//性别
intage;//年龄
chartime[20];//来院时间
charpos[20];//职务
chartechpos[20];//职称
charparty[20];//党派
charstudy[30];//最高学历
person*mynext;//指针语
public:
person(intnnum,charntype[],charnname[],charnsex[],intnage,charntime[],charnpos[],charntechpos[],charnparty[],charnstudy[])
{
no=nnum;
strcpy(type,ntype);//将ntype的值复制给type
strcpy(name,nname);
strcpy(sex,nsex);
age=nage;
strcpy(time,ntime);
strcpy(pos,npos);
strcpy(techpos,ntechpos);
strcpy(party,nparty);
strcpy(study,nstudy);
mynext=NULL;
}
person(intnnum,charntype[],charnname[],charnsex[],intnage,charntime[],
charnpos[],charntechpos[],charnparty[],charnstudy[],person*next)
//某高校,主要人员有:
在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。
//现在,需要存储这些人员的人事档案信息:
编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、来院时间。
{
no=nnum;
strcpy(type,ntype);
strcpy(name,nname);
strcpy(sex,nsex);
age=nage;
strcpy(time,ntime);
strcpy(pos,npos);
strcpy(techpos,ntechpos);
strcpy(party,nparty);
strcpy(study,nstudy);
mynext=next;
}
voidsetnext(person*next)
{
mynext=next;
}
person*getnext()
{
returnmynext;
}
intgetnum()
{
returnno;
}
char*getname()
{
returnname;
}
char*getsex()
{
returnsex;
}
char*getpos()
{
returnpos;
}
char*gettechpos()
{
returntechpos;
}
char*gettime()
{
returntime;
}
char*getparty()
{
returnparty;
}
char*getstudy()
{
returnstudy;
}
intgetage()
{
returnage;
}
voidgetag(intas)
{
age=as;
}
char*gettype()
{
returntype;
}
};
classSchool
{
private:
person*myfirst;
intfirstnum;
public:
School()//无参构造函数
{
myfirst=NULL;//将指针置空
}
School(intnnu,charntyp[],charnnam[],charnse[],intnag,charntim[],charnpo[],charntechpo[],charnpart[],charnstud[])//有参构造函数
{
myfirst=newperson(nnu,ntyp,nnam,nse,nag,ntim,npo,ntechpo,npart,nstud);
}
//在信息最后添加新的信息
voidinsertatlast(intnnum,charntype[],charnname[],charnsex[],intnage,charntime[],charnpos[],charntechpos[],charnparty[],charnstudy[])
{
person*next=myfirst;//定义对象指针并付初值
if(next==NULL)
myfirst=newperson(nnum,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy);
else
{
while(next->getnext()!
=NULL)
next=next->getnext();
next->setnext(newperson(nnum,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy,next->getnext()));
}
}
voidprintf(intr)//获取信息
{
intnage;
charntype[20],nname[20],nsex[20],ntime[20],npos[20],ntechpos[20],nparty[20],nstudy[20];
cout<<"请输入编号为"<cout<<"输入职工分类码[行政人员,教师,一般员工,退休人员,返聘人员,临时工]:
"<cin>>ntype;
cout<<"输入姓名:
"<cin>>nname;
cout<<"输入性别:
"<cin>>nsex;
cout<<"输入年龄:
"<cin>>nage;
cout<<"输入来院时间:
"<cin>>ntime;
cout<<"输入职务[无,科级,处级,地级]:
"<cin>>npos;
cout<<"输入职称[无,初级,中级,高级]:
"<cin>>ntechpos;
cout<<"输入加入党派[群众,中共党员,民主党派]:
"<cin>>nparty;
cout<<"输入学历[小学,初中,高中,大专,大学,硕士,博士]:
"<cin>>nstudy;
insertatlast(r,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy);
}
voidprintf1(person*ahead)//输出信息
{
cout<<"编号:
"<:
left)<getnum()<<"姓名:
"<getname()<cout<<"性别:
"<:
left)<getsex()<<"年龄:
"<getage()<cout<<"职工类型:
"<:
left)<gettype()<<"职务:
"<getpos()<cout<<"职称:
"<:
left)<gettechpos()<<"学历:
"<getstudy()<cout<<"政治面貌:
"<:
left)<getparty()<<"来院时间:
"<gettime()<}
voidprintf()
{
person*ahead=myfirst;
cout<<"编号---姓名---性别---年龄---职工类型---职务---职称---学历---政治面貌---来院时间\n"<while(ahead!
=NULL){cout<:
left)<getnum()<:
left)<getname();cout<:
left)<getsex()<:
left)<getage();cout<:
left)<gettype()<:
left)<getpos();cout<:
left)<gettechpos()<:
left)<getstudy();
cout<:
left)<getparty()<:
left)<gettime()<ahead=ahead->getnext();
}
}
voidadd()//添加新信息
{
inti,a,b;
person*p1=myfirst;
if(p1==NULL)
{
cout<<"请输入编号:
";
cin>>i;
printf(i);
}
else
{
if(p1->getnext()==NULL)//如果p1的后继指针为空,则执行“printf(a)”
{
a=p1->getnum()+1;
printf(a);
}
else
{
while(p1->getnext()!
=NULL)//p1的后继指针不为空,则执行“printf(b)”
{
p1=p1->getnext();
}
b=p1->getnum()+1;
printf(b);
}
}
}
boolremovedatnum()//删除信息
{
intbh;
person*ahead=myfirst;
person*follow=ahead;
cout<<"请输入要删除人员的编号:
";
cin>>bh;
if(ahead==NULL)
returnfalse;
else
if(ahead->getnum()==bh)
{
myfirst=myfirst->getnext();
cout<<"编号为"<deleteahead;
returntrue;
}
else
{
ahead=ahead->getnext();
while(ahead!
=NULL)
{
if(ahead->getnum()==bh)
{
follow->setnext(ahead->getnext());
cout<<"编号为"<deleteahead;
returntrue;
}
follow=ahead;
ahead=ahead->getnext();
}
cout<<"要删除的成员不存在!
"<returnfalse;
}
}
boolfind1()//按编号查找
{
intid;
person*ahead=myfirst;
person*follow=ahead;
cout<<"请输入编号:
"<cin>>id;
cout<<"**********************************"<if(ahead==NULL)
{
cout<<"无人员信息!
"<returnfalse;
}
else
{
while(ahead!
=NULL)
{
if(ahead->getnum()==id)
{
printf1(ahead);
returntrue;
}
else
{
follow=ahead;
ahead=ahead->getnext();
}
}
cout<<"无此人信息:
"<returnfalse;
}
}
boolfind2()//按姓名查找
{
charnm[20];
person*ahead=myfirst;
person*follow=ahead;
cout<<"输入姓名";
cin>>