c语言程序设计 员工信息管理系统

上传人:陈** 文档编号:97136881 上传时间:2022-05-26 格式:DOCX 页数:19 大小:29.82KB
返回 下载 相关 举报
c语言程序设计 员工信息管理系统_第1页
第1页 / 共19页
c语言程序设计 员工信息管理系统_第2页
第2页 / 共19页
c语言程序设计 员工信息管理系统_第3页
第3页 / 共19页
点击查看更多>>
资源描述
编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第19页 共19页实验题目:员工信息管理系统一、 实验目的1. 熟悉c语言的编译连接和运行过程。2. 掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。3. 掌握if语句及switch语句的运用方法及嵌套应用方法。4. 掌握实现循环结构的三种语句while、 do-while.、for 的使用。5. 掌握函数的定义方法和调用方法。6. 能够采用模块化思想调试程序。二实验内容1. 编写程序并进行调试运行。2. 输入员工资料,并保存于文件。每个员工包含信息如:工作证号、姓名、性别、工龄、学历、职务、电话、工资等。3. 对已存入的员工信息进行更新操作,包括添加一个员工信息、删除某个员工信息和修改某个员工信息。4. 通过输入姓名、工作证号的方式查询员工信息。5. 最后输出员工信息,供需要时打印。 二、 需求分析1. 该程序可用于对企业员工情况基本信息的存储、更新、查询、输出等操作,以实现对企业员工的管理。2. 其中更新功能包括:添加信息、删除信息、修改信息、可根据需要添加一个或多个员工信息,也可对个别员工信息进行适当的删除或修改。以便随时更新员工信息。3. 程序中设计的查询功能可根据需要从若干数据中查询某个员工信息,并且可根据两种不同的方法查询:按工作证号查询和按姓名查询。以满足不同的需要。四、概要设计1、方案设计对系统进行分析,给出结构图 分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计 结构图如下:员工信息管理系统 退出系统关于系统密码修改排序模块查询模块更新模块输出模块输入模块退出系统添加员工信息删除员工信息修改员工信息 退出系统按姓名查询按工作证查寻按工作 证排序按工资排序2.模块功能说明对各个模块进行功能的描述(1).输入模块:录入需要管理的员工信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。(2)添加模块:可添加一个或多个员工信息,并将所添加员工信息保存,方便查找。(3)删除模块:可对辞职或休假的员工信息做删除处理。(4)修改模块:可根据需要对多个员工信息进行修改,也可随时对个别项进行修改。(5)查询模块:可对已建立的员工信息进行查询,并且可根据需要选择按姓名查询或按工作证号查询。 (6)保存模块:用于对信息进行保存。 (7)输出模块:将所有员工信息或想要查询的员工信息显示于屏幕,用于打印员工信息或查找某些员工信息。(8). 修改密码: 对系统的密码可以进行修改,确保信息的安全。(9) . 关于系统: 对系统的简介,以及操作时的注意事项。(10)退出系统:选择该项,自动退出该系统。五、详细设计及运行结果流程图, 函数之间相互调用的图示 ,程序设计及编码, 运行结果。开 始 输密码判断密码 密码错误输入 i判断 i i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8关于系统排序模块统计模块密码修改查询模块更新模块输入模块输出模块输要统计的值输要排序的值输要查询的值输要更新的 值判断i值 判断i值判 断i值判断i处理操作处理操作处理操作 处理操作保存信息结 束 六 调试情况及运行结果1、 对自己设计进行评价,指出合理和不足之处,提出改进的方案。此次实践课编写的是一个应用程序,相对于以前我们见到的程序,它要大得多,对数据的输出格式也有较高要求,这次编程让自己对许多平时不注意的小的知识点有了新的巩固;我先编的主函数,调试后我又一个一个模块的往上加,每加上一个调试一下;虽然在编程过程中有些模块也出现了一些小问题,但在翻阅课本和同学们的帮助下,我很有耐心的一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。可这毕竟是第一次独立完成这样的大程序,虽然并不是非常健壮,但程序中没有错误和警告,各项功能都能完成,因此我对两周的实习结果还是理想的。这次编程中我感觉程序中最满意的地方有两点:1、程序的操作界面美观大方。2、我给程序上加上了密码修改这一模块,可以说密码函数花费了大量时间,需要重新建立一个文件来写入密码保存密码。下次登陆时需要打开密码文件,判断密码是否正确。已有的那些功能虽已能基本上满足用户的需要,但如果还有更多的功能程序就会更加完美。如:录入错误数据时,系统没有设计输出错误操作的提示。2、在设计过程中的感受。 本次C 语言的实习课让我对C 语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中使我在课堂上十几周学到的知识得到了巩固,有很多以前理解不了的课本知识在这次上机实习后,再回头看一下感觉豁然开朗。学校组织的这次实习让我们这些实践知识匮乏的大学生增添了许多社会经验,为我们将来走上工作岗位其了不小的铺垫作用。本次实习中遇到了很多以前没有遇到过的问题,也曾感到比较浮躁,但想到以前都是作为用户用各种程序,而这次自己是编程者,可以让程序按自己的想法运行,给了我继续的兴趣和信心。在老师的指导下和同学的帮助下,我顺利的结束了本次实习,让我知道原来凭借自己努力取得的成功会让自己这么欣慰。七参考文献C语言程序设计 王曙燕 曹锰 科学出版社 2005年2月C语言程序设计 谭浩强 清华大学出版社 1999年12月 八。附录:#include#include#define MAX 5#define PAGE 4#define PRINTF1 printf(-n)#define PRINTF2 printf(工作号t姓名t性别t工龄(年月日)t学历t职务t电话t工资n)#define PRINTF3 printf(n%dt%st%st%d-%d-%dt%st%st%st%dn,workersi.num,workersi.name,workersi.sex,workersi.worktime.year, workersi.worktime.month, workersi.worktime.day,workersi.degree,workersi.position,workersi.tel,workersi.salary)int sum;/*用来记录员工人数*/ /*日期结构体类型*/struct dateint year; int month; int day;/*员工结构体类型*/struct workers_typeint num; struct date worktime; char name10; char sex2; char degree5; char position5; char tel12; int salary;workersMAX;/*存放MAX个员工信息记录的结构体数组*/ /*保存基本信息*/save_message(int sum) FILE *fp;int i;if(fp=fopen(worker information.txt,wt)=NULL) printf(该文件错误!n); return;for(i=0;isum;i+)if(fwrite(&workersi,sizeof(struct workers_type),1,fp)!=1)printf(写文件错误!n);fclose(fp); /*第一:输入模块*/ input_message() int i=0,x; clrscr(); printf(nn 请输入要录入的员工数量: ); scanf(%d,&x); printf(nn 录入员工信息(最多%d个员工)n,x); printf( -n); do printf(第%d个员工信息,i+1); printf(n员工的工作证号:); scanf(%d,&workersi.num); printf(n姓名:); scanf(%s,workersi.name); printf(n性别(男=m,女=f):); scanf(%s,&workersi.sex); printf(n工龄(yy-mm-dd):); fflush(stdin); scanf(%d-%d-%d,&workersi.worktime.year, &workersi.worktime.month, &workersi.worktime.day); printf(n学历:); scanf(%s,workersi.degree); printf(n职务:); fflush(stdin); scanf(%s,workersi.position); printf(n电话:); scanf(%s,workersi.tel); printf(n工资:); scanf(%d,&workersi.salary); i+; while(ix); printf(n -%d员工信息输入完毕!-n,i); sum=i; printf(n 按任意键返回主菜单!); bioskey(0); /*读取信息*/read_message() FILE *fp; int i=0; if(fp=fopen(worker information.txt,rt)=NULL) printf(nn*暂时还没有任何库存信息,按任意键进入主菜单选择基本信息的录入!*n); return(0); while(feof(fp)!=1) fread(&workersi,sizeof(struct workers_type),1,fp); if(workersi.num=0) break; else i+; fclose(fp); return(i); /*第二:输出模块*/ output_message() int i=0,j=0,count,page=1; clrscr(); printf(nn -员工信息表- 第%d页nn,page); PRINTF2; PRINTF1; do if(workersi.num!=0) j+; if(j%PAGE!=0) PRINTF3; PRINTF1; else PRINTF3; PRINTF1; if(workersi+1.num!=0) printf(按任意键继续!); bioskey(0); clrscr(); printf(nn -员工信息表- 第%d页nn,+page); PRINTF2; PRINTF1; i+; while(workersi.num!=0); printf(按任意键返回主菜单!); bioskey(0); /*增加员工信息*/insert_message() int i=sum,j,flag=0; char choice; clrscr(); printf(nn 增加一个新员工n); printf( -n); do printf(n 新员工的工作证号:); scanf(%d,&workersi.num); printf(n 新员工姓名:); scanf(%s,workersi.name); printf(n 新员工性别(男=m,女=f):); fflush(stdin); scanf(%s,workersi.sex); printf(n 新员工工龄(yy-mm-dd):); fflush(stdin); scanf(%d-%d-%d,&workersi.worktime.year, &workersi.worktime.month, &workersi.worktime.day); printf(n 新员工学历:); fflush(stdin); scanf(%s,workersi.degree); printf(n 新员工职务:); fflush(stdin); scanf(%s,workersi.position); printf(n 新员工电话:); fflush(stdin); scanf(%s,&workersi.tel); printf(n 新员工工资:); scanf(%d,&workersi.salary); i+; sum=i; printf(n 要继续吗?(Y/N); choice=getch(); if (choice=y|choice=Y) printf(n 继续!n); flag=1; else flag=0; while(flag=1); printf(n 按任意键返回主菜单!); bioskey(0);/*删除员工信息*/del_message() int i,k,flag,del_num; char choice; do clrscr(); printf(n 输入要删除的员工的工作证号:); scanf(%d,&del_num); for(i=0;isum;i+) if(workersi.num=del_num) for(k=i;ksum;k+) workersk=workersk+1; break; if(i=sum) printf(n 该员工不存在); bioskey(0); printf(nn 继续修改吗?(Y/N); choice=getch(); if (choice=Y|choice=y) flag=1; printf(n 继续!n); else flag=0; while(flag=1); printf(n 按任意键返回主菜单!); bioskey(0);/*修改信息*/resive_message() int i=0,choice,revise_num,flag; do clrscr(); printf(n 输入要修改的员工的工作证号); scanf(%d,&revise_num); for(i=0;isum;i+) if(workersi.num=revise_num) printf(n -员工信息-n); PRINTF1; PRINTF2; PRINTF3; printf(n 您要修改哪一项?n); printf(n 1.工作证号 n); printf(n 2.姓名 n); printf(n 3.性别 n); printf(n 4.工龄 n); printf(n 5.学历 n); printf(n 6.职务 n); printf(n 7.电话 n); printf(n 8.工资 n); printf(n 请输入(1-8):); scanf(%d,&choice); switch(choice) case 1: printf(n 输入修改后的工作证号:); scanf(%d,&workersi.num);break; case 2: printf(n 输入修改后的姓名:); scanf(%s,workersi.name);break; case 3: printf(n 输入修改后的性别:); scanf(%s,workersi.sex);break; case 4: printf(n 输入修改后的工龄(yy-mm-dd):); scanf(%d-%d-%d,&workersi.worktime.year, &workersi.worktime.month, &workersi.worktime.day);break; case 5: printf(n 输入修改后的学历:); scanf(%s,workersi.degree);break; case 6: printf(n 输入修改后的职务:); scanf(%s,workersi.position);break; case 7: printf(n 输入修改后的电话:); scanf(%s,&workersi.tel);break; case 8: printf(n 输入修改后的工资:); scanf(%d,&workersi.salary);break; PRINTF1; PRINTF2; PRINTF3; break; if(i=sum) printf(n 该员工不存在); bioskey(0); printf(nn 继续修改吗?(Y/N); choice=getch(); if (choice=Y|choice=y) flag=1; printf(n 继续!n); else flag=0; while(flag=1); printf(n 按任意键返回主菜单!); bioskey(0); /*第三:更新模块*/ renew_message() int choice;do clrscr(); printf(nnn *更新员工信息*nn); printf( 1.添加员工信息nn); printf( 2.删除员工信息nn); printf( 3.修改员工信息nn); printf( 0.返回主菜单nn); printf( 请选择(0-3):); scanf(%d,&choice); switch(choice) case 1: insert_message();break; case 2: del_message();break; case 3: resive_message();break; case 0: break; while(choice!=0); /*按姓名查询*/inquire_name() int i,choice,j=0; char inquire_name10; clrscr(); printf(n 输入要查询的员工姓名:); scanf(%s,inquire_name); for(i=0;isum;i+) if(strcmp(workersi.name,inquire_name)=0&workersi.num!=0) printf(n -员工信息-n); PRINTF1; PRINTF2; PRINTF3; else j+; if(j=sum) printf(n 该员工不存在!); bioskey(0);/*按工作证号查询*/inquire_num() int i,choice,j=0,inquire_num; clrscr(); printf(n 输入要查询的员工的工作证号:); scanf(%d,&inquire_num); for(i=0;isum;i+) if(workersi.num=inquire_num&workersi.num!=0) printf(n -员工信息-n); PRINTF1; PRINTF2; PRINTF3; else j+; if(j=sum) printf(n 该员工不存在!); bioskey(0);/*按学历查询*/inquire_degree() int i,choice,j=0; char inquire_degree5; clrscr(); printf(n 输入要查询的员工学历:); scanf(%s,inquire_degree); for(i=0;isum;i+) if(strcmp(workersi.degree,inquire_degree)=0&workersi.num!=0) printf(n -员工信息-n); PRINTF1; PRINTF2; PRINTF3; else j+; if(j=sum) printf(n 该员工不存在!); bioskey(0); /*第四:查询模块*/ inquire_message() int choice;do clrscr(); printf(nnn *查询员工信息*nn); printf( 1.按员工姓名查询nn); printf( 2.按员工的工作证号查询nn); printf( 3.按员工的学历查询nn); printf( 0.返回主菜单nn); printf( 请选择(0-3):); scanf(%d,&choice); switch(choice) case 1:inquire_name();break; case 2:inquire_num();break; case 3:inquire_degree();break; case 0:break; while(choice!=0); /*工作证号排行*/sort_num() struct workers_type *p, *qMAX; int i,j,k; clrscr(); printf(n 工作证号排行n); printf(-n); printf(排行t工作号t姓名t性别t学历t职务t电话t工资n); p=workers; for(i=0;isum;i+) qi=p+; for(i=0;isum;ii+) k=i; for(j=i+1;jnumqj-num) k=j; if(k!=i) p=qi;qi=qk;qk=p; for(i=0;inum,qi-name,qi-sex,qi-degree,qi-position,qi-tel,qi-salary); bioskey(0); /*工资排行*/sort_salary() struct workers_type *p, *qMAX; int i,j,k; clrscr(); printf(n -工资排行-n); printf(-n); printf(排行t工作号t姓名t性别t学历t职务t电话t工资n); p=workers; for(i=0;isum;i+) qi=p+; for(i=0;isum;ii+) k=i; for(j=i+1;jsalarysalary) k=j; if(k!=i) p=qi;qi=qk;qk=p; for(i=0;inum,qi-name,qi-sex,qi-degree,qi-position,qi-tel,qi-salary); bioskey(0);/*第五:排序模块*/ sort_message() int choice; do clrscr(); printf(nnn *员工排行信息*nn); printf( 1.工作证号排行nn); printf( 2.工资排行nn); printf( 0.返回主菜单nn); printf( 请选择(0-2):); scanf(%d, &choice); switch(choice) case 1: sort_num();break; case 2: sort_salary();break; case 0: break; while(choice!=0); /*学历统计*/count_degree() int i,choice,j=0; char count_degree5; clrscr(); printf( 输入要统计的员工学历:n); scanf(%s,&count_degree); for(i=0;isum;i+) if(strcmp(count_degree,workersi.degree)=0&workersi.num!=0) j+; if(j=0) printf(n 没有相关信息!); else printf(n 要统计的员工总数%d,j); bioskey(0);/*性别统计*/count_sex() int i,choice,j=0; char count_sex2; clrscr(); printf( 输入要统计的员工性别n:); scanf(%s,&count_sex); for(i=0;isum;i+) if(strcmp(count_sex,workersi.sex)=0&workersi.num!=0) j+; printf(n 要统计的员工总数%d,j); if(j=0) printf(n 没有相关信息!); else bioskey(0); /*第六:统计模块*/ count_message() int choice; do clrscr(); printf(nnn *统计员工信息*nn); printf( 1.统计员工学历nn); printf( 2.统计员工性别nn); printf( 0.返回主菜单nn); printf( 请选择(0-2):); scanf(%d,&choice); switch(choice) case 1: count_degree();break; case 2: count_sex();break; case 0: break; while(choice!=0);/*修改密码*/void resive_password()int flag; char ch10,ch110; FILE *fp; clrscr(); fp=fopen(password,rb); fgets(ch1,7,fp); fclose(fp); printf(nnnnt 请输入六位数旧密码:); scanf(%s,ch); if(strcmp(ch,ch1)=0) flag=1; fp=fopen(password,wb); printf(n 请输入六位数新密码:); scanf(%s,ch); fputs(ch,fp); fclose(fp); else flag=0; switch(flag) case 0:printf(n 原密码不正确);getch();break; case 1:printf(n 密码修改成功);getch(); /*第七:密码模块*/password()int flag; char ch10;FILE *fp; char ch110=000000; clrscr(); if(fp=fopen(password,rb)=NULL) fp=fopen(password,wb); fputs(ch1,fp); fclose(fp); else fgets(ch1,7,fp); fclose(fp); printf(nnnnt 请输入六位数密码:); gets(ch); if(strcmp(ch,ch1)=0) flag=1; else flag=0; switch(flag) case 0:printf(nnt 密码不正确n);password(); case 1:printf(nnt 密码正确n); /*第八:说明模块*/introduce_message() clrscr(); printf(nnn *1. 为使系统正常运行请按系统提示输入nn); printf(nnn *2 .若使用中存在问题请联系我们,谢谢使用本系统 n); printf(nnnnnnnn 制作人:韩承玺n); printf(n q q : 755528319n); getch();/*主程序*/ main()int choice; sum=read_message(); printf(nnnn *n); printf( * 欢 迎 进 入 *n); printf( *西安创天集团员工信息管理系统*n); printf( * *n); printf( * *n); printf( * *n); printf( * *n); printf( * *n); printf( * *n); printf( * *n); printf( * *n); printf( * 请按任意健进入 *n); printf( * *n); printf( * *n); printf( *n); bioskey(0); clrscr(); password(); do clrscr(); printf(nn *员 工 信 息 管 理 系 统*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( * * 7.修改系统密码 *n); printf( * *n); printf( * * 8.关于本系统 *n); printf( * *n); printf( * * 0.退出员工信息管理系统 *n); printf( * *n); printf( * 请
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!