C语言课程设计职工信息管理系统.doc

上传人:仙人指路1688 文档编号:2384787 上传时间:2023-02-17 格式:DOC 页数:23 大小:254.50KB
返回 下载 相关 举报
C语言课程设计职工信息管理系统.doc_第1页
第1页 / 共23页
C语言课程设计职工信息管理系统.doc_第2页
第2页 / 共23页
C语言课程设计职工信息管理系统.doc_第3页
第3页 / 共23页
C语言课程设计职工信息管理系统.doc_第4页
第4页 / 共23页
C语言课程设计职工信息管理系统.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《C语言课程设计职工信息管理系统.doc》由会员分享,可在线阅读,更多相关《C语言课程设计职工信息管理系统.doc(23页珍藏版)》请在三一办公上搜索。

1、摘 要 本报告介绍了一个运用C语言开发的用于职工信息管理系统,通过该系统可以对职工的姓名、工号、学历、联系方式等信息进行系统管理。该系统是在Visual C+集成环境中进行编译、连接和运行的。该系统使用了数组程序设计技术,以及输入输出函数、选择结构、循环结构、指针、结构体数据和文件输入输出的知识完成。管理人员只要通过屏幕菜单,就可以实现对系统数据的插入、查询、修改、删除、浏览等工作,该系统的使用,给职工的管理带来了极大的方便,大大的提高了管理人员的工作效率和工作质量。关键词:C语言,职工,管理系统目 录1 功能设计12 总体设计方案22.1设计技术说明22.2 函数关系示意图22.3 结构体设

2、计及说明22.4 总体设计方案及流程图33 详细设计43.1 创建函数43.2插入函数43.3查询函数53.4 修改函数53.5删除函数53.6浏览函数53.7文件保存63.8总程序代码及注释64调试及测试134.1当前代码运行情况134.2其他问题145 系统的操作说明16致谢17附录18参考文献22职工信息管理系统1 功能设计 对于任意大小公司来说,职工管理的好坏会直接关系到公司的发展和管理,它是公司经营管理中非常重要的环节。职工的增加、减少、管理是一个紧密联系的有机整体。因此,公司必须要有一个方便管理人员管理职工资料的系统,这个系统又能方便管理人员能及时掌握职工的有效信息。 本报告设计的

3、职工信息管理系统主要是管理职工资料的,方便修改、查询、删除。随着公司的经营发展,公司的管理系统很重要,特别是职工的管理,职工的公司最基层的人物,也是为公司提供劳动力的重要部分。本设计就是为公司职工设计一个基于C语言、在Visual C+环境中编译、连接和运行的职工信息管理系统。 该系统应该具有以下功能:1)能够建立一个文件夹来储存职工的信息;2)能够录入职工的信息;3) 能够查询某一职工的信息;4)能够修改某一职工的信息;5)能够删除某一职工的信息;6)能够显示所有职工的信息;7)能够推出系统。 系统的功能结构图如下图所示:职工信息管理系统新建文件夹职工信息查询职工信息修改职工信息删除职工信息

4、浏览职工信息录入2 总体设计方案2.1设计技术说明该设计是一个小型的管理系统,该系统中的主要数据包括客户姓名、性别、入职日期、学历和联系电话等等,这些数据的类型尽管不同,但他们之间是有内在联系的,都属于记录信息的内容,所以在本程序中将他们组合成一个组合数据,也就是结构体。每个职工信息就是数据表中的一项记录,所有的职工信息构成一张总表,在程序设计时使用结构体数组存储这些数据,每当输入信息完成,可以将这些数据保存在磁盘文件中。2.2 函数关系示意图为了便于程序设计调试和小组分工合作,该系统程序采用模块化的设计方法,将系统的每个功能用一个相对独立的函数来完成,该系统程序包含一个主函数,包含一个插入函

5、数(Insert)、一个查询函数(Search)、一个修改函数(Update)、一个删除函数(Delete)、一个浏览函数(Browse)、保存函数(Save)和一个退出函数(Exit)。 其示意图如图2-1所示:MainInsertSearchUpdateDeleteBrowseeee额eSave操作员管理图2-1 函数结构图2.3 结构体设计及说明根据系统的要求,声明以下的结构体类型:#include /声明字符串#include /声明函数类型struct workers /声明结构体类型的名称为 struct workers char name10; /用字符串存放职工的姓名数据 ch

6、ar sex8; /用字符串存放职工的性别数据 char time20; /用字符串存放职工的入职时间数据char phone20; /用字符串存放职工的联系号码数据char education10; /用字符串存放职工的学历数据int number; /用字符串存放职工的工号数据worker; /用结构体数组存放职工的所有信息,不限制人数2.4 总体设计方案及流程图系统总体来讲采用职工信息管理,操作员根据职工信息管理系统中的提示项选择其中一项进行操作,即调用与菜单项对应的子函数,操作员根据提示进行操作,操作完成后,系统重新显示菜单,供用户选择,直到操作员选择退出项,程序结束。其总的流程图如图

7、2-2所示:开始声明函数用户选择菜单N=0&=6Y =0 =1 =2 =3 =4 =5 =6退出调用浏览函数调用删除函数调用修改函数调用查询函数调用新建函数调用录入函数结束图2-2 总体设计流程图3 详细设计 职工信息系统由一个主函数,一个创建函数(Creat)、一个插入函数(Insert)、一个查询函数(Search)、一个修改函数(Update)、一个删除函数(Delete)、一个浏览函数(Browse)和一个退出函数(Exit)组成,下面对这些函数的详细设计做一说明。主函数的结构体变量:struct workers /声明结构体类型 struct workers char name10;

8、 / 全局变量:姓名 char sex8; / 全局变量:性别 char time20; / 全局变量:入职时间char phone20; / 全局变量:联系号码char education10; / 全局变量:学历int number; / 全局变量:工号 从主函数的代码中看出,姓名,性别,职工入职日期,学历和职工联系电话都属于全局变量。设置这些变量,使整个职工信息系统的数据更具体和清晰。3.1 创建函数 1)Creat()2)功能创建函数便于创建保存数据文件的具体路径。创建文档文件workers,使fp指向此文件,程序中的w+表示创建一个具有读写功能的文档文件。通过创建函数,可以确定该文件

9、的具体路径为D磁盘。3)相关变量 通过程序,可以看出相关的变量为fp,fp是指向workers文档文件的变量。 fp 将fopen函数的返回值赋值给针变量fp 3.2插入函数 1)Insert()2)功能 录入数据函数具有巨大的功能,是为录入具体职工信息服务的。程序中我们依序录入职工姓名,职工性别,职工入职日期,学历,联系电话的有关职工信息。3)相关变量 fp 将fopen函数的返回值赋值给指针变量fp 3) 流程图(见附录的图1)3.3查询函数 1)Search()2)功能 Seach查询函数在职工信息处理系统中起着查询职工信息的作用。通过调用查询函数,我们可以根据要查询的职工工号来查询出职

10、工姓名,性别,入职日期,学历和联系电话。3)相关变量 fp 将fopen函数返回值赋值给指针变量fpflag 设定标记变量flag来判断是否存在此职工信息3)流程图(见附录的图2)3.4 修改函数 1)Update()2)功能首先输入你曾经录入的数据,接着可以按要求去修改之前所录入的数据,例如姓名、性别、入职日期、学历和联系电话,另外,如果之前没有录入就查询,则会出现提示语“没有查询到将要修改的职工工号!” 3)相关变量flag 设定标记变量flag来判断是否存在此职工信息offset 用来存放修改职工资料的一长整型变量fread 调用数据工具变量fread3) 流程图(见附录的图3)3.5删

11、除函数 1)Delete()2)功能起到删除离职职工的信息的功能,并且能将文件指针返回到存储此职工信息的位置。当下次查询时,没有此职工的信息内容。 3)相关变量flag 设定标记变量flag来判断是否有查询到可以删除的职工号 fp 将fopen函数返回值赋值给指针变量fpfread 用数据工具变量fread3) 流程图(见附录的图4)3.6浏览函数 1)Browse()2)功能 对之前所录入的一系列数据起到比较直观的浏览功能。3)相关变量int i=0; 定义整型变量i4)流程图(见附录的图5)3.7文件保存1)数据的输入和输出fp=fopen(D:workers.txt,r); /将fope

12、n函数的返回值赋值给指针变量fpwhile(!feof(fp)fread(&worker,sizeof(struct workers),1,fp); /读取文件if(worker.number=number)printf(n已经有相同的职工工号,请选择其他工号:);return; /当新输入的工号和已保存的工号是重复时提示并返回 fclose(fp); /关闭文件D:workers.txtfp=fopen(D:workers.txt,r+); /打开文件 while(!feof(fp) /从头文件读入字符直到文件结束 long offset; offset=ftell(fp); /将文件指针所

13、在的位置赋给一长整型变量 fread(&worker,sizeof(struct workers),1,fp);2)打开方式void Save( ) /定义Save函数 if(fp=fopen(D:workers.txt,a)=NULL) /打开文件workers,使fp指向此文件,判断此文件是否为空文件 printf(cannot open filen); /若workers文件为空文件,则输出“不能打开文件”的提示信息 return; /返回if语句,继续进行判断文件是否为空文件 if(fwrite(&worker,sizeof(struct workers),1,fp)!=1) /向wo

14、rkers文件中写数据, 用if语句进行判断写入数据的真假 printf(file write errorn); /若写入的数据为假的,则输出“文件写入错 误”的提示信息return ; /返回if语句,继续进行判断写入的数据是否为假的 fclose(fp); /关闭文件3.8总程序代码及注释#include#include /声明字符串#include /声明函数类型struct workers /声明结构体类型 struct workers char name10; /定义职工的姓名 char sex8; /定义职工的性别 char time20; /定义职工的入职时间char phone

15、20; /定义职工的联系号码char education10; /定义职工的学历int number; /定义职工的工号worker;void Creat();void Insert();void Search();void Update();void Delete();void Browse();void Save(); /声明函数FILE *fp; /定义文件指针int number; /定义全局变量int main() int i; printf(n 您好,这是第六组C语言课程设计作品nn 谢谢欣赏!nn); printf(数据保存在D盘对应的记事本中,若文件不存在请先进行创建,请知悉!

16、n); do printf(n* 职工信息管理系统 *谢谢使用!*n); scanf(%d,&i); switch(i) case 0:Creat(); /调用创建运算 break; case 1:Insert(); /调用插入运算 break; case 2:Search(); /调用查询运算 break;case 3:Update(); /调用修改运算 break;case 4:Delete(); /调用删除运算 break;case 5:Browse(); /调用浏览运算 break;case 6:break; /表示退出的提示default:printf(职工管理信息系统操作错误!请重

17、新选择你需要操作的步骤!);break; /输入非0到6的提示提示输入错误 while(i!=6); printf(n谢谢使用此系统!n); /当输入为6时退出系统 return 0; /主函数执行完毕,返回函数值0 void Creat() /定义Creat函数fp=fopen(D:workers.txt,w+); /创建保存数据文件的具体路径,w+表示 建立一个具有读写功能的文本文件 fclose(fp); /关闭文件void Insert() /定义录入数据函数 printf(请输入职工工号:); /按要求输入职工工号scanf(%d,&number); /输入工号,且其输入类型为十进制

18、整数fp=fopen(D:workers.txt,r); /将fopen函数的返回值赋值给指针变量fpwhile(!feof(fp)fread(&worker,sizeof(struct workers),1,fp); /读取文件if(worker.number=number)printf(n已经有相同的职工工号,请选择其他工号:);return; /当新输入的工号和已保存的工号是重复时提示并 返回 fclose(fp); /关闭文件D:workers.txtworker.number=number; printf(请输入姓名:); scanf(%s,worker.name); printf(

19、请输入性别:); scanf(%s,worker.sex);printf(请输入入职日期:); scanf(%s,worker.time);printf(请输入学历:); scanf(%s,worker.education);printf(请输入联系电话:);scanf(%s,worker.phone); /根据提示输入职工信息Save(); /保存数据void Search() /定义Search函数int flag=0; /设定标记量的初值printf(请输入要查询的职工工号:); scanf(%d,&number); /提示输入要查询职工的 工号fp=fopen(D:workers.tx

20、t,r); /打开磁盘文件 while(!feof(fp)fread(&worker,sizeof(struct workers),1,fp); /读取数据if(worker.number=number) /寻找此工号信息的数据存储 位置 printf(姓名:%sn,worker.name);printf(性别:%sn,worker.sex); printf(入职日期:%sn,worker.time); printf(学历:%sn,worker.education);printf(联系电话:%sn,worker.phone); /若数据存在则输出此工号 职工信息flag=1; /标记量变为1b

21、reak;fclose(fp);if(flag=0) printf(n不存在此职工信息!n); /标记量不变则有提示不存在此职工信息!void Update() /定义Update函数int flag=0; printf(请输入要修改的职工工号:); scanf(%d,&number); fp=fopen(D:workers.txt,r+); /打开文件 while(!feof(fp) /从头文件读入字符直到文件结束 long offset; offset=ftell(fp); /将文件指针所在的位置赋给一长整型 变量 fread(&worker,sizeof(struct workers),

22、1,fp); if(worker.number=number) /若输入的职工号与之前录入的相同则 可进行修改 printf(请输入姓名:); scanf(%s,worker.name); printf(请输入性别:); scanf(%s,worker.sex); printf(请输入入职日期:); scanf(%s,worker.time); printf(请输入学历:); scanf(%s,worker.education); printf(请输入联系电话:); scanf(%s,worker.phone); /输入修改后的职工信息 fseek(fp,offset,SEEK_SET); /

23、将文件指针返回到存储此职工 信息的位置 fwrite(&worker,sizeof(struct workers),1,fp); /保存修改后职工资料 flag=1; break; fclose(fp); if(flag=0) printf(n没有查询到将要修改的职工工号!n); void Delete() /定义Delete函数int flag=0; printf(请输入要删除的职工工号:); scanf(%d,&number); fp=fopen(D:workers.txt,r+); while(!feof(fp) long offset; offset=ftell(fp); /将文件指针

24、所在的位置赋给一长整型变量 fread(&worker,sizeof(struct workers),1,fp); if(worker.number=number) /如果要删除的工号与录入保存的相符就执行 下面的语句 worker.number=0; strcpy(worker.name,); /将空格复制到原来的职工资料相对 应的位置中,即相当于删除 strcpy(worker.sex,); strcpy(worker.time,); strcpy(worker.education,); strcpy(worker.phone,); fseek(fp,offset,SEEK_SET); /

25、将文件指针返回到存储此职工信息的位置 fwrite(&worker,sizeof(struct workers),1,fp) ; /保存删除后的职工资料 flag=1; break; fclose(fp); if(flag=0) printf(n没有查询到可以删除的职工工号!n);void Browse() /定义Browse函数int i=0; /定义i变量fp=fopen(D:workers.txt,r); while(!feof(fp) fread(&worker,sizeof(struct workers),1,fp); /从文件中读数据 if(worker.number!=0) i+

26、; /用变量i统计职工人数 fclose(fp); fp=fopen(D:workers.txt,r); printf( 工号 姓 名 性别 入职日期 学历 联系电话 n); /输出结构体类型的文字,使程序排版更美观 while(!feof(fp) fread(&worker,sizeof(struct workers),1,fp); /从文件中读数据 if(worker.number&(i!=1) printf( %4d %6s %4s %8s %4s %8s n, worker.number,worker.name,worker.sex,worker.time,worker.educati

27、on,worker.phone); i-; /按顺序输出职工信息的数据 printf(n); fclose(fp); void Save() /定义Save函数 if(fp=fopen(D:workers.txt,a)=NULL) /打开文件workers,使fp指向此 文件,判断此文件是否为空文件 printf(cannot open filen); /若workers文件为空文件,则输出“不能打开 文件”的提示信息 return; /返回if语句,继续进行判断文件是否为空文件 if(fwrite(&worker,sizeof(struct workers),1,fp)!=1) /向work

28、ers文件中写数据, 用if语句进行判断写入数 据的真假 printf(file write errorn); /若写入的数据为假的,则输出“文件写入错误” 的提示信息 return ; /返回if语句,继续进行判断写入的数据是否为假的 fclose(fp); /关闭文件4调试及测试4.1当前代码运行情况1)执行无误之后出现的界面如下;2)输入职工的资料;3)浏览职工的资料;4)修改02号职工资料;5)浏览修改后的职工资料;6)删除职工资料后再浏览资料;7)退出;8)自动创建的文件夹及删除某一职工资料后保存的资料4.2其他问题在文件保存的过程中遇到的问题是文件内容不能顺利的保存在它对应的磁盘中

29、:void load( ) FILE*fp; int i; if(fp=fopen(workers.dat,wb)=NULL) printf(cannot open filen); return; for(i=0;iMaxSize;i+) if(fwrite(&workersi,sizeof(struct workers),1,fp)!=1); printf(file write errorn);return ; fclose(fp);经过我们多次的修改,最终我们完成了对文件的保存:void Save( ) /定义Save函数 if(fp=fopen(D:workers.txt,a)=NULL

30、) /打开文件workers,使fp指向此文件,判断此文件是否为空文件 printf(cannot open filen); /若workers文件为空文件,则输出“不能打开文件”的提示信息 return; /返回if语句,继续进行判断文件是否为空文件 if(fwrite(&worker,sizeof(struct workers),1,fp)!=1) /向workers文件中写数据,用if语句进行判断写入数据的真假 printf(file write errorn); /若写入的数据为假的,则输出“文件写入错误”的提示信息return ; /返回if语句,继续进行判断写入的数据是否为假的 f

31、close(fp); /关闭文件文件的保存程序的编写是整个程序中最难的,经过我们小组的努力和老师的指导,我们最终完成了编写。在编写程序过程中,我们还遇到了路径问题,以下我们对路径问题进行了具体分析。目前路径:为了让老师更直观地看清晰地到所保存的数据,我们确定文档的路径在D盘的workers文本中,代码请见3.7总程序代码及注释注:fp=fopen(D:workers.txt,w+); fp=fopen(D:workers.txt,r); fp=fopen(D:workers.txt,r); fp=fopen(D:workers.txt,r+); fp=fopen(D:workers.txt,r+); fp=fopen(D:workers.txt,r); if(fp=fopen(D:workers.txt,a)=NULL)以前路径:代码和现代码差不多,只是把上面的凡是有D:workers.txt部分修改为workers.txt,即可保存在所创建的磁盘中。其弊端是难以分清哪个是保存数据的文本。5 系统的操作说明

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号