【课程设计】企业职工工资管理系统 C语言版
本篇文章主要讲述的是利用 C 语言在 VC6.0编译器下开发的企业职工工资管理系统,在所开发的管理系统中,可以实现录入、修改、查询、删除、排序和将信息保存到文件,以及从文件中读出信息的功能。具体的内容可查看本文章,欢迎广大朋友们前来学习和指教。如果有需要源代码的朋友们可点击博主的主页资源页面进行下载。
一、设计思路
(1)采用 C 语言来进行企业职工工资管理系统的开发设计;
(2)利用结构体数组实现企业职工工资管理系统的数据结构设计;
(3)系统具有输入、修改、查询、删除、排序和将信息保存到文件,以及从文件中读出信息的功能;
(4)系统在实现增、删、改、查、读入文件和读出文件的各个功能用函数的形式来实现;
(5)利用 do…while 循环语句来建立各个功能模块之间的连接,并且有简单的功能选择操作界面,用户可以通过数字选择功能;
二、模块设计
1.数据宏定义
宏定义则是设置了结构体数组中数组的下标,表示可以输入的数组数据的最大范围。
#define MAX 1000//企业职工最大人数
#define NUM 30//结构体数组的下标
#define ADD 20//地址的长度
#define NUM1 10//学历,职位,姓名的长度
#define SEX 5//性别的长度
2.数据库设计
采用结构体数组来实现职工信息数据的存储,同时在结构体数组中存放了职工对象的属性信息。
//*****声明结构体*******//
struct person
{int num;//职工号char name[NUM1];//姓名char position[NUM1];//职位char gread[NUM1];//学历char sex[SEX];//性别char birth[NUM];//出生char add[ADD];//住址double paid;//基本工资double extra;//奖金double discount;//扣款double pay;//实发工资
};
struct person per[MAX];
int now_per=0;
3.函数模块声明
(1)声明主体函数
void star(int n);//输出*函数
void begin();//登陆界面函数
void display();//主界面函数
void input();//输入信息函数
void find();//查询信息函数
void modify();//修改信息函数
void glance();//浏览信息函数
void sort();//排序信息函数
void insert();//插入信息函数
void dele();//删除信息函数
(2)声明局部函数
void find_name();//按姓名查找
void find_num();//按编号查找
void find_paid();//按工资查找
void modify_num();//按编号修改
void modify_name();//按姓名修改
void sortnum();//按编号排序
void sortpaid();//按工资排序
void dele_num();//按编号删除
void dele_name();//按姓名删除
void dele_paid();//按工资删除
void read();//读入信息文件函数
void save();//保存信息到文件函数
4.系统流程图
本系统流程图介绍了企业职工工资管理系统能完成的基本功能,以及基本功能下所具备的子功能模块。系统各个功能之间的操作流畅,根据所选择的数字信息便可以实现其对应的操作。
三、函数功能模块
1.主菜单函数
企业职工工资管理系统的主菜单页面,通过这个页面可以查看系统所具备的所有基本功能。
void display()//主菜单函数
{int choose; char ch;system("cls");do{printf("\n\n\t");star(60);printf("\n\n\t\t\t"); printf("欢迎登陆企业工资管理系统");printf("\n\n\t");star(60);printf("\n\n\n");printf("\t\t\t1 录入职工信息 \n");printf("\t\t\t2 查询职工信息 \n");printf("\t\t\t3 修改职工信息 \n");printf("\t\t\t4 浏览职工信息 \n");printf("\t\t\t5 排序职工信息 \n");printf("\t\t\t6 插入职工信息 \n");printf("\t\t\t7 删除职工信息 \n");printf("\t\t\t8 文件读入信息 \n");printf("\t\t\t9 安全退出系统 \n");printf("\n\t");star(60);printf("\n\n\t");printf("你选择的是(1-9):");fflush(stdin);scanf("%d",&choose);ch=getchar();switch(choose){case 1:input();break;case 2:find();break;case 3:modify();break;case 4:glance();break;case 5:sort();break;case 6:insert();break;case 7:dele();break;case 8:read();break;case 9:system("cls");printf("\n\n\t\t你已经安全退出!\n\n\t\t");exit(0);break;default:printf("请正确输入!");break;}}while(1);
}
2.录入职工信息
根据页面提示信息,可以录入职工的基本数据信息。
void input()//输入信息函数
{int i=0;char ch;system("cls");do{printf("\n\n\t");star(60);printf("\n\n\t\t\t\t");printf("录入职工信息");printf("\n\n\t");star(60);printf("\n\n\n\t输入第%d个职工的信息:\n",i+1);printf("\n\t输入职工编号:\t");fflush(stdin);scanf("%d",&per[i].num);printf("\n\t输入职工姓名:\t");fflush(stdin);gets(per[i].name);printf("\n\t输入职工性别:\t");fflush(stdin);gets(per[i].sex);printf("\n\t输入职工出生:\t");fflush(stdin);gets(per[i].birth);printf("\n\t输入职工住址:\t");fflush(stdin);gets(per[i].add);printf("\n\t输入职工学历:\t");fflush(stdin);gets(per[i].gread);printf("\n\t输入职工职位:\t");fflush(stdin);gets(per[i].position);printf("\n\t输入职工基本工资:\t");fflush(stdin);scanf("%lf",&per[i].paid);printf("\n\t输入职工奖金:\t");fflush(stdin);scanf("%lf",&per[i].extra);printf("\n\t输入职工扣款:\t");fflush(stdin);scanf("%lf",&per[i].discount);printf("\n\n");i++;now_per=i;save();printf("\n\n\t是否继续输入?(Y/N):");fflush(stdin);ch=getchar();system("cls");}while(ch!='n'&&ch!='N');system("cls");
}
3.查找职工信息
主要是显示查找职工信息主功能模块下所具备的子功能模块信息。
void find()//查找信息函数
{int i=0;int choose;char ch;system("cls");do{printf("\n\t");star(60);printf("\n\n\t\t\t查询职工信息");printf("\n\n\t");star(60);printf("\n");printf("\n\t1 按编号查找");printf("\n\t2 按姓名查找");printf("\n\t3 按基本工资查找");printf("\n\t4 返回上一层");printf("\n\n\n\t");star(60);printf("\n\n\t你选择的是(1-4):\t");fflush(stdin);scanf("%d",&choose);ch=getchar();switch(choose){case 1:find_num();break;case 2:find_name();break;case 3:find_paid();break;case 4:display();break;default:printf("请正确输入!");break;}}while(1);
}
4.修改职工信息
主要是显示修改职工信息主功能模块下所具备的子功能模块信息。
void modify()//修改信息函数
{int choose;char ch;system("cls");do{ printf("\n\n\t");star(60);printf("\n\n\t\t\t排序职工信息");printf("\n\n\t");star(60);printf("\n\n\t");printf("1 按编号修改\n\t");printf("2 按姓名排序\n\t");printf("3 返回上一层");printf("\n\n\t");star(60);printf("\n\n\t\t你的选择是(1-3):\t");fflush(stdin);scanf("%d",&choose);ch=getchar();switch(choose){case 1:modify_num();break;case 2:modify_name();break;case 3:display();break;default:printf("请正确选择!");break;}}while(1);
}
5.浏览职工信息
主要是统计所有职工的工资信息,并且显示在页面上。
void glance()//浏览信息函数
{int i;char ch;system("cls");do{printf("\n\t");star(95);printf("\n\n\t\t\t\t\t浏览全部职工信息");printf("\n\n\t");star(95);printf("\n\n\t");printf("编号\t姓名\t性别\t出生\t住址\t学历\t职位\t基本工资\t奖金\t扣款\t实发工资\n\n");for(i=0;i<now_per;i++){per[i].pay=per[i].paid+per[i].extra-per[i].discount;printf("\t%-d\t%-s\t%-s\t%-s\t%-s\t%-s\t%-s\t%-.2lf\t\t%-.2lf\t%-.2lf\t%-.2lf\n\n",per[i].num,per[i].name,per[i].sex,per[i].birth,per[i].add,per[i].gread,per[i].position,per[i].paid,per[i].extra,per[i].discount,per[i].pay);}printf("\n\t");star(95);printf("\n\n\t按任意键继续...\n");ch=getchar();}while(!ch);system("cls");
}
6.职工信息排序
主要是显示职工信息排序主功能模块下所具备的子功能模块信息。
void sort()//排序信息函数
{int choose;char ch;system("cls");do{ printf("\n\n\t");star(60);printf("\n\n\t\t\t排序职工信息");printf("\n\n\t");star(60);printf("\n\n\t");printf("1 按编号排序\n\t");printf("2 按基本工资排序\n\t");printf("3 返回上一层");printf("\n\n\t");star(60);printf("\n\n\t\t你的选择是(1-3):\t");fflush(stdin);scanf("%d",&choose);ch=getchar();switch(choose){case 1:sortnum();break;case 2:sortpaid();break;case 3:display();break;default:printf("请正确选择!");break;}}while(1);
}
7.插入职工信息
主要是显示插入职工信息主功能模块下所具备的子功能模块信息。
void insert()//插入信息函数
{char ch;system("cls");do{printf("\n\t");star(60);printf("\n\n\t\t\t插入职工信息");printf("\n\n\t");star(60);printf("\n\n\t");printf("输入插入的职工信息:\n");printf("\n\t输入职工编号:\t");fflush(stdin);scanf("%d",&per[now_per].num);printf("\n\t输入职工姓名:\t");fflush(stdin);gets(per[now_per].name);printf("\n\t输入职工性别:\t");fflush(stdin);gets(per[now_per].sex);printf("\n\t输入职工出生:\t");fflush(stdin);gets(per[now_per].birth);printf("\n\t输入职工住址:\t");fflush(stdin);gets(per[now_per].add);printf("\n\t输入职工学历:\t");fflush(stdin);gets(per[now_per].gread);printf("\n\t输入职工职位:\t");fflush(stdin);gets(per[now_per].position);printf("\n\t输入职工基本工资:\t");fflush(stdin);scanf("%lf",&per[now_per].paid);printf("\n\t输入职工奖金:\t");fflush(stdin);scanf("%lf",&per[now_per].extra);printf("\n\t输入职工扣款:\t");fflush(stdin);scanf("%lf",&per[now_per].discount);now_per+=1;save();printf("\n\n\t是否需要继续输入?(Y/N):");fflush(stdin);ch=getchar();system("cls");}while(ch!='n'&&ch!='N');
}
8.删除职工信息
主要是显示删除职工信息主功能模块下所具备的子功能模块信息。
void dele()//删除信息函数
{ int choose;char ch;system("cls");do{ printf("\n\n\t\t");star(60);printf("\n\n\t\t\t\t删除职工信息");printf("\n\n\t\t");star(60);printf("\n\n\t\t");printf("1 按编号删除\n\t\t");printf("2 按姓名删除\n\t\t");printf("3 按基本工资删除\n\t\t");printf("4 返回上一层\n\t\t");printf("\n\n\t\t");star(60);printf("\n\n\t\t你的选择是(1-4):\t");fflush(stdin);scanf("%d",&choose);ch=getchar();switch(choose){case 1:dele_num();break;case 2:dele_name();break;case 3:dele_paid();break;case 4:display();break;default:printf("请正确选择!");break;}}while(1);
}
9.数据读入文件
该功能主要是将所输入的所有职工数据全部存入文件,可以根据自己的需要指定需要存储的文件路径。
void save()//保存信息到文件函数
{int i;char ch;char file[10];FILE *fp;system("cls");printf("\n\n\t请输入要保存的文件路径:\t");fflush(stdin);gets(file);if((fp=fopen(file,"w"))==NULL){printf("\n\n\t保存失败!");ch=getchar();exit(0);}for(i=0;i<now_per;i++)fprintf(fp,"%-d\t%-s\t%-s\t%-s\t%-s\t%-s\t%-s\t%-.2lf\t\t%-.2lf\t%-.2lf\n\n",per[i].num,per[i].name,per[i].sex,per[i].birth,per[i].add,per[i].gread,per[i].position,per[i].paid,per[i].extra,per[i].discount);fclose(fp);printf("\n\n\t正在保存,请稍后");printf(".");Sleep(500);printf(".");Sleep(500);printf(".");Sleep(500);system("cls");printf("\n\n\t职工信息已成功保存在 %s !\n\n",file);Sleep(500);system("cls");
}
10.数据读出文件
该功能主要实现的是从文件中读出所有职工数据信息,系统关闭之后,下一次打开该系统后,点击该功能后,输入需要读取的数据文件,点击确定即可成功将数据信息读入本职工工资管理系统。
void read()//从文件读取信息函数
{int i;char ch;char file[10];FILE *fp;system("cls");printf("\n\n\t请输入要读入职工信息的文件路径:\t");fflush(stdin);gets(file);if((fp=fopen(file,"r"))==NULL){printf("文件读入失败!");ch=getchar();display();}now_per=0;for(i=0;i<MAX&&!feof(fp);i++) {fscanf(fp,"%d%s%s%s%s%s%s%lf%lf%lf\n\n",&per[i].num,per[i].name,per[i].sex,per[i].birth,per[i].add,per[i].gread,per[i].position,&per[i].paid,&per[i].extra,&per[i].discount);now_per++;} fclose(fp);printf("\n\n\t正在文件中读取职工信息,请稍后");printf(".");Sleep(500);printf(".");Sleep(500);printf(".");system("cls");Sleep(500);system("cls");printf("\n\n\n\n\t%s 文件中职工信息读取成功!",file);Sleep(600);printf("\n\n\t请按任意键继续....");ch=getchar();system("cls");
}
四、功能模块展示
1.功能页面展示
2.录入职工信息
3.查询职工信息
4.修改职工信息
5.浏览职工信息
6. 职工信息排序
7.插入职工信息
8.删除职工信息
9.数据读入文件
10.数据读出文件
非常感谢广大朋友们的查看,如果对本篇文章有任何问题或者有什么不足之处,还请广大朋友们的不吝赐教。如果有喜欢本篇文章的朋友们还请给博主一个一键三连吧。
【课程设计】企业职工工资管理系统 C语言版相关推荐
- c语言 输入职工工资资料,通过结构体的数组来进行操作 报告,c语言课程设计报告-职工工资管理系统...
<c语言课程设计报告-职工工资管理系统>由会员分享,可在线阅读,更多相关<c语言课程设计报告-职工工资管理系统(33页珍藏版)>请在人人文库网上搜索. 1.c 语言课程设计报告 ...
- C语言课程设计_职工工资管理系统
要求 设计一个职工工资管理系统: (1)输入记录:将每一个职工的姓名.ID号以及基本工资.职务工资.岗位津贴.医疗保险.公积金的数据作为一个记录.该软件能建立一个新的数据文件或给已建立好的数据文件增加 ...
- 职工工资程序c语言doc,职工工资管理系统C语言程序课程设计方案.doc
职工工资管理系统C语言程序课程设计方案 1 课 程 设 计 报 告 课程名称 C语言程序设计 课题名称 职工工资管理系统 专 业 机械电子 班 级 1101班 学 号 1 姓 名 王贝贝 指导教师 肖 ...
- c语言银行卡管理系统程序设计报告,《c语言程序设计》课程设计报告-职工信息管理系统.doc...
<c语言程序设计>课程设计报告-职工信息管理系统.doc 还剩 24页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环 ...
- c语言课程设计 职工工资处理系统,院职工工资管理系统_C语言课程设计-2017年10月.doc...
信息科学与技术学院 课程设计报告 2012-2013学年第一学期 课程名称:C语言课程设计上机 设计题目:院职工工资管理系统 学 号:__________________ 姓 名:__________ ...
- 数据结构课程设计报告-职工信息管理系统
"数据结构"课程设计报告 系 (院): 信息工程学院 设计题目: 员工管理系统 专业班级: 计算机科学与技术1401B 小 ...
- 海南大学-数据库课程设计-企业人事档案管理系统
本人大二下学期学习数据库和java,碰巧学校要求做一个数据库系统,要求有界面的交互....正好借此机会我想着看能不能把这两个学到的东西都用起来,所以就创建了此系统 操作平台:idea.mysql 系统 ...
- 直流电机调速c语言程序,课程设计_直流电机调速(C语言版).doc
单片机课程设计 学院:电气与信息工程学院 班级:07级电气工程及其自动化3班 设计者: 设计名称:直流电机调速 指导老师:张志文 教授 目录 一. 课程设计题目及其实现目标--------3 二. 设 ...
- 二叉链表和职工管理系统结合_C语言课程设计_职工信息管理系统_单链表实现程序源代码...
有 %d 条记录已经保存 .)\n",count); saveflag=0; } else { system("cls"); printf(" 保存文件失败, ...
- C语言源码做的职工工资管理系统课程设计(源码+课程设计报告)
一.课程设计的目的: C语言课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言程序设计的知识点,又接近工程实际需要.本次设计的目的是通过课程设计 ...
最新文章
- asp在线压缩和解压缩文件(文件夹)
- Google 是如何定制 Material 主题的?
- 蓝桥杯java第六届决赛第四题--穿越雷区
- 全球与中国压延铜箔市场发展调研及投资前景战略建议报告2022-2028年版
- 动作分析 姿态估计_单人或多人的人体姿态骨架估计算法概述
- 七十七、SpringBoot整合Rabbitmq
- DCMTK:测试程序中定义的功能和类 ofmem.h(OF shared_ptr)
- C#基于LibUsbDotNet实现USB通信(一)
- 连接真机开发安卓(Android)移动app MUI框架 完善购物车订单等页面——混合式开发(五)
- c语言 gt 5u,Linux之sar命令-php面向对象实例-WinFrom控件库|.net开源控件库|HZHControls官网...
- redis迁移至linux,redis几种数据导出导入方式
- 基于struts2的web系统中的返回功能
- MySQL创建新连接时,不能成功连接的问题
- 蒙特卡洛—赌博模型笔记
- 推荐算法之协同过滤算法详解(原理,流程,步骤,适用场景)
- 泛微E-Office v9任意文件上传(CNVD-2021-49104)复现
- Layabox 1 layabox的项目文件以及项目配置
- 不能被编辑的html文档,word不能编辑怎么办 Word文档怎么设置成不可编辑?
- easybcd卸载linux系统,Windows 8.1和Ubuntu 14.04双系统卸载Ubuntu参考教程
- python破解wifi密码软件下载-python暴力获取wifi密码
热门文章
- 2017java考证_Sun认证Java程序员考试试题
- ios功耗测试软件,iOS 性能优化 Instruments 检测 App 耗电量实战
- Yaml:基本语法使用
- 进行日常记账后,怎样导出表格
- 2020网易游戏测试面试二面面经(上海春招)
- 3dmax2014 uv用法_3dmax中UV贴图的使用方法
- Matlab笔记-取整/生成随机数
- AD Undeclared identifier: GetFontID 问题解决方法
- 2021中青杯数学建模A题 (论文+代码) 超详细
- oracle年龄计算函数天 月 年,如何使用Oracle获得年龄,月份和天数的年龄