职工信息管理系统程序文档格式.docx
《职工信息管理系统程序文档格式.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统程序文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
职工信息管理模块:
系统的核心模块,可实现职工信息的添加、删除、修改、查询、排序、浏览功能,并可调用信息存储读取模块保存成外部文件或从外部文件读取。
职工信息包括职工号(不可重复)、姓名、性别、出生年月、学历、部门、职务、工资。
查询功能可通过职工号、姓名、部门、工资关键字查询。
信息存储读取模块:
可被职工信息管理模块调用以将职工信息保存成外部文件或将文件中的数据读取出来实现相应的操作。
1.2界面设计
主菜单
添加职工信息
修改信息
删除信息
查询信息
显示所有信息
1.3接口设计;
添加职工信息:
intAdd_Info(Pt_Info_LinkListLinkList,Info_Nodeinfo)
若添加成功返回真
删除职工信息:
intDelete_Info(Pt_Info_LinkListLinkList,intdelete_worker_number)
若删除成功返回真
查询职工信息:
intQuery_Info(Pt_Info_LinkListLinkList,charquery_option,intquery_worker_number,charquery_worker_name[20],charquery_worker_education[20],charquery_worker_department[20],intquery_worker_salary)
若查询成功返回真
修改职工信息:
intModify_Info(Pt_Info_LinkListLinkList,Info_Node*modify_node,Info_Nodetemp_node)
若修改成功返回真
显示所有信息
voidDisplay_All_Info(Pt_Info_LinkListLinkList)
无返回值
1.4数据结构设计
typedefstructInfoLinkList//职工信息
{
intnumber;
//职工号
charname[20];
//姓名
charsex[20];
//性别
charbirthday[20];
//生日
chareducation[20];
//学历
chardepartment[20];
//部门
charposition[20];
//职位
intsalary;
//工资
structInfoLinkList*next;
}Info_Node,*Pt_Info_LinkList;
2系统模块设计
2.1用户界面模块设计
程序由用户界面模块中的main函数为入口,首先调用该模块中的初始化函数初始化系统,建立链表,读取文件中的信息。
然后进入程序的主循环,显示菜单,并由用户选择操作,调用相应函数完成请求。
主函数:
voidmain()无返回值
显示主菜单:
voidDisplay_MainMenu()无返回值
初始化系统:
intInitial_System(Pt_Info_LinkList*LinkList_Head)若初始化成功返回真
2.2职工信息管理模块设计
添加职工信息:
intAdd_Info(Pt_Info_LinkListLinkList,Info_Nodeinfo)
添加成功返回真
删除职工信息:
intDelete_Info(Pt_Info_LinkListLinkList,intdelete_worker_number)
删除成功返回真
查询职工信息:
intQuery_Info(Pt_Info_LinkListLinkList,charquery_option,intquery_worker_number,charquery_worker_name[20],charquery_worker_education[20],charquery_worker_department[20],intquery_worker_salary)
查询成功返回真
修改职工信息:
intModify_Info(Pt_Info_LinkListLinkList,Info_Node*modify_node,Info_Nodetemp_node)
修改成功返回真
显示所有信息:
voidDisplay_All_Info(Pt_Info_LinkListLinkList)
无返回值
2.3文件保存读取模块设计
读取文件:
intRead_Worker_Info(Pt_Info_LinkListLinkList)
若读取成功返回真
修改文件:
intSave_Worker_Info(Pt_Info_LinkListLinkList)
若保存成功返回真
3程序的运行及测试结果
3.1添加信息功能测试
3.2修改信息功能测试
3.3删除信息功能测试
3.4查询信息功能测试
3.5显示所有信息功能测试
四、实验中的问题及心得
附录:
程序清单
===================================头文件======================================
-------------------------------------------------info_management.h-----------------------------------------------------
#defineTRUE1
#defineFALSE0
#defineFLAG1
#defineLENsizeof(Info_Node)
#defineNo_Worker_Infoprintf("
\n无此职工信息\n"
)//输出“无职工信息”
#defineQuery_Resultprintf("
%d\t%s\t%s\t%s\t%s\t%s\t%s\t%d\n\n"
pt->
number,pt->
name,pt->
sex,pt->
birthday,pt->
education,pt->
department,pt->
position,pt->
salary)//输出查询结果
typedefstructInfoLinkList//职工信息
intnumber;
//职工号
charname[20];
//姓名
charsex[20];
//性别
charbirthday[20];
//生日
chareducation[20];
//学历
chardepartment[20];
//部门
charposition[20];
//职位
intsalary;
//工资
structInfoLinkList*next;
=================================用户界面模块==================================
-----------------------------------WokerInformationManagementSystem.c----------------------------------------
#include<
stdio.h>
stdlib.h>
#include"
info_management.h"
/**调用函数声明**/
intAdd_Info(Pt_Info_LinkListLinkList,Info_Nodeinfo);
//添加职工信息
intDelete_Info(Pt_Info_LinkListLinkList,intdelete_worker_number);
//删除职工信息
intQuery_Info(Pt_Info_LinkListLinkList,charquery_option,intquery_worker_number,charquery_worker_name[20],charquery_worker_education[20],charquery_worker_department[20],intquery_worker_salary);
//查询职工信息
intModify_Info(Pt_Info_LinkListLinkList,Info_Node*modify_node,Info_Nodetemp_node);
//修改职工信息
voidDisplay_All_Info(Pt_Info_LinkListLinkList);
//显示所有信息
intRead_Worker_Info(Pt_Info_LinkListLinkList);
//读取文件
intSave_Worker_Info(Pt_Info_LinkListLinkList);
//修改文件
intInitial_System(Pt_Info_LinkList*LinkList_Head)//初始化系统
FILE*fp_worker_info;
*LinkList_Head=(Pt_Info_LinkList)malloc(LEN);
(*LinkList_Head)->
next=NULL;
printf("
链表创建成功\n"
);
fp_worker_info=fopen("
WorkerInformation.txt"
"
rb"
if(!
feof(fp_worker_info))
{
Read_Worker_Info(*LinkList_Head);
printf("
读取信息成功\n"
fclose(fp_worker_info);
}//if(!
returnTRUE;
}
voidDisplay_MainMenu()//显示主菜单
职工信息管理系统\n"
=======================\n"
添加信息-1\n"
修改信息-2\n"
删除信息-3\n"
查询信息-4\n"
显示所有信息-5\n"
退出系统-0\n"
\n"
选择操作:
"
voidmain()
Pt_Info_LinkListLinkList,pt,modify_node;
Info_Nodeinfo,temp_node;
intoption,query_worker_number,query_worker_salary,flag=FALSE,repeat_flag=FALSE,change_flag=FALSE;
intrecord_add_num;
intmodify_worker_number,delete_worker_number;
charconfirm,query_option,query_worker_name[20],query_worker_education[20],query_worker_department[20];
Initial_System(&
LinkList);
while(FLAG)//主循环
{
system("
cls"
Display_MainMenu();
//显示主菜单
fflush(stdin);
scanf("
%d"
&
option);
//获取选项
switch(option)
case1:
//添加信息
fflush(stdin);
\n输入新职工信息\n"
输入职工号为-1时结束\n"
职工号姓名性别生日学历部门职位工资\n"
while(FLAG)
{
//输入数据
scanf("
info.number);
if(info.number==-1)break;
//输入职工号-1时输入结束
%s"
info.name);
info.sex);
info.birthday);
info.education);
info.department);
info.position);
info.salary);
for(pt=LinkList;
pt->
next!
=NULL;
pt=pt->
next);
Add_Info(pt,info);
}//while(!
repeat_flag)
change_flag=TRUE;
\n按任意键继续\n"
getch();
break;
case2:
//修改信息
flag=FALSE;
if(LinkList->
next==NULL)printf("
\n无记录\n"
else
printf("
\n输入需修改职工职工号:
modify_worker_number);
modify_node=LinkList->
next;
while(modify_node!
=NULL)//判断是否存在此记录
{
if(modify_node->
number==modify_worker_number)
{
flag=TRUE;
break;
}//if(modify_node->
modify_node=modify_node->
}//while(pt!
=NULL)
if(flag)
printf("
\n原信息\n"
\n职工号\t姓名\t性别\t生日\t学历\t部门\t职位\t工资\n"
modify_node->
number,modify_node->
name,modify_node->
sex,modify_node->
birthday,modify_node->
education,modify_node->
department,modify_node->
position,modify_node->
salary);
输入新信息\n"
//输入数据
repeat_flag=FALSE;
scanf("
temp_node.number);
while(!
{
pt=LinkList->
while(pt!
{
if(repeat_flag=temp_node.number==pt->
number?
TRUE:
FALSE)break;
pt=pt->
}//while(pt!
if(pt==modify_node)continue;
//如果pt指向当前结点,进入下一循环
if(!
repeat_flag)break;
printf("
职工号%d已存在,重新输入\n"
temp_node.number);
fflush(stdin);
scanf("
repeat_flag=FALSE;
}//while(!
flag)
temp_node.name);
temp_node.sex);
temp_node.birthday);
temp_node.education);
temp_node.department);
temp_node.position);
temp_node.salary);
Modify_Info(LinkList,modify_node,temp_node);
\n修改成功\n"
change_flag=TRUE;
}//if(flag)
elseprintf("
\n无此员工\n"
}//if(LinkList->
next==NULL)
case3:
//删除信息
\n输入需删除职工职工号:
delete_worker_number);
pt=LinkList->
while(pt!
if(pt->
number==delete_worker_number)
}//if(pt->
pt=pt->
do
确定删除此信息?
(Y/N)"
%c"
confirm);
}while(confirm!
='
Y'
&
confirm!
y'
N'
n'
if(confirm=='
||confirm=='
)
Delete_Info(LinkList,delete_worker_number);
\n删除成功\n"
change_flag=TRUE;
}//if(confirm=='
}
else
case4:
//查询
\n查询种类:
\n1-职工号\n2-姓名\n3-学历\n4-部门\n5-工资\n"
请选择查询种类:
scanf("
query_option);
if(query_option=='
1'
)//按职工号查询
输入职工号:
query_worker_number);
Query_Info(LinkList,query_option,query_worker_number,NULL,NULL,NULL,NULL);
}
elseif(query_option=='
2'
)//按姓名查询
输入姓名:
query_worker_name);
Query_Info(LinkList,query_option,NULL,query_worker_name,NULL,NULL,NULL);
elseif(