职工信息管理系统.docx
《职工信息管理系统.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
职工信息管理系统
文理学院
信息工程学院
软件编程课程设计报告
设计题目:
职工信息管理系统设计
学生学号:
0204140140
专业班级:
物联网工程
(1)班
学生姓名:
桂桂
学生成绩:
指导教师:
立
课题工作时间:
2015-11-25至2015-12-9
信息工程学院软件编程课程设计任务书
学生姓名
桂桂
学号
020*******
专业班级
物联网工程
(1)班
设计题目
职工信息管理系统
主要任务及设计要求:
设计一个职工信息管理系统。
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、等(职工号不重复)。
使之能提供以下功能:
1、系统以菜单式工作
2、职工信息录入功能(职工信息用文件保存)--输入
3、职工信息浏览功能--输出
4、职工信息查询功能--算法
查询式:
(1)按学历查询
(2)按职工号查询
5、职工信息删除功能、
6、职工信息修改功能
指导教师:
日期:
2015年11月25日
1.概述1
1.1课题背景1
1.2系统功能1
1.3设计要求1
2.概要设计2
2.1系统功能模块2
2.2模块流程图3
3.详细设计5
3.1程序中使用的数据结构5
3.2函数详解5
4.设计结果与分析8
总结与体会14
参考文献15
附录:
主要程序代码16
第一章概述
1.1课题背景
软件编程课程设计的要培养学生综合运用C语言的重要途径,是主要的实践性教学环节之一,运用所学课程的知识,结合实际应用设计而进行的一次综合分析设计能力的训练。
并且管理信息系统在各行各业发挥着越来越重要的作用。
但在职工信息的管理中,避免了手工操作而带来的一些不必要的问题。
通过编写一个职工管理系统的C语言程序,培养学生在本课程围,初步掌握解决实际应用问题时所应具有的查阅资料、综合运用所学知识、掌握C语言程序基本技巧的能力,为软件编程设计及今后从事专业工作打下基础。
1.2题目要求
设计一个职工信息管理系统。
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、等(职工号不重复)。
使之能提供以下功能:
1、系统以菜单式工作
2、职工信息录入功能(职工信息用文件保存)--输入
3、职工信息浏览功能--输出
4、职工信息查询功能--算法
查询式
(1)按学历查询
(2)按职工号查询
5、职工信息删除功能
6、职工信息修改功能
1.3设计要求
根据题目要求,应当把职工信息用结构体形式输入,然后把职工信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现职工信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
信息以文件形式保存。
第二章概要设计
2.1系统功能模块
职工信息管理系统设计要求包括
2.1.1菜单函数:
设计一个菜单界面,调用各个功能函数,操作界面整齐美观便捷
2.1.2输入记录:
将每一个职工的职工号、姓名性别、年龄、工资、地址、联系式的数据作为一个记录,存入数据文件。
选择是回到菜单列表还是退出系统。
2.1.3浏览记录:
将之前录入的职工信息全部显示出来,再次选择回到菜单还是退出系统。
2.1.4查询记录:
查询符合用户提供的条件的职工信息。
可选择用两种式分别查询,按职工号查询,输入一个职工号,输出为此职工的全部信息。
按学历查询,输入一个学历后。
输出符合此学历的职工的所有信息。
选择回到菜单还是退出系统。
2.1.5删除记录:
先显示出之前录入的全部职工信息,输入打算删除的职工姓名,系统显示出此职工的信息,再次选择是否删除,同意则继续删除,不同意则返回菜单。
如果输入的姓名不是之前录入的职工姓名,系统会提示查无此人。
2.1.6修改记录:
先显示出所有之前录入的职工信息,输入打算修改的职工姓名,系统输出此职工的全部原始信息,选择是否修改此人信息,若修改则将此人信息再次输入,替换掉之前的信息,选择是否继续修改此人。
2.1.7退出系统:
选择退出职工管理系统。
2.2模块流程图
2.2.1总体流程图
图2-1总体流程图
2.2.2功能结构简图
职工
信息
管理
系统
信息
录入
信息
浏览
信息
查询
信息
删除
信息
修改
分条输入职工的职工号、姓名、性别、年龄、学历、工资、住址、电话等信息
按职工号查询,输入一个职工号,显示出此职工的全部信息
输入要修改的职工的姓名,显示原始信息,确认是否修改
输入想要删除的职工的姓名,显示出此职工的原始信息确定是否删除
按学历查询,输入一个学历,显示出所有此学历的职工的所有信息
显
示录入的所有职工的所有信息
图2-2功能结构简图
第三章详细设计
3.1程序中使用的数据结构
为了便使用结构,此系统结构均为全局类型定义
structemployee//定义一个职工信息结构体
{
intnum;//定义职工号为整型
charname[20];//定义姓名为字符数组
charsex;//定义性别为字符型
intage;//定义年龄为整型
charxueli[30];//定义学历为字符数组
intwage;//定义工资为整型
charaddr[30];//定义地址为字符数组
chartel[20];//定义为字符数组
}
em[100];//定义一个结构体
3.2函数列表
3.2.1总体定义函数
为实现本系统的各项功能,需定义函数如下:
voidmenu();//菜单选项
voidinput();//录入
voidsave(int);//保存
voiddisplay();//浏览
voiddel();//删除
voidsearch();//查找
voidsearch_num();//按姓名查询
voidsearch_xueli();//按学历查询
voidmodify();//修改
3.2.2各函数的实现
(1)菜单函数
运用输出设计一个菜单界面,界面美观整齐
voidmenu()//菜单函数
{
printf("************************欢迎您进入职工信息管理系统**********************\n");
printf("**1.录入职工信息");
printf("2.浏览职工信息**\n");
printf("** 3.查询职工信息");
printf("4.删除职工信息**\n");
printf("**5.修改职工信息");
printf("6.正常退出系统**\n");
printf("************************************************************************\n");
(2)录入函数
用for循环语句限制出每次录入的职工人数,便快捷,省去了每录入一个人就要选择一下的步骤。
运用输出显示出录入的界面,再通过输入的数据建立职工信息。
(详情见主要程序代码)
(3)保存函数
将输入的信息能以文件形式保存,将存中职工的信息输出到磁盘文件中
voidsave(intm)//保存文件函数
{inti;
FILE*fp;
if((fp=fopen("employee_list","wb"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
for(i=0;iif(fwrite(&em[i],sizeof(structemployee),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);}
intload()//导入函数
{FILE*fp;
inti=0;
if((fp=fopen("employee_list","rb"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
else
{do
{fread(&em[i],sizeof(structemployee),1,fp);i++;}
while(feof(fp)==0);}
fclose(fp);//(文件关闭函数)关闭一个流
return(i-1);
}
(4)浏览函数
将所有的职工信息输出,用再到for语句,运用输出使输出信息的界面整齐美观
voiddisplay()//浏览函数
{inti;
intm=load();
printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t\n");
for(i=0;iprintf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%s\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);}
(5)查询函数
查询有两种式,一种是按职工号查询,一种是按学历查询,选择查询的式可以运用switch(grade){case1:
…;case2:
…;case…;}语句可多分枝选择按1:
职工号查询2:
学历查询3:
返回主菜单,在switch语句前添加一个if…else…语句用来当纠错提醒,如果输入的选择数字不是1、2、3,则系统提示“输入有误,请重新输入”运用输出将查询到职工信息输出,界面美观整齐。
(具体代码太长,见主要程序代码)
(6)删除函数
先调用浏览函数显示出所有职工的所有信息,输入想要删除的职工的姓名,用if(strcmps比较字符串)…else…语句和for循环语句在所有录入的职工信息中找到符合的姓名并输出此人的所有信息,运用if条件语句选择是否确定删除(详情见主要程序代码)
(7)修改函数
定义变量数据类型与全局变量相同,先调用浏览函数显示所有的职工信息,输入想修改的职工姓名,if(strcmp())语句在所有职工找到符合的姓名,显示出此职工的所有信息,if语句选择是否确定修改,是则重新输入职工信息,运用字符串复制,赋值等语句达到修改的目的,输入完毕后调用浏览函数将所有职工信息显示出来,用一个switch语句选择是否继续修改,继续则调用修改函数。
(详情见主要程序代码)
第四章设计结果及分析
(设计结果运行)
4.1菜单界面
4-1系统主界面
4.2录入界面
4-2-1录入界面
4-2-2录入完毕界面
4.3浏览界面
4-3浏览界面
4.4查询界面
4-4-1按职工号查询界面
4-4-2按学历查询界面
4.5删除界面
4-5-1删除前先浏览界面
4-5-2确认删除界面
4-5-3删除后浏览界面
4.6修改界面
4-6-1修改选择界面
4-6-2修改前先浏览界面
4-6-3修改信息输入界面
总结与体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,两的软件编程课程设计结束了。
而在运用C语言编程的过程中,真是既有快乐又有烦恼,
回想这两的课程设计,至今我仍感慨良多。
最初当听说我们会有一个特别难的课程设计必须要做的时候,我感到很担忧,我一直觉得C语言是一门非常难学的课程,我对自己完成一个系统的软件设计并没有太大信心,但又必须做,硬着头皮拿到题目到完成整个编程,真的让我有巨大的感慨,两个星期除过我们正常上课其实也没有太多时间,每天都感到时间紧,我们要查找各种资料和请教有做过课程设计的学姐,或者请教指导老师。
一边后悔自己当初没有把C语言学的顺手拈来,一边在电脑前一遍遍的不厌其烦的敲代码,睡觉的时候满脑袋都还是各种语法、程序什么的,两个末都坐在电脑前,一坐就是一整天,刚开始真的是头晕眼花,后来随着我不断的学习,一个越来越完整的程序慢慢呈现,自己也更有动力,更有信心,同时感受到学习到好多知识的快乐。
在整整两个星期的日子里,从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。
在设计的过程中遇到的问题,这毕竟是我第一次做课程设计,难免会遇到各种各样的问题,同时在设计的过程中发现自己的不足之处,对以前所学的知识理解得不够深刻,掌握得不够牢固,比如说结构体、链表……通过这次课程设计之后,一定把以前所学过的知识从新温故。
这次课设终于顺利完成了,做完这个课程设计,我的自信提高了,我也会写程序了;尽管对于有些人这种程序会很简单,但对于我来说已经不容易了。
这次体验为以后的学习计算机的我增强了信心。
很感这次的课程设计,它使我更加地体会到多看专业书的重要性,以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机,只有掌握了一定量的计算机专业知识才能得心应手地解决诸多问题;另外,在做任事倒要有耐心,不要一遇到困难就放弃,每一次敲代码都是会有收获的,每一个程序猿都一定是坚强的执着的。
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感!
参考文献:
[1]谭浩强编著《C程序设计(第四版)》北京:
清华大学出版社
[2]谭浩强编著《C程序设计题解与上机指导(第三版)》北京:
清华大学出版社
[3]甘玲等《解析C程序设计》北京:
清华大学出版社
附录:
主要程序代码
#include
#include
#include
#defineN100
structemployee//结构体定义
{
intnum;//定义职工号为整型
charname[20];//字符数组定义姓名为
charsex;//定义性别为字符型
intage;//定义年龄为整型
charxueli[30];//定义学历为字符数组
intwage;//定义工资为整型
charaddr[30];//定义地址为字符数组
chartel[20];//定义为字符数组
}
em[100];//定义一个结构体
voidmenu();//声明函数菜单函数
voidin();//声明信息录入函数
voidsave(int);//声明信息保存函数
voiddisplay();//声明信息浏览函数
voiddel();//声明信息删除函数
voidsearch();//声明信息查询函数
voidsearch_num();//声明按职工号查询函数
voidsearch_xueli();//声明按学历查询函数
voidmodify();//声明修改函数
voidmain()
{
menu();//调用菜单函数
intn,f;chara;
do
{
printf("请选择你需要操作的步骤(1--6):
\n");
scanf("%d",&n);
if(n>=1&&n<=7)
{f=1;break;}
else
{f=0;printf("您输入有误,请重新选择!
");}//if...else条件运算
}
while(f==0);//do语句while(表达式):
实现循环
while(f==1)
{
switch(n)
{
case1:
printf("********************输入职工信息********************\n");printf("\n");in();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");modify();break;
case6:
exit(0);break;
default:
break;
}
getchar();//从stdio流中读取字符
printf("\n");
printf("是否继续进行(yorn):
\n");
scanf("%c",&a);
if(a=='y')
{f=1;
//system("cls");//清屏
menu();//调用菜单函数
printf("请再次选择你需要操作的步骤(1--6):
\n");
scanf("%d",&n);
printf("\n");
}
elseexit(0);//exit(0)表示正常退出
}
}
voidmenu()//菜单函数
{
printf("************************欢迎您进入职工信息管理系统**********************\n");
printf("**1.录入职工信息");
printf("2.浏览职工信息**\n");
printf("** 3.查询职工信息");
printf("4.删除职工信息**\n");
printf("**5.修改职工信息");
printf("6.正常退出系统**\n");
printf("************************************************************************\n");
printf("\n");
printf("\n");
}
voidin()//录入函数/
{
inti,m;
printf("请输入需要创建信息的职工人数(1--100):
\n");
scanf("%d",&m);
for(i=0;ifor(循环变量赋初值;循环条件;循环变量增值)
{
printf("请输入职工号***********:
");scanf("%d",&em[i].num);
printf("请输入姓名*************:
");scanf("%s",em[i].name);
getchar();printf("请输入性别(a-女/b-男)**:
");scanf("%c",&em[i].sex);
printf("请输入年龄*************:
");scanf("%d",&em[i].age);
printf("请输入学历*************:
");scanf("%s",em[i].xueli);
printf("请输入工资*************:
");scanf("%d",&em[i].wage);
printf("请输入住址*************:
");scanf("%s",em[i].addr);
printf("请输入*************:
");scanf("%s",em[i].tel);
printf("\n");
}
printf("\n创建完毕!
\n");
save(m);
}
voidsave(intm)//保存文件函数
{
inti;
FILE*fp;
if((fp=fopen("employee_list","wb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
for(i=0;iif(fwrite(&em[i],sizeof(structemployee),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
}
intload()//导入函数
{
FILE*fp;
inti=0;
if((fp=fopen("employee_list","rb"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
else
{
do
{
fread(&em[i],sizeof(structemployee),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);//(文件关闭函数)关闭一个流
return(i-1);
}
voiddisplay()//浏览函数
{
inti;
intm=load();
printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t\n");
for(i=0;iprintf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%s\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
}
voiddel()//删除函数
{
intm=load();
inti,j,n,flag;
charname[20];
printf("\n原来的职工信息:
\n");
display();
printf("\n");
printf("请输入要删除的职工的姓名:
\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i{
if(strcmp(em[i].name,name)==0)//s