C++公司人员信息管理系统-课程设计报告
C语言课程设计报告职工信息管理系统设计
分析: 分析 适当的录入 提示, 更加方便了 用户的录入操作
5
分析:链表 分析 链表、 链表 结构指针的 使用大大方 便了信息的 查找定位。 值得注意的 是判断两字 符串内容是 否相同时需 用 到 strcmp 函数!
p=p->next; } printf(".^_^.查询结束!.^_^.\n"); return NULL; } /*按职工号删除职工信息*/ int del(PLINK p,int id) { message(); printf("按职工号删除职工信息\n"); while(NULL!=p->next) { if(p->next->w.id==id) { PLINK q=p->next; p->next=p->next->next; free(q); printf(".^_^.删除成功!.^_^.\n"); return 1; } p=p->next; } printf("没有你输入的职工号!\n"); return -1; } /*程序结束释放内存*/ void release(PLINK p) { PLINK q; while(NULL!=p->next) { q=p; p=p->next; free(q); } free(p); } /*查询调用*/ void search() { int id;
开始 主函数 载入模块
录 入 记 录 模 块
浏 览 记 录 模 块
删 除 记 录 模 块
修 改 记 录 模 块
按 姓 名
查 询 记 录 模 块
按 工 号 按 学 历
退 出 程 序 模 块
保存数据模块 保存数据模块 结束
C++公司人员信息管理系统-课程设计报告
目录1 系统需求分析 (1)2 总体设计 (2)3 详细设计及实现 (5)4 系统调试 (66)5 结论 (73)6心得体会 (70)7参考书目 (75)1 系统需求分析系统设计的目的与意义:现在的公司人员数量及职位种类较多,各样的人事管理活动也比较频繁,因此需要设计一个公司人员信息管理系统来对公司员工信息进行管理。
系统功能需求:本系统有五个类:基类:employee、派生类:manager、technician、salesman、salesmanager,储存经理、技术人员、销售人员、销售经理信息。
(1)添加功能程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。
(2)查询功能可根据编号、姓名等信息对已添加的记录进行查询。
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
(3)显示功能可显示当前系统中所有记录。
(4)修改功能可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除功能对已添加的人员记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。
(6)统计功能能根据多种参数进行人员的统计。
例如:统计四类人员数量以及总数,统计男、女员工的数量,统计平均工资、最高工资、最低工资等。
(7)保存功能将当前系统中各类人员记录存入文件中。
(8)读取功能将保存在文件中的人员信息读入到当前系统中,以供用户使用。
2 总体设计系统功能分析:系统通过调用函数来实现信息添加、信息查询、信息显示、信息修改、信息删除、以及数据读取保存文件等功能。
add()函数用于录入信息;search()函数用来查询信息;show()函数用来显示信息;alter()函数用来修改信息;del()函数用来删除信息;stat()函数用来统计信息read()函数用于将文件中的数据读取到内存中;save()函数用于将内存中的信息存入文件内;主函数main()用于调用这些函数。
C课程设计报告:公司员工管理系统
1公司员工管理系统(2014 届)《面向对象课程设计》课程设计报告课程设计题目:公司员工管理系统学院:软件学院专业:软件工程(电子商务)学生姓名:班级:学号:指导老师:2015年 6月 25日2公司员工管理系统目录1.需求分析 (2)2.具体要求 (2)3.总体设计 (3)4.详细设计 (4)5.测试结果 (13)6.软件操作说明书 (18)7.总结 (19)8.源代码 (19)公司员工管理系统课程设计报告1.需求分析根据对公司人员管理的需要,编写一个“公司人员管理系统”,以方便对公司人员数据的录入、修改、删除、显示、和查询功能。
2.具体要求设计一个虚基类 Staff(员工),包括编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff 派生出工程师类Engineer 包含专业和职称保护数据成员以及相关的成员函数,再由Staff 派生出领导类Leader,包括职务和部门保护数据成员以及相关的成员函数;然后由Engineer 和 Leader 类派生出主任工程师类Chairman。
具体实现以下要求:1.增加员工数据信息2.更新员工数据信息3公司员工管理系统3.查询员工数据信息4.删除员工数据信息5.良好的人际交互界面、方便操作3.总体设计根据问题描述和要求,系统要求能够按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。
确定程序至少应该具备如下功能:“增加各类人员数据”、“查询各类人员数据” 、“显示各类成员数据” 、“修改各类人员数据” 、“删除各类人员数据”、“各类人员数据存盘” 、“各类人员数据读入”基本模块。
公司人员管理系统添查删员员加询除工工员员员数数工工工据据数数数存读据据据盘盘图 3.1 程序基本功能结构图为体现面向对象编程的优点,本系统除过显示菜单函数、文件读写以及主函数为全局函数外,其他所有函数功能均封装于类之中。
4公司员工管理系统LeaderStaffList<T>共同派生Chairman(类模版 )Engineer图 3.2 类结构一览图4.详细设计本系统公有五个类,其中一个抽象类,一个模版类,三个派生类。
C语言课程设计报告:职工信息管理系统程序设计
1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。
流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。
流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。
c语言课程设计报告-人员管理系统
科技大学本科生课程设计说明书题目:C语言课程设计——人员管理系统学生:武飞学号:1376807331专业:计算机科学与技术班级:2013-3指导教师:王丽颖科技大学课程设计任务书目录科技大学课程设计任务书I第一章需求分析51.1引言51.2任务概述51.3数据描述51.4功能需求5第二章概要设计42.1总体设计42.2数据类型设计(或数据结构设计)42.3接口设计72.4运行界面设计8第三章详细设计63.1输入模块设计63.2输出模块设计103.3查找模块设计113.4保存及读取模块设计9第四章测试分析114.1测试程序执行情况11第五章用户手册(可选)145.1使用说明145.2运行说明14第六章课程设计总结15 附录:程序代码21参考文献24第一章需求分析1.1引言随着管理人数的增加,手动管理人员将会显得不方便。
这时就需要使用软件来实施人性化的管理。
1.2任务概述做一个程序对人员信息实现:新建文件、打开文件、输入记录、输出记录、查询记录、修改、插入和删除记录、保存文件、退出功能1.3数据描述●采用结构体来储存人员信息。
●人员信息包括、性别、年龄、号、个人简历。
●长度输入时不能超过10。
●性别输入时只能输入时一个字符w/m。
●长度输入时不能超过20 。
●个人简历长度输入时不能超过120。
1.4功能需求●新建文件、打开文件●输入记录、输出记录●查询记录(至少具有两种查询方式,例如以查询和以号查询)●修改、插入和删除记录●保存文件、退出第二章概要设计2.1总体设计2.2数据类型设计(或数据结构设计)typedef struct student{char name[M]; //char sex; //性别int year; //年龄char num[20]; //号char jian[120]; //个人简历}stu; //结构体储存2.3接口设计表2.1:函数列表xingming void xingming(stu st[],int n) 按查找xiugai void xiugai(stu st[],int n) 修改信息charu int charu(stu st[],int n) 插入信息shanchu void shanchu(stu st[],int n) 删除信息2.4运行界面设计第三章 详细设计3.1输入模块设计 int read(stu st[]){ int i=-1;system( "cls" );printf("\t\t* 1.更新成员信息 printf("\t\t***********************************\n");do{ i++;printf("请输入:\n"); scanf("%s",&st[i].name); if(atoi(st[i].name)>=0) {printf("请输入性别(w/m):\n"); scanf(" %c",&st[i].sex); printf("请输入年龄:\n"); scanf("%d",&st[i].year); printf("请输入号:\n"); scanf("%s",&st[i].num);printf("请输入简历:\n");scanf("%s",&st[i].jian);printf("输入为负数结束输入!\n");printf("\n") ;}else break;}while(st[i].num>0);printf("\n--------------------------------------------------------------------\n");printf("数据更新成功!\n");system("pause"); //按任意键继续return i;}3.2输出模块设计void print(stu st[],int n){int i;system( "cls" ); //清屏printf("\n--------------------------------------------------------------------\n");printf("编号\t\t性别\t年龄\t号\t\t简介\n");for(i=0;i<n;i++){printf("%d\t%s\t%c\t%d\t%-24s%s\n",i+1,st[i].name,st[i].sex,st[i].year,st[i].num,st[i].jian);}} 3.3查找模块设计void shenfenzheng(stu st[],int n) { char x[20]; int i;system( "cls" );printf("\t\t* 2.号查找 *\n"); printf("\t\t***********************************\n"); printf("输入你要查询的号:");scanf("%s",x);for(i=0;i<n;i++) { if(strcmp(st[i].num,x)==0) {printf("\t 性别\t 年龄\t 号\t\t 简介\n");printf("%s\t%c\t%d\t%s\t%s\n",st[i].name,st[i].sex,st[i].year,st[i].num,st[i].jian);printf("\n--------------------------------------------------------------------\n");system("pause"); return;}} printf("未找到!");printf("\n--------------------------------------------------------------------\n");system("pause");}void xingming(stu st[],int n){char x[10];int i;system( "cls" );printf("\t\t* 3.查找 *\n");printf("输入你要查询的:");scanf("%s",x); f or(i=0;i<n;i++) { if(strcmp(st[i].name,x)==0) {printf("\t 性别\t 年龄\t 号\t\t 简介\n");printf("%s\t %c\t%d\t%s\t%s\n",st[i].name,st[i].sex,st[i].year,st[i].num,st[i].jian);printf("\n--------------------------------------------------------------------\n");printf("按键返回!");getchar(); /*按任意健*/ getchar(); return;}}printf("未找到!");printf("\n--------------------------------------------------------------------\n");system("pause");}3.4保存及读取模块设计void xieru(stu st[],int n) { FILE *fp;if((fp=fopen("ren.txt","w"))==NULL){ printf("保存文件失败!\n"); return;}fwrite(st,sizeof(stu),n,fp); printf("保存成功!\n"); fclose(fp); system("pause");}int duqu(stu st[]) { FILE *fp; int i;if((fp=fopen("ren.txt","r"))==NULL) {printf("文件不存在!打开失败!\n");NNreturn 0;}for(i=0;!feof(fp);i++){fread(&st[i],sizeof(stu),1,fp);}fclose(fp);printf("读取成功!\n");system("pause");return i-1;}第四章测试分析4.1测试程序执行情况第五章用户手册(可选)5.1使用说明运行程序会显示菜单根据菜单输入编号实现相应功能;1.更新人员信息2.号查找3.查找4.修改信息5.插入信息6.删除信息7.输出信息8.保存文件9.读取文件0.退出5.2运行说明只有退出程序时。
C语言课程设计职工信息管理系统
集成测试
集成测试的定义:将各个模块组合起来进行测试,验证模块间的接口和交互是否正确 集成测试的目的:发现模块间的接口和交互问题,保证系统的稳定性和可靠性 集成测试的方法:自顶向下、自底向上、混合策略等 集成测试的步骤:模块划分、模块集成、集成测试、回归测试等
系统调试与优化
优化方法:优化算法、数据 结构、代码结构等
据库进行数据 存储和管理
接口:使用 RESTful API 进行前后端数
据交互
安全:使用 HTTPS进行数 据传输加密, 使用身份验证 和授权机制进 行用户身份验 证和权限控制
性能优化:使 用缓存、异步 处理等技术进
行性能优化
系统需求分析
用户需求
员工信息管理:包括员工 基本信息、职位、薪资等
员工考勤管理:记录员工 上下班时间、请假、加班 等信息
系统部署与维护
系统部署方案
硬件需求:服务器、网络设备、存储设备等 软件需求:操作系统、数据库管理系统、应用服务器等 部署步骤:安装操作系统、安装数据库管理系统、安装应用服务器、部署应用系统等 维护方案:定期备份数据、定期检查系统运行情况、定期更新系统软件等
系统运行环境配置
操作系统:Windows、Linux、Mac OS等
技术需求
编程语言:C语言
数据库:SQL Server或MySQL
用户界面:Windows Forms或Web Forms
功能模块:员工信息管理、考勤管理、 薪资管理等
性能要求:响应速度快,数据安全可靠
兼容性:支持Windows操作系统,兼 容主流浏览器
系统设计
数据结构设计
数据类型:包括职工信息、 部门信息、职位信息等
员工绩效管理:记录员工 工作表现、绩效考核等信 息
c人员管理系统课程设计
c 人员管理系统课程设计一、课程目标知识目标:1. 学生能理解人员管理系统的基本概念、功能及在企事业单位中的应用。
2. 学生能掌握人员管理系统中的数据结构、操作流程和信息录入、查询、修改等基本操作。
3. 学生了解人员管理系统在提高工作效率、优化资源配置等方面的优势。
技能目标:1. 学生能运用所学知识,设计简单的人员管理系统,实现员工信息的录入、查询、修改和删除功能。
2. 学生能通过实际操作,掌握人员管理系统的使用方法,提高实际操作能力。
3. 学生能运用人员管理系统进行数据分析,为企事业单位提供决策支持。
情感态度价值观目标:1. 学生通过学习人员管理系统,认识到信息技术在现代社会中的重要作用,增强对信息技术的兴趣和认同。
2. 学生在团队协作中,培养沟通与协作能力,提高解决问题的能力。
3. 学生在学习过程中,关注企事业单位的人员管理问题,培养社会责任感和主人翁意识。
本课程针对高年级学生,结合学科特点和教学要求,注重理论与实践相结合,以培养学生实际操作能力和解决问题的能力为核心。
通过本课程的学习,使学生能够掌握人员管理系统的基本知识和技能,为未来从事相关工作奠定基础。
同时,注重培养学生的情感态度价值观,提高学生的综合素质。
课程目标的设定具有针对性和可衡量性,便于教学设计和评估。
二、教学内容1. 人员管理系统概述:介绍人员管理系统的发展背景、基本概念、功能特点及在企事业单位中的应用。
- 教材章节:第一章 人员管理系统概述2. 人员管理系统数据结构:讲解人员管理系统中的数据表结构、字段设置及其关系。
- 教材章节:第二章 数据结构设计3. 人员管理系统操作流程:分析人员管理系统的操作流程,包括信息录入、查询、修改、删除等。
- 教材章节:第三章 操作流程与功能模块4. 人员管理系统应用实例:通过案例分析,使学生了解人员管理系统在实际工作中的应用。
- 教材章节:第四章 应用实例5. 实践操作与技能训练:指导学生进行人员管理系统的实际操作,培养动手能力和解决问题的能力。
C语言课程设计报告 职工信息管理系统
case 0: exit(); } printf("\n\n 操作完毕,请再次选择!"); } else printf("\n\n 选择错误,请再次选择!"); } } 2 数据添加 【程序】
void append() { if((fp=fopen("worker.xls","a"))==NULL) { printf("\n 不能打开该文件!"); exit(); } printf("\n 请输入添加职工信息(姓名、职工号、性别、年龄、学历、职位、 工资、电话、地址)\n"); scanf("%s%s%s%s%s%s%s%s%s",,one.num,one.sex,one.age,one.recor d,one.position,one.wanges,one.tel,one.addr); fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.n um,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); fclose(fp); }
5 数据删除 【程序】
void delete() { int m,k=0; long a,b; char namekey[8], valid[4]; printf("\n 请输入您要删除的职工姓名:"); scanf("%s",namekey); if((fp=fopen("worker.xls","r+"))==NULL) { printf("\n 不能打开该文件!"); exit(); } while(!feof(fp)) { a=ftell(fp); fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",,one.num,one.sex,one.age,one. record,one.position,one.wanges,one.tel,one.addr); if(strcmp(namekey,)==0) { k=1; break; } } if(k==1) {
c人事管理系统课程设计
c人事管理系统课程设计一、课程目标知识目标:1. 理解人事管理系统的基本概念、功能及在企业管理中的应用;2. 掌握人事管理系统的主要模块,如员工信息管理、薪资管理、考勤管理等;3. 学会使用数据库管理人事数据,了解数据查询、更新、删除等基本操作。
技能目标:1. 能够运用所学知识,设计简单的人事管理系统功能模块;2. 学会使用至少一种编程语言(如Java、C#等)实现人事管理系统的部分功能;3. 提高分析问题、解决问题的能力,通过实际操作,学会调试和优化系统。
情感态度价值观目标:1. 培养学生对信息技术学科的兴趣,提高学习积极性;2. 增强学生的团队协作意识,学会与他人共同解决问题;3. 培养学生的创新意识,鼓励敢于尝试、勇于探索的精神。
课程性质:本课程为信息技术学科,旨在让学生了解并掌握人事管理系统的基本知识和技能,提高实际操作能力。
学生特点:学生为高中年级,已具备一定的计算机操作能力和编程基础,对实际应用场景感兴趣。
教学要求:结合课程性质和学生特点,注重理论联系实际,强调实践操作,培养学生的学习兴趣和动手能力。
将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 人事管理系统概述- 了解人事管理系统的概念、作用及发展历程;- 分析人事管理系统在实际企业中的应用场景。
2. 人事管理系统模块介绍- 员工信息管理:学习如何录入、查询、修改和删除员工信息;- 薪资管理:掌握薪资计算、发放及个人所得税处理方法;- 考勤管理:了解考勤制度,学习如何进行考勤数据统计和分析;- 招聘管理:了解招聘流程,学习如何发布招聘信息、筛选简历等。
3. 数据库技术在人事管理系统中的应用- 学习数据库基础知识,如数据表、字段、数据类型等;- 掌握数据库设计原则,学会使用SQL语言进行数据操作;- 结合人事管理系统,设计数据库表结构,实现数据存储和管理。
4. 编程语言实现人事管理系统功能- 选择一种编程语言(如Java、C#等),学习其基本语法和应用;- 结合实际需求,编写程序实现人事管理系统的部分功能;- 学会调试程序,优化系统性能。
c语言职工信息管理系统课程设计
c语言职工信息管理系统 课程设计一、课程目标知识目标:1. 学生能理解C语言中结构体的概念,掌握结构体在职工信息管理中的运用。
2. 学生能掌握文件操作的基本方法,实现对职工信息数据的存储与读取。
3. 学生了解并掌握C语言中字符串处理、数据排序等基本算法。
技能目标:1. 学生能够运用C语言编写简单的职工信息管理系统,实现职工信息的增加、删除、修改和查询功能。
2. 学生能够利用结构体和文件操作,实现数据的持久化存储。
3. 学生能够运用所学知识解决实际问题,提高编程实践能力。
情感态度价值观目标:1. 学生通过课程学习,培养对计算机编程的兴趣和热情,激发创新精神。
2. 学生能够认识到编程在现实生活中的应用价值,提高对信息技术的认识。
3. 学生在课程实践过程中,培养团队合作意识,提高沟通与协作能力。
课程性质:本课程为C语言编程实践课程,旨在让学生通过职工信息管理系统的设计与实现,掌握C语言的基本知识和编程技能。
学生特点:本课程面向高中生,学生对C语言有一定了解,具备基本的编程能力,但实践经验不足。
教学要求:结合学生特点和课程性质,教师需注重理论与实践相结合,引导学生通过动手实践,提高编程能力和解决实际问题的能力。
教学过程中,注重培养学生的自主学习能力和团队合作精神。
通过本课程的学习,使学生能够达到上述课程目标,为后续课程打下坚实基础。
二、教学内容1. 结构体的定义和使用:以职工信息管理系统为例,讲解结构体的定义方法,如何定义职工信息结构体,以及结构体在程序中的使用。
相关教材章节:C语言基础,结构体与共用体。
2. 文件操作:介绍文件的基本操作,如文件的打开、关闭、读写等,结合职工信息管理系统,实现数据的持久化存储。
相关教材章节:文件操作,数据存储。
3. 字符串处理:讲解字符串的基本操作,如字符串的连接、比较、查找等,应用于职工信息管理系统中的输入输出处理。
相关教材章节:字符串处理。
4. 数据排序算法:介绍一种简单的排序算法,如冒泡排序、选择排序等,应用于职工信息的排序显示。
C++公司人员信息管理系统-课程设计报告
if(M[i].number==num)
{
cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"月薪"<<endl;
M[i].output();
cout<<"请选择修改范围:1、全部修改2、修改编号3、修改姓名4、修改性别"<<endl;
read();
if(top1==0)
{
cout<<"无数据!"<<endl;
return;
}
cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"月薪"<<endl;
for(int i=0;i<top1;i++)
M[i].output();
system("cls");
ifstream inflie("经理.txt",ios::in);
C++公司人员信息管理系统-课程设计报告
目录1 系统需求分析 (1)2 总体设计 (2) (92)图3.13 经理信息修改界面 (92)5 结论 (94)6 心得体会 (95)1. 谭浩强.C++面向对象程序设计[M].北京:清华大学出版社,2014. (96)2. S.B.Lippman,Joie.C++ Primer(中文版)[M].4版.李师贤,译.北京:电子工业出版社,2007. (96)1 系统需求分析1.1系统设计的目的与意义:现在的公司人员数量及职位种类较多,各样的人事管理活动也比较频繁,因此需要设计一个公司人员信息管理系统来对公司员工信息进行管理。
1.2 系统功能需求:本系统有五个类:基类:employee、派生类:manager、technician、salesman、salesmanager,储存经理、技术人员、销售人员、销售经理信息。
(1)添加功能程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。
(2)查询功能可根据编号、姓名等信息对已添加的记录进行查询。
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
(3)显示功能可显示当前系统中所有记录。
(4)修改功能可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除功能对已添加的人员记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。
(6)统计功能能根据多种参数进行人员的统计。
例如:统计四类人员数量以及总数,统计男、女员工的数量,统计平均工资、最高工资、最低工资等。
(7)保存功能将当前系统中各类人员记录存入文件中。
(8)读取功能将保存在文件中的人员信息读入到当前系统中,以供用户使用。
2 总体设计2.1 系统功能分析:系统通过调用函数来实现信息添加、信息查询、信息显示、信息修改、信息删除、以及数据读取保存文件等功能。
C课程设计报告公司人员管理系统
C课程设计报告公司人员管理系统Company number【1089WT-1898YT-1W8CB-9UUT-92108】内蒙古科技大学《面向对象程序设计》课程设计报告设计题目:公司人员管理系统学院:信息学院专业:电子信息工程班级:xxxxx班学号:xxxxxxxxxx学生姓名: xxxxxxxxx指导教师:余金林2011.6内蒙古科技大学课程设计任务书一、教学要求1. 巩固和加深学生对C++语言课程的基本知识的理解和掌握2. 掌握C++语言编程和程序调试的基本技能3. 利用C++语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C++语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,可根据设计内容适当修改题目名称。
公司人员管理系统定义人员基类,并派生出兼职技术人员类、经理类、部门管理人员类并在类中声明各自的成员函数;要求至少设计以下各功能模块:输入记录查询功能计算工资显示信息三、设计要求及成果1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用4. 设计完成后提交课程设计报告四、进度安排资料查阅与讨论(1天)系统分析(2天)系统的开发与测试(5天)编写课程设计说明书和验收(2天)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。
3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
六、建议参考资料1.《C++面向对象程序设计》,吴敏、杨国林主编,内蒙古大学出版社2.《C++语言程序设计(第三版)》,郑莉,清华大学出版社目录一.摘要——————————————二.需求分析————————————三.概要设计————————————四.详细设计———————————五.总结——————————————六.参考文献————————————一.摘要C++简介:Stroustrup工作起于1979年的C with Classes。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1 系统需求分析 (3)2 总体设计 (4)3 详细设计及实现 (7)4 系统调试 (69)5 结论 (73)6心得体会 (74)7参考书目 (75)1 系统需求分析1.1系统设计的目的与意义:现在的公司人员数量及职位种类较多,各样的人事管理活动也比较频繁,因此需要设计一个公司人员信息管理系统来对公司员工信息进行管理。
1.2系统功能需求:本系统有五个类:基类:employee、派生类:manager、technician、salesman、salesmanager,储存经理、技术人员、销售人员、销售经理信息。
(1)添加功能程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。
(2)查询功能可根据编号、姓名等信息对已添加的记录进行查询。
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
(3)显示功能可显示当前系统中所有记录。
(4)修改功能可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除功能对已添加的人员记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。
(6)统计功能能根据多种参数进行人员的统计。
例如:统计四类人员数量以及总数,统计男、女员工的数量,统计平均工资、最高工资、最低工资等。
(7)保存功能将当前系统中各类人员记录存入文件中。
(8)读取功能将保存在文件中的人员信息读入到当前系统中,以供用户使用。
2 总体设计2.1 系统功能分析:系统通过调用函数来实现信息添加、信息查询、信息显示、信息修改、信息删除、以及数据读取保存文件等功能。
add()函数用于录入信息;search()函数用来查询信息;show()函数用来显示信息;alter()函数用来修改信息;del()函数用来删除信息;stat()函数用来统计信息read()函数用于将文件中的数据读取到内存中;save()函数用于将内存中的信息存入文件内;主函数main()用于调用这些函数。
2.2系统功能模块划分与设计:系统定义了manger类、technician类、salesman类、salesmanger类这四个类,定义了add()、search()、show()、alter()、del()、stat()、read()、save()、input()、output()等函数来实现系统所需功能。
2.3 系统功能模块图:2.4 类的设计(1)employee类(抽象类)的设计图 3.1 employee类(2)经理类的设计图 3.2经理类(3)技术人员类的设计图3.3技术人员类(4)销售人员类的设计图3.4 销售人员类(5)成绩类的设计图3.5销售经理类(6)各个类的关系描述3 详细设计及实现3.1 employee类(抽象类)的实现#include<string>using namespace std;class employee{public:employee(void);~employee(void);virtual void add()=0;virtual void search()=0;virtual void show()=0;virtual void alter()=0;virtual void del()=0;virtual void stat()=0;virtual void save()=0;virtual void read()=0;virtual void input()=0;virtual void output()=0;protected:string number;string name;string sex;string department;string rank;float salary;};3.2经理类的实现manager.h#include "employee.h"class manager :virtual public employee{public:manager(void);~manager(void);void add();void search();void show();void alter();void del();void stat();void save();void read();void input();void output();};manager.cpp#include "StdAfx.h"#include "manager.h"#include<iostream>#include<fstream>#include<string>#include<iomanip>using namespace std;const int MAX=100;manager M[MAX];int static top1=0;manager::manager(void){}manager::~manager(void){}void manager::input(){cout<<"输入编号:"<<endl;cin>>number;cout<<"输入姓名:"<<endl;cin>>name;cout<<"输入性别:"<<endl;cin>>sex;cout<<"输入部门:"<<endl;cin>>department;cout<<"输入级别:"<<endl;cin>>rank;cout<<"输入固定月薪:"<<endl;cin>>salary;}void manager::output(){ cout<<number<<"\t"<<name<<"\t"<<sex<<"\t"<<department<<"\t"<<rank<<"\t "<<salary<<endl;}void manager::read(){top1=0;system("cls");ifstream inflie("经理.txt",ios::in);if(!inflie){cout<<"打开失败!"<<endl;return;}int i=0;while(inflie>>M[i].number>>M[i].name>>M[i].sex>>M[i].department>>M[i].ra nk>>M[i].salary){i++;top1=i;}inflie.close();}void manager::save(){ofstream outflie("经理.txt",ios::out);if(!outflie){cout<<"打开失败!"<<endl;return;}int i;for(i=0;i<top1;i++){outflie<<M[i].number<<"\t"<<M[i].name<<"\t"<<M[i].sex<<"\t"<<M[i].departm ent<<"\t"<<M[i].rank<<"\t"<<M[i].salary<<endl;}cout<<"保存成功!"<<endl;outflie.close();}void manager::add(){system("cls");read();if(top1>=MAX){cout<<"人员已满"<<endl;return;}cout<<"输入要添加的编号:"<<endl;string n;cin>>n;for(int i=0;i<top1;i++)if(n==M[i].number){cout<<"该编号的人员已存在"<<endl;return;}manager m;cout<<"请再次输入新添加人员的信息"<<endl;m.input();cout<<"是否确认添加?1、是2、否"<<endl;int a;cin>>a;if(a==1){M[top1]=m;top1=top1+1;save();}else{cout<<"放弃添加"<<endl;return;}}void manager::search(){system("cls");read();if(top1==0){cout<<"当前系统没有储存记录!"<<endl;return;}int choice;cout<<"请选择查找方式:1、按编号查找2、按姓名查找0、退出"<<endl;cin>>choice;switch(choice){case 1:{cout<<"请输入要查找的编号:"<<endl;string num;cin>>num;for(int i=0;i<top1;i++){if(M[i].number==num){cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"月薪"<<endl;M[i].output();return;}}cout<<"查无此人!"<<endl;};break;case 2:{cout<<"请输入要查找的姓名"<<endl;string name;cin>>name;for(int i=0;i<top1;i++){if(M[i].name==name){cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"月薪"<<endl;M[i].output();}}cout<<"查无此人!"<<endl;};break;case 0:break;default:cout<<"输入错误!请输入0~3的数字"<<endl;system("pause");search();break;}}void manager::show(){system("cls");read();if(top1==0){cout<<"无数据!"<<endl;return;}cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"月薪"<<endl;for(int i=0;i<top1;i++)M[i].output();}void manager::alter(){system("cls");read();if(top1==0){cout<<"当前系统没有储存记录"<<endl;return;}string num;cout<<"请输入要修改的经理编号:"<<endl;cin>>num;for(int i=0;i<top1;i++){if(M[i].number==num){cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"月薪"<<endl;M[i].output();cout<<"请选择修改范围:1、全部修改2、修改编号3、修改姓名4、修改性别"<<endl;cout<<" 5、修改部门6、修改级别7、修改月薪"<<endl;cout<<" 0、退出修改"<<endl;int choice;cin>>choice;switch(choice){case 1:{cout<<"输入修改后的编号:"<<endl;string n;cin>>n;for(int j=0;j<top1;j++)if(n==M[j].number){cout<<"该编号的人员已存在"<<endl;return;}cout<<"输入修改后的姓名:"<<endl;string na;cin>>na;cout<<"输入修改后的性别:"<<endl;string s;cin>>s;cout<<"输入修改后的部门:"<<endl;string d;cin>>d;cout<<"输入修改后的级别:"<<endl;string r;cin>>r;cout<<"输入修改后的月薪:"<<endl;float sa;cin>>sa;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1){M[i].number=n;M[i].name=na;M[i].sex=s;M[i].department=d;M[i].rank=r;M[i].salary=sa;}else{cout<<"放弃修改"<<endl;return;}save();};break;case 2:{cout<<"请输入修改后的编号"<<endl;string n;cin>>n;for(int i=0;i<top1;i++)if(n==M[i].number){cout<<"该编号的人员已存在"<<endl;return;}cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1)M[i].number=n;else{cout<<"放弃修改"<<endl;return;}save();};break;case 3:{cout<<"请输入修改后的姓名"<<endl;string na;cin>>na;M[i].name=na;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1)M[i].name=na;else{cout<<"放弃修改"<<endl;return;}save();};break;case 4:{cout<<"请输入修改后的性别"<<endl;string s;cin>>s;M[i].sex=s;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1)M[i].sex=s;else{cout<<"放弃修改"<<endl;return;}save();};break;case 5:{cout<<"请输入修改后的部门"<<endl;string d;cin>>d;M[i].department=d;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1)M[i].department=d;else{cout<<"放弃修改"<<endl;return;}save();};break;case 6:{cout<<"请输入修改后级别"<<endl;string r;cin>>r;M[i].rank=r;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1)M[i].rank=r;else{cout<<"放弃修改"<<endl;return;}save();};break;case 7:{cout<<"请输入修改后的月薪"<<endl;float sa;cin>>sa;M[i].salary=sa;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1)M[i].salary=sa;else{cout<<"放弃修改"<<endl;return;}save();};break;case 0:cout<<"退出修改"<<endl;return;break;default:cout<<"无此选项!请输入0~7的数字"<<endl;system("pause");break;}cout<<"修改完成"<<endl;return;}}cout<<"查无此人"<<endl;}void manager::del(){system("cls");read();if(top1==0){cout<<"当前系统没有储存记录"<<endl;return;}int choice;cout<<"请删除查找方式:1、按编号删除2、按姓名删除0、退出"<<endl;cin>>choice;switch(choice){case 1:{cout<<"请输入所要删除人员的编号:"<<endl;string num;cin>>num;for(int i=0;i<top1;i++){if(M[i].number==num){cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"月薪"<<endl;M[i].output();cout<<"是否确认删除?1、是2、否"<<endl;int choice;cin>>choice;switch(choice){case 1:{for(int j=i;j<top1;j++)M[j]=M[j+1];cout<<"删除成功!"<<endl;top1=top1-1;};save();break;case 2:return;default:cout<<"没有此选项!"<<endl;}return;}}cout<<"无此人!"<<endl;};system("pause");del();break;case 2:{cout<<"请输入所要删除人员的姓名:"<<endl;string name;cin>>name;for(int i=0;i<top1;i++){if(M[i].name==name){cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"月薪"<<endl;M[i].output();cout<<"是否确认删除?1、是2、否"<<endl;int choice;cin>>choice;switch(choice){case 1:{for(int j=i;j<top1;j++)M[j]=M[j+1];cout<<"删除成功!"<<endl;top1=top1-1;};save();break;case 2:return;default:cout<<"没有此选项!"<<endl;}}}return;cout<<"无此人!"<<endl;};break;case 0:break;default:cout<<"输入错误!请输入0~3的数字"<<endl;system("pause");del();break;}save();}void manager::stat(){system("cls");read();int choice;cout<<"1、人数统计2、性别统计3、平均工资4、最高工资5、最低工资0、退出"<<endl;cout<<"请输入所要执行的编号:"<<endl;cin>>choice;switch(choice){case 1:cout<<"经理的人数为:"<<top1<<endl;system("pause");stat();break;case 2:{int a=0,b=0;string Y="男";string X="女";for(int i=0;i<top1;i++){if(M[i].sex==Y)a++;if(M[i].sex==X)b++;}cout<<"男性人数:"<<a<<endl;cout<<"女性人数:"<<b<<endl;};system("pause");stat();break;case 3:{float ave_salary=0;float all_salary=0;for(int i=0;i<top1;i++){all_salary=M[i].salary+all_salary;}ave_salary=all_salary/top1;cout<<"平均工资:"<<ave_salary;};system("pause");stat();break;case 4:{float max_salary=0;for(int i=0;i<top1-1;i++){if(M[i].salary>M[i+1].salary){max_salary=M[i].salary;M[i+1].salary=max_salary;}elsemax_salary=M[i+1].salary;}cout<<"最高工资:"<<max_salary;};system("pause");stat();break;case 5:{float min_salary=0;for(int i=0;i<top1-1;i++){if(M[i].salary<M[i+1].salary){min_salary=M[i].salary;M[i+1].salary=min_salary;}elsemin_salary=M[i+1].salary;}cout<<"最低工资:"<<min_salary;};system("pause");stat();break;case 0:break;default: cout<<"无此选项!请输入0~5的数字"<<endl;system("pause");stat();break;}}3.3技术人员类的实现technician.h#include "employee.h"class technician :public employee{public:technician(void);~technician(void);void add();void search();void show();void alter();void del();void stat();void save();void read();void input();void output();protected:float work_time;float time_salary;};technician.cpp#include "StdAfx.h"#include "technician.h"#include<iostream>#include<fstream>#include<string>#include<iomanip>using namespace std;const int MAX=100;technician T[MAX];int static top2=0;technician::technician(void){}technician::~technician(void){}void technician::input(){cout<<"请输入输入编号:"<<endl;cin>>number;cout<<"请输入输入姓名:"<<endl;cin>>name;cout<<"请输入输入性别:"<<endl;cin>>sex;cout<<"请输入输入部门:"<<endl;cin>>department;cout<<"请输入输入级别:"<<endl;cin>>rank;cout<<"请输入输入工时:"<<endl;cin>>work_time;cout<<"请输入输入时薪:"<<endl;cin>>time_salary;salary=time_salary*work_time;}void technician::output(){ cout<<number<<"\t"<<name<<"\t"<<sex<<"\t"<<department<<"\t"<<rank<<"\t" <<work_time<<"\t"<<time_salary<<"\t"<<salary<<endl;}void technician::read(){top2=0;system("cls");ifstream inflie("技术人员.txt",ios::in);if(!inflie){cout<<"打开失败!"<<endl;return;}int i=0;while(inflie>>T[i].number>>T[i].name>>T[i].sex>>T[i].department>>T[i].rank> >T[i].work_time>>T[i].time_salary>>T[i].salary){i++;top2=i;}inflie.close();}void technician::save(){ofstream outflie("技术人员.txt",ios::out);if(!outflie){cout<<"打开失败!"<<endl;return;}int i;for(i=0;i<top2;i++){outflie<<T[i].number<<"\t"<<T[i].name<<"\t"<<T[i].sex<<"\t"<<T[i].departmen t<<"\t"<<T[i].rank<<"\t"<<T[i].work_time<<"\t"<<T[i].time_salary<<"\t"<<T[i].sala ry<<endl;}cout<<"保存成功!"<<endl;outflie.close();}void technician::add(){system("cls");read();if(top2>=MAX){cout<<"人员已满"<<endl;return;}cout<<"输入要添加的编号:"<<endl;string n;cin>>n;for(int i=0;i<top2;i++)if(n==T[i].number){cout<<"该编号的人员已存在"<<endl;return;}technician t;cout<<"请再次输入新添加人员的信息"<<endl;t.input();cout<<"是否确认添加?1、是2、否"<<endl;int a;cin>>a;if(a==1){T[top2]=t;top2=top2+1;save();}else{cout<<"放弃添加"<<endl;return;}}void technician::search(){system("cls");read();if(top2==0){cout<<"当前系统没有储存记录!"<<endl;return;}int choice;cout<<"请选择查找方式:1、按编号查找2、按姓名查找0、退出"<<endl;cin>>choice;switch(choice){case 1:{cout<<"请输入要查找的编号:"<<endl;string num;cin>>num;for(int i=0;i<top2;i++){if(T[i].number==num){cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"工时"<<"\t"<<"时薪"<<"\t"<<"月薪"<<endl;T[i].output();return;}}cout<<"查无此人!"<<endl;};break;case 2:{cout<<"请输入要查找的姓名"<<endl;string name;cin>>name;for(int i=0;i<top2;i++){if(T[i].name==name){cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"工时"<<"\t"<<"时薪"<<"\t"<<"月薪"<<endl;T[i].output();return;}}cout<<"查无此人!"<<endl;};break;case 0:break;default:cout<<"输入错误!请输入0~3的数字"<<endl;system("pause");search();break;}}void technician::show(){system("cls");read();if(top2==0){cout<<"无数据!"<<endl;return;}cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"工时"<<"\t"<<"时薪"<<"\t"<<"月薪"<<endl;for(int i=0;i<top2;i++)T[i].output();}void technician::alter(){system("cls");read();if(top2==0){cout<<"当前系统没有储存记录"<<endl;return;}string num;cout<<"请输入要修改的技术人员编号:"<<endl;cin>>num;for(int i=0;i<top2;i++){if(T[i].number==num){cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"工时"<<"\t"<<"时薪"<<"\t"<<"月薪"<<endl;T[i].output();cout<<"请选择修改范围:1、全部修改2、修改编号3、修改姓名4、修改性别"<<endl;cout<<" 5、修改部门6、修改级别7、修改工时8、修改时薪"<<endl;cout<<" 0、退出修改"<<endl;int choice;cin>>choice;switch(choice){case 1:{cout<<"输入修改后的编号:"<<endl;string n;cin>>n;for(int j=0;j<top2;j++)if(n==T[j].number){cout<<"该编号的人员已存在"<<endl;return;}cout<<"输入修改后的姓名:"<<endl;string na;cin>>na;cout<<"输入修改后的性别:"<<endl;string s;cin>>s;cout<<"输入修改后的部门:"<<endl;string d;cin>>d;cout<<"输入修改后的级别:"<<endl;string r;cin>>r;cout<<"输入修改后的工时:"<<endl;float wt;cin>>wt;cout<<"输入修改后的工时:"<<endl;float ts;cin>>ts;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1){T[i].number=n;T[i].name=na;T[i].sex=s;T[i].department=d;T[i].rank=r;T[i].work_time=wt;T[i].time_salary=ts;T[i].salary=wt*ts;}else{cout<<"放弃修改"<<endl;return;}save();};break;case 2:{cout<<"请输入修改后的编号"<<endl;string n;cin>>n;for(int i=0;i<top2;i++)if(n==T[i].number){cout<<"该编号的人员已存在"<<endl;return;}cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1)T[i].number=n;else{cout<<"放弃修改"<<endl;return;}save();};break;case 3:{cout<<"请输入修改后的姓名"<<endl;string na;cin>>na;T[i].name=na;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1)T[i].name=na;else{cout<<"放弃修改"<<endl;return;}save();};break;case 4:{cout<<"请输入修改后的性别"<<endl;string s;cin>>s;T[i].sex=s;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1)T[i].sex=s;else{cout<<"放弃修改"<<endl;return;}save();};break;case 5:{cout<<"请输入修改后的部门"<<endl;string d;cin>>d;T[i].department=d;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1)T[i].department=d;else{cout<<"放弃修改"<<endl;return;}save();};break;case 6:{cout<<"请输入修改后级别"<<endl;string r;cin>>r;T[i].rank=r;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1)T[i].rank=r;else{cout<<"放弃修改"<<endl;return;}save();};break;case 7:{cout<<"请输入修改后的工时"<<endl;float wt;cin>>wt;T[i].work_time=wt;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1){T[i].work_time=wt;T[i].salary=T[i].time_salary*wt;}else{cout<<"放弃修改"<<endl;return;}save();};break;case 8:{cout<<"请输入修改后的时薪"<<endl;float ts;cin>>ts;T[i].time_salary=ts;cout<<"是否确认修改?1、是2、否"<<endl;int a;cin>>a;if(a==1){T[i].time_salary=ts;T[i].salary=T[i].work_time*ts;}else{cout<<"放弃修改"<<endl;return;}save();};break;case 0:cout<<"退出修改"<<endl;return;break;default:cout<<"无此选项!请输入0~8的数字"<<endl;system("pause");break;}cout<<"修改完成"<<endl;return;}}cout<<"查无此人"<<endl;}void technician::del(){system("cls");read();if(top2==0){cout<<"当前系统没有储存记录"<<endl;return;}int choice;cout<<"请删除查找方式:1、按编号删除2、按姓名删除0、退出"<<endl;cin>>choice;switch(choice){case 1:{cout<<"请输入所要删除人员的编号:"<<endl;string num;cin>>num;for(int i=0;i<top2;i++){if(T[i].number==num){cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"工时"<<"\t"<<"时薪"<<"\t"<<"月薪"<<endl;T[i].output();cout<<"是否确认删除?1、是2、否"<<endl;int choice;cin>>choice;switch(choice){case 1:{for(int j=i;j<top2;j++)T[j]=T[j+1];cout<<"删除成功!"<<endl;top2=top2-1;};save();break;case 2:return;default:cout<<"没有此选项!"<<endl;}return;}}cout<<"无此人!"<<endl;};system("pause");del();break;case 2:{cout<<"请输入所要删除人员的姓名:"<<endl;string name;cin>>name;for(int i=0;i<top2;i++){if(T[i].name==name){cout<<"编号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"部门"<<"\t"<<"级别"<<"\t"<<"工时"<<"\t"<<"时薪"<<"\t"<<"月薪"<<endl;T[i].output();cout<<"是否确认删除?1、是2、否"<<endl;int choice;cin>>choice;switch(choice){case 1:{for(int j=i;j<top2;j++)T[j]=T[j+1];cout<<"删除成功!"<<endl;top2=top2-1;};save();break;case 2:break;default:cout<<"没有此选项!"<<endl;}}}return;cout<<"无此人!"<<endl;};system("pause");del();break;case 0:break;default:cout<<"输入错误!请输入0~3的数字"<<endl;system("pause");del();break;}save();}void technician::stat(){system("cls");read();int choice;cout<<"1、人数统计2、性别统计3、平均工资4、最高工资5、最低工资0、退出"<<endl;cout<<"请输入所要执行的编号:"<<endl;cin>>choice;switch(choice){case 1:cout<<"技术人员的人数为:"<<top2<<endl;system("pause");stat();break;case 2:{int a=0,b=0;string Y="男";string X="女";for(int i=0;i<top2;i++){if(T[i].sex==Y)a++;if(T[i].sex==X)b++;}cout<<"男性人数:"<<a<<endl;cout<<"女性人数:"<<b<<endl;};system("pause");stat();break;。