职工信息管理系统C语言源代码

合集下载

c语言课程设计职工工资管理系统源代码

c语言课程设计职工工资管理系统源代码

绝对可以完美运行,下面有运行图片#include<stdio.h> //调用库函数#include<string.h> //字符串处理#include<conio.h> //控制台输入输出#include<stdlib.h> //定义杂项函数及内存分配函数#define N 2 //宏定义以3代替N/******************************************************************************函数声明*******************************************************************************/ void enter();int menu();void input();void output();void search();void search_employeeid();void search_name();void edit();void array();void array_basesalary();void array_postwage();void array_totalwage();void statistics();void save();void load();/******************************************************************************职工类型定义*******************************************************************************/ struct employee{char employeeid[10];char name[10];char sex[10];int age;float basesalary;float postwage;float totalwage;};/******************************************************************************职工变量定义******************************************************************************/ struct employee emp[N];struct employee replace;struct employee *p=emp;/*****************************************************************************系统主函数******************************************************************************/ void main(){int c;while(1){printf(" \n\n\n\n");printf(" 欢迎进入职工工资管理系统\n\n\n");printf(" 1 进入管理系统\n\n");printf(" 0 退出\n\n");printf(" \n\n\n\n");printf(" 请输入你选择:\n");scanf("%d",&c);switch(c){case 1:enter();break;case 0:printf(" 谢谢使用!\n");exit(0);}}}/***************************************************************************** 功能:登陆函数,进行密码验证*****************************************************************************/ void enter(){char q;char key[10],password[10]="china";int k=1,i;printf(" 请输入密码:\n");for(i=0;i<5;i++){q=getch();key[i]=q;printf("*");}while(k<=3){if(strncmp(key,password,5)==0){while(1){int a;//system("cls");a=menu();switch(a){case 1:input();break;case 2:output();break;case 3:search();break;case 4:edit();break;case 5:array();break;case 6:load();statistics();break;case 0:printf("\n\n 谢谢使用!\n\n\n\n");save();exit(0);}}}else{k++;printf(" 输入密码错误!请再次输入:");for(i=0;i<5;i++){q=getch();key[i]=q;printf("*");}if(k>2){if(strncmp(password,key,5)==0)continue;else{printf(" 输入密码错误三次,系统将自动退出!\n");exit(0);}}}}}/************************************************************************功能: 主菜单函数参数:a类型:int说明: 变量返回值: a************************************************************************/int menu(){int a ;printf("\n\n");printf("|*****************欢迎进入职工工资管理系统************************|\n");printf("| |\n");printf("| |\n");printf("| 1 职工信息输入|\n");printf("| |\n");printf("| 2 职工信息输出|\n");printf("| |\n");printf("| 3 职工信息查询|\n");printf("| |\n");printf("| 4 职工信息修改|\n");printf("| |\n");printf("| 5 工资排序|\n");printf("| |\n");printf("| 6 工资统计|\n");printf("| |\n");printf("| 0 退出|\n");printf("| |\n");printf("| |\n");printf("|*****************************************************************|\n");printf("\n\n");printf(" 请输入你所选择的选项:");scanf("%d",&a);while(a>6||a<0){printf(" error!\n");printf(" 请重新输入你所选择的选项:");scanf("%d",&a);}return a;}/********************************************************************************* ***功能:职工信息输入********************************************************************************** ***/void input(){int c;p=emp;printf(" 进入职工信息输入模块\n\n\n");for(c=0;c<N;c++,p++){p[c].totalwage=p[c].basesalary+p[c].postwage;printf(" 请输入第%d个职工信息:\n\n",c+1);printf(" 请输入职工号:\n");scanf("%s",p->employeeid);if(strcmp(p->employeeid,"0")!=0){printf(" 请输入职工姓名:\n");scanf("%s",p->name);printf(" 请输入职工性别: \n");scanf("%s",&p->sex);printf(" 请输入职工年龄: \n");scanf("%d",&p->age);printf(" 请输入职工基本工资:\n");scanf("%f",&p->basesalary);printf(" 请输入职工岗位工资:\n");scanf("%f",&p->postwage);printf(" 职工信息输入完成!\n\n");}elsereturn;}save();}/******************************************************************************* 功能:职工信息输出********************************************************************************/ void output(){int j;load();p=emp;printf(" 进入职工信息输出模块\n\n\n");printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("-------------------------------------------------------------------------------\n");for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");}printf("\n\n 职工信息输出完成!\n\n");getchar();}/******************************************************************************功能:职工信息查询******************************************************************************/ void search(){int j;while(1){printf("*********************职工信息查询*********************\n\n\n");printf(" 1 按职工号查询\n");printf(" 2 按职工姓名查询\n");printf(" 0 退出该项操作\n");printf("\n\n");while(1){printf(" 请输入你的选择\n");scanf("%d",&j);if(j>=0&&j<=2){switch(j){case 1:search_employeeid();break;case 2:search_name();break;case 0:return;}}else{printf(" 输入错误!\n\n");printf(" 请再次输入你的选择: \n\n");}}}}/******************************************************************************* 功能:按职工号查询函数*******************************************************************************/ void search_employeeid(){char employeeid[10];int k,j;p=emp;printf("*********************按职工号查询职工信息*****************************\n\n\n\n");printf(" 请输入要查询职工的职工号:\n\n");scanf("%s",employeeid);for(k=0;k<N;k++){if(strcmp(employeeid,p->employeeid)==0){j=k;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");break;}else{printf(" not found\n");return;}}}/*****************************************************************************功能:按职工姓名查询函数*****************************************************************************/ void search_name(){char name[10];int flog=0;int f,j;p=emp;printf("******************************按职工姓名查询职工信息***********************\n\n\n");printf(" 请输入要查询职工的姓名:\n\n");scanf("%s",name);for(f=0;f<N;f++,p++){if(strcmp(name,p->name)==0){j=f;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");break;}else{printf(" not found \n\n");return;}}getchar();}/*******************************************************************************功能:职工信息修改函数*******************************************************************************/ void edit(){char e[10];int g=0,j;char flog;p=emp;printf(" 请输入你要修改职工的职工号:\n");scanf("%s",e);for(g=0;g<N;g++){// if(*e==p[g].employeeid)if(strcmp(e,p->employeeid)==0){j=g;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p[j].sex ,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");printf(" 是否要修改该职工信息?y(是)or n(否)?\n\n");getchar();scanf("%c",&flog);if(flog == 'y'){printf(" 请输入新姓名:\n");scanf("%s",p->name);printf(" 请输入性别:\n");scanf("%s",&p->sex);printf(" 请输入年龄:\n");scanf("%d",&p->age);printf(" 请输入基本工资:\n");scanf("%f",&p->basesalary);printf(" 请输入岗位工资:\n");scanf("%f",&p->postwage);printf(" 修改职工信息成功!\n\n");}if(flog == 'n'){printf(" 退出该项操作!\n\n");return;}save();}if(g==N){printf(" not found \n\n\n");return;}}}/************************************************************************ 功能:职工工资排列函数************************************************************************/ void array(){int j;while(1){printf("*************************工资排序*********************\n\n");printf(" 1 按基本工资排序\n\n");printf(" 2 按岗位工资排序\n\n");printf(" 3 按总工资排列\n\n");printf(" 0 退出\n\n");printf("\n\n\n");while(1){printf(" 请输入你的选择:\n\n");scanf("%d",&j);if(j>=0&&j<=3){switch(j){case 1:array_basesalary();break;case 2:array_postwage();break;case 3:array_totalwage();break;case 0:return;}}else{printf(" 输入错误!\n\n\n");printf(" 请再次输入你的选择:\n\n");}}}}/**************************************************************************功能:按基本工资排列(选择法)***************************************************************************/void array_basesalary(){int i,j,k;p=emp;for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++){if(p[k].basesalary<p[j].basesalary)k=j;}if(k!=i){replace=emp[k];emp[k]=emp[i];emp[i]=replace;}}for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/************************************************************************功能:按岗位工资排列(冒泡法)*************************************************************************/void array_postwage(){int i,j;p=emp;for(i=0;i<N;i++){for(j=0;j<N-i;j++){if(p[j].postwage<p[j+1].postwage){replace=emp[j];emp[j]=emp[j+1];emp[j+1]=replace;}}}for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/************************************************************************功能:按总工资排列(插入法)************************************************************************/void array_totalwage(){int i,j;p=emp;for(i=1;i<N;i++){replace=emp[i];for(j=i-1;j>=0&&p[i].totalwage>p[i].totalwage;j--){emp[j+1]=emp[j];emp[j+1]=replace;}}for(j=N-1;j>=0;j--){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别| 年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/*************************************************************************功能:工资统计函数**************************************************************************/void statistics(){int z,a=0,b=0,c=0;p=emp;for(z=0;z<N;z++){if(p[z].totalwage>3000){a++;continue;}if(p[z].totalwage>=2000&&p[z].totalwage<=3000){b++;continue;}if(p[z].totalwage<=2000&&p[z].totalwage>0){c++;continue;}}printf(" 总工资在3000元以上的职工人数有:%d\n\n",a);printf(" 总工资在2000元至3000元的职工人数有:%d\n\n",b);printf(" 总工资在2000元以下的职工人数有:%d\n\n",c);getchar();}/*************************************************************************** 功能:导出函数***************************************************************************/ void save(){int k;FILE *fp;p=emp;if((fp=fopen("emp_list","wb"))==NULL){printf(" Create file error!\n");return;}for(k=0;k<N;k++,p++){if(fwrite(p,sizeof(struct employee),1,fp)!=1){printf(" file save error!\n\n");break;}elsecontinue;}getchar();fclose(fp);}/***********************************************************************功能:导入函数***********************************************************************/ void load(){int l;FILE *fp;p=emp;if((fp=fopen("emp_list","rb"))==NULL){printf(" Create file error!\n");exit(0);}for(l=0;l<N;l++,p++){if(fread(p,sizeof(struct employee),1,fp)!=1){printf(" file read error!\n\n");break;}elsecontinue;}getchar();fclose(fp);}下面是实验结果。

C语言课程设计职工信息管理系统源程序

C语言课程设计职工信息管理系统源程序
福利等
系统管理:包 括用户管理、 权限管理、系
统设置等
系统开发背景
企业信息化需求:提高工作效率,降低管理成本 技术发展:云计算、大数据等技术的成熟 市场竞争:提高企业竞争力,满足客户需求 企业内部管理:优化人力资源管理,提高员工满意度
系统目标
提高工作效率
简化工作流程
提高数据准确性
加强信息安全管理
Part Five
系统实现
数据库连接实现
连接方式:使用JDBC(Java Database Connectivity)进行 数据库连接
连接参数:包括数据库地址、用户 名、密码等
添加标题
添加标题
添加标题
添加标题
数据库类型:支持MySQL、 Oracle、SQL Server等多种数据 库
连接过程:通过JDBC驱动程序建 立与数据库的连接,执行SQL语句 进行数据操作
数据需求分析
员工信息:包括姓名、性别、年龄、职位、部门等信息 考勤信息:包括上下班时间、请假、加班等信息
薪资信息:包括基本工资、绩效工资、奖金等信息 培训信息:包括培训课程、培训时间、培训效果等信息
绩效评估信息:包括绩效考核标准、绩效考核结果等信息 系统管理信息:包括用户管理、权限管理、系统日志等信

性能需求分析
系统响应时间:要求系统响应时间不超过3秒 数据处理速度:要求系统数据处理速度不低于每秒1000条记录 系统稳定性:要求系统在连续运行72小时后,仍能保持稳定运行 系统安全性:要求系统具备防病毒、防黑客等安全措施,确保数据安全
Part Four
系统设计
系统架构设计
架构设计原则:高 内聚、低耦合、可 扩展、可维护
系统维护
定期备份数据:确保数据安全,防止数据丢失 定期更新系统:确保系统安全,防止病毒攻击 定期检查硬件:确保硬件正常运行,防止硬件故障 定期培训员工:确保员工熟练掌握系统操作,提高工作效率

职工信息管理系统源代码

职工信息管理系统源代码

#include <malloc.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#define ALLMAX 100 //总共统计的职工的人数typedef struct Node{long int born_date,work_date,tele_num;charsex,name[ALLMAX],degree[ALLMAX],job[ALLMAX],address[ALLMAX];struct Node *next;}SLNode;typedef struct{long int born_date,work_date,tele_num;charname[ALLMAX],sex,degree[ALLMAX],job[ALLMAX],address[ALLMAX];}DataType;void ListInitiate(SLNode **head)//链表初始化{if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);//动态分配存储空间(*head)->next=NULL;}SLNode *ListInsert(SLNode *head,DataType x)//职工信息的插入姓名并按照升序排列{SLNode *p,*q,*s;p=head->next;if((q=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);//动态分配存储空间q->born_date=x.born_date;q->work_date=x.work_date;q->tele_num=x.tele_num;strcpy(q->name,);q->sex=x.sex;strcpy(q->degree,x.degree);strcpy(q->job,x.job);strcpy(q->address,x.address);if(head->next==NULL){//如果只有链表的头结点,没有其他的结点,直接插入在头结点后面head->next=q;head->next->next=NULL;}else{//链表非空for(;p;p=p->next){if(p->next!=NULL){if(strcmp(p->name,)<0&&strcmp(p->next->name,)>0){//位于两个结点之间s=p->next;p->next=q;q->next=s;break;}//else if(strcmp(p->name,)==0)break; //如果姓名相同则不插入信息}else if(strcmp(p->name,)<0&&p->next==NULL){//链表非空,并且在排序中是最后一个p->next=q;q->next=NULL;break;}if(strcmp(p->name,)>0){//位于链表头结点之后的位置s=head->next;head->next=q;q->next=s;break;}}}return head;}void ListDelete(SLNode *head)//职工信息的删除{SLNode *p,*s;char x[20];s=head;p=head->next;if(head->next==NULL){//链表为空,输出:名单中无职工信息,无须删除!printf("名单中无此职工信息,无须删除!\n");return;}printf("请输入要删除职工的姓名:\n"); //输入要删除的人的姓名scanf("%s",x);for(p;p;p=p->next){//在链表中从头到尾查找输入的人的姓名if(strcmp(p->name,x)==0){ //如果存在,则删除,否则输出:名单中无职工信息,无须删除!s->next=p->next;free(p);printf("删除成功!请继续操作!\n");break;}s=p;}if(p==NULL){//链表本身为空printf("名单中无此职工信息,无须删除!\n");}}void ListModify(SLNode *head)//职工信息的修改{DataType x;SLNode *p;p=head->next;if(p==NULL){//链表本身为空printf("职工名单无职工信息,无须修改!\n");return;}printf("请输入要修改的职工姓名:\n");scanf("%s",);for(;p;p=p->next){if(strcmp(,p->name)==0){//查找到了该职工的信息printf("依次写入该职工的新信息:\n");printf("请输入职工信息:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");scanf("%s %c %d %d %s %s %s %d",p->name,&p->sex,&p->born_date,&p->work_ date,p->degree,p->job,p->address,&p->tele_num);printf("修改成功!请继续操作!\n");break;}}if(p==NULL)//如果链表为空printf("此职工不存在,无法修改其信息!\n");}void put(SLNode *head,FILE *fp)//职工信息的保存{SLNode *p;if((fp=fopen("Employee.txt","w"))==NULL){//printf("无法打开'Employee.txt'!\n");exit(0);}for(p=head->next;p;p=p->next){fprintf(fp,"%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_ date,p->degree,p->job,p->address,p->tele_num);}if(fclose(fp)){printf("无法关闭'Employee.txt'!\n"); exit(0);}}void Listfind(SLNode head)//职工信息的查找{int i,j;SLNode *p;DataType x;if(head.next==NULL){//链表为空printf("名单中无职工信息,查询失败!\n");return;}//返回主菜单printf("\n");printf("\t*********************************\n");printf("\t*职工信息查询操作*\n");printf("\t**\n");printf("\t*0.退出查询系统,回到主菜单\t\t 1.对姓名进行查询\t*\n\t * 2.对出生年月进行查询\t\t 3.对学历进行查询\t*\n\t* 4.对工作年月进行查询\t\t 5.对职务进行查询\t*\n\t* 6.对住址进行查询\t\t 7.对电话进行查询\t*\n");printf("\t*********************************\n");while(1){printf("请输入您要选择的操作:");scanf("%d",&i);if(i==0)//输入0,退出查询系统,回到主菜单break;else if(i==1){//输入1,对姓名进行查询p=head.next;printf("请输入姓名:");scanf("%s",);j=0;for(p;p;p=p->next){if(strcmp(p->name,)==0){//如果存在这个人,那么j自加++j;printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中不存在此人!\n");else printf("查询成功!继续操作!\n");}else if(i==2){//输入2,对出生年月进行查询p=head.next;printf("请输入出生年月:");scanf("%d",&x.born_date);j=0;for(p;p;p=p->next){if(p->born_date==x.born_date){//输入的出生年月在链表中存在++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这个时间出生的!\n");else printf("查询成功!请继续操作!\n");}else if(i==4){//输入4,对工作年月进行查询p=head.next;printf("请输入工作年月:");scanf("%d",&x.work_date);j=0;for(p;p;p=p->next){if(p->work_date==x.work_date){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这个时间工作的!\n");else printf("查询成功!请继续操作!\n");}else if(i==3){//输入3,对学历进行查询p=head.next;printf("请输入学历:");scanf("%s",x.degree);j=0;for(p;p;p=p->next){if(strcmp(p->degree,x.degree)==0){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这种学历的!\n");else printf("查询成功!请继续操作!\n");}else if(i==5){//输入5,对职务进行查询p=head.next;printf("请输入职务:");scanf("%s",x.job);j=0;for(p;p;p=p->next){if(strcmp(p->job,x.job)==0){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这种职务的!\n");else printf("查询成功!请继续操作!\n");}else if(i==6){//输入6,对住址进行查询p=head.next;printf("请输入住址:");scanf("%s",x.address);j=0;for(p;p;p=p->next){if(strcmp(p->address,x.address)==0){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有住这的!\n");else printf("查询成功!请继续操作!\n");}else if(i==7){//输入7,对电话号码进行查询p=head.next;printf("请输入电话:");scanf("%d",&x.tele_num);j=0;for(p;p;p=p->next){if(p->tele_num==x.tele_num){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没人用这个号码!\n");else printf("查询成功!请继续操作!\n");}else if(i!=0 && i!=1 && i!=2 && i!=3 && i!=4 && i!=5 && i!=6 && i!=7)//输入任意不是上述数字的,那么久显示输入错误printf("输入出错!请再次输入!\n");printf("\n");printf("\t*********************************\n");printf("\t*职工信息查询系统*\n");printf("\t**\n");printf("\t*0.退出查询系统,回到主菜单\t\t 1.对姓名进行查询\t*\n\t* 2.对出生年月进行查询\t\t 3.对学历进行查询\t*\n\t*4.对工作年月进行查询\t\t 5.对职务进行查询\t*\n\t* 6.对住址进行查询\t\t 7.对电话进行查询\t*\n");printf("\t*********************************\n");//printf("0.退出查询系统,回到主菜单\n1.对姓名进行查询\n2.对出生年月进行查询\n3.对工作年月进行查询\n4.对学历进行查询\n5.对职务进行查询\n6.对住址进行查询\n7.对电话号码进行查询\n");}}void print(SLNode *head)//职工信息的显示{SLNode *p;for(p=head->next;p!=NULL;p=p->next)//输出所有职工的信息printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}void printLink(SLNode *head)//职工信息的显示{printf("职工名单:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");print(head);}void Listpaixu(SLNode *head)//职工信息的排序{int i,n=0,m,flag=1;SLNode *p,*q,*s;if(head->next==NULL){//职工链表为空printf("名单中无职工信息,无法排序!\n\n");return;}// printf("输入出错!请再次输入!\n\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");printf("\t\t~.~ 职工信息排序操作~.~\n");printf("\t\t~.~ ~.~\n");printf("\t\t~.~\t0.退出排序系统,回到主菜单~.~\n\t\t~.~\t1.对性别进行排序~.~\n\t\t~.~\t2.对出生年月进行排序~.~\n\t\t~.~\t3.对工作年月进行排序~.~\n\t\t~.~\t4.对姓名进行排序~.~\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");while(1){printf("请输入您要选择的操作:");scanf("%d",&i);if(i==0)//输入0,退出排序系统,回到主菜单break;else if(i==1){//输入1,对性别进行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)//统计职工人数n++;for(m=1;flag&&m<=n;m++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){if(p->sex>q->sex)//p为当前节点,p的性别>p的后继节点的性别{if(head==p)//p为头结点{head->next=q->next;head=q;q->next=p;//交换节点信息q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);//输出所有节点的信息return;}else if(i==2){//输入2,对出生年月进行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)//统计职工人数n++;for(m=1;flag&&m<=n;n++)//循环{flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){if(p->born_date>q->born_date)//对出生年月进行排序{if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);return;}else if(i==3){//输入3,按工作时间进行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){ if(p->work_date>q->work_date){if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);return;}else if(i==4){n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){if(p->name[0]>q->name[0]){if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);return;}else if(i!=0&&i!=1&&i!=2&&i!=3&&i!=4)printf("输入出错!请再次输入!\n\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");printf("\t\t~.~ 职工信息排序系统~.~\n");printf("\t\t~.~~.~\n");printf("\t\t~.~\t0.退出排序系统,回到主菜单~.~\n\t\t~.~\t1.对性别进行排序~.~\n\t\t~.~\t2.对出生年月进行排序~.~\n\t\t~.~\t3.对工作年月进行排序~.~\n\t\t~.~\t4.显示全部职工信息~.~\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");//printf("0.退出排序系统,回到主菜单\n1.对性别进行排序\n2.对出生年月进行排序\n3.对工作年月进行排序\n");}}void main(){DataType x;SLNode *head;int i,n;FILE *fp;ListInitiate(&head);//初始化链表printf("\n");printf("*************************************************************** ****************\n");printf("************************ 欢迎使用职工管理系统***************************\n");printf("*************************************************************** ****************\n");printf("请输入要录入的职工人数n:");//输入要录入的职工人数scanf("%d",&n);if(n==0) goto aa;printf("请输入职工信息:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");for(i=0;i<n;i++)//职工信息的输入{scanf("%s %c %d %d %s %s %s %d",,&x.sex,&x.born_date,&x.work_date,x. degree,x.job,x.address,&x.tele_num);head=ListInsert(head,x);}if((fp=fopen("Employeetxt","a"))==NULL){printf("\t无法打开'Employee.txt'!\n");exit(0);}put(head,fp);if(fclose(fp)){printf("\t无法关闭'Employee.txt'!\n"); exit(0);}printLink(head);aa: printf("\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");printf("\t☆* 主菜单* ☆\n");printf("\t★********** ★\n");printf("\t☆☆\n");printf("\t★\t0.结束管理系统\t\t\t1.新增职工信息\t\t★\n\t☆\t2.删除职工信息\t\t\t3.查询职工信息\t\t☆\n\t★\t4.修改职工信息\t\t\t5.职工信息排序\t\t★\n");printf("\t☆☆\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");while(1){printf("请输入您要选择的操作:");scanf("%d",&i);if(i==0)//输入0,结束系统{printf("\t\t您已经成功退出职工管理系统,谢谢使用!\n");break;}else if(i==1){//输入1,新增一名职工printf("请输入职工信息:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");scanf("%s %c %d %d %s %s %s %d",,&x.sex,&x.born_date,&x.work_date,x. degree,x.job,x.address,&x.tele_num);head=ListInsert(head,x);printf("新增成功!请继续操作!\n");printLink(head);put(head,fp);//保存在文件中else if(i==2){//输入2,删除一名职工ListDelete(head);if((fp=fopen("Employee.txt","w"))==NULL){printf("无法打开'职工名单.txt'!\n");exit(0);}put(head,fp);//保存在文件中if(fclose(fp)){printf("无法关闭'Employee.txt'!\n"); exit(0);}}else if(i==3)//输入3,查找一名职工Listfind(*head);else if(i==4){//输入4,修改职工信息ListModify(head);if((fp=fopen("Employee.txt","w"))==NULL){printf("无法打开'Employee.txt'!\n");exit(0);}put(head,fp);//保存在文件中if(fclose(fp)){printf("无法关闭'Employee.txt'!\n"); exit(0);}}else if(i==5){//输入5,对职工信息进行排序SLNode *p=head;Listpaixu(p);}//如果出入的不是上述任何一种情况就输出:输入出错else printf("输入出错!请再次输入!\n");printf("\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");printf("\t☆* 主菜单* ☆\n");printf("\t★********** ★\n");printf("\t☆☆\n");printf("\t★0.结束管理系统\t\t\t\t1.新增职工信息\t★\n\t☆ 2.删除职工信息\t\t\t\t3.查询职工信息\t☆\n\t★ 4.修改职工信息\t\t\t\t5.职工信息排序\t★\n");printf("\t☆☆\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");//printf("0.结束系统\n1.新增一名职工\n2.删除一名职工\n3.查询职工信息\n4.修改职工信息\n5.对职工信息进行排序\n");}}。

(完整word版)C 课程设计之职工信息管理系统

(完整word版)C 课程设计之职工信息管理系统

#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>int main();void save(int N);int load();void change();void input();//录入工人的信息void print();void find_edu();void find_num();void find();int menu();void del();int i,c=0;struct Workers{int job_num;char name[10];char sex[6];int eages;char education[20];int salary;char address[20];char number[15];}worker[100];void input()//录入工人的信息{int N;printf("输入工人的个数:");scanf("%d",&N);for(i=0;i<N;i++){printf("输入第%d个工人的信息: \n",i+1);printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");scanf("%d%s%s%d%s%d%s%s",&worker[i].job_num,worker[i].name,worker[i].sex,&work er[i].eages,worker[i].education,&worker[i].salary,worker[i].address,worker[i].number);printf("\n");fflush(stdin);}save(N);}void save(int N)//将工人的信息存入磁盘{FILE *fp;if((fp=fopen("worker.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}for(i=0;i<N;i++)if(fwrite(&worker[i],sizeof(struct Workers),1,fp)!=1) printf("file write error\n");fclose(fp);}int load()//读盘里的信息{FILE *fp;i=0;if((fp=fopen("worker.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}do{fread(&worker[i],sizeof(struct Workers),1,fp);i++;}while(!feof(fp));fclose(fp);return(i-1);}void print()//浏览工人信息{if(c<=0)c=load();for(i=0;i<c;i++){printf("输出第%d个工人的信息: \n",i+1);printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",worker[i].job_num,worker[i].name,worker[i]. sex,worker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].number);printf("\n");}}void find_edu()//按工号查询工人信息{int t,flag=0;if(c<=0)c=load();char edu[20];printf("请输入需要查询的学历:");scanf("%s",edu);for(i=0;i<c;i++)if(strcmp(worker[i].education,edu)==0){printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s",worker[i].job_num,worker[i].name,worker[i].sex,wor ker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].number);printf("\n");flag=1;}if(flag==0)printf("\n对不起,没有找到此工人!\n");printf("\n继续查询学历请按1,返回查询函数请按2\n");scanf("%d",&t);switch(t){case 1:find_edu();break;case 2:find();break;}printf("\n");}void find_num()//按学历查询工人信息{int t,flag=0;if(c<=0)c=load();int num1;printf("请输入需要查询的职工号:");scanf("%d",&num1);for(i=0;i<c;i++){if(worker[i].job_num==num1)printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",worker[i].job_num,worker[i].name,worker[i].se x,worker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].number);flag=1;}if(flag==0)printf("\n对不起,没有找到此工人!\n");printf("\n继续查询学历请按1,返回查询函数请按2\n");scanf("%d",&t);switch(t){case 1:find_num();break;case 2:find();break;}}void find() //查询函数{int a,flag;do{printf("\n******************************************\n");printf("\t按职工号查询请按1 \n \t按学历查询请按2\n \t进入主菜单按3\n");printf("\n******************************************\n");scanf("%d",&a);if(a>0&&a<4){flag=1;break;}else{flag=0;printf("您输入有误,请重新输入!");}}while(flag==0);while(flag==1){switch(a){case 1:find_num();break;case 2:find_edu();break;case 3:main();break;}}}int menu()//创建菜单{int b;printf("\t****************菜单******************\n");printf("\t** 1. 工人信息录入**\n");printf("\t** 2. 浏览工人信息**\n");printf("\t** 3. 查询工人信息**\n");printf("\t** 4. 删除工人信息**\n");printf("\t** 5. 修改工人信息**\n");printf("\t** 0. 退出**\n");printf("\t**************************************\n");do{printf("\n 输入你的选择项(0~5):\n");scanf("%d",&b);}while(b<0||b>5);return b;}void del() //删除函数{if(c<=0)c=load();int j,flag=0,num,a;char ch1,ch2;printf("\n 原来的职工信息:\n");print(); //调用浏览函数printf("\n");printf("请输入要删除的工人的工号:\n");fflush(stdin);scanf("%d",&num);for(i=0;i<c;i++){if(worker[i].job_num==num){printf("已找到该工人,输出工人的信息:\n");printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",worker[i].job_num,worker[i].name,worker[i]. sex,worker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].number);printf("\n确实要删除此人信息请按Y/y,不删除请按N/n\n");fflush(stdin);scanf("%c",&ch1);if(ch1=='y'||ch1=='Y'){for(j=i;j<c-1;j++){worker[j] = worker[j+1];}printf("你要保存你的修改吗? 保存请按1 不保存请按0\n");scanf("%d",&a);if(a==1){c=c-1;save(c); //调用保存函数c=load();printf("\n浏览改变后的所有工人信息:\n");print();}elseprintf("谢谢你的使用!");}if(ch1=='n'||ch1=='N')printf("谢谢使用!\n");flag=1;}}if(flag==0)printf("对不起,没有找到此工人!\n");printf("\n继续删除请按Y/y,不再删除请按N/n:\n");fflush(stdin);scanf("%c",&ch2);switch(ch2){case 'Y':del();break;case 'y':del();break;case 'N':break;case 'n':break;}}void change() //修改函数{char sex1[10],name1[20],education1[20],address1[30],number1[15];char ch1,ch2;int job_num1,eages1,salary1,num,a;int b,i,t,flag=0;if(c<=0)c=load(); //调用load函数printf("\n 输出原来的职工信息:\n");print(); // 调用浏览函数printf("请输入要修改的工人的工号:\n");fflush(stdin);scanf("%d",&num);for(i=0;i<c;i++){if(worker[i].job_num==num){printf("\n已找到此人,原始记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",worker[i].job_num,worker[i].name, worker[i].sex,worker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].nu mber);printf("\n确实要修改此人信息请按Y/y ; 不修改请按N/n\n");fflush(stdin);scanf("%c",&ch1);if(ch1=='y'||ch1=='Y'){do{printf("\n******************************************\n");printf("\t需要进行修改的选项\n \t1.职工号****** 2.姓名\n \t3.性别****** 4.年龄\n \t5.学历****** 6.工资\n \t7.住址****** 8.电话\n");printf("\n******************************************\n");do{printf("\n 输入你的选择项(1~8):\n");scanf("%d",&b);}while(b<1||b>8);switch(b) //因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人{case 1 :printf("工人的工号改为\n");scanf("%d",&job_num1);worker[i].job_num=job_num1;break;case 2 :printf("工人的名字改为\n");scanf("%s",name1);strcpy(worker[i].name,name1);break;case 3 :printf("工人的性别改为\n");scanf("%s",sex1);strcpy(worker[i].sex,sex1);break;case 4 :printf("工人的年龄改为\n");scanf("%d",&eages1);worker[i].eages=eages1;break;case 5 :printf("工人的学历改为\n");scanf("%s",education1);strcpy(worker[i].education,education1);break;case 6 :printf("工人的工资改为\n");scanf("%d",&salary1);worker[i].salary=salary1;break;case 7 :printf("工人的地址改为\n");scanf("%s",address1);strcpy(worker[i].address,address1);break;case 8 :printf("工人的电话改为\n");scanf("%s",number1);strcpy(worker[i].number,number1);break;}printf("\n是否还要继续修改的信息?\n 继续请按Y/y ; 不重新修改请按N/n: \n");fflush(stdin);scanf("%c",&ch2);}while(ch2=='y'||ch2=='Y');printf("\n你要保存你的修改吗? 保存请按1 不保存请按0\n");scanf("%d",&a);if(a==1){save(c); //调用保存函数printf("\n浏览修改后的职工信息:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",worker[i].job_num,worker[i].name,worker[i].sex,worker[i].eages,worker[i].education,worker[i].salary,worker[i].address,worker[i].nu mber);}elseprintf("谢谢你的使用!");}if(ch1=='n'||ch1=='N')printf("谢谢使用!");flag=1;}}if(!flag)printf("\n对不起,没有找到此工人!\n");printf("\n继续修改请按1,不再修改请按2\n");scanf("%d",&t);switch(t){case 1:change();break;case 2:break;}}int main(){printf("\n按任意一键进入菜单........");getch();putchar(10);while(1){switch(menu()) //调用主菜单函数,返回值整数作开关语句的条件{case 1 : input();//工人信息录入system("PAUSE");break;case 2 : print();//浏览工人信息system("PAUSE");break;case 3 : find();//查询工人信息system("PAUSE");break;case 4 : del();//删除工人信息system("PAUSE");break;case 5 : change();//修改工人信息信息system("PAUSE");break;case 0 : exit(0);//退出}}return 0;}。

职工信息管理系统源代码c语言

职工信息管理系统源代码c语言

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#include<time.h>#define N 100#define PRINT "\n%5d|%8s|%10.2f|%10.2f|%8.2f|%8.2f|%10.2f|%10.2f ",em[i].num,em[i].name,em[i].basicsalary,em[i].benefit,em[i].waterfare,em[i].electricityfare,em[i]. shouldpay,em[i].actualpay#define TOTAL1 em[i].basicsalary+em[i].benefit#define TOTAL2 TOTAL1-em[i].waterfare-em[i].electricityfare-em[i].personalstruct clerk{int num; //ID号char name[20]; //姓名double basicsalary; //基本工资double benefit; // 津贴double waterfare; //水费double electricityfare; //电费double actualpay; //实发工资double shouldpay; //应发工资double personal; //个人所得税}em[N];void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_name();void modify();void arrange();void sta();unsigned int password();void start(); /*定义各函数*/void start() //开始界面{printf("\n\n\n\n\n\n");system("color 06");//黄色字体printf("************************************************************************* *********");printf("**********************************");printf("*******************欢迎使用职工工资管理模拟系统*********************");printf("***************************************");printf("************************************************************************\ n\n\n\n\n");printf("\t\t\t ***请按任意键进入***\n");}void menu() //菜单界面{system("cls");printf("\t\t\t\t***菜单***\n\n");printf("|~~~~~~~~~~~~~~~~~~~~~~~~ \t\t\t 1 输入~~|\n");printf("| 小贴士: 2 显示|\n");printf("| 请按说明 3 查找|\n");printf("| 进行操作 4 删除|\n");printf("| 5 添加|\n");printf("| 6 修改|\n");printf("| 7 统计|\n");printf("| 8 排序|\n");printf("|________________________ \t\t\t 9 退出___|\n");printf("说明:\n *如首次使用尚未输入数据请先输入数据\n *输入的数据将自动保存\n *再次选择输入功能时原数据将被覆盖,此时可选添加加入职工\n\n");}unsigned int password()//密码模块{char a1[20],a2[20],a3[20];int i,j;FILE *fp1;time_t start,end;if((fp1=fopen("D:\\password.dat","rb"))==NULL)//无密码文件,设置密码。

C语言课程设计-职工信息管理系统

C语言课程设计-职工信息管理系统

#include<stdio。

h〉#include〈string〉using namespace std;int sum;struct people{char WorkName[10];char Name[15];char sex[7];char birthday[15];char study[13];char career[9];char income[5];char address[15];char phone[15];}people[10];void PrintEqual(){printf("************************************\n");}void DelDate(int DelNum){int i;for(i=DelNum;i<sum;i++){people[i]=people[i+1];}sum——;}void addEdit(int isEdit,int EditNum){int i;PrintEqual();if (isEdit==0){i=sum;}else if(isEdit==1){i=EditNum;sum--;}printf(”请输入工号姓名性别出生年月学历职务工资住址电话\n”);scanf("%s%s%s%s%s%s%s%s%s",&people[i]。

WorkName,&people[i]。

Name,&people[i]。

sex,&people[i].birthday,&people[i].study,&people[i]。

career,&people [i].income,&people[i].address,&people[i].phone);sum++;PrintEqual();}void ShowItem(int isAll,char Name[15]){int i;PrintEqual();if (sum==0){printf(”没有数据\n");return;}for(i=0;i<sum;i++){if(isAll==1){printf("%d,%s,%s,%s,%s,%s,%s,%s,%s,%s\n”,i,people[i].WorkName,people [i].Name,people[i]。

职工信息管理系统C语言课程设计源代码

职工信息管理系统C语言课程设计源代码

职工信息管理系统C语言课程设计源
代码
课程设计报告
(本科)
课程:高级语言课程设计学号:
姓名:
班级:
教师:
时间:
计算机科学与技术系
功能上有对职工信息的增加,删除,浏览,查询,修改等简单的功能. 使用说明及运行实例
1.运行程序,进入职工信息管理系统的主菜单:
图1:进入主菜单界
2.输入数字“1”进行录入职工信息:
图2:录入职工信息
3.输入“y”返回主菜单(界面同图1)。

4.输入“2”浏览职工信息:
图3:浏览职工信息
5.输入“y”后继续,输入“3”进行查询职工信息:
图4:按职工号查询职工信息
5:按学历查询职工信息。

职工信息管理系统C代码1(精)

职工信息管理系统C代码1(精)

职工工资管理系统一、设计目标:按照软件工程的规范,以SQL Server或Access为后台数据库,以Delphi 或Visual C++为前端开发工具,设计并实现一个简化的工资管理系统。

二、需求描述该系统存储了某单位全体职工和工资信息。

职工的基本信息包括:职工编号、姓名、性别、出生年月、职称、最后学历、工资和婚否。

每一个职工的工资信息包括:月份、职工编号、职工姓名、基本工资、津贴、岗贴、补贴、房贴、交通补贴、应发数、房租、储蓄、会费、个人所得税、应扣数、实发数、其他收入。

个人所得税计算方法设为:应发数少于800元为0;800~1000元的部分为5%;1000~5000元的部分为10%;5000元以上的部分为20%。

系统功能如下:1.职工信息管理:a. 增加职工信息。

增加新职工时输入新职工的基本信息;b. 删除某职工的基本信息。

如,职工死亡或离职时;c. 修改某职工(指定职工编号)的某些信息(如,加工资、获得新学位、晋升职称、结婚或离婚)。

2.工资管理:a. 增加工资信息。

当增加新职工时,添加某职工的工资信息;b. 职工离职或死亡时,删除某职工的工资信息;c. 修改工资信息。

当月开始增加或减少某些项工资或扣款数变化时,修改某职工的部分工资信息;3.查询与统计:a. 查询职工信息,如查询全体职工信息,或按职称、学历、出生年月、出生年月之前/ 之后、已婚/ 未婚等条件或多个条件的组合来查询相应的职工信息。

b. 查询指定编号职工的工资信息;c. 按时间段统计职工收入或单位的工资支出。

三、概要设计四、详细设计void CWorkerMgr6View::OnExit({OnExit(;}void CWorkerMgr6View::OnRecordFirst({if(m_pSet->IsBOF({m_pSet->SetFieldNull(NULL;}else{m_pSet->MoveFirst(;UpdateData(FALSE;//更新对话框窗口}}void CWorkerMgr6View::OnRecordLast( {m_pSet->MoveLast(;UpdateData(FALSE;//更新对话框窗口}void CWorkerMgr6View::OnRecordNext( {if(m_pSet->IsBOFm_pSet->MoveNext(; }UpdateData(FALSE;}void CWorkerMgr6View::OnRecordPre( {if(m_pSet->IsBOF({AfxMessageBox("已经到达第一个记录"; m_pSet->MoveFirst(;}m_pSet->MovePrev(;UpdateData(FALSE;}void CWorkerMgr6View::OnAddWorker({if(SUCCEEDED(hr{hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown;//连接数据库//上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;}}catch(_com_error e///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage(;AfxMessageBox(errormessage;///显示错误信息}CAddWorker dl;if(dl.DoModal(==IDOK{m_pSet->AddNew(;m_pSet->m_name=dl.m_nm;m_pSet->m_id=dl.m_ids;m_pSet->m_sex=dl.m_sx;m_pSet->m_born=dl.m_bn;m_pSet->m_zhichen=dl.m_zhch;m_pSet->m_xueli=dl.m_xli;m_pSet->m_salary=dl.m_sala;m_pSet->m_marry=dl.m_marr;m_pSet->Update(;m_pSet->MoveLast(;UpdateData(false;}OnAddMoney(;}void CWorkerMgr6View::OnDeleteWorker({HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection";//创建Connection对象if(SUCCEEDED(hr{hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown;///连接数据库///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;}}catch(_com_error e///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage(;AfxMessageBox(errormessage;///显示错误信息}CDelWorker dl;if(dl.DoModal(==IDOK{UpdateData(true;try{long id=dl.m_idid;CString str;str.Format("DELETE from worker where ID=%d",id;_variant_t RecordsAffected;m_pConnection->Execute((_bstr_tstr,&RecordsAffected,adCmdText;AfxMessageBox("删除成功!";}catch(_com_error*e{AfxMessageBox(e->ErrorMessage(;}m_pSet->MoveNext(;if(m_pSet->IsEOF(m_pSet->MoveLast(;UpdateData(FALSE;}}void CWorkerMgr6View::OnChangWorker({HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection";//创建Connection对象if(SUCCEEDED(hr{hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown;///连接数据库///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;}}catch(_com_error e///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage(; AfxMessageBox(errormessage;///显示错误信息}CChangeWork dl2;if(dl2.DoModal(==IDOK{UpdateData(true;long id=dl2.m_wid;m_pSet->MoveFirst(;while(m_pSet->m_id!=dl2.m_widm_pSet->MoveNext(;CChangeOne dl1;dl1.m_name1=m_pSet->m_name;dl1.m_id1=m_pSet->m_id;dl1.m_sex1=m_pSet->m_sex;dl1.m_born1=m_pSet->m_born;dl1.m_zhichen1=m_pSet->m_zhichen;dl1.m_xueli=m_pSet->m_xueli;dl1.m_salary1=m_pSet->m_salary;dl1.m_marry1=m_pSet->m_marry;if(dl1.DoModal(==IDOK{m_pSet->Edit(;m_pSet->m_name=dl1.m_name1;m_pSet->m_id=dl1.m_id1;m_pSet->m_sex=dl1.m_sex1;m_pSet->m_born=dl1.m_born1;m_pSet->m_zhichen=dl1.m_zhichen1;m_pSet->m_xueli=dl1.m_xueli;m_pSet->m_salary=dl1.m_salary1;m_pSet->m_marry=dl1.m_marry1;m_pSet->Update(;// m_pSet->MoveNext(;UpdateData(false;}}}void CWorkerMgr6View::OnMShowDetail( {CMShowDetail dl;long id=m_pSet->m_id;m_pSet->MoveFirst(;while(m_pSet->m_id!=idm_pSet->MoveNext(;dl.m_month=m_pSet->m_month;dl.m_id=m_pSet->m_id;dl.m_name=m_pSet->m_name;dl.m_base=m_pSet->m_base;dl.m_jintie=m_pSet->m_jintie;dl.m_gangtie=m_pSet->m_gangtie;dl.m_butie=m_pSet->m_butie;dl.m_fangtie=m_pSet->m_fangtie;dl.m_jiaotong=m_pSet->m_jiaotong;dl.m_yingfa=dl.m_base+dl.m_jintie+dl.m_gangtie+dl.m_butie+dl.m_fangtie+d l.m_jiaotong;dl.m_fangzu=m_pSet->m_fangzu;dl.m_chuxu=m_pSet->m_chuxu;dl.m_huifei=m_pSet->m_huifei;if(dl.m_yingfa<800{dl.m_gerentax=0;}else if(dl.m_yingfa>=800&&dl.m_yingfa<=1000{dl.m_gerentax=dl.m_yingfa*0.05f;}else if(dl.m_yingfa>1000&&dl.m_yingfa<=5000{dl.m_gerentax=dl.m_yingfa*0.1f;}else if(dl.m_yingfa>5000{dl.m_gerentax=dl.m_yingfa*0.2f;}dl.m_yingkou=dl.m_fangzu+dl.m_chuxu+dl.m_huifei+dl.m_gerentax; dl.m_shifa=dl.m_yingfa-dl.m_yingkou;dl.m_other=m_pSet->m_other;dl.DoModal(;}void CWorkerMgr6View::OnAddMoney({CAddMoney dl;dl.m_id=m_pSet->m_id;dl.m_name=m_pSet->m_name;if(dl.DoModal(==IDOK{m_pSet->Edit(;m_pSet->m_base=dl.m_base;m_pSet->m_month=dl.m_month;m_pSet->m_jintie=dl.m_jintie;m_pSet->m_gangtie=dl.m_gangtie;m_pSet->m_butie=dl.m_butie;m_pSet->m_fangtie=dl.m_fangtie;m_pSet->m_jiaotong=dl.m_jiaotong;dl.m_yingfa=dl.m_base+dl.m_jintie+dl.m_gangtie+dl.m_butie+dl.m_fangtie+d l.m_jiaotong;m_pSet->m_yingfa=dl.m_yingfa;m_pSet->m_fangzu=dl.m_fangzu;m_pSet->m_chuxu=dl.m_chuxu;m_pSet->m_huifei=dl.m_huifei;if(dl.m_yingfa<800{dl.m_gerentax=0;}else if(dl.m_yingfa>=800&&dl.m_yingfa<=1000{dl.m_gerentax=dl.m_yingfa*0.05f;}else if(dl.m_yingfa>1000&&dl.m_yingfa<=5000{dl.m_gerentax=dl.m_yingfa*0.1f;}else if(dl.m_yingfa>5000{dl.m_gerentax=dl.m_yingfa*0.2f;}m_pSet->m_gerentax=dl.m_gerentax;dl.m_yingkou=dl.m_fangtie+dl.m_chuxu+dl.m_huifei+dl.m_gerentax;m_pSet->m_yingkou=dl.m_yingkou;dl.m_shifa=dl.m_yingfa-dl.m_yingkou;m_pSet->m_shifa=dl.m_shifa;m_pSet->m_other=dl.m_other;m_pSet->Update(;//m_pSet->MoveLast(;UpdateData(false;}}void CWorkerMgr6View::OnDeleteMoney({HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection";//创建Connection对象if(SUCCEEDED(hr{hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown;///连接数据库///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;}}catch(_com_error e///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage(;AfxMessageBox(errormessage;///显示错误信息}CDeleteMoney dl;if(dl.DoModal(==IDOK{UpdateData(true;try{long id=dl.m_id;CString str;str.Format("DELETE from worker where ID=%d",id;_variant_t RecordsAffected;m_pConnection->Execute((_bstr_tstr,&RecordsAffected,adCmdText;AfxMessageBox("删除成功!";}catch(_com_error*e{AfxMessageBox(e->ErrorMessage(;}m_pSet->MoveNext(;if(m_pSet->IsEOF(m_pSet->MoveLast(;UpdateData(FALSE;}}void CWorkerMgr6View::OnChangeMoney({HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection";//创建Connection对象if(SUCCEEDED(hr{hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown;}}catch(_com_error e //捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage(; AfxMessageBox(errormessage; //显示错误信息}CChangeWork dl2;p if(dl2.DoModal(==IDOK{UpdateData(true;long id=dl2.m_wid;m_pSet->MoveFirst(;while(m_pSet->m_id!=dl2.m_wid m_pSet->MoveNext(;CChangeMoney dl1;dl1.m_month=m_pSet->m_month;dl1.m_name=m_pSet->m_name;dl1.m_id=m_pSet->m_id;dl1.m_base=m_pSet->m_base;dl1.m_jintie=m_pSet->m_jintie;dl1.m_gangtie=m_pSet->m_gangtie;dl1.m_butie=m_pSet->m_butie;dl1.m_fangtie=m_pSet->m_fangtie; dl1.m_jiaotong=m_pSet->m_jiaotong;dl1.m_yingfa=dl1.m_base+dl1.m_jinti e+dl1.m_gangtie+dl1.m_butie+dl1.m_ fangtie+dl1.m_jiaotong;dl1.m_fangzu=m_pSet->m_fangzu; dl1.m_chuxu=m_pSet->m_chuxu; dl1.m_huifei=m_pSet->m_huifei;if(dl1.m_yingfa<800{dl1.m_gerentax=0;}elseif(dl1.m_yingfa>=800&&dl1.m_yingfa<=1000{dl1.m_gerentax=dl1.m_yingfa*0.05f;}elseif(dl1.m_yingfa>1000&&dl1.m_yingfa<=5000{dl1.m_gerentax=dl1.m_yingfa*0.1f;}else if(dl1.m_yingfa>5000{dl1.m_gerentax=dl1.m_yingfa*0.2f;}dl1.m_yingkou=dl1.m_gerentax+dl1. m_fangzu+dl1.m_chuxu+dl1.m_huifei;dl1.m_shifa=dl1.m_yingfa-dl1.m_yingkou;dl1.m_other=dl1.m_other;if(dl1.DoModal(==IDOK{m_pSet->Edit(;m_pSet->m_name=dl1.m_name;m_pSet->m_id=dl1.m_id;m_pSet->m_month=dl1.m_month;m_pSet->m_base=dl1.m_base;m_pSet->m_jintie=dl1.m_jintie;m_pSet->m_gangtie=dl1.m_gangtie;m_pSet->m_butie=dl1.m_butie;m_pSet->m_fangtie=dl1.m_fangtie;m_pSet->m_jiaotong=dl1.m_jiaotong;m_pSet->m_yingfa=dl1.m_base+dl1.m_jintie+dl1.m_gangtie+dl1.m_butie+dl1.m_fangti e+dl1.m_jiaotong;try{hr =m_pConnection.CreateInstance("ADODB.Connection";//创建Connection对象if(SUCCEEDED(hr{hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown;}}catch(_com_error e //捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage(; AfxMessageBox(errormessage; //显示错误信息}CFindNo dl2;if(dl2.DoModal(==IDOK{UpdateData(true;long id=dl2.m_id;m_pSet->MoveFirst(;while(m_pSet->m_id!=dl2.m_idm_pSet->MoveNext(;CMShowDetail dl1;dl1.m_month=m_pSet->m_month;dl1.m_name=m_pSet->m_name;dl1.m_id=m_pSet->m_id;dl1.m_base=m_pSet->m_base;dl1.m_jintie=m_pSet->m_jintie;dl1.m_gangtie=m_pSet->m_gangtie;dl1.m_butie=m_pSet->m_butie;dl1.m_fangtie=m_pSet->m_fangtie;dl1.m_jiaotong=m_pSet->m_jiaotong;dl1.m_yingfa=dl1.m_base+dl1.m_jintie+dl1.m_gangtie+dl1.m_butie+dl1.m_fangtie+dl1. m_jiaotong;dl1.m_fangzu=m_pSet->m_fangzu;dl1.m_chuxu=m_pSet->m_chuxu;dl1.m_huifei=m_pSet->m_huifei;if(dl1.m_yingfa<800{dl1.m_gerentax=0;}else if(dl1.m_yingfa>=800&&dl1.m_yingfa<=1000{dl1.m_gerentax=dl1.m_yingfa*0.05f;}else if(dl1.m_yingfa>1000&&dl1.m_yingfa<=5000{dl1.m_gerentax=dl1.m_yingfa*0.1f;}else if(dl1.m_yingfa>5000{dl1.m_gerentax=dl1.m_yingfa*0.2f;}dl1.m_yingkou=dl1.m_gerentax+dl1.m_fangzu+dl1.m_chuxu+dl1.m_huifei;dl1.m_shifa=dl1.m_yingfa-dl1.m_yingkou;dl1.m_other=dl1.m_other;dl1.DoModal(;}}void CWorkerMgr6View::OnStaticsMoney({HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection";//创建Connection对象if(SUCCEEDED(hr{hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown;}}catch(_com_error e //捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage(;AfxMessageBox(errormessage; //显示错误信息}m_pSet->MoveFirst(;float sum=0;while(!m_pSet->IsEOF({sum=sum+m_pSet->m_shifa;m_pSet->MoveNext(;}CString string;string.Format("%f",sum;MessageBox(string,"统计当月支出",MB_OKCANCEL; }机很有帮助。

职工信息管理系统C语言课程设计+源代码

职工信息管理系统C语言课程设计+源代码

职工信息管理系统C语言课程设计+源代码课程设计报告课程:高级语言课程设计学号:姓名:班级:教师:时间:设计名称:职工信息管理系统设计内容、目的与要求:本设计旨在熟练掌握C语言的基本知识和编辑技能,基本掌握结构化程序设计的基本思路和方法。

通过编写职工信息管理系统,便于对职工的信息进行管理,训练综合运用函数的自定义,数组,结构体等,并提高程序设计的能力。

要求:设计一个职工信息管理系统,提供以下功能:1.提供一个清晰美观的界面来调用各个功能。

2.录入功能:职工信息录入(职工信息用文件保存),可以一次完成若干条记录的输入。

3.浏览功能:完成对全部职工信息的显示。

4.查找功能:①按职工的职工号查询职工的相关信息,并显示。

②按职工的学历查询职工的相关信息,并显示。

③按职工的电话号码查询职工的相关信息,并显示。

5.删除功能:①通过输入职工的姓名完成对该名职工的信息进行删除。

②通过输入职工号完成对该名职工的信息进行删除。

6.添加功能:完成添加新职工的信息的任务。

7.修改功能:①通过输入职工的姓名完成对该名职工的信息进行修改。

②通过输入职工号完成对该名职工的信息进行修改。

8.退出职工信息管理系统。

计划与进度安排:2012年12月8日至2012年12月15日:仔细研究数据库相关知识,通过上网查资料找思路。

2012年12月16日至2012年12月20日:完成设计思路并作出草稿,编写主函数和各调用函数模块。

2012年12月21日至2013年1月1日:逐步实现各模块的功能化,实现整个程序大体功能。

2013年1月2日至2013年1月6日:修改并完善各功能,编写电子实验报告,并准备提交验收。

设计过程、步骤:一、功能结构1.职工信息管理系统开始菜单根据菜单输入的值选择程序1.录入职工信息2.浏览职工信息3.查询职工信息5.添加职工信息4.删除职工信息6.修改职工信息7.退出1.按职工号查询2.按学历查询3.按号码查询1.按职工号删除2.按职工姓名删除1.按职工号修改2.按职工姓名修改二、设计说明1.这个程序需要使用结构体来存储职工信息。

员工信息管理系统c语言

员工信息管理系统c语言

员工信息管理系统c语言员工信息管理系统是一个使用C语言编写的程序,旨在帮助企业或组织管理员工的相关信息。

这个系统可以有效地记录和管理员工的基本信息、职位、工资、考勤等。

它能够提供一种便捷、高效的方式来管理员工信息,提高工作效率和准确性。

以下是一个简单的员工信息管理系统的参考代码,以展示一些基本功能:```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_EMPLOYEES 100struct Employee {char name[50];int id;char position[50];float salary;};struct Employee employees[MAX_EMPLOYEES];int numEmployees = 0;void addEmployee() {if (numEmployees >= MAX_EMPLOYEES) {printf("无法添加新员工,员工数量已达上限。

\n");return;}struct Employee newEmployee;printf("请输入员工姓名: ");scanf("%s", );printf("请输入员工编号: ");scanf("%d", &newEmployee.id);printf("请输入员工职位: ");scanf("%s", newEmployee.position);printf("请输入员工工资: ");scanf("%f", &newEmployee.salary);employees[numEmployees++] = newEmployee;printf("员工添加成功!\n");}void searchEmployee() {char name[50];printf("请输入要查询的员工姓名: ");scanf("%s", name);int found = 0;for (int i = 0; i < numEmployees; i++) {if (strcmp(employees[i].name, name) == 0) {printf("员工姓名: %s\n", employees[i].name); printf("员工编号: %d\n", employees[i].id);printf("员工职位: %s\n", employees[i].position); printf("员工工资: %.2f\n", employees[i].salary);found = 1;break;}}if (!found) {printf("未找到该员工!\n");}}void printAllEmployees() {if (numEmployees == 0) {printf("没有员工信息可打印。

C语言职工管理系统源代码及运行截图(简单版)

C语言职工管理系统源代码及运行截图(简单版)

#include<stdio.h>#include<string.h>#define N 100typedef struct worker{char name[20];long number;int y,m,d;char zhicheng[20];char bumen[20];float salary;}Worker;void Display(){printf("\n\n\n\t\t***************职工管理系统*************\n\n");printf("\t\t\t0.退\t\t 出\n");printf("\t\t\t1.新\t\t 建\n");printf("\t\t\t2.显\t\t 示\n");printf("\t\t\t3.查\t\t 询\n");printf("\t\t\t4.删\t\t 除\n\n");}/*******1.新建**********/void Add( Worker w[],int n){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d: ",i+1);scanf("%s %ld %d %d %d %s %s %f",w[i].name,&w[i].number, &w[i].y,&w[i].m,&w[i].d,w[i].zhicheng,w[i].bumen,&w[i].salary);}}/*******2.显示**********/void Browse( Worker w[],int n ){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d:",i+1);printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);}}/*******3.1查询姓名**********/void SearchName( Worker w[],int n ){char name[20];int i;printf("\t\t\t输入要查询的名字:");scanf("%s",name);for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\t\t\t查无此人!");}/*******3.2查询工号**********/void SearchNumber( Worker w[],int n ){long number;int i,k=0;printf("\t\t\t输入要查询的工号:");scanf("%ld",&number);for( i = 0; i < n; i ++ ){if( w[i].number == number ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\n\t\t\t查无此人!");}/*******3.查询**********/void Search( Worker w[],int n ){int x;printf("\t\t\t选择查询方式(1.姓名/2.工号):");scanf("%d",&x);printf("\n");switch(x){case 1:SearchName(w,n);break;case 2:SearchNumber(w,n);break;}}/*******4.删除**********/void Delete( Worker w[],int n ){char name[20];int i,j;printf("\t\t\t输入要删除的名字:");scanf("%s",name);printf("\n");for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\t\t\t将删除以下信息:\n\n");printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("\t%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i]. m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);for( j = i;j<n-1;j++ ){w[j] = w[j+1];}printf("\t\t\t成功删除!\n\n");return;}}printf("\t\t\t查无此人!");}void Run( Worker w[],int n ){int choice;do{Display();printf("\t\t\t输入你的选择:");scanf("%d",&choice);printf("\n");switch( choice ){case 0:break;case 1:Add(w,n);break;case 2:Browse(w,n);break;case 3:Search(w,n);break;case 4:Delete(w,n);n--;break;}}while(choice);}void main(){int n;Worker w[N];printf("\t输入职员个数:");scanf("%d",&n);Run(w,n);}友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。

员工管理系统c语言源代码

员工管理系统c语言源代码

#include〈string.h>#include〈stdio.h〉#define N 10000 /*员工的最大数*/typedef struct wage{float wage1; /*员工的基本工资*/float Bonus;/*员工的奖金*/float tax;/*员工的税金*/float S_fee;/*员工的水费*/float D_fee; /*员工的电费*/float T_fee;/*员工的有线电视费*/float Q_fee; /*员工的清洁费*/float S_wage;/*员工的实发工资*/}WAGE;typedef struct worker{char name[10]; /*员工的姓名*/char ID[10];/*员工的工号*/int ID_P;/*员工的职务代号1-—-—高级工程师2————中级工程师3—--—初级工程师*/char ID_Wage[10]; /*员工的工资卡号*/char depart[10]; /*员工的部门*/int age;/*员工的年龄*/char sex;/*员工的性别*/char m_phone[10];/*员工的手机*/char H_phone[10]; /*员工的住宅电话*/WAGE salary;}WORK;WORK wo[N];int n;/*员工的总数*/void menu();/*员工管理操作主菜单函数声明*/void menu1();/*员工管理操作子菜单函数声明*//********************************************************Author : GTCopyRight :tgao@sohu。

comfunction name :saveComments :保存文件函数input : 无output : 无CreatedDate :2007/06/01*********************************************************/save()/*保存函数,保存n个记录*/{int w=1;FILE *fp;int i;system("cls" );if((fp=fopen("work。

职工信息管理系统C语言源代码

职工信息管理系统C语言源代码

#include <stdio.h>#include <windows.h>#include <string.h>#define N 100struct employee{int num;char name[20];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];}em[100]; /*定义一个结构体*/void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify(); /*定义各函数*/void main(){menu();int n,flag;char a;do{ printf("请选择你需要操作的步骤(1--7):\n");scanf("%d",&n);if(n>=1 && n<=7){f lag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(n){case 1:printf(" ◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break;case 2:printf(" ◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;case 3:printf(" ◆◆◆按职工号查询职工信息◆◆◆\n");printf("\n");search();break;case 4:printf(" ◆◆◆删除职工信息◆◆◆\n");printf("\n");del();break;case 5:printf(" ◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break;case 6:printf(" ◆◆◆修改职工信息◆◆◆\n");printf("\n");modify();break;case 7:exit(0);break;default :break;}getchar();printf("\n");printf("是否继续进行(y or n):\n");scanf("%c",&a);if(a=='y'){flag=1;system("cls"); /*清屏*/menu(); /*调用菜单函数*/printf("请再次选择你需要操作的步骤(1--7):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}void menu() /*菜单函数*/{printf(" ************欢迎进入职工信息管理系统**********\n");printf(" 1.录入职工信息");printf(" 2.浏览职工信息\n");printf(" 3.查询职工信息");printf(" 4.删除职工信息\n");printf(" 5.添加职工信息");printf(" 6.修改职工信息\n");printf(" 7.退出\n");printf(" ********************谢谢使用******************\n"); printf("\n");printf("\n");}void input() /*录入函数*/{ int i,m;printf("请输入需要创建信息的职工人数(1--100):\n");scanf("%d",&m);for (i=0;i<m;i++){printf("请输入职工号:");scanf("%d",&em[i].num);printf("请输入姓名: ");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女m--男): ");scanf("%c",&em[i].sex);printf("请输入年龄: ");scanf("%d",&em[i].age);printf("请输入学历: ");scanf("%s",em[i].xueli);printf("请输入工资: ");scanf("%d",&em[i].wage);printf("请输入住址: ");scanf("%s",em[i].addr);printf("请输入电话: ");scanf("%s",em[i].tel);printf("\n");}printf("\n创建完毕!\n");save(m);}void save(int m) /*保存文件函数*/{int i;FILE*fp;if ((fp=fopen("employee_list","wb"))==NULL){printf ("cannot open file\n");exit(0);}for (i=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() /*导入函数*/{FILE*fp;int i=0;if((fp=fopen("employee_list","rb"))==NULL){printf ("cannot open file\n");exit(0);}else{do{fread(&em[i],sizeof(struct employee),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);}void display() /*浏览函数*/{int i;int m=load();printf(" 职工号姓名性别年龄\n");for(i=0;i<m;i++) /*m为输入部分的职工人数*/printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age); printf("\n 学历工资住址电话\n");for(i=0;i<m;i++) /*m为输入部分的职工人数*/printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel); }void del() /*删除函数*/{int m=load();int i,j,n,t,flag;char name[20];printf("\n 原来的职工信息:\n");display();printf("\n");printf("请输入要删除的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(em[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1){for(j=i;j<m-1;j++){strcpy(em[j].name,em[j+1].name);em[j].num=em[j+1].num;em[j].sex=em[j+1].sex;em[j].age=em[j+1].age;strcpy(em[j].xueli,em[j+1].xueli);em[j].wage=em[j+1].wage;strcpy(em[j].addr,em[j+1].addr);strcpy(em[j].tel,em[j+1].tel);}flag=0;}}}if(!flag)m=m-1;elseprintf("\n对不起,查无此人!\n");printf("\n 浏览删除后的所有职工信息:\n");save(m); /*调用保存函数*/display(); /*调用浏览函数*/printf("\n继续删除请按1,不再删除请按0\n");scanf("%d",&t);switch(t){case 1:del();break;case 0:break;default :break;}}void add()/*添加函数*/{FILE*fp;int n;int count=0;int i;int m=load();printf("\n 原来的职工信息:\n");display();printf("\n");fp=fopen("emploee_list","a");printf("请输入想增加的职工数:\n");scanf("%d",&n);for (i=m;i<(m+n);i++){printf("\n 请输入新增加职工的信息:\n");printf("请输入职工号: ");scanf("%d",&em[i].num);printf("\n");printf("请输入姓名: ");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女m--男): ");scanf("%c",&em[i].sex);printf("请输入年龄: ");scanf("%d",&em[i].age);printf("请输入学历: ");scanf("%s",em[i].xueli);printf("请输入工资: ");scanf("%d",&em[i].wage);printf("请输入住址: ");scanf("%s",em[i].addr);printf("请输入电话: ");scanf("%s",em[i].tel);printf("\n");count=count+1;printf("已增加的人数:\n");printf("%d\n",count);}printf("\n添加完毕!\n");m=m+count;printf("\n浏览增加后的所有职工信息:\n"); printf("\n");save(m);display();fclose(fp);}void search()/*查询函数*/{int t,flag;do{ printf("\n按职工号查询请按1; 按学历查询请按2; 按电话号码查询请按3;进入主函数请按4\n");scanf("%d",&t);if(t>=1&&t<=4){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(t){ case 1:printf("按职工号查询\n");search_num();break;case 2:printf("按学历查询\n");search_xueli();break;case 3:printf("按电话号码查询\n");search_tel();break;case 4:main();break;default:break;}}}void search_num(){int num;int i,t;int m=load();printf("请输入要查找的职工号:\n");scanf("%d",&num);for(i=0;i<m;i++)if(num==em[i].num){ printf("\n已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);switch(t){ case 1:search();break;case 2: break;default:break;}}void search_xueli(){ char xueli[30];int i,t;int m=load();printf("请输入要查找的学历:\n");scanf("%s",xueli);for(i=0;i<m;i++)if(strcmp(em[i].xueli,xueli)==0){printf ("\n已找到,其记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel); }if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询学历请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2:break;default :break;}}void search_tel(){ char tel[20];int i, t;printf("请输入要查找的电话号码:\n");scanf("%s",tel);for(i=0;i<m;i++)if(strcmp(tel,em[i].tel)==0){printf("\n已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询电话号码请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2:break;default :break;}}void modify() /*修改函数*/{int num;char name[20];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];int b,c,i,n,t,flag;int m=load();printf("\n 原来的职工信息:\n");display();printf("\n");printf("请输入要修改的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(em[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");scanf("%d",&n);if(n==1){printf("\n需要进行修改的选项\n 1.职工号2.姓名3.性别4.年龄5.学历 6.工资7.住址8.电话\n");printf("请输入你想修改的那一项序号:\n");scanf("%d",&c);if(c>8||c<1)printf("\n选择错误,请重新选择!\n");}flag=0;}}if(flag==1)printf("\n对不起,查无此人!\n");do{switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/{case 1:printf("职工号改为: ");scanf("%d",&num);em[i-1].num=num;break;case 2:printf("姓名改为: ");scanf("%s",name);strcpy(em[i-1].name,name);break;case 3:printf("性别改为: ");getchar();scanf("%c",&sex);em[i-1].sex=sex;break;DP05b_205_215TC005 092-661解决方案case 4:printf("年龄改为: ");scanf("%d",&age);em[i-1].age=age;break;case 5:printf("学历改为: ");scanf("%s",xueli);strcpy(em[i-1].xueli,xueli);break;case 6:printf("工资改为: ");scanf("%d",wage);break;case 7:printf("住址改为: ");scanf("%s",addr);strcpy(em[i-1].addr,addr);break;case 8:printf("电话改为: ");scanf("%s",tel);strcpy(em[i-1].tel,tel);break;}printf("\n");printf("\n是否确定所修改的信息?\n 是请按1 ; 不,重新修改请按2: \n");scanf("%d",&b);}while(b==2);printf("\n浏览修改后的所有职工信息:\n");printf("\n");save(m);display();printf("\n继续修改请按1,不再修改请按0\n");scanf("%d",&t);switch(t){case 1:modify();break;case 0:break;default :break; }} 雨滴穿石,不是靠蛮力,而是靠持之以恒。

c语言课程设计职工工资管理系统源代码

c语言课程设计职工工资管理系统源代码

c语言课程设计职工工资管理系统源代码Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT绝对可以完美运行,下面有运行图片#include<> otalwage=p[c].basesalary+p[c].postwage;printf(" 请输入第%d个职工信息:\n\n",c+1);printf(" 请输入职工号:\n");scanf("%s",p->employeeid);if(strcmp(p->employeeid,"0")!=0){printf(" 请输入职工姓名:\n");scanf("%s",p->name);printf(" 请输入职工性别: \n");scanf("%s",&p->sex);printf(" 请输入职工年龄: \n");scanf("%d",&p->age);printf(" 请输入职工基本工资:\n");scanf("%f",&p->basesalary);printf(" 请输入职工岗位工资:\n");scanf("%f",&p->postwage);printf(" 职工信息输入完成! \n\n");}elsereturn;}save();}/*************************************************************************** ****功能:职工信息输出**************************************************************************** ****/void output(){int j;load();p=emp;printf(" 进入职工信息输出模块 \n\n\n");printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资 |总工资|\n");printf("-------------------------------------------------------------------------------\n");for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("|%10s|%9s|%7s| %5d| %| %| %|\n",p[j].employeeid,p[j].name,p[j].sex, p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");}printf("\n\n 职工信息输出完成! \n\n");getchar();}/*************************************************************************** ***功能:职工信息查询**************************************************************************** **/void search(){int j;while(1){printf("*********************职工信息查询*********************\n\n\n");printf(" 1 按职工号查询 \n");printf(" 2 按职工姓名查询 \n");printf(" 0 退出该项操作 \n");printf("\n\n");while(1){printf(" 请输入你的选择 \n");scanf("%d",&j);if(j>=0&&j<=2){switch(j){case 1:search_employeeid();break;case 2:search_name();break;case 0:return;}}else{printf(" 输入错误! \n\n");printf(" 请再次输入你的选择: \n\n");}}}}/*************************************************************************** ****功能:按职工号查询函数**************************************************************************** ***/void search_employeeid(){char employeeid[10];int k,j;p=emp;printf("*********************按职工号查询职工信息*****************************\n\n\n\n");printf(" 请输入要查询职工的职工号: \n\n");scanf("%s",employeeid);for(k=0;k<N;k++){if(strcmp(employeeid,p->employeeid)==0){j=k;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资 |总工资|\n");printf("|%10s|%9s|%7s| %5d| %| %| %|\n",p[j].employeeid,p[j].name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");break;}else{printf(" not found\n");return;}}}/*************************************************************************** **功能:按职工姓名查询函数**************************************************************************** */void search_name(){char name[10];int flog=0;int f,j;p=emp;printf("******************************按职工姓名查询职工信息***********************\n\n\n");printf(" 请输入要查询职工的姓名: \n\n");scanf("%s",name);for(f=0;f<N;f++,p++){if(strcmp(name,p->name)==0){j=f;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资 |总工资|\n");printf("|%10s|%9s|%7s| %5d| %| %| %|\n",p[j].employeeid,p[j].name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");break;}else{printf(" not found \n\n");return;}}getchar();}/*************************************************************************** ****功能:职工信息修改函数**************************************************************************** ***/void edit(){char e[10];int g=0,j;char flog;p=emp;printf(" 请输入你要修改职工的职工号: \n");scanf("%s",e);for(g=0;g<N;g++){mployeeid)if(strcmp(e,p->employeeid)==0){j=g;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资 |总工资|\n");printf("|%10s|%9s|%7s| %5d| %| %| %|\n",p[j].employeeid,p[j].name,p[j].sex, p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");printf(" 是否要修改该职工信息y(是)or n(否)\n\n");getchar();scanf("%c",&flog);if(flog == 'y'){printf(" 请输入新姓名:\n");scanf("%s",p->name);printf(" 请输入性别: \n");scanf("%s",&p->sex);printf(" 请输入年龄: \n");scanf("%d",&p->age);printf(" 请输入基本工资:\n");scanf("%f",&p->basesalary);printf(" 请输入岗位工资:\n");scanf("%f",&p->postwage);printf(" 修改职工信息成功! \n\n");}if(flog == 'n'){printf(" 退出该项操作! \n\n");return;}save();}if(g==N){printf(" not found \n\n\n");return;}}}/************************************************************************功能:职工工资排列函数************************************************************************/ void array(){int j;while(1){printf("*************************工资排序*********************\n\n");printf(" 1 按基本工资排序 \n\n");printf(" 2 按岗位工资排序 \n\n");printf(" 3 按总工资排列 \n\n");printf(" 0 退出 \n\n");printf("\n\n\n");while(1){printf(" 请输入你的选择: \n\n");scanf("%d",&j);if(j>=0&&j<=3){switch(j){case 1:array_basesalary();break;case 2:array_postwage();break;case 3:array_totalwage();break;case 0:return;}}else{printf(" 输入错误!\n\n\n");printf(" 请再次输入你的选择:\n\n");}}}}/************************************************************************** 功能:按基本工资排列(选择法)***************************************************************************/ void array_basesalary(){int i,j,k;p=emp;for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++){if(p[k].basesalary<p[j].basesalary)k=j;}if(k!=i){replace=emp[k];emp[k]=emp[i];emp[i]=replace;}}for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资 |总工资|\n");printf("|%10s|%9s|%7s| %5d| %| %| %|\n",p[j].employeeid,p[j].name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/************************************************************************功能:按岗位工资排列(冒泡法)*************************************************************************/void array_postwage(){int i,j;p=emp;for(i=0;i<N;i++){for(j=0;j<N-i;j++){if(p[j].postwage<p[j+1].postwage){replace=emp[j];emp[j]=emp[j+1];emp[j+1]=replace;}}}for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资 |总工资|\n");printf("|%10s|%9s|%7s| %5d| %| %| %|\n",p[j].employeeid,p[j].name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/************************************************************************ 功能:按总工资排列(插入法)************************************************************************/ void array_totalwage(){int i,j;p=emp;for(i=1;i<N;i++){replace=emp[i];for(j=i-1;j>=0&&p[i].totalwage>p[i].totalwage;j--){emp[j+1]=emp[j];emp[j+1]=replace;}}for(j=N-1;j>=0;j--){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 | 年龄 |基本工资 |岗位工资 |总工资|\n");printf("|%10s|%9s|%7s| %5d| %| %| %|\n",p[j].employeeid,p[j].name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/************************************************************************* 功能:工资统计函数**************************************************************************/ void statistics(){int z,a=0,b=0,c=0;p=emp;for(z=0;z<N;z++){if(p[z].totalwage>3000){a++;continue;}if(p[z].totalwage>=2000&&p[z].totalwage<=3000){b++;continue;}if(p[z].totalwage<=2000&&p[z].totalwage>0){c++;continue;}}printf(" 总工资在3000元以上的职工人数有: %d\n\n",a);printf(" 总工资在2000元至3000元的职工人数有:%d\n\n",b);printf(" 总工资在2000元以下的职工人数有: %d\n\n",c);getchar();}/*************************************************************************** 功能:导出函数***************************************************************************/ void save(){int k;FILE *fp;p=emp;if((fp=fopen("emp_list","wb"))==NULL){printf(" Create file error!\n");return;}for(k=0;k<N;k++,p++){if(fwrite(p,sizeof(struct employee),1,fp)!=1){printf(" file save error!\n\n");break;}elsecontinue;}getchar();fclose(fp);}/*********************************************************************** 功能:导入函数***********************************************************************/ void load(){int l;FILE *fp;p=emp;if((fp=fopen("emp_list","rb"))==NULL){printf(" Create file error!\n");exit(0);}for(l=0;l<N;l++,p++){if(fread(p,sizeof(struct employee),1,fp)!=1){printf(" file read error!\n\n");break;}elsecontinue;}getchar();fclose(fp);}下面是实验结果。

C++大作业_职工信息管理系统源代码

C++大作业_职工信息管理系统源代码

#include<iostream>#include<string>#include<fstream>using namespace std;const N=5000; // 定义系统可录入的职工最大数值string Ename[N];long Enum[N];char Esex[N];int Eage[N];char Emarriage[N];int Edepart[N];int Eposition[N];int Edegree[N];int Eworktime[N];float Epay[N];class Employee{public:string Employeename;long Employeenum;char Employeesex;int Employeeage;char Employeemarriage;int Employeedepart;int Employeeposition;int Employeedegree;int Employeeworktime;float Employeepay;static long EmployeeMaxNum;static float EmployeeBasePay;void NewInfo();void ShowInfo();void showall();void showdepart(int depart);void showdegree(int degree);void showage(int min,int max);void shownum(long number);void RefreshInfo();void DeleteInfo();float Pay(int Employeegrade);static int MaxNum();};class DBOperate{public:string Employeename;long Employeenum;char Employeesex;int Employeeage;char Employeemarriage;int Employeedepart;int Employeeposition;int Employeedegree;int Employeeworktime;float Employeepay;static long EmployeeMaxNum;static float EmployeeBasePay;void WriteIn(int iflag);void ReadOut();void RefreshMaxNum(int iflag); //iflg=1 or -1 or 0 };long Employee::EmployeeMaxNum = 1000;float Employee::EmployeeBasePay = 1500;int Employee::MaxNum() //返回系统已经存储的人数{int MN = 0;ifstream myf;myf.open("EmployeeMaxNum.txt");myf>>MN;cout<<MN<<endl;myf.close();return MN;}void Employee::NewInfo() //添加新职工函数{cout<<"新职工姓名: ";cin>>Employee::Employeename;Employee::Employeenum = EmployeeMaxNum + Employee::MaxNum()+1;cout<<"新职工性别(F为女性,M为男性): ";cin>>Employee::Employeesex;cout<<"新职工年龄: ";cin>>Employee::Employeeage;cout<<"新职工婚姻状况(Y为已婚,N为未婚): ";cin>>Employee::Employeemarriage;cout<<"新职工学历,请输入相应学历的序号: "<<endl;cout<<" [1:小学2:初中3:高中4:本科5:硕士6:博士] ";cin>>Employee::Employeedegree;while(Employee::Employeedegree !=1&&Employee::Employeedegree !=2&&Employee::Employ eedegree !=3&&Employee::Employeedegree !=4&&Employee::Employeedegree !=5&&Employe e::Employeedegree !=6){cout<<"输入有误,请重新输入:"<<endl;cout<<" [1:小学2:初中3:高中4:本科5:硕士6:博士] ";cin>>Employee::Employeedegree;}cout<<"新职工所在部门,请输入相应部门的序号:"<<endl;cout<<" [1:董事会2:销售部3:人事部4:客服中心5:财务部6:技术研发部7:安全监察部] ";cin>>Employee::Employeedepart;while(Employee::Employeedepart !=1&&Employee::Employeedepart !=2&&Employee::Employe edepart !=3&&Employee::Employeedepart !=4&&Employee::Employeedepart!=5&&Employee:: Employeedepart!=6&&Employee::Employeedepart!=7){cout<<"输入有误,请重新输入:"<<endl;cout<<" [1:董事会2:销售部3:人事部4:客服中心5:财务部6:技术研发部7:安全监察部] ";cin>>Employee::Employeedepart;}cout<<"新职工职位, 请输入相应职位的序号: "<<endl;cout<<" [1:临时职工2: 正式职工3:部门经理4:主任5:董事长] ";cin>>Employee::Employeeposition;while(Employee::Employeeposition !=1&&Employee::Employeeposition !=2&&Employee::Empl oyeeposition !=3&&Employee::Employeeposition !=4&&Employee::Employeeposition !=5) {cout<<"输入有误,请重新输入:"<<endl;cout<<" [1:临时职员2: 正式职员3:部门经理4:主任5:董事长] ";cin>>Employee::Employeeposition;}cout<<"新职工的工作时长(不需要输入单位): ";cin>>Employee::Employeeworktime;Employee::Employeepay = Employee::Pay(Employee::Employeeposition);DBOperate dbo;dbo.ReadOut();int MaxNum = Employee::MaxNum();Enum[MaxNum] = Employee::Employeenum;Ename[MaxNum] = Employee::Employeename;Esex[MaxNum] = Employee::Employeesex;Eage[MaxNum] = Employee::Employeeage;Emarriage[MaxNum] = Employee::Employeemarriage;Edegree[MaxNum] = Employee::Employeedegree;Edepart[MaxNum] = Employee::Employeedepart;Eposition[MaxNum] = Employee::Employeeposition;Eworktime[MaxNum] = Employee::Employeeworktime;Epay[MaxNum] = Employee::Employeepay;dbo.WriteIn(1);cout<<" 添加新成员成功!"<<endl;}void Employee::ShowInfo() //程序主体数据输出函数{int choice1,choice2,min,max;long searchnum;Employee e;cout<<"*******************************************"<<endl;cout<<"-----------1.输出全体职工信息--------------"<<endl;cout<<"-----------2.按职工部门输出----------------"<<endl;cout<<"-----------3.按职工学历输出----------------"<<endl;cout<<"-----------4.按职工年龄输出----------------"<<endl;cout<<"-----------5.按职工编号输出----------------"<<endl;cout<<"*******************************************"<<endl;cout<<" 请选择查询方式:";cin>>choice1;switch(choice1){case 1: showall();break;case 2: cout<<"请输入要查询职工的部门编号[1:董事会2:销售部3:人事部4:客服中心5:财务部6:技术研发部7:安全监察部] ";cin>>choice2;e.showdepart(choice2);break;case 3: cout<<"请输入要查询职工的学历编号: [1:小学2:初中3:高中4:本科5:硕士6:博士] ";cin>>choice2;e.showdegree(choice2);break;case 4: cout<<"请输入要查询的年龄范围: ";cout<<"最小值: ";cin>>min;cout<<"最大值: ";cin>>max;e.showage(min,max);break;case 5: cout<<"请输入要查询的职工编号: ";cin>>searchnum;e.shownum(searchnum);break;default: cout<<"出错啦! "<<endl;break;}}void Employee::showall() //全体职工输出函数{ int i;long number;for(i=0;i<Employee::MaxNum();i++){number = Enum[i];shownum(number);}}void Employee::showdepart(int depart) //按职工所在部门输出函数{int i;switch(depart){case 1: cout<<"董事会的成员有: "<<endl; break;case 2: cout<<"销售部的成员有: "<<endl; break;case 3: cout<<"人事部的成员有: "<<endl; break;case 4: cout<<"客服中心的成员有: "<<endl; break;case 5: cout<<"财务部的成员有: "<<endl; break;case 6: cout<<"技术研发部的成员有: "<<endl; break;case 7: cout<<"安全监察部的成员有: "<<endl; break;default: cout<<"输入错误!>"<<endl; break;}for(i=0;i<Employee::MaxNum();i++){if(Edepart[i] == depart){long number = Enum[i];shownum(number);}else continue;}}void Employee::showdegree(int degree) //按职工学历输出函数{int i;switch(degree){case 1:cout<<"初中学历的员工有:"<<endl;break;case 2:cout<<"初中学历的员工有:"<<endl;break;case 3:cout<<"高中学历的员工有:"<<endl;break;case 4:cout<<"本科学历的员工有:"<<endl;break;case 5:cout<<"硕士学位的员工有:"<<endl;break;case 6:cout<<"博士学位的员工有:"<<endl;break;}for(i=0;i<Employee::MaxNum();i++){if(Edegree[i] == degree){long number = Enum[i];shownum(number);}else continue;}}void Employee::showage(int min,int max) //按职工年龄段输出函数{int i;for(i=0;i<Employee::MaxNum();i++){if(Eage[i]>=min&&Eage[i]<=max){long number = Enum[i];shownum(number);}else continue;}}void Employee::shownum(long number) //按职工编号输出函数{int i;for(i=0;i<Employee::MaxNum();i++){if(Enum[i] == number){cout<<"**********************************"<<endl;cout<<"职工编号:"<<Enum[i]<<endl;cout<<"姓名:"<<Ename[i]<<endl;cout<<"性别:";if(Esex[i]=='F') cout<<"女"<<endl;else if(Esex[i]=='M') cout<<"男"<<endl;cout<<"年龄:"<<Eage[i]<<"岁"<<endl;cout<<"婚姻情况:";if(Emarriage[i]=='Y') cout<<"已婚"<<endl;else if(Emarriage[i]=='N') cout<<"未婚"<<endl;cout<<"学历:";switch (Edegree[i]){case 1:cout<<"小学"<<endl;break;case 2:cout<<"初中"<<endl;break;case 3:cout<<"高中"<<endl;break;case 4:cout<<"本科"<<endl;break;case 5:cout<<"硕士"<<endl;break;case 6:cout<<"博士"<<endl;break;}cout<<"所在部门:";switch (Edepart[i]){case 1:cout<<"董事会"<<endl;break;case 2:cout<<"销售部"<<endl;break;case 3:cout<<"人事部"<<endl;break;case 4:cout<<"客服中心"<<endl;break;case 5:cout<<"财务部"<<endl;break;case 6:cout<<"技术研发部"<<endl;break;case 7:cout<<"安全监察部"<<endl;break;}cout<<"所任职务:";switch (Eposition[i]){case 1:cout<<"临时成员"<<endl;break;case 2:cout<<"正式员工"<<endl;break;case 3:cout<<"部门经理"<<endl;break;case 4:cout<<"主任"<<endl;break;case 5:cout<<"董事长"<<endl;break;}cout<<"工作时长:"<<Eworktime[i]<<"小时"<<endl;cout<<"工资:"<<Epay[i]<<"元"<<endl;cout<<"**********************************"<<endl;}else continue;}}void Employee::RefreshInfo() //修改职工信息的函数{int cNum = 1000;DBOperate dbo;dbo.ReadOut();void Employee::shownum(long number);cout<<"请输入您要修改的职工编号:";cin>>cNum;int MN;MN = Employee::MaxNum();for(int i=0;i<MN;i++) //遍历数据文件,查找要修改的职工数据{if(Enum[i] == cNum){Employee::shownum(cNum);cout<<"请输入该职工的新信息: "<<endl;cout<<"职工姓名: "; //录入职工的新的数据,职工编号保持不变cin>>Employee::Employeename;Ename[i] = Employee::Employeename;cout<<"职工性别(F为女性,M为男性): ";cin>>Employee::Employeesex;Esex[i] = Employee::Employeesex;cout<<"职工年龄: ";cin>>Employee::Employeeage;Eage[i] = Employee::Employeeage;cout<<"职工婚姻状况(Y为已婚,N为未婚): ";cin>>Employee::Employeemarriage;Emarriage[i] = Employee::Employeemarriage;cout<<"职工学历,请输入相应学历的序号:"<<endl;cout<<" [1:小学2:初中3:高中4:本科5:硕士6:博士] ";cin>>Employee::Employeedegree;while(Employee::Employeedegree !=1&&Employee::Employeedegree !=2&&Employee::Employ eedegree !=3&&Employee::Employeedegree !=4&&Employee::Employeedegree !=5&&Employe e::Employeedegree !=6){cout<<"输入有误,请重新输入:"<<endl;cout<<" [1:小学2:初中3:高中4:本科5:硕士6:博士] ";cin>>Employee::Employeedegree;}Edegree[i] = Employee::Employeedegree;cout<<"职工所在部门,请输入相应部门的序号: "<<endl;cout<<" [1:董事会2:销售部3:人事部4:客服中心5:财务部6:技术研发部7:安全监察部] ";cin>>Employee::Employeedepart;while(Employee::Employeedepart !=1&&Employee::Employeedepart !=2&&Employee::Employe edepart !=3&&Employee::Employeedepart !=4&&Employee::Employeedepart!=5&&Employee:: Employeedepart!=6&&Employee::Employeedepart!=7){cout<<"输入有误,请重新输入:"<<endl;cout<<" [1:董事会2:销售部3:人事部4:客服中心5:财务部6:技术研发部7:安全监察部] ";cin>>Employee::Employeedepart;}Edepart[i] = Employee::Employeedepart;cout<<"职工职位,请输入相应职位的序号:"<<endl;cout<<" [1:临时职员2: 正式职员3:部门经理4:主任5:董事长] ";cin>>Employee::Employeeposition;while(Employee::Employeeposition !=1&&Employee::Employeeposition !=2&&Employee::Empl oyeeposition !=3&&Employee::Employeeposition !=4&&Employee::Employeeposition !=5) {cout<<"输入有误,请重新输入:"<<endl;cout<<" [1:临时职员2: 正式职员3:部门经理4:主任5:董事长] ";cin>>Employee::Employeeposition;}Eposition[i] = Employee::Employeeposition;cout<<"员工的工作时(不需要输入单位): ";cin>>Employee::Employeeworktime;Eworktime[i] = Employee::Employeeworktime;Epay[i] = Employee::Pay(Employee::Employeeposition);break;}}dbo.WriteIn(0);}void Employee::DeleteInfo() //删除职工数据的函数{char tmp;int cNum = 1000;DBOperate dbo;dbo.ReadOut();void Employee::shownum(long number);cout<<"请输入您要删除的职工编号>:";cin>>cNum;int MN;MN = Employee::MaxNum();for(int i=0;i<MN;i++) //遍历数据文件,查找要删除的职工{if(Enum[i] == cNum)Employee::shownum(cNum);}cout<<"确认要删除该职工信息?(Y为确认,N为放弃):";cin>>tmp;if(tmp=='Y'){if(i==MN-1)dbo.WriteIn(-1);else{for(int j=i;j<MN-1;j++){ Enum[j] = Enum[j+1]; }dbo.WriteIn(-1);}cout<<" 删除操作成功! "<<endl;}}float Employee::Pay(int Employeeposition) //根据职工职位计算工资的函数{float tmpPay;tmpPay = Employee::EmployeeBasePay + Employee::Employeeposition * Employee::EmployeeBasePay;return tmpPay;}void DBOperate::WriteIn(int iflag) //数据操作函数—写入{DBOperate::RefreshMaxNum(iflag);ofstream myf("Employee.txt");Employee e;int MN;MN = e.MaxNum();for(int i=0;i<MN;i++){myf<<Enum[i]<<'\n'<<Ename[i]<<'\n'<<Esex[i]<<'\n'<<Eage[i]<<'\n'<<Emarriage[i]<<'\n'<<Ede gree[i]<<'\n'<<Edepart[i]<<'\n'<<Eposition[i]<<'\n'<<Eworktime[i]<<'\n'<<Epay[i]<<'\n';}myf.close();return;}void DBOperate::ReadOut() //数据操作函数—读出{ifstream myf("Employee.txt");Employee e;int MN;MN = e.MaxNum();for(int i=0 ;i<MN;i++){myf>>DBOperate::Employeenum>>DBOperate::Employeename>>DBOperate::Employeesex>> DBOperate::Employeeage>>DBOperate::Employeemarriage>>DBOperate::Employeedegree>>DBOperate::Employeedepart>>DBOperate::Employeepo sition>>DBOperate::Employeeworktime>>DBOperate::Employeepay;Enum[i] = DBOperate::Employeenum;Ename[i] = DBOperate::Employeename;Esex[i] = DBOperate::Employeesex;Eage[i] = DBOperate::Employeeage;Emarriage[i] = DBOperate::Employeemarriage;Edegree[i] = DBOperate::Employeedegree;Edepart[i] = DBOperate::Employeedepart;Eposition[i] = DBOperate::Employeeposition;Eworktime[i] = DBOperate::Employeeworktime;Epay[i] = DBOperate::Employeepay;}myf.close();}void DBOperate::RefreshMaxNum(int iflag) //更新系统中员工计数文件的函数{int MaxNum = 0;ifstream myif("EmployeeMaxNum.txt");myif>>MaxNum;myif.close();MaxNum = MaxNum+iflag;ofstream myof("EmployeeMaxNum.txt");myof<<MaxNum;myof.close();}int main() //主函数{system("color B0"); //设置当前窗口的背景色和前景色// 0 = 黑色8 = 灰色// 1 = 蓝色9 = 淡蓝色// 2 = 绿色 A = 淡绿色// 3 = 浅绿色B = 淡浅绿色// 4 = 红色 C = 淡红色// 5 = 紫色 D = 淡紫色// 6 = 黄色 E = 淡黄色// 7 = 白色 F = 亮白色int select = 0;while(select!=5){cout<<" ╭————————————————————————————╮"<<endl;cout<<" ∣《主菜单》∣"<<endl;cout<<" ├————————————————————————————┤"<<endl;cout<<" ∣ 1.新建并录入职工信息∣"<<endl;cout<<" ∣ 2.按条件输出职工信息∣"<<endl;cout<<" ∣ 3.修改指定职工的信息∣"<<endl;cout<<" ∣ 4.删除职工信息∣"<<endl;cout<<" ∣ 5.退出系统∣"<<endl;cout<<" ╰————————————————————————————╯"<<endl;cout<<" ——————————————————————————————"<<endl;cout<<" 请选择您需要功能的代号: " ;cin>>select;Employee e;DBOperate dbo;switch(select){case 1:e.NewInfo(); break;case 2:dbo.ReadOut();e.ShowInfo(); break;case 3:e.RefreshInfo(); break;case 4:e.DeleteInfo(); break;case 5: cout<<" 退出成功"<<endl;break;default: cout<<"命令错误!"<<endl;}if(select == 5)break;}exit(1);return 0;}。

C语言课程设计_职工信息管理系统_单链表实现程序源代码

C语言课程设计_职工信息管理系统_单链表实现程序源代码

C语言课程设计_职工信息管理系统_单链表实现程序源代码//C语言课程设计职工信息管理系统—单链表实现#include "stdio.h"#include "stdlib.h"#include "string.h"int saveflag=0; /*是否需要存盘的标志变量*/struct employee{char name[15];char num[10];/* 工号 */char sex[4];char bm[15];char zc[20];int gz;};typedef struct node{struct employee data;struct node *next;}Node,*Link;//Link l (注意是:字母l不是数字1)void add(Link l);void disp(Link l); //查看职工所有信息void del(Link l); //删除功能Node* Locate(Link l,char findmess[],char nameornum[]); void Qur(Link l); //查询功能void Tongji(Link l); //统计void Sort(Link l); //排序void Modify(Link l); //修改功能void save(Link l); //将单链表l中的数据写入文件void printe(Node *p); //本函数用于打印链表中某个节点的数据内容 *///以下4个函数用于输出中文标题void printstart();void Wrong();void Nofind();void printc();void menu(){printf("\t****************************************************** ***********\n");printf("\t* *\n");printf("\t* 职工信息管理系统_结构体数组实现*\n");printf("\t* *\n");printf("\t* [1] 增加职工信息 [2] 删除职工信息 *\n");printf("\t* [3] 查询职工信息 [4] 修改职工信息 *\n");printf("\t* [5] 插入职工记录 [6] 统计职工记录 *\n");printf("\t* [7] 排序 [8] 保存职工信息 *\n");printf("\t* [9] 显示数据 [0] 退出系统*\n");printf("\t* *\n");printf("\t****************************************************** ***********\n");} //void menu菜单结束void Disp(Link l) //显示单链表l中存储的职工记录,内容为employee结构中定义的内容{int count=0;Node *p;p=l->next; // l存储的是单链表中头结点的指针,该头结点没有存储职工信息,指针域指向的后继结点才有职工信息if(!p) /*p==NULL,NUll在stdlib中定义为0*/{printf("\n=====>提示:没有职工记录可以显示!\n");return;}printf("\t\t\t\t显示结果\n");。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include <stdio、h>#include<windows、h>#include <string、h〉#define N100struct employee{int num;char name[20];char sex;ﻩint age;charxueli[30];intwage;char addr[30];char tel[20];}em[100]; /*定义一个结构体*/void menu();void input();voidsave(int);voiddisplay();void del();voidadd();void search();void search_num();voidsearch_xueli();voidsearch_tel();void modify();/*定义各函数*/void main(){menu();int n,flag;char a;do{printf(”请选择您需要操作得步骤(1--7):\n");scanf(”%d”,&n);if(n〉=1 &&n<=7){ﻩflag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(n){case1:printf(”◆◆◆输入职工信息◆◆◆\n");printf (”\n");input();break;case2:printf(”◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;case 3:printf("◆◆◆按职工号查询职工信息◆◆◆\n");p rintf(”\n");search();break;case4:printf(" ◆◆◆删除职工信息◆◆◆\n");printf(”\n”);del();break;case 5:printf("◆◆◆添加职工信息◆◆◆\n");printf("\n”);add();break;case 6:printf(”◆◆◆修改职工信息◆◆◆\n”);printf(”\n");modify();break;case 7:exit(0);break;default :break;}getchar();printf("\n");printf("就是否继续进行(y orn):\n");scanf(”%c”,&a);if(a=='y'){flag=1;system(”cls"); /*清屏*/menu(); /*调用菜单函数*/printf("请再次选择您需要操作得步骤(1--7):\n");scanf(”%d”,&n);printf("\n");}elseexit(0);}}void menu()/*菜单函数*/{printf(" ************欢迎进入职工信息管理系统**********\n");printf("1、录入职工信息");printf("2、浏览职工信息\n");printf(" 3、查询职工信息");printf(”4、删除职工信息\n");printf(”5、添加职工信息");printf("6、修改职工信息\n”);printf(”7、退出\n”);printf(" ********************谢谢使用******************\n");printf("\n”);printf(”\n");}void input()/*录入函数*/{int i,m;printf("请输入需要创建信息得职工人数(1—-100):\n”);scanf(”%d",&m);for(i=0;i<m;i++){printf(”请输入职工号:");scanf("%d",&em[i]、num);printf(”请输入姓名: ");scanf(”%s",em[i]、name);getchar();printf("请输入性别(f-—女m--男):");scanf(”%c",&em[i]、sex);printf(”请输入年龄:");scanf("%d",&em[i]、age);printf("请输入学历:”);scanf("%s”,em[i]、xueli);printf("请输入工资:");scanf("%d”,&em[i]、wage);printf("请输入住址:");scanf(”%s",em[i]、addr);printf("请输入电话: ");scanf("%s”,em[i]、tel);printf(”\n");}printf("\n创建完毕!\n”);save(m);}voidsave(int m)/*保存文件函数*/{inti;;if((fp=fopen(”employee_list","wb"))==NULL){printf ("cannotopen file\n");exit(0);}for(i=0;i〈m;i++)/*将内存中职工得信息输出到磁盘文件中去*/if(fwrite(&em[i],sizeof(struct employee),1,fp)!=1)printf("error\n”);fclose(fp);}int load() /*导入函数*/{;inti=0;if((fp=fopen(”emp loyee_list",”rb"))==NULL){printf ("cannot open file\n");exit(0);}else{do{fread(&em[i],sizeof(structemployee),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);}void display() /*浏览函数*/{int i;int m=load();printf("职工号姓名性别年龄\n");for(i=0;i<m;i++)/*m为输入部分得职工人数*/printf("\n %—8d%-6s%-6c%-6d\n",em[i]、num,em[i]、name,em[i]、sex,em[i]、age);printf("\n学历工资住址电话\n”);for(i=0;i<m;i++)/*m为输入部分得职工人数*/printf("\n %—6s%-6d%-6s%—6s\n”,em[i]、xueli,em[i]、wage,em[i]、addr,em[i]、tel);}voiddel()/*删除函数*/{intm=load();int i,j,n,t,flag;char name[20];printf("\n 原来得职工信息:\n");display();printf("\n”);printf("请输入要删除得职工得姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i〈m;i++){if(strcmp(em[i]、name,name)==0){printf("\n已找到此人,原始记录为:\n”);printf(”职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%—6d\n",em[i]、num,em[i]、name,em[i]、sex,em[i]、age);printf("\n学历工资住址电话\n");printf("\n%—6s%—6d%—6s%—6s\n",em[i]、xueli,em[i]、wage,em[i]、addr,em[i]、tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1){for(j=i;j<m-1;j++){strcpy(em[j]、name,em[j+1]、name);em[j]、num=em[j+1]、num;em[j]、sex=em[j+1]、sex;em[j]、age=em[j+1]、age;strcpy(em[j]、xueli,em[j+1]、xueli);em[j]、wage=em[j+1]、wage;strcpy(em[j]、addr,em[j+1]、addr);strcpy(em[j]、tel,em[j+1]、tel);}flag=0;}}}if(!flag)m=m-1;elseprintf("\n对不起,查无此人!\n");printf("\n 浏览删除后得所有职工信息:\n”);save(m);/*调用保存函数*/display();/*调用浏览函数*/printf("\n继续删除请按1,不再删除请按0\n");scanf("%d”,&t);switch(t){case1:del();break;case 0:break;default :break;}}void add()/*添加函数*/{;intn;int count=0;int i;int m=load();printf("\n 原来得职工信息:\n");display();printf(”\n”);fp=fopen(”emploee_list","a”);printf(”请输入想增加得职工数:\n”);scanf("%d",&n);for (i=m;i〈(m+n);i++){printf("\n请输入新增加职工得信息:\n");printf(”请输入职工号: ");scanf("%d",&em[i]、num);printf(”\n”);printf("请输入姓名:");scanf(”%s”,em[i]、name);getchar();printf("请输入性别(f--女m—-男): ”);scanf("%c”,&em[i]、sex);printf("请输入年龄: ”);scanf("%d”,&em[i]、age);printf("请输入学历:”);scanf("%s",em[i]、xueli);printf(”请输入工资:”);scanf(”%d”,&em[i]、wage);printf(”请输入住址:”);scanf(”%s",em[i]、addr);printf("请输入电话:");scanf("%s”,em[i]、tel);printf(”\n");count=count+1;printf("已增加得人数:\n”);printf(”%d\n”,count);}printf(”\n添加完毕!\n");m=m+count;printf("\n浏览增加后得所有职工信息:\n”);printf("\n”);save(m);display();fclose(fp);}void search()/*查询函数*/{int t,flag;do{printf(”\n按职工号查询请按1;按学历查询请按2;按电话号码查询请按3;进入主函数请按4\n");scanf(”%d",&t);if(t>=1&&t<=4){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!”);}}while(flag==0);while(flag==1){switch(t){case 1:printf(”按职工号查询\n”);search_num();break;case 2:printf("按学历查询\n”);search_xueli();break;case 3:printf(”按电话号码查询\n”);search_tel();break;case4:main();break;default:break;}}}void search_num(){int num;int i,t;intm=load();printf(”请输入要查找得职工号:\n");scanf(”%d”,&num);for(i=0;i<m;i++)if(num==em[i]、num){ printf("\n已找到此人,其记录为:\n");printf("职工号姓名性别年龄\n”);printf(”\n %-8d%-6s%—6c%-6d\n”,em[i]、num,em[i]、name,em[i]、sex,em[i]、age);printf(”\n学历工资住址电话\n");printf(”\n %-6s%-6d%-6s%-6s\n",em[i]、xueli,em[i]、wage,em[i]、addr,em[i]、tel);break;}if(i==m)printf("\n对不起,查无此人\n”);printf("\n”);printf("返回查询函数请按1,继续查询职工号请按2\n”);scanf(”%d",&t);switch(t){case 1:search();break;case 2:break;default:break;}}voidsearch_xueli(){char xueli[30];inti,t;int m=load();printf(”请输入要查找得学历:\n");scanf("%s”,xueli);for(i=0;i〈m;i++)if(strcmp(em[i]、xueli,xueli)==0){printf ("\n已找到,其记录为:\n");printf(" 职工号姓名性别年龄\n”);printf("\n%-8d%—6s%-6c%-6d\n”,em[i]、num,em[i]、name,em[i]、sex,em[i]、age);printf(”\n 学历工资住址电话\n”);printf("\n %—6s%-6d%-6s%—6s\n",em[i]、xueli,em[i]、wage,em[i]、addr,em[i]、tel);}if(i==m)printf("\n对不起,查无此人\n");printf(”\n");printf("返回查询函数请按1,继续查询学历请按2\n”);scanf("%d”,&t);switch(t){case 1:search();break;case 2:break;default:break;}}void search_tel(){char tel[20];inti, t;int m=load();printf("请输入要查找得电话号码:\n");scanf("%s”,tel);for(i=0;i<m;i++)if(strcmp(tel,em[i]、tel)==0){printf(”\n已找到此人,其记录为:\n”);printf("职工号姓名性别年龄\n");printf("\n%-8d%-6s%-6c%—6d\n”,em[i]、num,em[i]、name,em [i]、sex,em[i]、age);printf("\n 学历工资住址电话\n”);printf("\n %-6s%—6d%—6s%-6s\n",em[i]、xueli,em[i]、wage,e m[i]、addr,em[i]、tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf(”\n");printf("返回查询函数请按1,继续查询电话号码请按2\n");scanf("%d”,&t);switch(t){case 1:search();break;case 2:break;default:break;}}void modify()/*修改函数*/{intnum;charname[20];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];int b,c,i,n,t,flag;int m=load();printf("\n 原来得职工信息:\n");display();printf("\n”);printf(”请输入要修改得职工得姓名:\n”);scanf(”%s”,name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(em[i]、name,name)==0){printf(”\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄\n”);printf("\n%-8d%-6s%—6c%-6d\n”,em[i]、num,em[i]、name,em[i]、sex,em[i]、age);printf(”\n学历工资住址电话\n");printf(”\n%-6s%-6d%-6s%-6s\n",em[i]、xueli,em[i]、wag e,em[i]、addr,em[i]、tel);printf("\n确实要修改此人信息请按1; 不修改请按0\n");scanf(”%d",&n);if(n==1){printf("\n需要进行修改得选项\n 1、职工号2、姓名3、性别4、年龄5、学历6、工资7、住址8、电话\n");printf(”请输入您想修改得那一项序号:\n”);scanf(”%d",&c);if(c>8||c<1)printf("\n选择错误,请重新选择!\n");}flag=0;}}if(flag==1)printf(”\n对不起,查无此人!\n");do{switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面得应该把改后得信息赋值给第i-1个人*/{case 1:printf("职工号改为: ”);scanf(”%d",&num);em[i-1]、num=num;break;case2:printf("姓名改为:”);scanf("%s”,name);strcpy(em[i—1]、name,name);break;case 3:printf("性别改为:");getchar();scanf(”%c",&sex);em[i-1]、sex=sex;break;case4:printf("年龄改为:”);scanf("%d”,&age);em[i-1]、age=age;break;case 5:printf("学历改为:");scanf("%s",xueli);strcpy(em[i—1]、xueli,xueli);break;case6:printf(”工资改为: ");scanf(”%d",wage);break;case 7:printf("住址改为: ");scanf(”%s",addr);strcpy(em[i-1]、addr,addr);break;case 8:printf("电话改为:”);scanf(”%s”,tel);strcpy(em[i-1]、tel,tel);break;}printf("\n");printf("\n就是否确定所修改得信息?\n 就是请按1; 不,重新修改请按2:\n”);scanf("%d",&b);}while(b==2);printf("\n浏览修改后得所有职工信息:\n”);printf("\n”);save(m);display();printf(”\n继续修改请按1,不再修改请按0\n");scanf(”%d”,&t);switch(t){case 1:modify();break;case0:break;default:break;}}。

相关文档
最新文档