C语言课程设计职工信息管理系统.docx
- 文档编号:15632837
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:36
- 大小:93.26KB
C语言课程设计职工信息管理系统.docx
《C语言课程设计职工信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计职工信息管理系统.docx(36页珍藏版)》请在冰点文库上搜索。
C语言课程设计职工信息管理系统
课程设计报告
系别:
********
专业:
********
班级:
********
姓名:
********
学号:
********
指导老师:
****
课程设计报告
一C语言课程设计的目的
(1)要求学生熟练掌握C语言的基本知识和编程技能;
(2)基本掌握结构化程序设计的基本思路和方法;
二课程设计报告正文
1题目要求
设计职工信息管理系统,要求职工心想包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
设计一职工信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)系统进入画面——静态(对界面作了简单的美化)
(3)职工信息录入功能(职工信息用文件保存)——输入
(4)职工信息修改功能——输出
(5)职工信息查询功能——两种方式:
按学历查询,按职工号查询
(6)职工信息浏览功能——浏览全部信息
(7)职工信息添加功能——新添加
(8)退出系统——eixt()增加一个很小的界面
2需求分析
根据题目要求,由于职工信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、排序等操作;另外还应提供键盘式选择菜单实现功能选择。
3总体设计
根据上面的需求分析,可以将这个系统设计分为以下模块:
数据添加、数据查找、数据修改、数据删除、数据输出。
系统功能模块如下:
退出系统
4详细设计
主函数:
主函数设计要简洁,只提供部分函数的调用。
其中各功能模块用菜单方式选择。
个人对系统进入画面做了简单的美好。
流程图:
N
Y
【程序】
///////////////////////////主菜单////////////////////////////////
voidmenu()
{
intn,w1;
do
{system("cls");//清屛
printf("\n\t************************************************\n");
printf("\t*********欢迎进入职工信息管理系统***************\n");
printf("\t************************************************\n");
printf("\t1录入职工信息\n");
printf("\t2修改职工信息\n");
printf("\t3查询职工信息(学历/职工号)\n");
printf("\t4浏览信息\n");
printf("\t5添加信息\n");
printf("\t6退出系统\n");
printf("\t************************************************\n");
printf("\t请选择(1-6):
[]\b\b");
scanf("%d",&n);
if(n<1||n>6)
w1=1;
elsew1=0;
}
while(w1==1);
switch(n)
{
case1:
enter();break;
case2:
modify();break;
case3:
search();break;
case4:
browse();break;
case5:
add();break;
case6:
exit(0);
}
}
1、录入职工信息
【分析】:
该模块功能是录入职工信息,其中以职工号为主届,对职工号进行判断,使职工号不会重复。
录入信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等。
在录入信息之前需要对录入人员进行设置。
对不同类别的属性设置了不同类型的变量,符合C语言规则。
【程序】:
//////////////////////信息输入模块//////////////////////////
voidinput(inti)
{
//no_input(i,i);
while
(1)
{
printf("职工号:
");
scanf("%s",people[i].num);
intis=chack_No(i);
if(is)
{
break;
}
}
printf("姓名:
");
scanf("%s",people[i].name);
printf("性别:
");
scanf("%s",people[i].sex);
printf("年龄:
");
scanf("%s",people[i].age);
printf("学历:
");
scanf("%s",people[i].xueli);
printf("工资:
");
scanf("%s",people[i].gongzhi);
printf("住址:
");
scanf("%s",people[i].address);
printf("电话:
");
scanf("%s",people[i].telephone);
}
2修改职工信息
【分析】:
该模块的功能是对职工信息的修改,用于职工信息的变更。
主菜单上选择相应的模块后,输入要修改的职工号,即可按照需要修改相应的选项,附加信息提示功能,使操作更简单、更快捷。
修改后并提示用户是否保存。
【程序】
///////////////////////////修改模块///////////////////////
voidmodify()
{
structpeoplep;
inti,n,k,w0=1,w1,w2=0;
n=load();
do
{
k=-1;
printf_face();
for(i=0;i {if((i! =0)&&(i%10==0)) {printf("\n\n请记着你要修改的职工号。 按任意键继续..."); getch(); puts("\n\n"); } printf_one(i); } do {printf("\n\n请输入你要修改的职工信息的职工号: "); scanf("%s",p.num); for(i=0;i if(strcmp(p.num,people[i].num)==0) {k=i; p=people[i]; } if(k==-1)printf("\n\n你的输入有误,请从新输入"); }while(k==-1); printf_face(); printf_one(k); w1=modify_data(k); if(w1==1) {printf("\n操作成功! ^_^.\n是否继续修改? \n\n\t1).是2).否\t[]\b\b"); scanf("%d",&w0); w2=1; } else {w0=0; if(w2==1) people[k]=p; } if(w0! =1&&w2==1) save(n); }while(w0==1); menu(); } 3查询职工信息(学历/职工号) 【分析】: 查询职工信息分为按学历查找和按职工号查找,包含筛选和排序模块。 输入学历或者职工号后用户可以选择继续要进行的操作,包括查询、修改、删除、返回主菜单。 【程序】 ///////////////////////////////查询模块/////////////////////////////// voidsearch() { inti,n,k,w1=1,w2,w3,w4,m,a; structpeoplep; n=load(); do { printf("\n选择你要查询的方式\n\t1).按学历2).按职工号[]\b\b"); scanf("%d",&m); switch(m) { case1: do {//////////////////////按学历查询////////// k=-1; printf("\n\n请输入你要查询的学历: "); scanf("%s",p.xueli); printf_face(); for(i=0;i if(strcmp(p.xueli,people[i].xueli)==0) { k=i; printf_one(k); break; } if(k==-1) { printf("\n\n你输入的学历不存在! "); printf("\n\n你想继续查询吗? \n\t1).是2).否[]\b\b"); scanf("%d",&w1); if(w1==2) printf_back(); } }while(k==-1&&w1==1); break; case2: do {/////////////////按职工号查询////////////////////////////// k=-1; printf("\n\n请输入你要查询的职工号: "); scanf("%s",p.num); printf_face(); for(i=0;i if(strcmp(p.num,people[i].num)==0) { k=i; printf_one(k);break; } if(k==-1) { printf("\n\n你输入的职工号不存在! "); printf("\n\n你想继续查询吗? \n\t1).是2).否[]\b\b"); scanf("%d",&w1); if(w1==2) printf_back(); } }while(k==-1&&w1==1); break; } w4=0;w3=0; if(k! =-1) {///////////////////////////查询后操作/////////////////////////////// printf("\n\n请选择你要进行的操作: \n\t1).查询2).修改3).删除4).返回主菜单[]\b\b"); scanf("%d",&w2); switch(w2) { case2: w3=modify_data(k); break; case3: printf("\n你确定要删除吗? \n\t1).是2).否[]\b\b"); scanf("%d",&w4); if(w4==1) for(a=k;a { strcpy(people[a].num,people[a+1].num); strcpy(people[a].name,people[a+1].name); strcpy(people[a].sex,people[a+1].sex); strcpy(people[a].age,people[a+1].age); strcpy(people[a].xueli,people[a+1].xueli); strcpy(people[a].gongzhi,people[a+1].gongzhi); strcpy(people[a].address,people[a+1].address); strcpy(people[a].telephone,people[a+1].telephone); } break; } if(w3==1||w4==1) { save(n); printf("\n\n操作成功! ^_^"); printf("\n\n请输入你要进行的操作: \n\t1).继续查询2).返回上一级[]\b\b"); scanf("%d",&w2); } } } while(w2==1); menu(); } 4浏览信息 【分析】: 该功能用于浏览所有职工信息,默认为按职工号排序,并显示职工总记录数。 【程序】: /////////////////////////////浏览模块////////////////////////////// voidbrowse() { inti,n; n=load(); printf_face(); for(i=0;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(); } 5添加信息 【分析】: 在用户运行程序后,根据需求,需要添加新的职工信息时,可调用该功能模块,其操作方法与录入职工信息相似。 【程序】: ///////////////////////////////////添加模块/////////////////////////// voidadd() { inti,n,m,k; FILE*fp; n=load(); printf("你想添加的人数为(0-%d): ",N-1-n); scanf("%d",&m); k=m+n; for(i=n;i { printf("\n输入第%d个人的信息.",i-n+1); input(i); } if((fp=fopen("Pro.txt","ab"))==NULL) { printf("文件打开失败! \n"); } for(i=n;i if(fwrite(&people[i],sizeof(structpeople),1,fp)! =1) printf("文件写入失败! \n"); fclose(fp); printf_back(); } 6退出系统 【分析】: 用户操作完毕时,可直接调用该模块,安全退出系统。 【程序】: 直接调用函数: exit (1); 5运行与测试报告: 下面是主菜单的界面截图: 主菜单: 三、其他说明 本程序主要用到数据、变量的定义、输入输出,函数之间的相互的调用,字符串的处理,结构体的运用,指针的简单使用,文件的读取,以及对界面的一些简单美化。 技术相对不是非常成熟,需要很大的改进,后续还需要进一步的发展。 四、后记/课程设计过程中遇到的问题以及解决方法,课程设计的体会。 这次课程设计让我掌握了许多的有用知识。 首先我能够熟练的应用软件MicrosoftVisualC++6.0了。 再就是我能够根据自己的需要设计程序,这将对我以后的生活有非常重要的影响。 同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。 在设计中,我遇到了不少的困难,比如不能清晰的建立设计模块,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。 看着程序由起初的到处是错误,到处是不合理,到目前的相对完善,心情也颇感喜悦。 尽管这样程序到目前为止还有很多不完善的地方,需要进一步的调试,进一步的修改。 参考资料 [1]谭浩强.C程序设计(第三版).北京: 清华大学出版社,2005 [2]谭浩强.C程序设计题解与上机指导(第三版).北京: 清华大学出版社,2005 附录: 源程序清单(注意: 有密码,00000000) ////////////////////////职工信息管理系统/////////////////// #include #include #include #include #include #defineBACKSPACE8 ///////////////////////结构体定义///////////////////////// #defineN100 structpeople { charnum[100]; charname[15]; charsex[20]; charage[20]; charxueli[20]; chargongzhi[20]; charaddress[20]; chartelephone[20]; }people[N]; //////////////////////////函数定义///////////////////////// voidinput(inti); voidenter(); voidbrowse(); voidadd(); voidsearch(); voidmodify(); voidsave(intn); intload(); intmodify_data(inti); voidprintf_face(); voidprintf_back(); voidprintf_one(inti); voidmenu(); intchack_No(inti); voidjiemian(); voidexit(); //**********************************密码**************************************** char*get_password(constchar*prompt) { staticcharbuffer[128]; inti=0; charletter=NULL; printf(prompt); while((i<127)&&(letter! ='\r')) { letter=getch(); if(letter==BACKSPACE) { if(i>0) { buffer[--i]=NULL; putchar(BACKSPACE); putchar(''); putchar(BACKSPACE); } else putchar(7); } elseif(letter! ='\r') { buffer[i++]=letter; putchar('*'); } }//while buffer[i]=NULL; return(buffer); } ////////////////////////////////////////////////////密码程序///////////////////////////// intmima() { system("colorB2"); inti=0; for(i=0;i<3;++i) { char*password; //printf("请输入密码: "); password=get_password("请输入密码: \n"); if(strcmp(password,"00000000")==0) { printf("\n密码正确\n\n\n界面自动跳转中: ●"); Sleep(1000); printf("●"); Sleep(1000); printf("●"); return1; break; } elseif(i==2) { printf("\n你输入的密码错误次数已超过三次! ! \n系统将退出\n"); //getchar(); exit(0); } else { printf("\n你输入的密码错误! 请重新输入: \n"); } } } //////////////////职工号核对////////////////////////////// intchack_No(inti) { for(intk=0;k { if(strcmp(people[k].num,people[i].num)==0) { printf("您输入的职工号已存在,请更换号码! \n"); return0; } else { return1; } } } //////////////////////信息输入模块////////////////////////// voidinput(inti) { //no_input(i,i); while (1) { printf("职工号: "); scanf("%s",people[i].num); intis=chack_No(i); if(is) { break; } } printf("姓名: "); scanf("%s",people[i].name); printf("性别: "); scanf("%s",people[i].sex); printf("年龄: "); scanf("%s",people[i].age); printf("学历: "); scanf("%s",people[i].xueli); printf("工资: "); scanf("%s",people[i].gongzhi); printf("住址: "); scanf("%s",people[i].address); printf("电话: "); scanf("%s",people[i].telephone); } ////////////////////////人员设置///////////////////////// voidenter() { inti,n; printf("请输入人数(0-%d): ",N-1); scanf("%d",&n); printf("\n录入信息\n"); for(i=0;i { printf("\n请输入第%d个人的信息.\n",i+1); input(i); } if(i! =0) save(n); printf_back(); } /////////////////////////////浏览模块///////////////////////////
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 职工 信息管理 系统