完整word版职工信息管理系统C语言课程设计+源代码Word文档下载推荐.docx
《完整word版职工信息管理系统C语言课程设计+源代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整word版职工信息管理系统C语言课程设计+源代码Word文档下载推荐.docx(40页珍藏版)》请在冰豆网上搜索。
通过输入职工号完成对该名职工的信息进行修改。
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("
输入职工信息"
\n"
input();
break;
case2:
浏览职工信息"
display();
case3:
查询职工信息"
search();
case4:
删除职工信息"
del();
case5:
添加职工信息"
add();
case6:
修改职工信息"
modify();
case7:
exit(0);
default:
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>
//标准输入输出函数库
string.h>
//字符串函数库
stdlib.h>
structemployee
{
intnum;
//职工号
charname[20];
//姓名
charsex;
//性别
intage;
//年龄
charxueli[30];
//学历
intwage;
//工资
charaddr[30];
//家庭住址
chartel[20];
//联系电话
}employee[100];
//定义一个结构体
intmain()//函数主体
voidmenu();
intn,flag;
chara;
menu();
请选择你需要操作的步骤(1--7):
scanf("
%d"
&
n);
do
while(flag==1)
switch(n)
◆◆◆输入职工信息◆◆◆\n"
◆◆◆浏览职工信息◆◆◆\n"
◆◆◆查询职工信息◆◆◆\n"
◆◆◆删除职工信息◆◆◆\n"
◆◆◆添加职工信息◆◆◆\n"
◆◆◆修改职工信息◆◆◆\n"
getchar();
是否继续进行(yorn):
%c"
a);
if(a=='
y'
)
system("
cls"
//清屏
//调用菜单函数
请再次选择你需要操作的步骤(1--7):
else
exit(0);
}
voidmenu()//菜单函数
************欢迎进入职工信息管理系统**********\n"
1.录入职工信息"
2.浏览职工信息\n"
3.查询职工信息"
4.删除职工信息\n"
5.添加职工信息"
6.修改职工信息\n"
7.退出\n"
********************谢谢使用******************\n"
voidinput()//录入函数
inti,m;
请输入需要创建信息的职工人数(1--100):
m);
for(i=0;
i<
m;
i++)
请输入职工号:
"
employee[i].num);
请输入姓名:
%s"
employee[i].name);
请输入性别(f--女m--男):
employee[i].sex);
请输入年龄:
employee[i].age);
请输入学历:
employee[i].xueli);
请输入工资:
employee[i].wage);
请输入住址:
employee[i].addr);
请输入电话:
employee[i].tel);
\n创建完毕!
save(m);
voidsave(intm)//保存文件函数
inti;
FILE*fp;
if((fp=fopen("
employee_list.txt"
"
wb"
))==NULL)
printf("
cannotopenfile\n"
i++)//将内存中职工的信息输出到磁盘文件中去
if(fwrite(&
employee[i],sizeof(structemployee),1,fp)!
=1)
filewriteerror\n"
fclose(fp);
intload()//导入函数
inti=0;
if((fp=fopen("
rb"
do
fread(&
employee[i],sizeof(structemployee),1,fp);
i++;
while(feof(fp)==0);
return(i-1);
//循环过程中跳出循环时i自动加一,所以要减去一
voiddisplay()//浏览函数
intm=load();
职工号姓名性别年龄学历工资住址电话\n"
for(i=0;
i++)//m为输入部分的职工人数
%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;
\n按职工号删除请按1;
按姓名删除请按2;
进入主函数请按3\n"
t);
if(t>
t<
=3)
您输入有误,请重新选择!
switch(t)
{
按职工号删除\n"
del_num();
按姓名删除\n"
del_name();
main();
default:
voiddel_name()//按姓名删除函数
inti,j,n,t,flag;
\n原来的职工信息:
display();
//调用浏览函数
请输入要删除的职工的姓名:
name);
for(flag=1,i=0;
flag&
if(strcmp(employee[i].name,name)==0)
\n已找到此人,原始记录为:
\n确实要删除此人信息请按1,不删除请按0\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);
//把下一员工的信息复制到上一个员工信息的位置中去
if(!
flag)//flag取逻辑反,及flag==0
m=m-1;
\n对不起,查无此人!
\n浏览删除后的所有职工信息:
//调用保存函数
\n不在删除请按0,返回删除菜单请按1,继续按姓名删除请按2\n"
case0:
voiddel_num()//按职工号删除函数
请输入要删除的职工的职工号:
num);
if(employee[i].num==num)
\n不在删除请按0,返回删除菜单请按1,继续按职工号删除请按2\n"
voidadd()//添加函数
intn;
intcount=0;
fp=fopen("
emploee_list.txt"
a"
请输入想增加的职工数:
for(i=m;
(m+n);
\n请输入新增加职工的信息:
请输入职工号:
employee