职工信息管理系统设计讲解学习.docx
《职工信息管理系统设计讲解学习.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统设计讲解学习.docx(26页珍藏版)》请在冰豆网上搜索。
职工信息管理系统设计讲解学习
职工信息管理系统设计
课程设计(论文)
题目名称职工信息管理系统设计
课程名称C语言程序课程设计
学生姓名曾文静
学号1141304067
系、专业信息工程系、电子
指导教师邓波
2012年6月2日
邵阳学院课程设计(论文)任务书
年级专业
2011级电子科学与技术
学生姓名
曾文静
学号
1141304067
题目名称
职工信息管理系统设计
设计时间
2012.5.20-6.2
课程名称
C语言程序课程设计
课程编号
131301301
设计地点
计算机中心
一、课程设计(论文)目的
在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。
通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。
就本课程设计来说,运用C语言编程解决实际问题。
二、已知技术参数和条件
1、职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话。
2、已经学习C语言的文件输入输出操作,基本结构体、函数、数组等复合数据等相关技术。
3、能查阅很多同类型的程序设计,借鉴其优势,是自己的设计更加完善。
4、能够深入职场!
了解职工基本情况,更真实的反映职工的基本信息。
5、能够充分利用网络对不同地区的职工进行对比与研究。
三、任务和要求
设计职工信息管理系统,使之能提供以下功能:
1、系统以菜单方式工作
2、职工信息录入功能(职工信息用文件保存)——输入
3、职工信息浏览功能——输出
4、查询和安排功能:
——算法
按工资查询、按学历查询等
5、职工信息删除、修改功能(任选项)
要求:
(1)用C语言实现程序设计
(2)利用结构体进行相关信息处理
(3)画出查询模版的流程图
(4)系统的各个功能模版要求用函数的形式实
(5)界面友好(良好的人机互交),程序要有注释现
注:
1.此表由指导教师填写,经系、教研室审批,指导教师、学生签字后生效;
2.此表1式3份,学生、指导教师、教研室各1份。
四、参考资料和现有基础条件(包括实验室、主要仪器设备等)
参考资料:
大学生计算机基础、程序设计基础教程(C语言)计算机辅导教程
主要仪器:
PC机一台(配备有C语言环境)
条件:
系办有专门机房共学生使用,图书馆有足够多的资料共同学翻阅,自己寝室也有做够多的电脑可以用来温习。
五、进度安排
2012.5.13-2012.5.16:
指导教师拟定课程设计课题
2012.5.17-2012.5.20:
选题,下发任务书,学生搜集相关参考资料
2012.5.21-2012.5.27:
编程
2012.5.28-2012.6.2:
撰写课程设计报告
2012.6.4-2012.6.6:
指导教师批阅课程设计报告,评定学生成绩
六、教研室审批意见
教研室主任(签字):
年月日
七、主管教学主任意见
主管主任(签字):
年月日
八、备注
指导教师(签字):
学生(签字):
1课程设计的目的与要求.....................................6
1.1目的.................................................6
1.2要求.................................................6
2课程论文题目.............................................7
3程序设计思路............................................7
4功能模块图...............................................8
5算法设计................................................8
5.1功能模块选择.........................................8
5.2浏览模块.............................................9
5.3排序模块............................................9
5.4查询模块..........................................10
5.5修改模块...........................................11
6源程序..................................................12
7程序运行结果...........................................20
7.1主菜单............................................20
7.2输入模块..........................................21
7.3浏览模块............................................21
7.4查找模块............................................22
7.5修改模块............................................22
8编程中遇到的困难及解决方法..............................23
9总结心得及良好建议......................................24
10参考资料...............................................26
11致谢...................................................26
1、课程设计的目的与要求
1.1目的
1.掌握C语言编程的基础知识较熟练的编写C语言应用程序。
2.能够利用所学的基本知识和技能,解决简单的程序设计问题,增强独立完成工作的能力。
3.通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
1.2要求
1.要求利用C语言面向过程的编程思想来完成系统的设计;
2.突出C语言的函数特征,以多个函数实现每一个子功能;
3.画出功能模块图;
4.进行简单界面设计,能够实现友好的交互;
5.具有清晰的程序流程图和数据结构的详细定义;
6.熟练掌握C语言对文件的各种操作。
2.课程论文题目
职工信息管理系统程序设计
题目要求
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:
(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
3.程序设计思路
1.1设计思路
(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;
(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;
(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
4.功能模块图
5.算法设计
5.1主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
N
Y
5.2浏览模块
【分析】
该模块的功能是浏览职工的全部信息
5.3排序模块
N
Y
12
1
2
5.4查询模块
【分析】
该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。
流程图如下:
5.5修改模块
【分析】
盖模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。
流程图如下:
Y
6.源程序
#include
#defineN50
structworker
{
charid[50];
charname[20];
charsex[10];
charage[10];
charedu[20];
charsalary[10];
charaddress[20];
chartel[20];
}worker[N];
voidsave(intn)//保存函数,保存n个记录
{FILE*fp;
inti;
if((fp=fopen("worker.txt","wb"))==NULL)//以只写方式为输出打开一个二进制文件
{printf("\nCannotopenfile\n");
}
for(i=0;iif(fwrite(&worker[i],sizeof(structworker),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
}
intload()//加载函数
{FILE*fp;
inti;
if((fp=fopen("worker.txt","rb"))==NULL)
{printf("\nCannotopenfile\n");
returnNULL;
}
for(i=0;!
feof(fp);i++)
fread(&worker[i],sizeof(structworker),1,fp);
fclose(fp);
return(i-1);
}
voidno_input(inti,intn)//工号输入函数,i表示第i个职工的信息,n表示比较到第n个职工
{intj,k,w1;
do
{w1=0;
printf("工号:
");
scanf("%s",worker[i].id);
for(j=0;worker[i].id[j]!
='\0';j++)
if(worker[i].id[j]<'0'||worker[i].id[j]>'9')//判断工号是否为数字
{puts("请重新输入!
\n");
w1=1;break;
}
if(w1!
=1)
for(k=0;kif(k!
=i&&strcmp(worker[k].id,worker[i].id)==0)//判断职工号是否有雷同
{puts("请重新输入!
\n");
w1=1;break;
}
}
while(w1==1);
}
voidinput(inti)//输入一个记录的函数
{no_input(i,i);
printf("姓名:
");scanf("%s",worker[i].name);
printf("性别:
");scanf("%s",&worker[i].sex);
printf("年龄:
");scanf("%s",&worker[i].age);
printf("工资:
");scanf("%s",worker[i].salary);
printf("学历:
");scanf("%s",&worker[i].edu);
printf("住址:
");scanf("%s",worker[i].address);
printf("电话:
");scanf("%s",worker[i].tel);
}
voidprintf_one(inti)//显示一个记录的函数
{
printf("%10s%10s%5s%5s%8s%6s%10s%10s\n",
worker[i].id,worker[i].name,worker[i].sex,worker[i].age,
worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel);
}
voidprintf_back()//一个任务结束后选择是好似浏览还是返回
{intk,w;
printf("\n\n\tSuccessful^-^.\n\n");
printf("接下来做什么?
\n\n\t1).浏览全部\t2).返回:
[]\b\b");
scanf("%d",&w);
if(w==1)browse();
elsemenu();
}
modify_data(inti,intn)//修改函数
{intc,w1;
do
{puts("\nmodifyby=>\n\n1).工号2).姓名3).性别4).年龄5).工资6).学历7).地址8).电话9).取消");
printf("请选择?
:
[]\b\b");
scanf("%d",&c);
if(c>9||c<1)
{
puts("\nChoiceerror!
pleaseagain!
");
getchar();
}
}
while(c>9||c<1);
do
{switch(c)
{case1:
no_input(i,n);break;
case2:
printf("name:
");scanf("%s",worker[i].name);break;
case3:
printf("sex:
");scanf("%s",worker[i].sex);break;
case4:
printf("age:
");scanf("%s",worker[i].age);break;
case5:
printf("salary:
");scanf("%s",worker[i].salary);break;
case6:
printf("edu:
");scanf("%s",worker[i].edu);break;
case7:
printf("address:
");scanf("%s",worker[i].address);break;
case8:
printf("tel:
");scanf("%s",worker[i].tel);break;
case9:
menu();break;
}
puts("\nNow:
\n");
printf_face();
printf_one(i);
printf("\n确定?
\n\n\t1).是2).否,重新修改3).不保存退出[]\b\b");
scanf("%d",&w1);
if(w1==1)save(n);
}
while(w1==2);
return(w1);
}
printf_face()//显示数据结构项目
{printf("\n\t工号姓名性别年龄工资学历地址电话号码\n");}
voidenter()//输入模块
{inti,n;
printf("输入多少个职工信息(0-%d):
",N-1);
scanf("%d",&n);
printf("\n请输入职工信息\n\n");
for(i=0;iinput(i);
if(i!
=0)
save(n);
printf_back();
}
browse()//浏览模块
{inti,j,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();
}
modify()//修改模块
{
structworkers;
FILE*fp;
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",s.id);//输入要修改的ID
for(i=0;iif(strcmp(s.id,worker[i].id)==0)
{
k=i;//找到要修改的记录
s=worker[i];//把worker[i]备份,以便恢复
}
if(k==-1)
printf("\n\n未找到请重输");
}
while(k==-1);//当k=-1表示没有找到
printf_face();//调用显示数据结构项目的函数
printf_one(k);//调用显示一个记录的函数
w1=modify_data(k,n);//修改记录并返回保存控制值w1,w1=1表示用户已确认修改
if(w1==1)
{
printf("\Successful^_^.\n\n修改另一个?
\n\n\t1).是2).否,保存退出\t[]\b\b");
scanf("%d",&w0);
w2=1;//用来控制保存,使w2=1是标记已有过修改
}
else
{
w0=0;
if(w2==1)
worker[k]=s;
}
if(w0!
=1&&w2==1)
save(n);
}while(w0==1);
menu();
}
search()//查询模块
{intc,w1;
do
{puts("\nsearchby=>\n\n1).工号2}.学历3).取消并返回");
printf("Whichyouneeded?
:
[]\b\b");
scanf("%d",&c);
if(c>3||c<1)
{puts("\nchoiceerror!
pleaseagain!
");
getchar();
}
}
while(c>3||c<1);
{switch(c)
{case1:
search1();break;
case2:
search2();break;
case3:
menu();break;
}
}
}
search1()//按工号查询模块
{inti,n,k,w1=1,w2,w3,w4;
structworkers;
n=load();
do
{
do
{k=-1;
printf("\n\n输入要查询的工号!
id:
");
scanf("%s",s.id);
printf_face();
for(i=0;iif(strcmp(s.id,worker[i].id)==0)
{k=i;
printf_one(k);break;
}
if(k==-1)
{printf("\n\nNoexit!
please");
printf("\n\n继续查找?
\n\t1).是2).否,返回[]\b\b");
scanf("%d",&w1);
if(w1==2)menu();
}
}
while(k==-1&&w1==1);
w4=0;w3=0;
if(k!
=-1)
{printf("\n\n接下来干什么?
\n\t1).查找另一个2).修改3).返回菜单[]\b\b");
scanf("%d",&w2);
switch(w2)
{
case1:
search1();break;
case2:
w3=modify_data(k,n);break;
case3:
{menu();break;}
}
}
}
while(w2==1);
menu();
}
search2()//按学历查询模块
{
inti,n,k,w1=1,w2,w3,w4;
structworkers;
n=load();
do
{
do
{k=-1;
printf("\n\n请输入你要查询的学历:
\n");
scanf("%s",s.edu);
printf_face();
for(i=0;iif(strcmp(s.edu,worker[i].edu)==0)
{k=i;
printf_one(k);
}
if(k==-1)
{printf("\n\nNoexit!
please");
printf("\n\n继续查找?
\n\t1).是2).否,返回[]\b\b");
scanf("%d",&w1);
if(w1==2)menu();
}
}
while(k==-1&&w1==1);
w4=0;w3=0;
if(k!
=-1)
{printf("\n\n接下来干什么?
\n\t1).查找另一个2).修改3).返回菜单[]\b\b");
scanf("%d",&w2);
switch(w2)
{case1:
search2();break;
case2:
w3=modify_data(k,n);break;
case3:
{menu();
break;
}
}
}
}
while(w2==1);
menu();
}
menu()
{
intn,w1;
do
{
puts