职工信息管理系统C语言课程设计源代码.docx
- 文档编号:9039230
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:40
- 大小:459.35KB
职工信息管理系统C语言课程设计源代码.docx
《职工信息管理系统C语言课程设计源代码.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统C语言课程设计源代码.docx(40页珍藏版)》请在冰豆网上搜索。
职工信息管理系统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.这个程序要用到结构体.
structemployee{…………};
2.函数的声明和调用:
voidmenu();//菜单函数
voidinput();//录入函数
voidsave(intm);//保存文件函数
voiddisplay();//浏览函数
voiddel();//删除函数
voiddel_name();//按姓名删除函数
voiddel_num();//按职工号删除函数
voidadd();//添加函数
voidsearch();//查询函数
voidsearch_num();//按职工号码查询函数
voidsearch_xueli();//按学历查询函数
voidsearch_tel();//按号码查询函数
voidmodify();//修改函数
voidmodify_num();//按员工号修改函数
voidmodify_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)
{
case1:
printf("输入职工信息");printf("\n");input();break;
case2:
printf("浏览职工信息");printf("\n");display();break;
case3:
printf("查询职工信息");printf("\n");search();break;
case4:
printf("删除职工信息");printf("\n");del();break;
case5:
printf("添加职工信息");printf("\n");add();break;
case6:
printf("修改职工信息");printf("\n");modify();break;
case7:
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
#include
#include
structemployee
{
intnum;//职工号
charname[20];//姓名
charsex;//性别
intage;//年龄
charxueli[30];//学历
intwage;//工资
charaddr[30];//家庭住址
chartel[20];//联系电话
}employee[100];//定义一个结构体
intmain()//函数主体
{
voidmenu();//菜单函数
voidinput();//录入函数
voidsave(intm);//保存文件函数
voiddisplay();//浏览函数
voiddel();//删除函数
voiddel_name();//按姓名删除函数
voiddel_num();//按职工号删除函数
voidadd();//添加函数
voidsearch();//查询函数
voidsearch_num();//按职工号码查询函数
voidsearch_xueli();//按学历查询函数
voidsearch_tel();//按号码查询函数
voidmodify();//修改函数
voidmodify_num();//按员工号修改函数
voidmodify_name();//按姓名修改函数
intn,flag;
chara;
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)
{
case1:
printf("◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break;
case2:
printf("◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;
case3:
printf("◆◆◆查询职工信息◆◆◆\n");printf("\n");search();break;
case4:
printf("◆◆◆删除职工信息◆◆◆\n");printf("\n");del();break;
case5:
printf("◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break;
case6:
printf("◆◆◆修改职工信息◆◆◆\n");printf("\n");modify();break;
case7:
exit(0);break;
default:
break;
}
getchar();
printf("\n");
printf("是否继续进行(yorn):
\n");
scanf("%c",&a);
if(a=='y')
{
flag=1;
system("cls");//清屏
menu();//调用菜单函数
printf("请再次选择你需要操作的步骤(1--7):
\n");
scanf("%d",&n);
printf("\n");
}
else
exit(0);
}
}
voidmenu()//菜单函数
{
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");
}
voidinput()//录入函数
{
inti,m;
printf("请输入需要创建信息的职工人数(1--100):
\n");
scanf("%d",&m);
for(i=0;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); } voidsave(intm)//保存文件函数 { inti; FILE*fp; if((fp=fopen("employee_list.txt","wb"))==NULL) { printf("cannotopenfile\n"); exit(0); } for(i=0;i if(fwrite(&employee[i],sizeof(structemployee),1,fp)! =1) printf("filewriteerror\n"); fclose(fp); } intload()//导入函数 { FILE*fp; inti=0; if((fp=fopen("employee_list.txt","rb"))==NULL) { printf("cannotopenfile\n"); exit(0); } else { do { fread(&employee[i],sizeof(structemployee),1,fp); i++; } while(feof(fp)==0); } fclose(fp); return(i-1);//循环过程中跳出循环时i自动加一,所以要减去一 } voiddisplay()//浏览函数 { inti; intm=load(); printf("职工号姓名性别年龄学历工资住址电话\n"); for(i=0;i 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); } voiddel()//删除函数 { intt,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) { case1: printf("按职工号删除\n");del_num();break; case2: printf("按姓名删除\n");del_name();break; case3: main();break; default: break; } } } voiddel_name()//按姓名删除函数 { intm=load(); inti,j,n,t,flag; charname[20]; printf("\n原来的职工信息: \n"); display();//调用浏览函数 printf("\n"); printf("请输入要删除的职工的姓名: \n"); scanf("%s",name); for(flag=1,i=0;flag&&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 { 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) { case0: main();break; case1: del();break; case2: break; default: break; } } voiddel_num()//按职工号删除函数 { intm=load(); inti,j,n,t,flag; intnum; printf("\n原来的职工信息: \n"); display();//调用浏览函数 printf("\n"); printf("请输入要删除的职工的职工号: \n"); scanf("%d",&num); for(flag=1,i=0;flag&&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 { 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) { case0: main();break; case1: del();break; case2: break; default: break; } } voidadd()//添加函数 { FILE*fp; intn; intcount=0; inti; intm=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)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工 信息管理 系统 语言 课程设计 源代码