职工信息管理系统C语言课程设计+源代码.docx
《职工信息管理系统C语言课程设计+源代码.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统C语言课程设计+源代码.docx(46页珍藏版)》请在冰豆网上搜索。
职工信息管理系统C语言课程设计+源代码
课程设计报告(本科)
课程:
高级语言课程设计
学号:
姓名:
班级:
教师:
时间:
计算机科学与技术系
设计名称:
职工信息管理系统
设计内容、目的与要求:
语言的基本知识和编辑技能。
基本掌握结构化程序C目的:
要求熟练掌握语言职工信息管理系统,便于对职C设计的基本思路和方法。
通过编写学生的语言信息管理系统设计,训练综合运用函数C工的信息进行管理。
通过对职工的自定义,数组,结构体等,并提高程序设计的能力。
要求:
设计一个职工信息管理系统,使之能提供以下功能:
调用界面和各个功能的操作界面应,1、应提供一个界面来调用各个功能!
尽可能清晰美观、输入功能:
职工信息录入(职工信息用文件保存),可以一次完成若2干条记录的输入。
:
完成对全部职工信息的显示。
3、浏览功能:
①完成按职工的职工号查询职工的相关信息,并显示。
4、查找功能②完成按职工的学历查询职工的相关信息,并显示。
③完成按职工的电话号码查询职工的相关信息,并显示。
:
①通过输入职工的姓名完成对该名职工的信息进行删除。
5、删除功能②通过输入职工号完成对该名职工的信息进行删除。
:
完成添加新职工的信息的任务。
6、添加功能①通过输入职工的姓名完成对该名职工的信息进行修改。
7、修改功能:
②通过输入职工号完成对该名职工的信息进行修改。
、退出职工信息管理系统8。
计划与进度安排:
通过上网查仔细看数据库相关知识,日2012年12月152012年12月8日至资料找思路。
把主函数完成设计思路并作出草稿,月20日20122012年12月16日至年12和各调用函数模块编出来。
把整个程逐步实现各模块的功能化,日2013年1月1日至年201212月21序大体功能都实现。
写好电子实验报修改并完善各功能,1日至2013年月6日212013年月并准备提交验收。
告,
设计过程、步骤(可加页):
一.功能结构
1
统管理系职工信息开始菜单择选入的值根据菜单输序程7654312
修改添加查询删除录入浏览退出
职工职工职工职工职工职工信息信息信息信息信息信息
2212131按按按按按按按职职号职职职学工工码历工工工姓查查号号姓号名查询删修询名修询除改删除改
二、设计说明.
这个程序要用到结构体1.{…………};structemployee函数的声明和调用:
2.菜单函数//voidmenu();
录入函数voidinput();//
2
保存文件函数//voidsave(intm);
//浏览函数voiddisplay();
//删除函数voiddel();
//按姓名删除函数voiddel_name();
//按职工号删除函数voiddel_num();
添加函数//voidadd();
查询函数//voidsearch();
按职工号码查询函数//voidsearch_num();
按学历查询函数//voidsearch_xueli();
按号码查询函数//voidsearch_tel();
//修改函数voidmodify();
//按员工号修改函数voidmodify_num();
按姓名修改函数//voidmodify_name();
是进行循环的,do..while语句和switch,3.选择功能,用到了do..while是用来选择的switchdo
{
if(n>=1&&n<=7)
{
flag=1;
break;
}
else
{
flag=0;
!
);,请重新选择牰湩晴尨您输入有误
}
}
while(flag==0);
switch(n)
{
);printf(\
);input();break;输入职工信息case1:
printf(
);printf(\
);display();break;浏览职工信息case2:
printf(
);printf(\
);search();break;查询职工信息case3:
printf(
);printf(\
);del();break;删除职工信息case4:
printf(
);printf(\
);add();break;添加职工信息case5:
printf(
);printf(\
);modify();break;修改职工信息case6:
printf(
case7:
exit(0);break;
default:
break;
}
定义的函数完成功能的实现:
录入职工信息,浏览职工信息,查询职工信4.息,修改职工信息,添加职工信息,删除职工信息。
执行程序。
5.
3
:
结果与分析(可以加页)
.
功能上有对职工信息的增加,删除,浏览,查询,修改等简单的功能使用说明及运行实例:
单的主菜统职工信息管理系入程1.运行序,进
图1:
进入主菜单界:
”进行录入职工信息2.输入数字“1
:
录入职工信息图2。
y3.输入“”返回主菜单(界面同图1):
职浏2入4.输“”览工息信4
3:
浏览职工信息图3输入“y”后继续,输入“”进行查询职工信息:
5.
:
按职工号查询职工信息图4
5
:
按学历查询职工信息5:
按电话号码查询职工信息图6:
信息除进行删职工”输主6.进入菜单,入“4
7图:
按姓名删除职工信息
:
按职工号删除职工信息图8:
职添进5入单主进7.入菜输“”行加工息信6
:
添加职工信息图9:
工信息”进行修改职6单进8.入主菜输入“
:
按姓名修改职工信息10图
:
按职工号修改职工信息图11:
息工出””输菜入9.进主单入7退职信管统理系7
退出系统图12:
优点是:
基本实现了程序的多功能,对与查询职工信息提供了三种方法,对与修改和删除职工信息提供了两种方法,功能多种多样。
旗帜变量的使用也是优点之一;这个程序用到了的结构体,整个程序简单,易懂。
缺点是:
保存职工信息有限,程序段比较臃长。
设计体会与建议:
语言函数调语言,学会更好的使用C通过这次的课程设计,我更加了解C用和结构体等,把学过的知识运用于实践中,而不仅仅停留于对课本的单纯理要学习的东西还有很多。
想完成一项功能解;这次设计也让我知道我懂的太少,就要用很复杂的语句去实现,所以整个程序变的很长,复杂,但是结构体,数组,指针等的灵活运用又可使程序变的易懂。
另外,团队的合作也是成功的一部分!
结果找起来和修改,在编写代码时一开始没有运用有意义的函数名和变量我认为最重要的就是耐心和细心。
也使别人看不懂。
在整个课程设计中,好麻烦细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。
虽然在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设以前好多不懂的也都理解了。
也学会了作为大学生我,计的经历让我学到了太多们也应该学会不仅从课堂上学习知识,还应该学会自学。
8
附录:
#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();
(1--7):
\n);请选择你需要操作的步骤牰湩晴尨
scanf(%d,&n);
do
9
{
if(n>=1&&n<=7)
{
flag=1;
break;
}
else
{
flag=0;
牰湩晴尨您输入有误,请重新选择!
);
}
}
while(flag==0);
while(flag==1)
{
switch(n)
{
case1:
printf(◆◆◆输入职工信息
\n);printf(\
);input();break;
◆◆◆息览职工信◆◆◆浏case2:
printf(
\n);printf(\
);display();break;
◆◆◆信息职◆◆◆查询工case3:
printf(
\n);printf(\
);search();break;◆◆◆职删除工case4:
printf(信息◆◆◆\n);printf(\
);del();break;
◆◆◆信息职◆◆◆添case5:
printf(加工
\n);printf(\
);add();break;
◆◆◆改信职工息修6:
printf(case◆◆◆\n);printf(\
);modify();break;◆◆◆case7:
exit(0);break;
default:
break;
}
getchar();
printf(\
);
(yorn):
\n);牰湩晴尨是否继续进行scanf(%c,&a);
if(a=='y')
{
flag=1;
//清屏system(cls);
menu();调用菜单函数//
(1--7):
\n);请再次选择你需要操作的步骤牰湩晴尨scanf(%d,&n);
printf(\
);
10
}
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(\
);
printf(\
);
}
voidinput()//录入函数
{
inti,m;
牰湩晴尨请输入需要创建信息的职工人数(1--100):
\n);
scanf(%d,&m);
for(i=0;i{
牰湩晴尨请输入职工号:
);
scanf(%d,&employee[i].num);
牰湩晴尨请输入姓名:
);
scanf(%s,employee[i].name);
getchar();
牰湩晴尨请输入性别(f--女m--男):
);
scanf(%c,&employee[i].sex);
牰湩晴尨请输入年龄:
);
scanf(%d,&employee[i].age);
牰湩晴尨请输入学历:
);
scanf(%s,employee[i].xueli);
牰湩晴尨请输入工资:
);
scanf(%d,&employee[i].wage);
牰湩晴尨请输入住址:
);
scanf(%s,employee[i].addr);
11
牰湩晴尨请输入电话:
);
scanf(%s,employee[i].tel);
printf(\
);
}
printf(\
创建完毕!
\n);
save(m);
}
voidsave(intm)//保存文件函数
{
inti;
FILE*fp;
if((fp=fopen(employee_list.txt,wb))==NULL)
{
printf(cannotopenfile\n);
exit(0);
}
for(i=0;iif(fwrite(&employee[i],sizeof(structemployee),1,fp)!
=1)
printf(
ilewriteerror\n);
fclose(fp);
}
导入函数//intload()
{
FILE*fp;
inti=0;
if((fp=fopen(employee_list.txt,
b))==NULL)
{
printf(cannotopenfile\n);
exit(0);
}
else
{
do
{
fread(&employee[i],sizeof(structemployee),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
12
return(i-1);//循环过程中跳出循环时i自动加一,所以要减去一
}
voiddisplay()//浏览函数
{
inti;
intm=load();
printf(职工号姓名性别年龄学历工资住址电话\n);
for(i=0;iprintf(%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(\
按职工号删除请按1;按姓名删除请按2;进入主函数请按3\n);
scanf(%d,&t);
if(t>=1&&t<=3)
{
flag=1;
break;
}
else
{
flag=0;
牰湩晴尨您输入有误,请重新选择!
);
}
}
while(flag==0);
while(flag==1)
{
switch(t)
{
慣敳ㄠ瀺楲瑮?
按职工号删除\n);del_num();break;
慣敳㈠瀺楲瑮?
按姓名删除\n);del_name();break;
case3:
main();break;
13
default:
break;
}
}
}
voiddel_name()//按姓名删除函数
{
intm=load();
inti,j,n,t,flag;
charname[20];
printf(\
原来的职工信息:
\n);
display();//调用浏览函数
printf(\
);
牰湩晴尨请输入要删除的职工的姓名:
\n);
scanf(%s,name);
for(flag=1,i=0;flag&&i{
if(strcmp(employee[i].name,name)==0)
{
printf(\
已找到此人,原始记录为:
\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(\
确实要删除此人信息请按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;
14
}
}
}
if(!
flag)//flag取逻辑反,及flag==0
m=m-1;
else
printf(\
对不起,查无此人!
\n);
printf(\
浏览删除后的所有职工信息:
\n);
save(m);//调用保存函数
display();//调用浏览函数
printf(\
不在删除请按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);
display();//调用浏览函数
printf(\
);
牰湩晴尨请输入要删除的职工的职工号:
\n);
scanf(%d,&num);
for(flag=1,i=0;flag&&i{
if(employee[i].num==num)
{
printf(\
已找到此人,原始记录为:
\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(\
确实要删除此人信息请按1,不删除请按0\n);
scanf(%d,&n);
15
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);
printf(\
浏览删除后的所有职工信息:
\n);
save(m);//调用保存函数
display();//调用浏览函数
printf(\
不在删除请按0,返回删除菜单请按1,继续按职工号删除请按2\n);
scanf(%d,&t);