C++项目报告之高校人事管理系统(共21页).doc
精选优质文档-倾情为你奉上C+课程项目设计说明书项目名称: 高校人事管理系统班 级: 生物技术班项目组长: 王美庭项目成员:王田、喻易、谭继鹏、霍擎、杨锏 王美庭指导教师: 叶涛完成日期: 2012-06-26成 绩: 专心-专注-专业1 项目(高校人事管理系统)需求分析1.1 项目目标1. 开发一个高校人事管理系统,修改以前该系统的不足,提高系统的运作效率。1.2 系统主要功能概述1. 高校人事管理系统模块(系统流程图)高校人事管理系统删除人员信息增加人员资料选择要进行的操作1 2 查询人员信息修改人员信息 3 4 数据存盘数据装入 56退出显示所有信息 8 7 1.3可行性分析1.系统/技术可行性:windows安装了VC+6.0即可运行。2.使用可行性采用简单的GUI界面,用户经过短期培训即可方便使用系统。1.4 项目运行环境CPU奔腾 1.4G或以上内存512M或以上硬盘80GB或以上服务器端OSWindows 2000/NT/Server客户端OSWindows 2000/XP网络配置局域网2 项目(高校人事管理系统)设计2.1 概要设计设计一个person和school的类,再结合main函数实现搞笑人事管理系统的功能,大致模块如下:高校人事管理系统 修改功能删除功能添加功能查询功能数据存盘与装入功能显示功能 2.2 详细设计UML图类名:person私有成员变量:Int no,char type20,char name20,char sex10,int age, char time20,char pos20,char techpos20, char party20,char study30 person *mynext公有成员函数:person(int nnum,char ntype,char nname,char nsex,int nage,char ntime,char npos,char ntechpos,char nparty,char nstudy),person(int nnum,char ntype,char nname,char nsex,int nage,char ntime,char npos,char ntechpos,char nparty,char nstudy,person *next)void setnext(person *next),person *getnext(),int getnum(),char *getname(),char *getsex(),char *getpos(),char *gettechpos(),char *gettime(),char *getparty(),char *getstudy(),int getage(),void getag(int as),char *gettype()。类名:school私有成员变量:person *myfirst,int firstnum。公有成员函数:School(),School(int nnu,char ntyp,char nnam,char nse,int nag,char ntim,char npo,char ntechpo,char npart,char nstud),void insertatlast(int nnum,char ntype,char nname,char nsex,int nage,char ntime,char npos,char ntechpos,char nparty,char nstudy),void printf(int r),void printf1(person *ahead),void printf(),void add(),bool removedatnum( ),bool find1(),bool find2(),bool upperson(),void load(),void save(),School()。2.3 项目命名约定类名:大写字母开头 如:School类属性:采用匈牙利命名法(即第一个字母小写并表明数据类型)如:int变量:采用匈牙利命名法(即第一个字母小写并表明数据类型) 如:c2.4 项目分工表姓名分配任务/完成的功能模块备注(贡献度,设总分为60分)喻易人事管理系统资料的收集,让对该系统不熟的同学增加对其的了解,并协助霍擎进行类的定义。10霍擎类的主编(person和school类)10王田负责人事成员的信息输入,及对合并后运行时出现的一些问题进行修改和完善10谭继鹏main函数主编10杨锏对cpp文件进行存储模式的改编,即在系统运行中可对输入内容存储或者对已有文件的信息进行提取。10王美庭word文档的初编和终编。102.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<iostream.h>#include<string.h>#include<fstream.h>#include<iomanip.h>class personprivate: int no;/编号 char type20;/职工类型 char name20;/姓名 char sex10;/性别 int age;/年龄 char time20;/来院时间 char pos20;/职务 char techpos20;/职称 char party20;/党派 char study30;/最高学历person *mynext;/指针语public:person(int nnum,char ntype,char nname,char nsex,int nage,char ntime,char npos,char ntechpos,char nparty,char nstudy)no=nnum;strcpy(type,ntype);/将ntype的值复制给typestrcpy(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(int nnum,char ntype,char nname,char nsex,int nage,char ntime,char npos,char ntechpos,char nparty,char nstudy,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;void setnext(person *next)mynext=next;person *getnext()return mynext;int getnum()return no;char *getname()return name;char *getsex()return sex;char *getpos()return pos;char *gettechpos()return techpos;char *gettime()return time;char *getparty()return party;char *getstudy()return study;int getage()return age;void getag(int as)age=as;char *gettype()return type;class Schoolprivate:person *myfirst;int firstnum;public:School()/无参构造函数myfirst=NULL;/将指针置空School(int nnu,char ntyp,char nnam,char nse,int nag,char ntim,char npo,char ntechpo,char npart,char nstud)/有参构造函数myfirst=new person(nnu,ntyp,nnam,nse,nag,ntim,npo,ntechpo,npart,nstud);/在信息最后添加新的信息 void insertatlast(int nnum,char ntype,char nname,char nsex,int nage,char ntime,char npos,char ntechpos,char nparty,char nstudy)person *next=myfirst;/定义对象指针并付初值if(next=NULL)myfirst=new person(nnum,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy);elsewhile(next->getnext()!=NULL)next=next->getnext();next->setnext(new person(nnum,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy,next->getnext();void printf(int r)/获取信息int nage;char ntype20,nname20,nsex20,ntime20,npos20,ntechpos20,nparty20,nstudy20;cout<<"请输入编号为"<<r<<"的成员的信息"<<endl; cout<<"输入职工分类码行政人员,教师,一般员工,退休人员,返聘人员,临时工:"<<endl; cin>>ntype; cout<<"输入姓名:"<<endl; cin>>nname; cout<<"输入性别:"<<endl; cin>>nsex; cout<<"输入年龄:"<<endl; cin>>nage; cout<<"输入来院时间:"<<endl; cin>>ntime; cout<<"输入职务无,科级,处级,地级:"<<endl; cin>>npos; cout<<"输入职称无,初级,中级,高级:"<<endl; cin>>ntechpos; cout<<"输入加入党派群众,中共党员,民主党派:"<<endl; cin>>nparty; cout<<"输入学历小学,初中,高中,大专,大学,硕士,博士:"<<endl; cin>>nstudy;insertatlast(r,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy);void printf1(person *ahead)/输出信息cout<<"编号:"<<setiosflags(ios:left)<<setw(26)<<ahead->getnum()<<"姓名:"<<ahead->getname()<<endl;cout<<"性别:"<<setiosflags(ios:left)<<setw(26)<<ahead->getsex()<<"年龄:"<<ahead->getage()<<endl;cout<<"职工类型:"<<setiosflags(ios:left)<<setw(22)<<ahead->gettype()<<"职务:"<<ahead->getpos()<<endl; cout<<"职称:"<<setiosflags(ios:left)<<setw(26)<<ahead->gettechpos()<<"学历:"<<ahead->getstudy()<<endl; cout<<"政治面貌:"<<setiosflags(ios:left)<<setw(22)<<ahead->getparty()<<"来院时间:"<<ahead->gettime()<<endl;void printf()person *ahead=myfirst;cout<<"编号-姓名-性别-年龄-职工类型-职务-职称-学历-政治面貌-来院时间n"<<endl;while(ahead!=NULL) cout<<setiosflags(ios:left)<<setw(4)<<ahead->getnum()<<setiosflags(ios:left)<<setw(6)<<ahead->getname() ; cout<<setiosflags(ios:left)<<setw(5)<<ahead->getsex()<<setiosflags(ios:left)<<setw(4)<<ahead->getage() ;cout<<setiosflags(ios:left)<<setw(10)<<ahead->gettype()<<setiosflags(ios:left)<<setw(6)<<ahead->getpos() ; cout<<setiosflags(ios:left)<<setw(6)<<ahead->gettechpos()<<setiosflags(ios:left)<<setw(6)<<ahead->getstudy();cout<<setiosflags(ios:left)<<setw(9)<<ahead->getparty()<<setiosflags(ios:left)<<setw(12)<<ahead->gettime()<<endl; ahead=ahead->getnext();void add()/添加新信息int i,a,b;person *p1=myfirst;if(p1=NULL)cout<<"请输入编号:" cin>>i; printf(i);elseif(p1->getnext()=NULL)/如果p1的后继指针为空,则执行“printf(a)”a=p1->getnum()+1;printf(a);elsewhile(p1->getnext()!=NULL)/p1的后继指针不为空,则执行“printf(b)”p1=p1->getnext();b=p1->getnum()+1;printf(b);bool removedatnum( )/删除信息int bh; person *ahead=myfirst; person *follow=ahead; cout<<"请输入要删除人员的编号:" cin>>bh;if(ahead=NULL)return false;elseif(ahead->getnum()=bh)myfirst=myfirst->getnext();cout<<"编号为"<<bh<<"的成员以被删除"<<endl;delete ahead;return true;elseahead=ahead->getnext();while(ahead!=NULL)if(ahead->getnum()=bh)follow->setnext(ahead->getnext();cout<<"编号为"<<bh<<"的成员以被删除n"delete ahead;return true;follow=ahead;ahead=ahead->getnext();cout<<"要删除的成员不存在!"<<endl;return false;bool find1()/按编号查找int id; person *ahead=myfirst; person *follow=ahead; cout<<"请输入编号:"<<endl; cin>>id; cout<<"*"<<endl;if(ahead=NULL)cout<<"无人员信息!"<<endl;return false;elsewhile(ahead!=NULL)if(ahead->getnum()=id)printf1(ahead);return true;elsefollow=ahead;ahead=ahead->getnext();cout<<"无此人信息:"<<endl;return false;bool find2( )/按姓名查找char nm20; person *ahead=myfirst; person *follow=ahead; cout<<"输入姓名" cin>>nm; cout<<"*"<<endl;if(ahead=NULL)cout<<"无人员信息"<<endl;return false;elsewhile(ahead!=NULL)if(strcmp(ahead->getname(),nm)=0)printf1(ahead);return true;elsefollow=ahead;ahead=ahead->getnext();cout<<"查无此人:"<<endl;return false;bool upperson()/修改信息int iid; person *ahead=myfirst; person *follow=ahead; cout<<"请输入要修改人员的编号:" cin>>iid;if(ahead=NULL)cout<<"无人员信息"<<endl;return false;elsewhile(ahead!=NULL)if(ahead->getnum()=iid)printf1(ahead);int nu=-1;for(int i=1;nu!=0;i+)int ml; int mll; char ty30;cout<<"请选择要修改的内容:"<<endl; cout<<" 1:姓名2:性别3:年龄4:职工类型 5:职务"<<endl; cout<<"6:职称 7:学历 8:政治面貌 9:来院时间"<<endl; cout<<" 选择(1-10):" cin>>ml;switch(ml)case 1: cout<<"请输入姓名:" cin>>ty; strcpy(follow->getname(),ty); ;break;case 2:cout<<"请输入性别:" cin>>ty; strcpy(ahead->getsex(),ty);break;case 3:cout<<"请输入年龄:" cin>>mll; ahead->getag(mll);break;case 4:cout<<"请输入职工类型:" cin>>ty; strcpy(ahead->gettype(),ty); break;case 5:cout<<"请输入职务:" cin>>ty; strcpy(ahead->getpos(),ty);break;case 6:cout<<"请输入职称:" cin>>ty;strcpy(ahead->gettechpos(),ty);break;case 7:cout<<"请输入学历:"cin>>ty;strcpy(ahead->getstudy(),ty);break;case 8:cout<<"请输入政治面貌:"cin>>ty;strcpy(ahead->getparty(),ty);break;case 9:cout<<"请输入来院时间:"cin>>ty;strcpy(ahead->gettime(),ty);break; return true;elseahead=ahead->getnext();follow=ahead;cout<<"没有此人"<<endl;return false;void load()int nnum,nage;char ntype20,nname20,nsex20,ntime20,npos20,ntechpos20,nparty20,nstudy20;ifstream fperson;fperson.open("person.txt",ios:in);while(fperson.good()fperson>>nnum>>ntype>>nname>>nsex>>nage>>ntime>>npos>>ntechpos>>nparty>>nstudy; insertatlast(nnum,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy);fperson.close();cout<<"n人员和相关数据已经装入.n"void save()/保存文件到文件中ofstream fperson;fperson.open("person.txt",ios:out);person *p=myfirst;while(p)fperson<<p->getnum()<<"t"<<p->gettype()<<"t"<<p->getname()<<"t"<<p->getsex()<<"t"<<p->getage()<<"t"<<p->gettime()<<"t"<<p->getpos()<<"t"<<p->gettechpos()<<"t"<<p->getparty()<<"t"<<p->getstudy();fperson<<endl;p=p->getnext();fperson.close();cout<<"保存数据已经完成"<<endl;School()/析构函数,删除各指针!person *next=myfirst,*temp;while(next!=NULL)temp=next;next=next->getnext();delete temp;myfirst=NULL;void main()School s;/定义对象int c;docout<<"*"<<endl;cout<<" 高校人事管理系统 "<<endl;cout<<" "<<endl;cout<<" 1-增加人员资料 "<<endl;cout<<" 2-删除人员信息 "<<endl;cout<<" 3-修改人员信息 "<<endl;cout<<" 4-查询人员信息 "<<endl;cout<<" 5-数据存盘 "<<endl;cout<<"