C职工信息管理系统课程设计书1.docx
- 文档编号:10283637
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:15
- 大小:72.84KB
C职工信息管理系统课程设计书1.docx
《C职工信息管理系统课程设计书1.docx》由会员分享,可在线阅读,更多相关《C职工信息管理系统课程设计书1.docx(15页珍藏版)》请在冰点文库上搜索。
C职工信息管理系统课程设计书1
数学与计算机学院
课程设计说明书
课程名称:
计算机科学与技术程序设计语言-课程设计
课程代码:
题目:
职工信息管理系统
年级/专业/班:
学生姓名:
学 号:
开始时间:
年月日
完成时间:
年月日
课程设计成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书撰写质量(45)
总分(100)
指导教师签名:
年月日
目录
1引言1
1.1问题的提出1
1.2国内外研究的现状1
1.3任务与分析1
2程序的主要功能2
2.1添加功能2
2.2删除功能2
2.3按年龄排序全部职工信息2
2.4显示功能2
2.5按姓名查找功能2
2.6按学历查找功能2
3程序运行平台3
4总体设计4
5模块分析5
5.1添加模块5
5.2显示模块5
5.3按姓名查找模块5
5.4按学历查找模块5
5.5删除模块5
5.6按年龄排序全部职工信息5
6系统测试6
7结论7
致谢8
参考文献9
摘要
随着计算机的普及,小型系统的编写有了很快的发展。
本系统分析了任务书中的要求,利用C语言编程实现了职工信息管理系统,该系统具有人员信息的添加,删除,查找,修改和显示功能。
关键词:
职工信息管理系统;计算机;添加;删除;查找;修改。
1引言
1.1问题的提出
在现代化的企业管理中,人事管理系统有着十分重要的作用,然而,用大型软件系统来于小型的企事业单位,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种单位自然有十分重要作用。
小型企业出与这种目的制作了这个人事管理系统。
1.2国内外研究的现状
现今国内外大多注意在大型人事管理系统的开发,在小型人事管理系统却少有开发,但并非所有的公司都实用与大型系统,所以小型系统有开发的必要。
1.3任务与分析
本课题主要的目的是编程实现职工信息管理系统。
系统以菜单方式工作:
1.职工信息(包括姓名、编号、性别、年龄、学历、职称、工种等)浏览功能--输出
2.职工信息删除、修改功能(任选项);
3.职工信息录入功能(职工信息用文件保存)--输入;
4.查询和排序功能:
(至少一种查询方式):
按姓名查询和按学历查询等。
(要求职工信息存入文件)
2程序的主要功能
2.1添加功能
添加一个职工的基本信息,包括姓名、编号、性别、年龄、学历、职称、工种。
2.2删除功能
能够对一个职工的信息进行删除。
(按姓名进行删除)
2.3排序功能
能够对于全部职员的信息进行年龄排序。
2.4显示功能
显示所有职工的信息包括姓名、编号、性别、年龄、学历、职称、工种。
2.5按姓名查询功能
根据你键入的职工姓名,显示其详细信息!
2.6按学历查询功能
根据你键入的职工学历,显示其详细信息!
3程序运行平台
VC++6.0。
具体操作如下:
新建C语言源程序工程,添加相应的源文件至此源程序,再编译发现是否有错误,有则改之,无则链接成可执行文件,执行次可执行文件。
4总体设计
图4.1系统总体框架图
5模块分析
5.1添加模块
系统将提示用户输入新添加的职员的信息,插入在文件中。
voidinput()/*信息录入函数*/
{
FILE*fp;/*定义文件*/
workerxs;
if((fp=fopen("worker.txt","ab"))==NULL)
{printf("can'topenfile!
\n");exit(0);}/*打开文件,如果不能打开,就关闭所有文件*/
printf("\n录入格式姓名编号 性别 年龄学历职称工种。
当输入姓名为end结束录入\n");
while
(1)
{scanf("%s",xs.name);
if(strcmp(xs.name,"end")==0)break;/*如果输入的是end,则停止输入*/
scanf("%d%s%d%s%s%s",&xs.bianhao,xs.sex,&xs.nianling,xs.xueli,xs.zhicheng,xs.gongzhong);
fwrite(&xs,sizeof(worker),1,fp);/*将信息写入文件*/
}
fclose(fp);/*关闭文件*/
}
5.2显示模块
显示模块将输出所有职员的主要资料。
voidprint()/*职工信息浏览函数*/
{
FILE*fp;
workers;/*定义结构体变量*/
system("cls");/*清屏*/
if((fp=fopen("worker.txt","rb"))==NULL)
{printf("can'topenfile!
\n");exit(0);}
printf("\n%10s%5s%2s%2s%5s%5s%5s\n","姓名","编号","性别","年龄","学历","职称","工种");
while(!
feof(fp))
{
fread(&s,sizeof(worker),1,fp);/*从文件中读取职工信息*/
if(feof(fp))break;/*判断是否文件尾*/
printf("%10s%5d%5s%5d%5s%5s%5s\n",s.name,s.bianhao,s.sex,s.nianling,s.xueli,s.zhicheng,s.gongzhong);
}
fclose(fp);/*关闭文件*/
getch();/*停止运行,便于观察结果*/
}
5.3按学历查找模块
首先由用户输入要修改的职员的学历,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的职员资料。
voidseekxueli()/*学历查找函数*/
{
workerxs[N];/*定义一个结构体一维数组*/
FILE*fp;
charxueli[10];
inti,k;
system("cls");
printf("\n请输入要查找的学历:
");
scanf("%s",xueli);
i=0;
if((fp=fopen("worker.txt","r"))==NULL)/*为输入打开一个已存在的文本文件*/
{printf("can'topenfile!
\n");exit(0);}
while(!
feof(fp))
{fread(&xs[i],sizeof(worker),1,fp);/*从文件中读取职工信息*/
if(feof(fp))break;/*判断是否文件尾*/
if(strcmp(xs[i].xueli,xueli)==0)/*如果数组中有和输入相同的学历,则找到它在数组中的位置,并输出*/
{k=i;
printf("\n%10s%5s%2s%2s%5s%5s%5s\n","姓名","编号","性别","年龄","学历","职称","工种");
printf("%10s%5d%5s%5d%5s%5s%5s\n",xs[k].name,xs[k].bianhao,xs[k].sex,xs[k].nianling,xs[k].xueli,xs[k].zhicheng,xs[k].gongzhong);
}
}
getch();
}
5.4按姓名查找模块
首先由用户输入要查找的职员姓名,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的职员资料。
voidseekname()/*姓名查找函数*/
{workerxs[N];/*定义一个结构体一维数组*/
FILE*fp;
charname[10];
inti,k;
system("cls");
printf("\n请输入要查找的职工姓名:
");
scanf("%s",name);
i=0;
if((fp=fopen("worker.txt","r"))==NULL)/*为输入打开一个已存在的文本文件*/
{printf("can'topenfile!
\n");exit(0);}
while(!
feof(fp))
{fread(&xs[i],sizeof(worker),1,fp);/*从文件中读取职工信息*/
if(feof(fp))break;/*判断是否文件尾*/
if(strcmp(xs[i].name,name)==0)k=i;/*如果数组中有和输入相同的名字,则找到它在数组中的位置*/
}
printf("\n%10s%5s%2s%2s%5s%5s%5s\n","姓名","编号","性别","年龄","学历","职称","工种");
printf("%10s%5d%5s%5d%5s%5s%5s\n",xs[k].name,xs[k].bianhao,xs[k].sex,xs[k].nianling,xs[k].xueli,xs[k].zhicheng,xs[k].gongzhong);
getch();/*停止运行,便于观察结果*/
}
5.5删除模块
首先由用户输入要删除的单个职员姓名,然后调用删除函数,删除该名职员的资料,并输出余下的职工信息。
voiddele()/*删除函数*/
{workerxs[N];/*定义一个结构体一维数组*/
FILE*fp;/*定义文件*/
charname[10];
inti,j,k=0;
system("cls");
printf("\n请输入要删除的职工姓名:
");
scanf("%s",name);
i=0;
if((fp=fopen("worker.txt","a+"))==NULL)/*为读写打开一个文本文件*/
{printf("can'topenfile!
\n");exit(0);}
while(!
feof(fp))
{fread(&xs[i],sizeof(worker),1,fp);/*从文件中读取职工信息*/
if(feof(fp))break;
if(strcmp(xs[i].name,name)==0)k=i;/*如果数组中有和输入相同的名字,则准备执行删除*/
i++;
}
fclose(fp);/*关闭文件*/
//以下是删除后职工信息
j=i;
if(k>=0)
{if((fp=fopen("worker.txt","w+"))==NULL)/*为读写建立一个新的文本文件*/
{printf("can'topenfile!
\n");exit(0);}
for(i=0;i {if(i==k)continue;/*执行删除功能*/ fwrite(&xs[i],sizeof(worker),1,fp); } fclose(fp);/*关闭文件*/ } elseprintf("删除失败! ! ! \n"); print();/*嵌套调用职工信息浏览函数*/ } 5.6排序模块 系统将会把所有职员的资料全部按年龄排序并输出。 voidpaixu()/*排序函数*/ {workerxs[N];/*定义一个结构体一维数组*/ workerx; FILE*fp; inti,k,j; system("cls"); i=0; if((fp=fopen("worker.txt","a+"))==NULL)/*为读写打开一个文本文件*/ {printf("can'topenfile! \n");exit(0);} while(! feof(fp)) {fread(&xs[i],sizeof(worker),1,fp);/*从文件中读取职工信息*/ if(feof(fp))break; i++;} fclose(fp); k=i; for(i=0;i<=k-1;i++) for(j=0;j {if(xs[j].nianling>xs[j+1].nianling) {x=xs[j];xs[j]=xs[j+1];xs[j+1]=x;}/*冒泡法排序*/ } printf("\n%10s%5s%2s%2s%5s%5s%5s\n","姓名","编号","性别","年龄","学历","职称","工种"); for(i=0;i<=k-1;i++) printf("%10s%5d%5s%5d%5s%5s%5s\n",xs[i].name,xs[i].bianhao,xs[i].sex,xs[i].nianling,xs[i].xueli,xs[i].zhicheng,xs[i].gongzhong); getch();/*停止运行,便于观察结果*/ } 6系统测试 首先进入VC++6.0,打开工程person.dsw,然后进入源程序,接着选择Build下的Executeperson.exe即可,也可以不打开工程,直接双击person文件夹下的debug或release子文件夹下的person.exe文件即可运行程序。 6.1职工信息录入 6.2职工信息浏览 6.3职工信息删除。 删除前信息 删除人 删除后信息 6.4按姓名查询 当输入为林雨时 6.5按学历查询 6.6按年龄从小到大排序 年龄从16------23-------69,从小到大。 7结论 7.1总结 经过不到一个星期的C语言课程设计,我对C语言有了更进一步的认识和了解,从刚开始不知从何下笔到现在的漂亮运行,我付出大量的时间。 从而也使我明白要学好C语言重在实践,要通过不断的上机操作,并且练习自主设计程序才能更好的掌握它。 以前上课感觉自己学会了很多,但到真正用的时候才发现没学的还有好多好多,虽然课堂上看似学会了,可到实际操作时问题多多。 通过这次课程设计把所学的东西用在了实践上,设计出来一些有用的东西,感觉很有成就感,虽然在设计的过程中遇到了很多困难,比如对结构体strcmp的定义及使用,折半查找法的使用,主函数menu对浏览,录入等子函数的调用等等的,但最终都被我解决了,从而也加强了解决问题的能力。 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,软件开发已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。 因此作为二十一世纪的大学来说掌握程序开发开发技术是十分重要的。 回顾起此次C语言课程设计,至今我仍感慨颇多,的确,从模块单独设计到整体调用,从理论到实践,在整整一个星期的日子里,可以说是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正对所学知识得到应用,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说对结构体strcmp的定义及使用,折半查找法的使用,主函数menu对浏览,录入等子函数的调用等等的……通过这次课程设计之后,对以前所学过的知识做了重新温故 7.2体会 程序设计需要很强的逻辑推理能力,以及过硬的数学函数能力。 一定要细心,无论是需求分析,概要设计,详细设计,编写代码,还是调试分析阶段都需要特别的细心,稍有不慎将会影响整个程序的设计运行。 而且实现同一目的的方法有很多,要灵活应运,选择循环次数少,简洁明了的途径。 通过这次课程设计使我看到了自己在这方面的缺陷,同时也有了很大的进步,学会了很多新知识。 对程序设计产生了比较浓厚的兴趣,在以后的学习当中将会不断地去探索研究,希望能够在程序开发方面取得一定的成就。 致谢 感谢老师一学期的教导,正是由于老师的辛勤教导,我才能完成本次课程设计。 同样感谢曾帮助过我的同学,正是由于他们的无私帮助,我才能解决编程过程中的一些问题,成功编程。 最后感谢学校给了我学习的条件,让我顺利的完成了此次课程设计。 参考文献 [1]谭浩强.程序设计题解与上机指导.北京: 清华大学出版社,2005.10 [2]黄明,梁旭等编著.C语言课程设计.北京: 电子工业出版社,2006.6 [3]陈清华,朱红主编.VisualC++课程设计案例精选与编程指导.南京: 东南大学出版社,2003.06 [4]李春葆.C语言习题与解析A级.北京: 清华大学出版社,2006.10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工 信息管理 系统 课程设计