C语言职工档案管理系统.docx
《C语言职工档案管理系统.docx》由会员分享,可在线阅读,更多相关《C语言职工档案管理系统.docx(16页珍藏版)》请在冰豆网上搜索。
C语言职工档案管理系统
C语言程序设计
课程设计报告
设计题目:
职工档案管理系统设计
专业:
电子信息科学与技术
学号:
3080422***
班级:
2008级1班
姓名:
*******
指导教师:
*******
2009年春季学期
C语言课程设计任务书4
题目:
职工档案管理系统设计
功能:
职工档案管理系统设计,每个职工是一条记录,包括编号,姓名,性别,出生年月,所在部门,职称,工资级别、电话等。
系统可实现以下功能:
1、输入功能:
输入每一位职工记录,将其信息存入文件中。
2、显示功能:
完成全部职工记录的显示。
3、查找功能:
完成按编号或姓名查找职工的相关记录,并显示。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。
2、建立一个文件,将每位职工的信息写入文件中并能显示于屏幕上。
3、完成上述查找(编号,姓名,性别等)、修改等功能。
4、进一步要求,修改记录设置密码操作。
要求:
1、用C语言实现程序设计;
2、利用结构体数组实现职工信息的数据结构设计;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序加必要的注释。
课程设计实验报告要求:
1、预习报告:
题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。
2、实验总结报告:
流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、
小结等。
总评成绩:
指导教师:
附件:
主要源程序代码(职工档案管理系统)
charsex;//性别f为女m为男#include
#include
#include
#include
#defineN100
typedefstructemployee//职工基本情况
{
charnum[6];//编号
charname[8];//姓名
charbirth[8];//出生年月
charworkplace[10];//工作部门
charsalarylevel[8];//工资级别
charposition[8];//职称
chartel[16];//电话
}em[N];
/*主要函数*/
voidinput();//输入职工信息
voiddisplay();//显示职工信息
voidpassWord();//设置密码
voidsave();//保存职工信息
voidchange();//修改职工信息
/*查找函数*/
voidsearch();
voidsearchByname();//按姓名查找
voidsearchBynum();//按编号查找
inttotal=0;//定义total来记数记录数
inti=0;
voidmain()
{intchoice;
do
{
printf("~~~~~~~~~~~~~~~~~~~~~~~\n");//系统欢迎界面
printf("欢迎进入职工管理系统\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("~~~Coyote2009年6月~~~~\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("请您选择操作类型:
\n");
printf("========================\n");
printf("1.输入职工信息\n");//用户选择
printf("2.显示职工信息\n");
printf("3.查找职工信息\n");
printf("4.修改职工信息\n");
printf("0.退出系统\n");
printf("========================\n");
scanf("%d",&choice);
switch(choice)
{
case1:
input();break;
case2:
display();break;
case3:
search();break;
case4:
change();break;
case0:
{
printf("谢谢使用!
再见!
");
exit(0);//退出系统
}
default:
{printf("输入有错误请重新输入:
");
return;
}
}
}while
(1);//当为真值时执行do循环
}
voidinput()
{
charj='\0';//初始化j值为空
do
{
total++;
i++;
printf("第%d个职工:
\n",i);
printf("请您输入编号:
");//输入编号
scanf("%s",em[i].num);
printf("请您输入姓名:
");//输入姓名
scanf("%s",em[i].name);
printf("请您输入性别以(m男f女):
");//输入性别
getchar();
scanf("%c",&em[i].sex);
printf("请您输入出生年月(格式如:
1990.03):
");//输入出生年月
scanf("%s",em[i].birth);
printf("请您输入工作部门:
");//输入工作部门
scanf("%s",em[i].workplace);
printf("请您输入职位:
");//输入职位
scanf("%s",em[i].position);
printf("请您输入工资级别:
");//输入工资级别
scanf("%s",em[i].salarylevel);
printf("请您输入联系电话:
");//输入联系电话
scanf("%s",em[i].tel);
printf("是否继续输入?
(y/n):
");
getchar();
j=getchar();
while(j!
='y'&&j!
='n')
{
printf("输入不合法!
\n是否继续输入?
(y/n):
");
getchar();
j=getchar();
}
}while(j=='y');
save();//保存职工记录
printf("输入完毕,请按任意键返回\n");
getch();//conio库函数里的,结收键盘输入任意~~~
return;
}
voidsave()
{
FILE*fp;
inti=0;
if((fp=fopen("employee.txt","ab"))==NULL)
{
printf("cannotopenfile\n");
return;
}
for(i=1;i<=total;i++)
if(fwrite(&em[i],sizeof(structemployee),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
}
voiddisplay()//显示所有职工信息
{
FILE*fp;
inti;
if((fp=fopen("employee.txt","rb"))==NULL)
{
printf("文件打开失败或未创建文件!
\n");
return;
}
printf("所有职工信息如下:
\n");//输出所有职工信息
printf("\n===========================================================================\n");
printf("编号姓名性别出生年月所在部门职称工资级别联系电话\n");
printf("===========================================================================\n");
for(i=1;fread(&em[i],sizeof(structemployee),1,fp)!
=0;i++)//读完所有数据
printf("%-6s%8s%6c%12s%10s%8s%8s%18s\n",em[i].num,em[i].name,em[i].sex,em[i].birth,em[i].workplace,em[i].position,em[i].salarylevel,em[i].tel);
printf("完毕,请按任意键返回\n");
getch();
fclose(fp);
return;
}
voidsearch()
{intchoice;
printf("请您选择查找方式:
\n");
printf("1.按编号查找\n2.按姓名查找\n");
scanf("%d",&choice);
switch(choice)
{
case1:
searchBynum();break;
case2:
searchByname();break;
default:
printf("输入有误,请重输入:
\n");
}
}
voidsearchBynum()
{
FILE*fp;
inti;
charnumb[6];
if((fp=fopen("employee.txt","r"))==NULL)
{
printf("不能够打开这个文件,请按任意键返回");
return;
}
printf("请您输入要查找的人的编号:
");
scanf("%s",numb);
for(i=0;iif(strcmp(em[i].num,numb)==0)//找到并显示该职工记录
{
printf("以下是您要查询的人的信息:
\n");printf("\n===========================================================================\n");
printf("编号姓名性别出生年月所在部门职称工资级别联系电话\n");
printf("===========================================================================\n");
printf("%-6s%8s%6c%12s%10s%8s%8s%18s\n",em[i].num,em[i].name,em[i].sex,em[i].birth,em[i].workplace,em[i].position,em[i].salarylevel,em[i].tel);
printf("查找完毕,请按任意键返回\n");
getch();
fclose(fp);
return;
}
printf("没有这样的人,请按任意键返回\n");
getch();
fclose(fp);
return;
}
voidsearchByname()
{
FILE*fp;
inti=0;
charnam[8];
if((fp=fopen("employee.txt","rb"))==NULL)
{
printf("不能够打开这个文件,请按任意键返回\n");
return;
}
printf("请您输入要查找的人的姓名:
");
scanf("%s",nam);
for(i=0;iif(strcmp(em[i].name,nam)==0)//找到并显示该职工记录
{
printf("以下是您要查询的人的信息:
\n");printf("\n===========================================================================\n");
printf("编号姓名性别出生年月所在部门职称工资级别联系电话\n");printf("===========================================================================\n");printf("%-6s%8s%6c%12s%10s%8s%8s%18s\n",em[i].num,em[i].name,em[i].sex,em[i].birth,em[i].workplace,em[i].position,em[i].salarylevel,em[i].tel);
fclose(fp);
printf("查找完毕,请按任意键返回\n");
getch();
return;
}
printf("没有这样的人,请按任意键返回\n");
getch();
fclose(fp);
return;
}
voidpassWord()
{
charpassWord[8]="123456";//起始密码
chars[8];
intflag=0;
intn=3;//密码输入次数
do
{
scanf("%s",s);
if(strcmp(passWord,s)==0)//若密码正确
{
printf("密码正确,祝您操作愉快!
\n");
flag=1;
break;
}
else
{
printf("密码错误,您还有%d次机会:
",n-1);
n--;//次数记数
}
}while(n>0);
if(flag!
=1)
{
printf("您的输入次数已到!
再见!
\n");
main();//返回主函数(主菜单)
}
}
voidchange()
{
FILE*fp;
inti;
charnewnum[6];//新编号
charnewname[8];//新名字
charnewsex;//新性别
charnewbirth[8];//新出生年月
charnewworkplace[10];//新工作部门
charnewposition[8];//新职称
charnewsalarylevel[8];//新工资水平
charnewtel[16];//新电话号码
charnam[8];
intchoice;
printf("请您输入密码:
");
passWord();//调用密码函数
printf("请您输入要修改的人的姓名:
");
scanf("%s",&nam);
if((fp=fopen("employee.txt","w+"))==NULL)
{
printf("不能够打开这个文件");
return;
}
for(i=1;i<=N;i++)
if(strcmp(nam,em[i].name)==0)
{
printf("这是您要修改的人的信息:
\n");printf("\n===========================================================================\n");
printf("编号姓名性别出生年月所在部门职称工资级别联系电话\n");
printf("===========================================================================\n");
printf("%-6s%8s%6c%12s%10s%8s%8s%18s\n",em[i].num,em[i].name,em[i].sex,em[i].birth,em[i].workplace,em[i].position,em[i].salarylevel,em[i].tel);
printf("-----------------------\n");
printf("请您选择要修改的部分:
\n");
printf("=======================\n");
printf("1.修改编号\n");
printf("2.修改姓名\n");
printf("3.修改性别\n");
printf("4.修改出生年月\n");
printf("5.修改所在部门\n");
printf("6.修改职位\n");
printf("7.修改工资级别\n");
printf("8.修改联系电话\n");
printf("0.返回主菜单\n");
printf("========================\n");
scanf("%d",&choice);
switch(choice)
{
case1:
printf("请您输入新的编号:
");
scanf("%s",newnum);
strcpy(em[i].num,newnum);
break;
case2:
printf("请您输入新的姓名:
");
scanf("%s",newname);
strcpy(em[i].name,newname);
break;
case3:
printf("请您输入新的性别:
");
getchar();
scanf("%c",&newsex);
em[i].sex=newsex;
break;
case4:
printf("请您输入新的出生年月:
");
scanf("%s",newbirth);
strcpy(em[i].birth,newbirth);
break;
case5:
printf("请您输入新的工作部门:
");
scanf("%s",newworkplace);
strcpy(em[i].workplace,newworkplace);
break;
case6:
printf("请您输入新的职位:
");
scanf("%s",newposition);
strcpy(em[i].position,newposition);
break;
case7:
printf("请您输入新的工资级别:
");
scanf("%s",newsalarylevel);
strcpy(em[i].salarylevel,newsalarylevel);
break;
case8:
printf("请您输入新的联系电话:
");
scanf("%s",newtel);
strcpy(em[i].tel,newtel);
break;
case0:
{
printf("返回主菜单");
main();//返回
}
default:
printf("输入有错误!
请重新输入!
");return;
}
printf("\n===========================================================================\n");
printf("编号姓名性别出生年月所在部门职称工资级别联系电话\n");
printf("===========================================================================\n");
printf("%-6s%8s%6c%12s%10s%8s%8s%18s\n",em[i].num,em[i].name,em[i].sex,em[i].birth,em[i].workplace,em[i].position,em[i].salarylevel,em[i].tel);
save();//保存修改信息
break;
}
elseif(i==N)
{
printf("没有这个职工,为了安全,请再次输入密码!
\n");
change();
}
printf("\n===================\n");
printf("1.继续修改\n2.返回主菜单\n");
printf("===================\n");
printf("\n请您选择:
");
scanf("%d",&choice);
switch(choice)
{
case1:
change();break;
case2:
main();break;
default:
printf("输入不合法!
返回\n");main();
}
}