C大作业-职员信息管理系统_第1页
C大作业-职员信息管理系统_第2页
C大作业-职员信息管理系统_第3页
C大作业-职员信息管理系统_第4页
C大作业-职员信息管理系统_第5页
已阅读5页,还剩18页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(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项目(职员信息管理系统)需求分析 (1)(1)项目目标(2)系统主要功能概述(3)可行性分析(4)项目运行环境2项目(职员信息管理系统)设计 (2)(1)概要设计(2)详细设计1)UML图(类的结构和层次)2)字段说明(3)项目命名约定(4)项目分工表(5)项目进度表3项目(职员信息管理系统)功能介绍 (4)4项目(职员信息管理系统)功能测试 (5)5项目使用说明 (6)6项目(系统)总结 (6)附录1程序源代码 (7)1项目(职员信息管理系统)需求分析1.1项目目标开发一职员信息管理系统,实现职员信息的录入,修改,查询,删除,保存等功能。1.2系统主要功能概述1.添加信息模块:初始化成员信息,包括职工号,姓名,性别,年龄,学历,工资,住址,电话,给成员排序;2.删除信息模块:删除某位员工信息数据;3.修改信息模块:依据职工的序号修改某位员工的信息;4.信息查询模块:依据职员的序号查询某位职员的信息;5.信息浏览模块:浏览当前所有职员信息;6:信息排序模块:依据职工号,姓名,薪酬为职工排序;7:保存信息模块:将所录信息存入文档。1.3可行性分析1.系统可行性:1:硬件支持:电脑(笔记本电脑,台式电脑)可以运行程序;2:软件支持:Windows,VC++6.0作为程序运行平台2.技术可行性:依据本学期学习C++知识,运用面向对象设计,团队成员协作完成。3.使用可行性采用简单的GUI界面,用户经过短期培训即可方便使用系统。1.4项目运行环境CPU奔腾Ⅳ1.4G或以上内存512M或以上硬盘80GB或以上服务器端OSWindows2000/NT/Server客户端OSWindows2000/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私有成员变量

List私有成员变量

num;employee*phead;

私有成员变量: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<iostream.h>#include<string.h>#include<stdlib.h>#include<stdio.h>#include<fstream.h>/*************************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<<num<<""<<name<<""<<sex<<""<<age<<""<<edu<<""<<salary<<""<<addres<<""<<tele<<""<<endl; } voidshow1() { cout<<"序号:"<<ordernum<<"职工号:"<<num<<"姓名:"<<name<<"性别:"<<sex<<"年龄:"<<age<<"学历:"<<edu<<"工资:"<<salary<<"住址:"<<addres<<"电话:"<<tele<<endl; }};/****************************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<<"请录入信息:"<<endl; cout<<"输入要添加的职工人数:"; cin>>number; for(inti=0;i<number;i++) { cout<<"\n输入第"<<i+1<<"个职工的基本信息"<<endl; 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<<"输入查询职工的序号:"<<endl; intorder; cin>>order; while(order>num) { cout<<"此人不存在,请在1-"<<num<<"范围内输入要查询职工的序号:"; cin>>order; } for(inti=0;i<num;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; =p->name; p->name=q->name; q->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; =p->edu; p->edu=q->edu; q->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<<"---排序方式:------------------------"<<endl; cout<<"|*1.按职工号升序排列*|"<<endl; cout<<"|*2.按姓名升序排列*|"<<endl; cout<<"|*3.按职工薪酬升序排列*|"<<endl; cout<<"------------------------------------"<<endl; intsortway; cin>>sortway; switch(sortway) { case1: { for(inti=0;i<num-1;i++) for(p=phead->next,q=p->next;q;q=q->next,p=p->next) { if(strlen(p->num)>strlen(q->num)) InfoSwap(p,q); } cout<<endl<<"排序后"<<endl; showall(); };break; case2: { for(inti=0;i<num-1;i++) for(p=phead->next,q=p->next;q;q=q->next,p=p->next) { if(strcmp(p->name,q->name)>0) InfoSwap(p,q); } cout<<endl<<"排序后"<<endl; showall(); };break; case3: { for(inti=0;i<num-1;i++) for(p=phead->next,q=p->next;q;q=q->next,p=p->next) { if(p->salary>q->salary) InfoSwap(p,q); } cout<<endl<<"排序后"<<endl; showall(); };break; }}/***********************InfoDelete删除信息************************/voidList::InfoDelete() { employee*p=phead->next; employee*q=phead; cout<<"请输入要删除职工的序号:"; intordernum; do{ cin>>ordernum; if(ordernum>num||ordernum<=0)cout<<"输入有误!请重新输入1-"<<num<<"之间的数:"; }while(ordernum>num||ordernum<=0); while(p->ordernum!=ordernum) { p=p->next; q=q->next; } cout<<endl<<"要删除"<<p->name<<"吗?(y/n)"<<endl; 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<num;i++) { f->ordernum=i+1; f=f->next; } cout<<endl<<"删除后:"<<endl; showall(); } elseif(sure=='n') cout<<endl<<"已取消删除"<<endl;}/***************************InfoModify修改信息********************/voidList::InfoModify() { employee*p=phead->next; cout<<"选择要修改职工的序号:"; intordernum; do { cin>>ordernum;if(ordernum>num)cout<<"输入有误,请在1-"<<num<<"范围内选择!"<<endl; }while(ordernum>num); for(;p->ordernum!=ordernum;p=p->next); cout<<"---要修改的项目:------------------"<<endl; cout<<"|*1.职工号*|"<<endl; cout<<"|*2.姓名*|"<<endl; cout<<"|*3.年龄*|"<<endl; cout<<"|*4.学历*|"<<endl; cout<<"|*5.工资*|"<<endl; cout<<"|*6.住址*|"<<endl; cout<<"|*7.电话*|"<<endl; cout<<"----------------------------------"<<endl; intitem; cout<<"输入要修改的项目:"; do { cin>>item; if(item>7)cout<<"请在1-7内输入:"; }while(item>7); switch(item) { case1: { charnewnum[20]; cout<<"请输入要修改的职工号:"; cin>>newnum; employee*q; intflag; while(1) { flag=0; for(q=phead->next;q;q=q->next) if(strcmp(newnum,q->num)==0){flag=1;break;} if(flag==1) {cout<<"该职工号已存在,请输入其它职工号:"; cin>>newnum; } elsebreak; } p->num=newchar[strlen(newnum)+1]; strcpy(p->num,newnum); };break; case2: { charnewname[10]; cout<<"请输要修改的姓名:"; cin>>newname; p->name=newchar[strlen(newname)+1]; strcpy(p->name,newname); };break; case3: { intage; cout<<"请输入要修改的年龄(数字):"; do{ cin>>age; if(age<0||age>130)cout<<"年龄输入有误,重新输入:"; }while(age<0||age>130); p->age=age; };break; case4: { charedu[40]; cout<<"请输入要修改的学历:"; cin>>edu; p->edu=newchar[strlen(edu)+1]; strcpy(p->edu,edu); };break; case5: { floatsalary; cout<<"请输入要修改的工资(数字):"; cin>>salary; p->salary=salary; };break; case6: { charaddres[30]; cout<<"请输入要修改的住址:"; cin>>addres; p->addres=newchar[strlen(addres)+1]; strcpy(p->addres,addres); };break; case7: { chartele[20]; cout<<"请输入要修改的电话:"; cin>>tele; p->tele=newchar[strlen(tele)+1]; strcpy(p->tele,tele); };break; } cout<<endl<<"修改后:"<<endl; p->show1();} /************************showall显示所有信息************************/voidList::showall() { employee*p=phead->next; cout<<endl<<"-----------------------------"<<endl; cout<<"当前所有职工:"<<endl<<endl; cout<<"序号"<<"职工号"<<"姓名"<<"性别"<<"年龄"<<"学历"<<"工资"<<"住址"<<"电话"<<endl; cout<<"-----------------------------------------------------------------------------------------------"<<endl; for(;p;p=p->next) { cout<<p->ordernum<<""; p->show(); } cout<<endl<<"-----------------------------"<<endl; }/************************InfoAdd添加信息***************************/voidList::InfoAdd() { employee*p; charnum[20]; charname[10]; floatsal; charsex[4]; intsexnum; intage; charedu[10]; charaddres[50]; chartele[20]; cout<<"请输入新添加人员的职工号,姓名,性别,年龄,学历,工资,住址,电话:"<<endl; 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请输入职工年龄:"; cin>>age; 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); cout<<"添加后:"<<endl; showall();}/***********************SaveFile保存文件*************************/voidList::SaveFile(){ employee*p=phead->next; ofstreamsave_diskfile; save_diskfile.open("emplist.txt",ios::out|ios::trunc); if(!save_diskfile) { cout<<"打开文件失败"; return; } for(inti=0;i<num;i++) { save_diskfile<<p->num<<""<<p->name<<""<<p->sex<<""<<p->age<<""<<p->edu<<""<<p->salary<<""<<p->addres<<""<<p->tele<<endl; p=p->next; } save_diskfile.close();}/***********************List析构函数****************************/List::~List() {employee*p=phead->next; while(p) { phead->next=p->next; delete[]p->name; delete[]p->num; delete[]p->sex; delete[]p->edu; delete[]p->addres; delete[]p->tele; deletep; p=phead->next; } delete[]phead->name; delete[]phead->num; delete[]phead->sex; delete[]phead->edu; delete[]phead->addres; delete[]phead->tele; deletephead; phead=NULL;}/*************************Prompt弹出菜单函数********************/voidPrompt() { cout<<endl<<"---请选择菜单:------------------------"<<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;}/***************************ReadFile读取文件信息函数****************/voidReadFile(List&emp) { charline[150]; //职工成员信息 charnum[20];//职工号 charname[10];//姓名 charsex[4];//性别 intage;//年龄 charedu[10];//学历 floatsal;//工资 charaddres[50];//住址 chartele[20];//电话 char*pline=line; intflag=0; fstreamfileout("emplist.txt",ios::out|ios::app); if(!fileout) { cout<<"\n文件打开失败!"<<endl; } fileout<<''; fileout.close(); fstreamfileread("emplist.txt",ios::in); if(!fileread) { cout<<"\n文件打开失败!"<<endl; } charch; inti=0; fileread.get(ch); if(ch!='') { cout<<"\n~~~~~~文件中已有的记录:~~~~~~~"<<endl<<endl; fileread.seekg(0,ios::beg); while(!fileread.eof()) { i++; fileread.getline(line,sizeof(line)); cout<<""<<line<<endl; if(*pline!='') for(char*p=line,*q=line;*q!='\0';) { //读取职工号 sal=0; age=0; for(;*q!='';q++); *q='\0'; strcpy(num,p); q++; //读取姓名 for(;*q=='';q++); for(;p<q;p++); for(;*q!='';q++); *q='\0'; strcpy(name,p); q++; //读取性别 for(;*q=='';q++); for(;p<q;p++); for(;*q!='';q++); *q='\0'; strcpy(sex,p); q++; //读取年龄 for(;*q=='';q++); for(;p<q;p++); for(;*q!='';q++) { age=age*10+*q-'0'; } //读取学历 for(;*q=='';q++); for(;p<q;p++); for(;*q!='';q++); *q='\0'; strcpy(edu,p); q++; //读取工资 for(;*q=='';q++); for(;p<q;p++); for(;*q!='';q++) { if(*q=='.')break; }

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论