职工信息管理系统C语言课程设计+源代码.doc
《职工信息管理系统C语言课程设计+源代码.doc》由会员分享,可在线阅读,更多相关《职工信息管理系统C语言课程设计+源代码.doc(27页珍藏版)》请在咨信网上搜索。
课程设计报告 (本科) 课程: 高级语言课程设计 学号: 姓名: 班级: 教师: 时间: 计算机科学与技术系 设计名称: 职工信息管理系统 设计内容、目的与要求: 目的:要求熟练掌握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按职工号查询 2按学历查询 3按号码查询 2按职工姓名删除 1按职工号删除 2按职工姓名修改 1按职工号修改 菜单 根据菜单输入的值选择程序 1 录入职工信息 2 浏览职工信息 3 查询职工信息 5 添加职工信息 4 删除职工信息 6 修改职工信息 7 退出 二、设计说明 1.这个程序要用到结构体. struct employee{…………}; 2.函数的声明和调用: void menu(); //菜单函数 void input(); // 录入函数 void save(int m); //保存文件函数 void display(); //浏览函数 void del(); // 删除函数 void del_name(); //按姓名删除函数 void del_num(); //按职工号删除函数 void add(); //添加函数 void search(); //查询函数 void search_num(); //按职工号码查询函数 void search_xueli(); //按学历查询函数 void search_tel(); //按号码查询函数 void modify(); // 修改函数 void modify_num(); //按员工号修改函数 void modify_name(); //按姓名修改函数 3.选择功能,用到了do..while语句和switch,do..while是进行循环的,switch是用来选择的 do { if(n>=1&&n<=7) { flag=1; break; } else { flag=0; printf("您输入有误,请重新选择!"); } } while(flag==0); switch(n) { case 1:printf(" 输入职工信息");printf("\n");input();break; case 2:printf(" 浏览职工信息");printf("\n");display();break; case 3:printf(" 查询职工信息");printf("\n");search();break; case 4:printf(" 删除职工信息");printf("\n");del();break; case 5:printf(" 添加职工信息");printf("\n");add();break; case 6:printf(" 修改职工信息");printf("\n");modify();break; case 7:exit(0);break; default :break; } 4.定义的函数完成功能的实现:录入职工信息,浏览职工信息,查询职工信息,修改职工信息,添加职工信息,删除职工信息。 5.执行程序。 结果与分析(可以加页): 功能上有对职工信息的增加,删除,浏览,查询,修改等简单的功能. 使用说明及运行实例 1.运行程序,进入职工信息管理系统的主菜单: 图1:进入主菜单界 2.输入数字“1”进行录入职工信息: 图2:录入职工信息 3.输入“y”返回主菜单(界面同图1)。 4.输入“2”浏览职工信息: 图3:浏览职工信息 5.输入“y”后继续,输入“3”进行查询职工信息: 图4:按职工号查询职工信息 5:按学历查询职工信息 图6:按电话号码查询职工信息 6.进入主菜单,输入“4”进行删除职工信息: 图7:按姓名删除职工信息 图8:按职工号删除职工信息 7.进入主菜单输入“5”进行添加职工信息: 图9:添加职工信息 8.进入主菜单输入“6”进行修改职工信息: 图10:按姓名修改职工信息 图11:按职工号修改职工信息 9.进入主菜单输入”7”退出职工信息管理系统: 图12:退出系统 优点是:基本实现了程序的多功能,对与查询职工信息提供了三种方法,对与修改和删除职工信息提供了两种方法,功能多种多样。旗帜变量的使用也是优点之一;这个程序用到了的结构体,整个程序简单,易懂。 缺点是:保存职工信息有限,程序段比较臃长。 设计体会与建议: 通过这次的课程设计,我更加了解C语言,学会更好的使用C语言函数调用和结构体等,把学过的知识运用于实践中,而不仅仅停留于对课本的单纯理解;这次设计也让我知道我懂的太少,要学习的东西还有很多。想完成一项功能就要用很复杂的语句去实现,所以整个程序变的很长,复杂,但是结构体,数组,指针等的灵活运用又可使程序变的易懂。另外,团队的合作也是成功的一部分! 在编写代码时一开始没有运用有意义的函数名和变量,结果找起来和修改好麻烦,也使别人看不懂。在整个课程设计中,我认为最重要的就是耐心和细心。细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。 虽然在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设计的经历让我学到了太多,以前好多不懂的也都理解了。也学会了作为大学生我们也应该学会不仅从课堂上学习知识,还应该学会自学。 附录: #include<stdio.h> //标准输入输出函数库 #include<string.h> //字符串函数库 #include<stdlib.h> struct employee { int num; //职工号 char name[20]; //姓名 char sex; //性别 int age; //年龄 char xueli[30]; //学历 int wage; //工资 char addr[30]; //家庭住址 char tel[20]; //联系电话 }employee[100]; //定义一个结构体 int main() //函数主体 { void menu(); //菜单函数 void input(); // 录入函数 void save(int m); //保存文件函数 void display(); //浏览函数 void del(); // 删除函数 void del_name(); //按姓名删除函数 void del_num(); //按职工号删除函数 void add(); //添加函数 void search(); //查询函数 void search_num(); //按职工号码查询函数 void search_xueli(); //按学历查询函数 void search_tel(); //按号码查询函数 void modify(); // 修改函数 void modify_num(); //按员工号修改函数 void modify_name(); //按姓名修改函数 int n,flag; char a; menu(); printf("请选择你需要操作的步骤(1--7):\n"); scanf("%d",&n); do { if(n>=1&&n<=7) { flag=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"); } else exit(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",&employee[i].num); printf("请输入姓名: "); scanf("%s",employee[i].name); getchar(); printf("请输入性别(f--女 m--男): "); scanf("%c",&employee[i].sex); printf("请输入年龄: "); scanf("%d",&employee[i].age); printf("请输入学历: "); scanf("%s",employee[i].xueli); printf("请输入工资: "); scanf("%d",&employee[i].wage); printf("请输入住址: "); scanf("%s",employee[i].addr); printf("请输入电话: "); scanf("%s",employee[i].tel); printf("\n"); } printf("\n创建完毕!\n"); save(m); } void save(int m) //保存文件函数 { int i; FILE*fp; if ((fp=fopen("employee_list.txt","wb"))==NULL) { printf ("cannot open file\n"); exit(0); } for (i=0;i<m;i++) //将内存中职工的信息输出到磁盘文件中去 if (fwrite(&employee[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.txt","rb"))==NULL) { printf ("cannot open file\n"); exit(0); } else { do { fread(&employee[i],sizeof(struct employee),1,fp); i++; } while(feof(fp)==0); } fclose(fp); return(i-1);//循环过程中跳出循环时i自动加一,所以要减去一 } void display() //浏览函数 { int i; int m=load(); printf(" 职工号 姓名 性别 年龄 学历 工资 住址 电话 \n"); for(i=0;i<m;i++) //m为输入部分的职工人数 printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee[i].name,employee[i].sex, employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i].tel); } void del() //删除函数 { int t,flag; do { printf("\n按职工号删除请按1; 按姓名删除请按2; 进入主函数请按3\n"); scanf("%d",&t); if(t>=1&&t<=3) { flag=1; break; } else { flag=0; printf("您输入有误,请重新选择!"); } } while(flag==0); while(flag==1) { switch(t) { case 1:printf("按职工号删除\n");del_num();break; case 2:printf("按姓名删除\n");del_name();break; case 3:main();break; default:break; } } } void del_name() //按姓名删除函数 { 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(employee[i].name,name)==0) { printf("\n已找到此人,原始记录为:\n"); printf(" 职工号 姓名 性别 年龄 学历 工资 住址 电话 \n"); printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee[i].name,employee[i].sex, employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i].tel); printf("\n确实要删除此人信息请按1,不删除请按0\n"); scanf("%d",&n); if(n==1) { for(j=i;j<m-1;j++) { strcpy(employee[j].name,employee[j+1].name);//strcpy(str1,str2)把str2指向的字符串复制到str1中去 employee[j].num=employee[j+1].num; employee[j].sex=employee[j+1].sex; employee[j].age=employee[j+1].age; strcpy(employee[j].xueli,employee[j+1].xueli); employee[j].wage=employee[j+1].wage; strcpy(employee[j].addr,employee[j+1].addr); strcpy(employee[j].tel,employee[j+1].tel);//把下一员工的信息复制到上一个员工信息的位置中去 } flag=0; } } } if(!flag) //flag取逻辑反,及flag==0 m=m-1; else printf("\n对不起,查无此人!\n"); printf("\n 浏览删除后的所有职工信息:\n"); save(m); //调用保存函数 display(); //调用浏览函数 printf("\n不在删除请按0, 返回删除菜单请按1,继续按姓名删除请按2\n"); scanf("%d",&t); switch(t) { case 0:main();break; case 1:del();break; case 2:break; default :break; } } void del_num() //按职工号删除函数 { int m=load(); int i,j,n,t,flag; int num; printf("\n 原来的职工信息:\n"); display(); //调用浏览函数 printf("\n"); printf("请输入要删除的职工的职工号:\n"); scanf("%d",&num); for(flag=1,i=0;flag&&i<m;i++) { if(employee[i].num==num) { printf("\n已找到此人,原始记录为:\n"); printf(" 职工号 姓名 性别 年龄 学历 工资 住址 电话 \n"); printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee[i].name,employee[i].sex, employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i].tel); printf("\n确实要删除此人信息请按1,不删除请按0\n"); scanf("%d",&n); if(n==1) { for(j=i;j<m-1;j++) { strcpy(employee[j].name,employee[j+1].name);//strcpy(str1,str2)把str2指向的字符串复制到str1中去 employee[j].num=employee[j+1].num; employee[j].sex=employee[j+1].sex; employee[j].age=employee[j+1].age; strcpy(employee[j].xueli,employee[j+1].xueli); employee[j].wage=employee[j+1].wage; strcpy(employee[j].addr,employee[j+1].addr); strcpy(employee[j].tel,employee[j+1].tel);//把下一员工的信息复制到上一个员工信息的位置中去 } flag=0; } } } if(!flag) //flag取逻辑反,及flag==0 m=m-1; else printf("\n对不起,查无此人!\n"); printf("\n 浏览删除后的所有职工信息:\n"); save(m); //调用保存函数 display(); //调用浏览函数 printf("\n不在删除请按0,返回删除菜单请按1,继续按职工号删除请按2\n"); scanf("%d",&t); switch(t) { case 0:main();break; case 1:del();break; case 2: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.txt","a"); printf("请输入想增加的职工数:\n"); scanf("%d",&n); for (i=m;i<(m+n);i++) { printf("\n 请输入新增加职工的信息:\n"); printf("请输入职工号: "); scanf("%d",&employee[i].num); printf("\n"); printf("请输入姓名: "); scanf("%s",employee[i].name); getchar(); printf("请输入性别(f--女 m--男): "); scanf("%c",&employee[i].sex); printf("请输入年龄: "); scanf("%d",&employee[i].age); printf("请输入学历: "); scanf("%s",employee[i].xueli); printf("请输入工资: "); scanf("%d",&employee[i].wage); printf("请输入住址: "); scanf("%s",employee[i].addr); printf("请输入电话: "); scanf("%s",employee[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==employee[i].num) { printf("\n已找到此人,其记录为:\n"); printf(" 职工号 姓名 性别 年龄 学历 工资 住址 电话 \n"); printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee[i].name,employee[i].sex, employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i].tel); break; } if(i==m) printf("\n对不起,查无此人\n"); printf("\n"); printf("不在查询请按0,返回查询函数请按1,继续查询职工号请按2\n"); scanf("%d",&t); switch(t) { case 0:main();break; case 1:search();break; case 2: break; default:break; } } void search_xueli() //按职工号码查询函数 { char xueli[30]; int i,t,n=0; int m=load(); printf("请输入要查找的学历:\n"); scanf("%s",xueli); for(i=0;i<m;i++) if(strcmp(employee[i].xueli,xueli)==0) { printf("\n已找到,其记录为:\n"); printf(" 职工号 姓名 性别 年龄 学历 工资 住址 电话 \n"); printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee[i].name,employee[i].sex, employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i].tel); n++; } if(i==m&&n==m) printf("\n对不起,查无此人\n"); printf("\n"); printf("不在查询请按0,返回查询函数请按1,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 职工 信息管理 系统 语言 课程设计 源代码
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文