C++实现员工信息管理系统:基础训练与功能详解

版权申诉
0 下载量 29 浏览量 更新于2024-06-27 收藏 312KB DOC 举报
"软件基础训练公司职员信息管理" 本训练项目主要关注的是开发一款用于公司职员信息管理的程序,旨在帮助用户实现对员工信息的有效管理和维护。这个系统涉及到多个功能,包括员工信息的输入、查询、修改、删除以及与薪资和级别相关的操作。以下是基于给定内容的关键知识点和实现细节: 1. **程序设计要求** - 需要存储的员工信息包括姓名、性别、出生日期、技术特长、血型、星座、参加工作时间、接入公司时间、联系电话、编号、级别和当月工资等。 - 员工编号从1开始递增,根据职务不同,级别也会有所不同,例如总经理为4级,技术经理和销售经理为3级,技术人员为2级,销售人员为1级。 - 薪资计算方法根据员工职务不同而异,涉及固定月薪和奖金或销售提成。 2. **面向对象程序设计** - 设计了一个基类`employee`,并派生出`technician`、`manager`和`saleman`三个子类,利用继承和派生实现不同职务员工的特性。 - 职员信息需要持久化存储,这通常涉及到文件操作,如读取和写入员工数据。 3. **主要功能模块** - **新员工录入**:输入新员工的所有信息,并保存至文件。 - **信息查询**:按员工编号或姓名查询员工的详细信息。 - **信息修改**:允许修改员工的某些属性,如级别或薪资,并更新文件。 - **离职处理**:删除离职员工的信息,同时维护员工编号的连续性。 - **级别管理**:根据员工表现进行级别提升,更新员工的级别信息。 - **薪资管理**:根据销售业绩和考核结果计算并调整员工薪资。 - **考核管理**:记录和处理员工的考核成绩,作为薪资调整和级别晋升的依据。 4. **技术实现** - 使用C++编程语言,利用其面向对象特性,包括类的定义、继承和派生。 - **核心函数**:`Input()`用于信息输入,`enlarge()`增加员工,`delete()`删除员工,`alt`可能是“alter”或“alternative”,代表信息修改功能。 - **文件操作**:通过文件流(fstream)库处理数据的读写,确保数据在程序运行间的持久性。 - **菜单驱动**:通过主函数中的`switch`语句实现交互式用户界面,提供清晰的操作选项。 这个项目不仅涵盖了基础的C语言程序设计,如数组和指针的使用,还强调了C++的面向对象特性,包括类的构建、继承和多态。此外,文件操作、函数调用和权限控制也是重要的学习点。通过这个训练,开发者可以深化对程序设计原理的理解,提升实际问题解决能力。
2009-01-12 上传
员工信息的管理 #include "stdio.h" #include "stdlib.h" # include "string.h" class CA { char *pc; char c[5]; int h; public: struct stu { int num; char name[20]; int tel; char add[50]; }s,*p; FILE *fp; CA()//文件的定义和存储 { int h=1; p=(stu*)malloc(sizeof(stu)); if((fp=fopen("员工基本信息.txt","at+"))==NULL) //打开文件 { //输出错误提示 printf("Cannot open file strike any key exit!"); getchar(); exit(1); } } ~CA() { free(p); fclose(fp); } void fprint() //输入员工信息 { rewind(fp); printf("输入员工信息:\n"); printf("num:"); scanf("%d",&p->num); printf("name:"); scanf("%s",p->name); printf("tel:"); scanf("%d",&p->tel); printf("addr:"); scanf("%s",p->add); fprintf(fp,"%d %s %d %s\n",p->num,p->name,p->tel,p->add); fprintf(fp,"\n"); fflush(fp); //清除缓存 printf("继续按 y 其他键返回 "); scanf(" %s",&c); if(strcmp(c,"y")==0)//将输入的字符与y进行比较 { fprint(); } } void fscan() //显示文件内容 { rewind(fp); printf("\n编号\t姓名\t电话\t\t地址\n"); while(!(feof(fp))) { scan(p); disp(p); } } void find(int num) { rewind(fp); printf("\n编号\t姓名\t电话\t\t地址\n"); while(9) { scan(p); if (num==p->num) { disp(p); h=0; } if (feof(fp)) { if (h) { printf("\n没有找到符合条件的数据~~请核对~\n\n"); h=0; } break; } } } void find(char *name) { rewind(fp); printf("\n编号\t姓名\t电话\t\t地址\n"); while(9) { scan(p); if (strcmp(name,p->name)==0) { disp(p); h=0; } if (feof(fp)) { if (h) { printf("\n没有找到符合条件的数据~~请核对~\n\n"); h=1; } break; } } } void scan(stu *p) { fscanf(fp,"%d%s%d%s\n",&p->num,p->name,&p->tel,p->add); } void disp(stu *p) { if (p->num>0) //保证数据文件不能为空 { printf("%d\t%s\t%d\t\t%s\n",p->num,p->name,p->tel,p->add); } else printf("\n 数据文件为空,请先输入员工信息!!\n"); } }; void main() {int n=9;//申明n的类型 int m=0;//定义编号类型 char s[20]="null";//定义姓名类型 CA a; printf("\n 员工信息查询 "); while(n) { printf("\n\n******************************************\n"); printf(" 输入 1:录入员工信息\n"); printf(" 输入 2:按编号查找员工\n"); printf(" 输入 3:按姓名查找员工\n"); printf(" 输入 4:显示员工信息\n"); printf(" 输入 0:退出\n"); printf("******************************************\n"); scanf("%d",&n); switch(n) { case 1: a.fprint();//输入 break; case 2: printf("输入员工编号:"); scanf("%d",&m); a.find(m); break; case 3: printf("输入员工姓名:"); scanf("%s",&s); a.find(s); break; case 4: a.fscan();//显示 break; } } }