C语言员工信息管理系统[2023-03-01]
物联网工程专业 程序设计基础课程设计
员工信息管理系统
学 院(系): 信息与通信工程学院
专 业: 物联网工程
学 生 姓 名:
学 号:
指 导 教 师:
完 成 日 期:
大连民族大学
目 录
1 任务与目标 1
1.1 开发背景 1
1.2 问题描述 1
2 分析与设计 1
2.1 需求分析 1
2.2 系统设计 2
2.2.1 系统模块划分 2
2.2.2 系统总体设计 2
2.2.3各功能模块设计 3
2.2.4 数据结构设计 5
2.2.5 主要函数介绍 6
2.3 编码与调试 7
3 系统实现 9
4 总结与体会 14
5 参考书目 14
1 任务与目标
1.1 开发背景
任务目标是综合运用C语言知识设计并制作一个员工信息管理系统。系统需包含部门信息管理、员工信息管理、请假信息管理等功能模块,以达到解决客户的问题、满足客户需求的目的。
1.2 问题描述
本次课设的内容是运用C语言知识制作员工信息管理系统,系统的具体要求如下:
(1) 系统以菜单方式工作,包括系统主菜单,子菜单。
(2) 系统包括员工管理模块,请假管理模块,部门管理模块,信息统计查询模块。
○1员工管理模块,包括员工信息录入,员工信息包括员工号、部门名称、姓名、性别、年龄、学历、工资、电话等(员工号不能重复);员工信息修改;删除员工;查询员工信息(按工号查询);查询所有员工信息。
○2请假管理模块,录入员工请假信息,包括员工号,员工姓名,部门名称,请假日期,请假天数,请假原因;查询所有员工请假信息;查询某个员工请假信息,删除请假记录。
○3部门管理模块,部门信息录入,包括部门编号,部门名称,部门负责人,部门地点;修改部门信息;查看某一部门信息(按部门编号查询);查看所有部门信息。
○4信息统计查询模块,将所有员工按工资排序;如果输入部门名称,统计该部门下员工的信息和人数;按学历统计员工人数。
(3) 创新要求,在基本要求达到后,进行创新设计。
2 分析与设计
2.1 需求分析
企业中有大量的员工且各员工所属不同的部门,每个员工的信息需要独立且具有一定的隐私性,而管理者则需要掌握员工和部门的详细信息,针对这些问题一个员工信息管理系统应具有以下功能:
(1) 以员工号为账号的注册登录功能。
(2) 员工个人信息查看修改功能。
(3) 员工个人请假信息的提交和查看功能。
(4) 员工个人对部门信息的查阅功能。
(5) 管理员对员工信息的查阅删除功能。
(6) 管理员对部门信息的添加修改及查阅功能。
(7) 管理员对员工的请假信息审核和查看功能。
源码
https://pan.baidu.com/s/1pq1Nwwo0hlc_J84F93HM4A?pwd=1111
2.2 系统设计
2.2.1 系统模块划分
根据以上需求分析,图书管理系统分为以下功能模块,如图2.1所示。
图2.1 系统功能结构图
2.2.2 系统总体设计
进入系统先显示系统主菜单,用户在系统主菜单中选择子菜单,在子菜单中选择具体操作,在菜单中用户可以选择退出或返回主菜单继续操作,系统整体流程图如图2.2所示。
图2.2 系统整体流程图
2.2.3各功能模块设计
(1) 系统主菜单设计
用户进入系统首先看见的是系统主菜单,主菜单的数据流程图如图2.3所示。
图2.3 主菜单数据流程图
(2) 录入员工信息功能设计
在进入员工操作模块前需要先进行员工信息的录入,录入流程如图2.4所示。
图2.4 录入员工信息数据流程图
其他功能流程图与以上流程图类似,在此省略。
2.2.4 数据结构设计
对于员工信息数据的设计如表2.1所示:
表2.1 员工信息数据设计
变量名 数据类型 长度 描述
number 字符串(char[]) 10 员工号
password 字符串(char[]) 20 密码
name 字符串(char[]) 20 姓名
gender 字符串(char[]) 10 性别
age 字符串(char[]) 10 年龄
ex 字符串(char[]) 20 学历
salary 双精度浮点型(double) 工资
tel 字符串(char[]) 20 电话
department 字符串(char[]) 20 部门编号
定义对应的员工信息的储存类型为inflist:
typedef struct inf{
char number[10]; //员工号
char password[20]; //密码
char name[20]; //姓名
char gender[10]; //性别
char age[10]; //年龄
char ex[20]; //学历
double salary; //工资
char tel[20]; //电话
char department[20]; //部门编号
struct inf *next;//指针
}inflist;
相类似地,定义请假信息储存类型为leaveinflist:
typedef struct leaveinf{
char number[10]; //员工号
char liyou[80]; //请假理由
char days[20]; //请假天数
char year[10]; //请假日期
char month[10];
char day[10];
char yn[10];//请假是否通过
truct leaveinf *next;//指针
}leaveinflist;
定义部门信息储存类型为departmentinflist:
typedef struct departmentinf{
char number[10]; //部门编号
char name[20]; //部门名称
char fuzeren[20]; //部门负责人员工号
struct departmentinf *next;//指针
}departmentinflist;
2.2.5 主要函数介绍
本系统各模块对信息的处理所用的函数内容类似,仅选择部分有特点函数进行展示(表2.2),其余函数省略。
表2.2 员工管理系统主要模块函数设计
函数名 功能描述
void mainmenu( ) 调用主菜单
void membermenu(char s[]) 调用员工菜单
void admenu( ) 调用管理员菜单
void enter_inflist(int n) 注册员工信息
void pinformation(char s[]) 个人信息管理
void askforleave(char s[]) 调用请假模块
inflist *creatlist() 创建员工信息链表
void savelist(inflist *head) 保存链表信息
void adinformationdet() 删除员工信息
2.3 编码与调试
(1) 系统主界面编码
void mainmenu(){
/*登录面板显示*/
printf("\t\t========欢迎使用员工信息管理系统========\n");
printf("\t\t >1.登录\n");
printf("\t\t >2.注册\n");
printf("\t\t >3.退出系统\n");
printf("\t\t===============请选择1—3===============\n");
printf("\t\t");
int in; //界面控制
scanf("%d",&in);
switch(in){
case 1:choicelogon(1);break; //登录系统
case 2:registe(1);break; //注册系统
case 3:printf("\t\t用户退出"); break;
}
}
(2)定义creatinflist创建员工信息链表,编码如下:
inflist *creatlist(){
inflist *head, *node, *end; //定义头节点,普通节点,尾部节点;
head = (inflist*)malloc(sizeof(inflist)); //分配地址
end = head; //若是空链表则头尾节点一样
FILE *fp;
if((fp=fopen("date.txt","r"))==NULL){ //文件打开
printf("创建链表时文件载入失败。");
exit(0);
}
while(!feof(fp)){
node = (inflist*)malloc(sizeof(inflist));
fscanf(fp,"%s %s %s %s %s %s %lf %s %s\n",node->number,node->password,node->name,node->gender,node->age,node->ex,&node->salary,node->tel,node->department);
end->next = node;
end = node;
}
if(fclose(fp)){ //文件关闭
printf("创建链表时文件关闭失败。");
exit(0);
}
end->next = NULL;//结束创建
return head;
}
(3) 定义maopao对员工信息链表进行排序:
void maopao(inflist *head){
inflist *p,*q,*tail;
tail=NULL;
while((head->next->next) != tail)
{
p=head;
q=head->next;
while(q->next != tail)
{
if((q->salary) < (q->next->salary))
{
p->next = q->next;
q->next = q->next->next;
p->next->next = q;
q = p->next;
}
q = q->next;
p = p->next;
}
tail = q;
}
}
其余部分编码结构类似或结构较为简单,略。
(5) 编码中遇到的问题与解决方法:
○1在运用switch函数时,遇到了program received signal SIGSEGV故障,在网上查阅资料:SIGSEGV(Segment fault)意味着指针所对应的地址是无效地址,没有物理内存对应该地址。经过调试发现是switch(n),在给n赋值时缺少了&产生的错误,添加后解决了这个问题。
○2制作账号登录部分时,进行密码核对时容易出现若两个员工密码重复也可以登录的问题,后经过修改将密码核对改为:账号和密码同时核对。只有输入账号和密码和date文件中账号密码对应吻合才可登陆成功,解决了这个问题。
3 系统实现
员工信息管理系统的主界面如图3.1,选择1时进入登录界面,选择2时进入注册界面 ,选择3退出系统。
图3.1 主界面
员工注册界面如图3.2和3.3所示,键盘输入员工号,若账号已被注册显示重复退回主菜单。
图3.2 员工注册界面(账号已注册)
账号未注册进行信息逐步输入完成注册(学历输入时仅限专科、本科、硕士、博士)。
图3.3 员工注册界面(账号注册)
登录界面如图3.4,选择1进入员工登录界面,选择2进入管理员登录界面。
图3.4 系统登陆界面
员工登录界面如图3.5,输入账号和密码。若登录时密码错误显示密码错误,账号未注册显示未注册,无错误进入员工界面。
图3.5 员工登录界面(密码错误)
管理员登录界面如图3.6,管理员账号和密码如图所示,无错误进入管理员界面。
图3.6 管理员登陆界面
员工操作界面如图3.7,选择1进入个人信息操作界面,选择2进入部门信息查询界面,选择3进入请假功能界面。
图3.7 员工操作界面
个人信息管理界面如图3.8,选择1查看个人信息,选择2修改个人信息。
图3.8 个人信息管理界面
个人信息修改如图3.9,选择对应想修改的项目编号进行修改。
图3.9 个人信息修改
员工部门信息图略,进入该界面后输入要查询的部门编号即可得到该部门员工信息。
员工请假模块如图3.10,选择1提交请假信息,选择2查看请假记录。
图3.10 员工请假界面
请假信息提交如图3.11,依次输入请假信息即可。
图3.11 请假申请提交界面
管理员操作界面如图3.12。
图3.12 管理员界面
选择1进入员工信息管理如图3.13,可查看全体员工信息(按工资从高到低排序)。
图3.13员工信息总览
进入员工信息删除界面后,输入要删除员工号可删除员工的注册信息和请假记录。
选择2进入部门管理系统(图略),输入信息添加部门,部门信息和对应员工信息进行总览。选择3进入员工请假管理图3.14,查看全部员工请假记录,对员工请假申请进行处理。
图3.14 员工请假信息管理(请假信息审核)
各部分在操作系统内部有详细的文字指引,不再赘述。
4 总结与体会
程序最终完成,功能完善运行流畅,各模块功能设计严谨相辅相成,成品效果令人满意。经过一个月的设计与制作终于把自己设计的员工信息管理系统实现了,做完程序之后五味杂陈。第一时间的涌现的是兴奋与自豪,虽然制作过程磕磕绊绊,但是制作出人生中第一个近千行代码的程序那种喜悦是无法描述的。在喜悦之后是对这次程序设计过程的反思,在设计过程中暴露了许多问题,例如对知识综合运用略显生涩、现有的知识储备不足、设计时对细节的关注度不够、对程序整体的规划不完美等等。在以后的软件开发工作中会吸取经验,借鉴这次经历的问题解决方案不断提高自己的开发能力,拓展自己知识储量,丰富自己的开发经验。最后很感谢学校开设的这门课程,感谢导师的悉心教导与付出。在这门课中我受益匪浅,希望以后的自己也能如现在一样怀着对编程的热情和对知识的渴求不断奋进,成为更优秀的自己。
5 参考书目
[1] 何钦铭.颜晖.C语言程序设计(第三版)[M].北京:高等教育出版社,2015.
[2] https://bbs.csdn.net/
同学:
-
实践性要求(占30%)
□优秀 □良好 □中等 □及格 □不及格 -
自主性、创新性要求(占20%)
□优秀 □良好 □中等 □及格 □不及格 -
展示性要求(占30%)
□优秀 □良好 □中等 □及格 □不及格 -
自律性、协作性要求(占20%)
□优秀 □良好 □中等 □及格 □不及格
总评成绩:
同学:
5. 实践性要求(占30%)
□优秀 □良好 □中等 □及格 □不及格
-
自主性、创新性要求(占20%)
□优秀 □良好 □中等 □及格 □不及格 -
展示性要求(占30%)
□优秀 □良好 □中等 □及格 □不及格 -
自律性、协作性要求(占20%)
□优秀 □良好 □中等 □及格 □不及格
总评成绩:
源码
https://pan.baidu.com/s/1pq1Nwwo0hlc_J84F93HM4A?pwd=1111
标签:请假,03,01,界面,信息,员工,char,2023,next From: https://www.cnblogs.com/codewriter/p/17169584.html