C语言课程设计职工信息管理系统程序设计_第1页
C语言课程设计职工信息管理系统程序设计_第2页
C语言课程设计职工信息管理系统程序设计_第3页
C语言课程设计职工信息管理系统程序设计_第4页
C语言课程设计职工信息管理系统程序设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE20C语言课程设计报告设计题目:职工信息管理系统程序设计班级:姓名:学号:指导老师:课程设计评语 2目录 31.课程论文题目 42.程序设计思路 43.功能模块图 54.数据结构设计 55.算法设计 66.程序代码 137.程序运行结果 228.编程中遇到的困难及解决方法 259.总结心得及良好建议 2610.致谢 26课程论文题目职工信息管理系统程序设计题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:系统以菜单的方式工作。职工信息录入功能(职工信息用文件保存)。职工浏览功能。职工信息查询功能,查询方式可按学历查询或者工号查询。职工信息的删除、修改功能(可选项)。2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。3.功能模块图职工信息管理系统职工信息管理系统信息修改信息查询信息浏览信息录入信息修改信息查询信息浏览信息录入按学历查询按工号查询按学历查询按工号查询5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。开始开始显示一系列的功能选择显示一系列的功能选择输入n,判断n是否是0到6输入n,判断n是否是0到6 N Y根据n值调用各功能模块根据n值调用各功能模块2浏览模块【分析】该模块的功能是浏览职工的全部信息显示职显示职工记录(10个一屏)按任意键显示下一屏按任意键显示下一屏按任意键返回主菜单按任意键返回主菜单3排序模块开始开始输入n输入n判断n是否是0到2判断n是否是0到2 NY 1 2浏览职工信息按实发工资排序按工资卡号排序浏览职工信息按实发工资排序按工资卡号排序返回?输出 1返回?输出 2主菜单主菜单4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。流程图如下:开始开始选择按工号还是学历查询选择按工号还是学历查询输入职工工号或者学历 输入职工工号或者学历是否找到职工记录?是否找到职工记录?显示没有找到显示找到的记录显示没有找到显示找到的记录询问用户是否继续查找?询问用户是否继续查找?选择:1)查找另一个2)修改3)返回菜单选择:1)查找另一个2)修改3)返回菜单结束结束5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。流程图如下:开始开始显示所有记录,让用户选择需修改的职工显示所有记录,让用户选择需修改的职工输入需修改的工号输入需修改的工号i!=0?i!=0?Y显示找到的记录,调用修改记录显示找到的记录,调用修改记录询问用户是否继续修改询问用户是否继续修改返回主菜单返回主菜单结束结束 6.程序代码#include<stdio.h>#defineN50structworker{charid[50];charname[20];charsex[10];charage[10];charedu[20];charsalary[10];charaddress[20];chartel[20];}worker[N];voidsave(intn)//保存函数,保存n个记录{FILE*fp;inti;if((fp=fopen("worker.txt","wb"))==NULL)//以只写方式为输出打开一个二进制文件{printf("\nCannotopenfile\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(structworker),1,fp)!=1)printf("filewriteerror\n");fclose(fp);}intload()//加载函数{FILE*fp;inti;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannotopenfile\n");returnNULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(structworker),1,fp);fclose(fp);return(i-1);}voidno_input(inti,intn)//工号输入函数,i表示第i个职工的信息,n表示比较到第n个职工{intj,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9')//判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++)//比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0)//判断职工号是否有雷同 {puts("请重新输入!\n");w1=1;break; }}while(w1==1);}voidinput(inti)//输入一个记录的函数{no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf("%s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}voidprintf_one(inti)//显示一个记录的函数{printf("%10s%10s%5s%5s%8s%6s%10s%10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel);}voidprintf_back()//一个任务结束后选择是好似浏览还是返回{intk,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回:[]\b\b");scanf("%d",&w);if(w==1)browse();elsemenu();}modify_data(inti,intn)//修改函数{intc,w1;do{puts("\nmodifyby=>\n\n1).工号2).姓名3).性别4).年龄5).工资6).学历7).地址8).电话9).取消");printf("请选择?:[]\b\b");scanf("%d",&c);if(c>9||c<1) { puts("\nChoiceerror!pleaseagain!"); getchar(); }}while(c>9||c<1);do{switch(c){case1:no_input(i,n);break;case2:printf("name:");scanf("%s",worker[i].name);break; case3:printf("sex:");scanf("%s",worker[i].sex);break; case4:printf("age:");scanf("%s",worker[i].age);break; case5:printf("salary:");scanf("%s",worker[i].salary);break; case6:printf("edu:");scanf("%s",worker[i].edu);break; case7:printf("address:");scanf("%s",worker[i].address);break; case8:printf("tel:");scanf("%s",worker[i].tel);break;case9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face()//显示数据结构项目{printf("\n\t工号姓名性别年龄工资学历地址电话号码\n");}voidenter()//输入模块{inti,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse()//浏览模块{inti,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有%d条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify()//修改模块{ structworkers; FILE*fp; inti,n,k,w0=1,w1,w2=0; n=load(); do { k=-1; printf_face(); for(i=0;i<n;i++) { if((i!=0)&&(i%10==0))//目的是分屏显示 {printf("\n\n记住要修改的工号.按任意键显示下一页"); getch(); puts("\n\n"); } printf_one(i);//调用显示一个记录的函数 } do { printf("\n\n输入要修改的职工工号!工号:"); scanf("%s",s.id);//输入要修改的ID for(i=0;i<n;i++)//查找要修改的数据 if(strcmp(s.id,worker[i].id)==0) { k=i;//找到要修改的记录 s=worker[i];//把worker[i]备份,以便恢复 } if(k==-1) printf("\n\n未找到请重输"); } while(k==-1);//当k=-1表示没有找到 printf_face();//调用显示数据结构项目的函数 printf_one(k);//调用显示一个记录的函数 w1=modify_data(k,n);//修改记录并返回保存控制值w1,w1=1表示用户已确认修改 if(w1==1) { printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是2).否,保存退出\t[]\b\b"); scanf("%d",&w0); w2=1;//用来控制保存,使w2=1是标记已有过修改 } else { w0=0; if(w2==1) worker[k]=s; } if(w0!=1&&w2==1) save(n); }while(w0==1); menu();}search()//查询模块{intc,w1;do{puts("\nsearchby=>\n\n1).工号2}.学历3).取消并返回");printf("Whichyouneeded?:[]\b\b");scanf("%d",&c);if(c>3||c<1){puts("\nchoiceerror!pleaseagain!");getchar();}}while(c>3||c<1);{switch(c){case1:search1();break;case2:search2();break;case3:menu();break;}}}search1()//按工号查询模块{inti,n,k,w1=1,w2,w3,w4;structworkers;n=load();do{do{k=-1;printf("\n\n输入要查询的工号!id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0) {k=i; printf_one(k);break; }if(k==-1){printf("\n\nNoexit!please");printf("\n\n继续查找?\n\t1).是2).否,返回[]\b\b");scanf("%d",&w1);if(w1==2)menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1) {printf("\n\n接下来干什么?\n\t1).查找另一个2).修改3).返回菜单[]\b\b"); scanf("%d",&w2); switch(w2) { case1:search1();break;case2:w3=modify_data(k,n);break; case3:{menu();break;} } }} while(w2==1);menu();}search2()//按学历查询模块{ inti,n,k,w1=1,w2,w3,w4;structworkers;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0) {k=i; printf_one(k); }if(k==-1){printf("\n\nNoexit!please");printf("\n\n继续查找?\n\t1).是2).否,返回[]\b\b");scanf("%d",&w1);if(w1==2)menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1) {printf("\n\n接下来干什么?\n\t1).查找另一个2).修改3).返回菜单[]\b\b"); scanf("%d",&w2); switch(w2) {case1:search2();break;case2:w3=modify_data(k,n);break; case3:{menu(); break; } } }} while(w2==1);menu();}menu(){intn,w1;do{puts("\t\t*******************菜单*******************\n\n"); puts("\t\t\t\t1.录入职工信息"); puts("\t\t\t\t2.浏览职工信息"); puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息"); puts("\t\t\t\t5.退出"); puts("\t\t****************************************\n\n"); printf("请选择(1~5):[]\b\b"); scanf("%d",&n);if(n<1||n>5)//对选择的数字作判断 {w1=1;getchar();}elsew1=0;}while(w1==1);switch(n) {case1:enter();break;//录入case2:browse();break;//浏览case3:search();break;//查询case4:modify();break;//修改 case5:exit(0);//退出 }}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。通过这次实习我深刻的认识了这点。这学期学习了C语言,了解了一些计算机语言方面的知识。借这次上机实习之际我又把课程重新复习了一遍,收获颇丰,以前没能弄懂的一些问题现在已有了一些认识,以前不太明白的问题现在也基本清楚了,虽然实习的题目对我来说还有些难,最终能在自己的努力下完成这次实习实感欣慰。以前遇到大的程序,心中总是有种恐惧感,不相信是自己的能力所能完成的,也没有胆量去尝试,这次正好也帮我克服了这种恐惧感,使我相信无论什么事只要自己真的下决心去做,都是可以做到的,即使不能一次成功,也不能放弃,失败的尽头一定有成功在等着我们的,失败乃成功之母。实践总是检验真理的唯一方法,学了再多的知识不会运用,就如同鸟儿长了翅膀却不会飞翔。学习C语言就是为了运用它帮助我们解决一些日常生活中遇到的问题,而此次的课程设计就为我们提供了检验自己能力的一次机会,也给了我们一次弥补以前缺陷的机会。总而言之,这次课程设计使我获益匪浅啊。我对VC使用操作的心得可以归结为以下几点:(1)在设计一些较复杂的程序时,要尽量采用程序模块,采用函数的相互调用,将一些调用次数较多的函数作为公共函数,放在整个程序的开头处,这样就免去了在调用时的声明,可以减少错误的出现。(2)尽可能将主函数设计得简洁一些,以便在调试程序时较容易找出错误。(3)采用菜单方式能够以最简洁的方式将程序内容呈现在用户眼前,并且,要尽可能地给出较详细较全面的使用提示,在每一次执行下一步骤是都要给出使用者具体的提示,以增加程序的实用性,而不只是让编程者看得懂。(4)一个程序的算法和数据结构虽然是最重要的,但是,作为一个实用性的软件或程序,要考虑到使用者的方便性,所以,要注意程序运行界面的美化工作,即:注意换行的位置,注意行距,数据在屏幕中的位置,菜单的显示方式,选项的排列方式等,还有,要在每次执行完一项指令后,要使函数运行界面返回到菜单,等等,这些问题也是编写一个好的程序必不可少的工作。9.总结心得及良好建议经过一学期的C语言学习,我们掌握了C语言的基础知识,能够读懂别人用c语言设计的程序。平时的程序设计大多是以填空的形式出现,虽然有所接触,但都不完全。而这一周的课程设计,却让我们完完全全用自己学到的知识编写一个完整的体统程序。这是一个新的挑战,也是一种新的学习。我们组选择的题目是第一个——职工工资信息管理系统。初看到这个题目觉得很简单,但当我做到电脑前准备开始编写代码的时候才发现无从下手。通过去图书馆查找程序设计相关的书籍,和上网参考前人编写的类似程序,我脑中才有了一个大概方向。终于开始着手写了。第一天下来,我只写好了两个函数,但还是很开心,因为这是我编的第一个小系统的成功的开始!接下来几天都在宿舍整个下午的对着电脑不断的编译、调试、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论