《2022年2022年工资管理系统 3》由会员分享,可在线阅读,更多相关《2022年2022年工资管理系统 3(9页珍藏版)》请在金锄头文库上搜索。
1、本文由八折书生贡献 doc文档可能在WAP 端浏览体验不佳。建议您优先选择TXT ,或下载源文件到本机查看。职工档案管理系统设计目录一设计要求, 2 二设计作用与目的, 2 三运行环境及工具软件, 2 四系统设计, 3 1需求分析 , 3 2设计分析 , 3 3具体设计 , 6 (1)程序结构, 6 ( 2) 数据描述结构体类型定义说明, 6 (3) 函数功能说明, 6 (4)模块设计, 7 (5)源程序及注释, 10 五系统调试, 24 1调试结果 , 24 2调试结果分析 , 26 3 测试出现的问题及解决方案, 27 六设计心得, 28 七参考文献, 28 1 职工档案管理系统设计职工档
2、案管理信息系统的设计与实现一设计要求设计编写一个职工档案管理软件,该软件与实际应用还有很大的距离,但它涵盖了数据库设计的基本内容。根据实际工作的需要,一般用户要求一个档案管理软件应有以下几个基本功能: 1 )数据输入功能:要求随时往库中追加记录和插入记录。 2 )数据查询功能:一般的查询功能包括按姓名查询、按编号查询等, 且能从任何一个记录计始顺序浏览,随时可停止。 3 )数据修改功能: 要求可随时对库中数据进行修改更新,对无用的数据可随时删除。4)浏览功能: 这个功能可以将数据库中的数据以一定格式显示于屏幕上。 5 )要求以菜单选择的方式完成上述 4 项功能,用户界面美观,便于操作,软件运行
3、稳定、准确。 6 )收集资料,全面分析课题,分解问题,形成总体编程思路。 7 )深入分析各个小问题,编写各部分程序模块。 8 )对于设计中用到的关键函数,要联系问题进行具体介绍。 9 )上机调试,确保程序能正确运行。 10 )完成设计报告,并进行答辩。二设计作用与目的设计作用与目的作用与通过设计, 使学生了解软件工程中的一些系统分析、模块分析、 代码设计的概念,并 掌握软件系统设计的基本思想和方法,能够独立编写小型的数据结构程序,通过对数据结构进行操作、管理,实现职工档案信息的输入、查询、修改、浏览等功能。并掌握函数之间的调用,熟悉软件设计的一般流程,及时巩固所学的理论知识。三运行环境及工具软
4、件程序运行环境: VC+ 工具软件: Microsoft Visual C+ 6.0 2 职工档案管理系统设计四系统设计 1需求分析职工信息包括编号、姓名、性别、年龄、学历、工资、住址、电话等,并且要求编号不重复;录入的职工信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作;职工信息的显式要求有一定的规范格式;对职工信息应能够分别按姓名及按编号两种方式进行, 要求能返回所有符合条件的职工的信息;对职工信息的修改应逐个地进行,一个职工信息的更改不应影响其他的职工记录;所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理, 并要求在此过程中能够
5、尽可能的兼容用户使用过程中的异常情况。 2设计分析设计分析根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 设计方案并写出书面文档总体设计说明,为下一步进行详细设计做准备。该系统可以按功能进行模块划分,其系统结构框图如下:职工档案管理信息系统信息输入信息浏览信息查询信息修改信息添加菜单选择按姓名查询按编号查询图 1 系统结构框图 3 职工档案管理系统设计其
6、中: 信息输入模块完成职工信息的输入功能,输入信息包括编号、姓名、性别、年龄、学历、工资、住址、电话等;信息浏览模块完成已录入职工信息的显示;信息查询模块完成职工信息的查询,查询时对应有按姓名查询和按编号查询两种方式;信息修改模块完成职工信息的修改功能;信息添加模块完成职工信息的添加功能;菜单选择模块完成用户命令的接收, 此模块也是职工信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能。程序流程系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下: 4 职
7、工档案管理系统设计开始菜单选择输入否浏览添加是 修改是 信息修改是 否 确定选择查询方法按编号是 按姓名退出查询否 否 否是信息输入信息浏览信息添加是结 束图 2 程序流程图 5 职工档案管理系统设计 3具体设计(1)程序结构该系统首先定义了一个职工信息的结构体,然后定义了菜单函数供用户选择,紧接着定义了实现以上各功能的子函数,最后是主函数。 主函数通过 switch 语句实现对各子函数的调用。(2)数据描述结构体类型定义说明数据描述结构体类型定义说明描述该程序定义了一个结构体,结构体变量名为 people , 结构体数组包含:(char 型)名师资料总结 - - -精品资料欢迎下载 - -
8、- - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 编号、(char 型)职工姓名、(char 型)职工性别、(char 型)年龄、(char 型)学历、 ( char 型) 工资、 (char 型)地址及(char 型)电话号码。 该结构体如下: struct people /定义结构体数组 char num100; /编号 char name15;/姓名 char sex20; / 性别 char age20;/年龄 char xueli20;/学历 char gongzhi2
9、0;/工资 char address20; /地址 char telephone20;/电话 peopleN; /结构体数组变量(3)函数功能说明程序包含 9 个函数,除主函数外,还有:菜单函数void menu() 、录入职工信息函数 void input( int i) 、输入职工信息函数void enter()、浏览所有记录函数void browse() 、 添加函数 void add() 、 查询函数 void search() 、 修改函数 void modify()、存储函数 void save(int n)等 8 个函数,辅助系统完成各项功能。各函数详细说明如下: 6 职工档案管
10、理系统设计主函数 void main() 算法描述:利用无限次循环 for(;)和 switch()实现对各函数的调用,系统根据输入的数字选项来调用相应的函数,实现相应的功能。菜单函数void menu() 函数功能: 使用者通过输入数字选项实现对各功能的使用。当运行完任一功能,返回运行界面时,也要用到该函数。输入职工数函数void input (int i ) 函数功能:依次输入职工的编号、姓名、性别、年龄、学历、工资、住址、电话等各项信息。 输入职工信息函数void enter() 函数功能:针对每个职工,并依次输入信息,每输入一项,则按顺序出现相应的职工属性;重复输入职工的信息,直至要求
11、的 i 个职工信息输入完毕,此时提示“操作成功! ”, 并 出现菜单以供选择。浏览所有记录函数void browse() 函数功能: 将输入的所有记录显示在运行界面, 并提示“按任意键继续 , ” 。 添加函数void add() 函数功能:添加职工信息,包括学生学号职工编号、姓名、性别、年龄、学历、工资、住 址和电话,添加完毕后,并显示“操作成功!” 。 查询函数 void search() 函数功能:定义该函数为无返回值的的有参函数,根据输入的姓名或编号查找并显示职工的编号、姓名、性别、年龄、学历、工资、住址和电话。修改函数 void modify() 函数功能:通过菜单选择需要修改的项目
12、,则重新输入修改的新内容,并提示 “是否确定”。 存储函数 void save(int n) 函数功能:该函数定义为无返回值的有参函数,可以把职工的信息保存自己命名的文件中。(4)模块设计该系统需要实现职工信息的输入、修改、添加、查询、浏览等功能, 则构成该系统的子模块有输入模块、修改模块、添加模块、查询模块、浏览模块,其各模块的流程图如下: 7 职工档案管理系统设计否 职工文件存在?是 输入职工数文件写入失败依次输入职工相关信息结束图 3 输入模块流程图输入需修改职工编号否 存在?是 输入修改的信息否 确定?是 结束图 4 修改模块流程图 8 职工档案管理系统设计输入添加人数输入相应职工的相
13、关信息是 编号相同?否 结 束图 5 添加模块流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 查询方法选择按姓名按编号输入要查询的姓名否 存在?是 打印职工各项信息输入名字不存在输入查询的编号否 存在?是 打印职工各项信息输入编号不存在结 束 图 6 查询模块流程图 9 职工档案管理系统设计是 职工信息文件为空?否 浏览职工信息文件打开失败结束图 7 浏览模块流程图(5)源程序及注释源程序及注释 #include #inc
14、lude #include #include #include #define N 100 / 定义系统可录入的员工最大数值 struct people /定义职工信息结构 char num100; /编号 char name15; /姓名char sex20; / 性 别char age20; /年 龄char xueli20; / 学 历char gongzhi20; /工资 char address20; /住址 char telephone20; /电话 10 职工档案管理系统设计 peopleN; void input(int i); void enter(); void brows
15、e(); void add(); /void no_input(int i,int n) ; void search(); void modify(); void save(int n); int load(); int modify_data(int i); void printf_face(); void printf_back(); void printf_one(int i); void menu(); void chack_No(int i); void chack_No(int i) if(i0) for(int k=0;kpeoplei.num; chack_No(i); bre
16、ak; 11 职工档案管理系统设计 void input(int i) /输入职工的各项信息 /no_input(i,i); printf(编号 :); scanf(%s,peoplei.num); chack_No(i); printf(姓 名 :); scanf(%s, peoplei.name) ; printf(性别 :); scanf(%s,peoplei.sex); printf(年龄 :); scanf(%s,peoplei.age); printf(学历 :); scanf(%s,peoplei.xueli); printf(工资:); scanf(%s,peoplei.gon
17、gzhi); printf(住址:); scanf(%s,peoplei.address); printf(电话:); scanf(%s,peoplei.telephone); void enter() /根据条件限制,输入每个人的信息 int i,n; printf(请输入人数(0-%d) :,N-1); 12 职工档案管理系统设计 scanf(%d,&n); printf(n 录入信息 n); for(i=0;in;i+) printf(n 请输入第%d 个人的信息 .,i+1); input(i); if(i!=0)save(n); printf_back(); void browse(
18、) int i,n; n=load(); printf_face(); for(i=0;in;i+) /浏览已输入的信息 if(i!=0)&(i%10=0) printf(nn 按 任 意 键 继 续 ,); getch(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - puts(nn); printf_one(i) ; printf(t 共有 %d 条记录 .n,n); printf(n 按任意键继续 ,); getch(
19、); menu(); 13 职工档案管理系统设计 void add() /添加职工的信息 int i,n,m,k; FILE*fp; n=load(); printf(你想添加的人数为 (0-%d):,N-1-n); scanf(%d,&m); k=m+n; for(i=n;ik;i+) printf(n 输入 第 %d 个人的信息 .,i-n+1 ); input(i); if(fp=fopen(Pro.txt,ab)=NULL) printf(文件打开失败 !n); for(i=n;ik;i+) if(fwrite(&peoplei,sizeof(struct people),1,fp)!
20、=1) printf(文 件 写 入 失 败 !n); fclose(fp); printf_back(); void search() /查询职工的信息 int i,n,k,w1=1,w2,w3,w4,m,a; struct people p; 14 职工档案管理系统设计 n=load(); do printf(n 选择你要查询的方式 nt1).按姓名 scanf(%d,&m); switch(m) case 1: do k=-1; printf(nn 请 输 入 你 要 查 询 的 姓 名 : ); scanf(%s,p.name); printf_face(); for(i=0;in;i
21、+) if(strcmp(p.name,peoplei.name)=0) k=i; printf_one(k); break; if(k=-1) printf(nn 你输入的姓名不存在!); printf(nn 你想继续查询吗?nt 1). 是 2).否 bb); scanf(%d,&w1); if(w1=2) printf_back(); while(k=-1&w1=1); 15 2).按编号 bb); 职工档案管理系统设计 break; case 2: do k=-1; printf(nn 请输入你要查询的编号:); scanf(%s,p.num); printf_face(); for(
22、i=0;in;i+) if(strcmp(p.num,peoplei.num)=0) k=i; printf_one(k);break; if(k=-1) printf(nn 你 输 入 的 编 号 不 存 在 ! ); printf(nn 你想继续查询吗?nt1).是 2).否 bb); scanf(%d,&w1); if(w1=2) printf_back(); while(k=-1&w1=1); break; w4=0;w3=0; if(k!=-1) printf(nn 请选择你要进行的操作:nt 1).查询 2). 修改 3). 删除 4).返回主菜单 16 职工档案管理系统设计 bb
23、); scanf(%d,&w2); switch(w2) case 2: w3=modify_data(k); break; case 3: printf(n 你确定要删除吗?nt 1). 是 2). 否 bb); scanf(%d,&w4); if(w4=1) for(a=k;an;a+) strcpy(peoplea.num,peoplea+1.num); strcpy(peoplea.name,peoplea+1.name); strcpy(peoplea.sex,peoplea+1.sex); strcpy(peoplea.age,peoplea+1.age); strcpy(peop
24、lea.xueli,peoplea+1.xueli); strcpy(peoplea.gongzhi,peoplea+1.gongzhi); strcpy(peoplea.address,peoplea+1.address); strcpy(peoplea.telephone,peoplea+1.telephone); break; if(w3=1|w4=1) save(n); printf(nn 操作成功 ! _ ); printf(nn 请输入你要进行的操作: nt 1). 继续查询 2).返回上一级 bb ); scanf(%d,&w2); 17 职工档案管理系统设计 while(w2=
25、1); menu(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - void modify() / 修改职工信息 struct people p; int i,n,k,w0=1,w1,w2=0; n=load(); do k=-1; printf_face(); for(i=0;in;i+) if(i!=0)&(i%10=0) printf(nn 请记着你要修改的编号。按任意键继续,); getch(); puts(nn);
26、 printf_one(i); do printf(nn 请 输 入 你 要 修 改 的 职 工 信 息 的 编 号 :); scanf(%s,p.num); for(i=0;in;i+) if(strcmp(p.num,peoplei.num)=0) k=i; 18 职工档案管理系统设计 p=peoplei; if(k=-1)printf(nn 你的输入有误, 请从新输入 ); while(k=-1); printf_face(); printf_one(k); w1=modify_data(k); if(w1=1) printf(n 操作成功 ! _.n 是否继续修改?nnt 1).是 2
27、). 否t bb); scanf(%d,&w0); w2=1; else w0=0; if(w2=1) peoplek=p; if(w0!=1&w2=1) save(n); while(w0=1); menu(); void save(int n) /保存职工信息函数FILE *fp; int i; if(fp=fopen(Pro.txt,wb)=NULL) printf(n 文 件 打 开 失 败 ! n); /return NULL; 19 职工档案管理系统设计 for(i=0;i8|c8|c9) puts(输入错误,请从新输入!n); w1=1;break; if(w1!=1) for(
28、k=0;kn;k+) if(k!=i&strcmp(peoplek.num,peoplei.num)=0) puts(你输入的编号已经存在了,请从新输入 !n); while(w1=1); */ void printf_face() /显示已存档职工的各项名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - 信息 printf( void printf_one(int i) printf(%9s%9s%9s%9s%9s%9s%10s%
29、12sn,peoplei.num,peoplei.name,peoplei.sex,peop lei.age,people i.xueli,peoplei.gongzhi,peoplei.address,peoplei.telephone); void printf_back() int w; printf(nt 操作成功 !._nn); printf(请选择: nnt1).浏览所有信息 t2).返回 : bb); scanf(%d,&w); 22 编号姓名性别年龄学历工资住址电话 n); 职工档案管理系统设计 if(w=1) browse(); else menu(); void menu(
30、) /主菜单界面函数 int n,w1; do printf(t *n); printf(t *欢 迎 进 入 职 工 档 案 管 理 信 息 系 统 *n); printf(t *n); printf(t printf(t printf(t printf(t printf(t printf(t 1 录入职工信息 n); 2 修改职工信息 n); 3 查询职工信息(姓名/ 编号) n); 4 浏览信息 n); 5 添加信息 n); 6 退出系统 n); printf(t *n); printf(t 请选择 (1-6): bb); scanf(%d,&n); if(n6) w1=1; else
31、w1=0; while(w1=1); switch(n) case 1:enter();break; case 2:modify();break; 23 职工档案管理系统设计 case 3:search();break; case 4:browse();break; case 5:add();break; case 6:exit(0); void main() system(color 07); / system(cls); menu(); 设置当前窗口的背景色和前景色 0 = 黑色 7= 白色五系统调试 1调试结果调试结果 1)主菜单界面 24 职工档案管理系统设计 2)职工信息录入界面 3
32、)职工信息浏览界面 4)职工信息查询界面 25 职工档案管理系统设计 5)职工信息修改界面 6)职工信息添加界面 2调试结果分析调试结果分析名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 将源程序存放在以 cpp 为后缀的文件当中,接着打开软件 Microsoft Visual C+ 6.0 ,在 其主界面通过菜单方式打开源程序,并进行编译调试。编译通过后,则出现了主菜单的界面, 这时进入了此软件的工作区域,通过菜单选择以实现职
33、工档案信息的输入、浏览、 查询、修改、 添加等管理。职工信息输入模块,通过菜单选择 “1” ,进入职工信息输入状态,接着输入需录入的 26 职工档案管理系统设计职工数目,按照编号、姓名、性别、年龄、学历、工资、住址、电话等顺序对每个职工的 信息进行写入。输入完毕后,将提示“操作成功”。 职工信息浏览模块,职工信息输入完毕后,软件将提示下一步的操作,一是浏览所有信息,二是返回。当选择“1” ,则屏幕上将显示已输入的职工所以信息,并提示有几条记录。职工信息查询模块,同样通过主菜单的选择, 进入职工信息查询界面,在查询时, 首 先提示你按什么方式查询,一是按姓名查询,二是按编号查询。当选择“1” ,
34、则屏幕上将显示所有符合要求的职工信息,并出现你下一步可以进行的操作,一是查询,二是修改,三是删除,四是返回主菜单。职工信息修改模块,可以通过主菜单选择,也可以选择查询界面的“2”进入职工信息修改界面,首先需要写入需修改职工的编号,接着已选定职工的所有信息都显示在屏幕上,按照修改的要求,选择职工的属性,并写入新信息, 这时系统将显示这个职工修改后的所有信息, 并提示是否确定。职工信息添加模块,同样通过菜单选择进入职工信息添加状态,首先需输入需要增加的职工数目,接着按照职工信息输入时的操作完成职工信息的添加。若在添加过程中,编 号出现一致的情况下,系统将提示 “您输入的编号已存在,请更换号码! ,
35、在一切操作无”误的情况下,界面上出现“操作成功”。 3测试出现的问题及解决方案由于此次编写这个软件于以前所编写的程序有点不大一样,这次的软件需要实现的功能太多了, 在好不容易编好源程序后,发现只能实现部分功能,在这种情况下, 我通过上图书馆和网上找资料,并经过自己不断的分辨综合,终于实现了老师所要求的功能。在测试过程中,软件所需要实现的功能是实现了,但是界面实在是太不美观了,其界面图如下:于是我又修改程序,找到相应的模块程序,都说经典才是美,我则改成了以黑色为背景 27 职工档案管理系统设计和白色的字体。六设计心得通过这次课程设计,让我及时将学到的新知识得到了实践,并从中理解了一些编译程序的一
36、般原理和基本实现方法,把死板的课本知识变得生动有趣,激发了学习的积极性,同时也体会到编程语言的强大,它能实现那么复杂的过程,也体会到软件原来就是这样实现其功能的啊!同时,在课程设计当中我也遇到很多问题。首先是:我对函数调用知识很陌生,但这 个课程设计里面却用到很多,因为要达到这样的功能,需要定义很多函数,这样使用相当方便, 但不容易学会, 所以在这方面我花了很多的时间看 C+的教程, 使我对 C+这门语言更熟悉了;其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:返回值函数和不返回值函数两者在主函数中的调用是不同的。更重要的是, 这次课程设计虽然花了我不少时间, 但正是这些时间
37、,让我见识到了 C+语言的重要性。 这个职工档案信息管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,功能也带有一定的局限性,但绝对实用!从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。总之课程设计使我学到了很多书本以外的东西,同时也提高了查阅资料的能力以及解决问题的能力, 培养学生综名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 合运用
38、所学知识, 发现、提出、分析和解决实际问题, 锻炼实践能力的重要环节, 是对学生实际工作能力的具体训练和考察过程。也懂得了理论与实际相结合的重要性, 只有理论知识是远远不够的, 只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。七参考文献 1 2 3 4 5 刘振安等编著.C+程序设计课程设计. 北京:机械工业出版社,2004 徐士良 .计算机软件技术基础. 北京:清华大学出版社, 2000 徐士良 . 计算机软件技术基础(第二版) .北京:清华大学出版社,2007 谭浩强 .C 程序设计(第三版). 北京:清华大学出版社,2005 28 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -