收藏 分销(赏)

C语言程序设计报告职工工资管理系统-.doc

上传人:二*** 文档编号:4512097 上传时间:2024-09-26 格式:DOC 页数:23 大小:103KB 下载积分:5 金币
下载 相关 举报
C语言程序设计报告职工工资管理系统-.doc_第1页
第1页 / 共23页
本文档共23页,全文阅读请下载到手机保存,查看更方便
资源描述
- . C语言程序设计报告 课程名称:C语言程序设计 院 系: 管理与经济学院 专业班级: 工业工程2012142班 学 号:201214217 学生XX:海蛟 指导教师:雪青 完成时间:2013-06-20 报告成绩: 目录 1、设计题目--------------------------------------------------------------------------2 2、设计要求〔包括设计容描述〕--------------------------------------------2 3、设计作用与目的-----------------------------------------------------------------3 4、所用软件--------------------------------------------------------------------------3 5、系统设计--------------------------------------------------------------------------4 5.1 系统构造----------------------------------------------------------------------4 5.2 程序程序图-------------------------------------------------------------------4 5.3 产生源程序----------------------------------------------------------------------6 6、实验调试结果〔附运行效果图〕--------------------------------------------36 7、设计中的问题及解决方法-----------------------------------------------------39 8、设计心得--------------------------------------------------------------------------40 9、参考文献--------------------------------------------------------------------------41 职工工资管理系统的设计与实现 1.设计题目 题目:工资管理系统 工资管理系统是企业不可缺少的一局部,它利用计算机对员工工资进展统一管理,实现工资管理系统的系统化、规化和自动化,为企业提高工作效率。本程序旨在训练读者的根本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和构造数组的各种根本操作。本程序中涉及构造体、数组、文件等方面的知识。 2.设计要求 1、启动软件时,进展密码校验。假设出错三次,那么自动退出系统。 2、实现简易的提示菜单界面,刚运行时应显示版本信息。用所学的知识尽量实现良好的、美观的“人机界面〞,便于软件的操作使用。 3、要求把所有录入的数据以文件的形式,保存在硬盘上。 4、系统包含以下根本功能:登陆功能、显示主菜单功能、职工信息输入信息输出、职工信息查询、职工信息修改、工资排序、工资统计、导出数据、导入数据、退出等。 5、职工信息输入信息输出要求一个职工的根本信息(编号、XX、根本工资)的录入,以文件形式保存——输入。 6、职工工资表浏览工资功能——输出。 7、计算职工的工资〔输入根本工资、扣款、奖金后,马上算出应发工资、税金、实发工资、总工资〕。 8、查询、排序功能——算法。 1) 按编号查询、排序。 2) 按XX查询。 3) 按工资排序。 4) 根本信息的删除与修改〔可选项〕。 3.设计作用与目的 1、通过这次专题实习,稳固和加深对所学相关知识点的理解。 2、进一步熟悉根本流程控制构造——实现分支的if…else语句、switch语句和实现循环的for、while…、do…while语句、break、continue等。 3、根本数据类型、数组、构造体、自定义类、函数的应用。 4、加强对模块化程序设计和面向对象程序设计的理解。 5、掌握C语言程序设计的根本思想,了解简单的系统分析和 6、了解数据库系统的理论 7、掌握数据库设计的根本方法,熟悉数据库设计的步骤; 8、学习根本数据库编程方法。 9、进一步稳固、加深学生所学专业课程?C语言程序设计?的根本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 10全面考核学生所掌握的根本理论知识及其实际业务能力,从而到达提高学生素质的最终目的。 11利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进展数据处理的综合能力。 12对于给定的设计题目,如何进展分析,理清思路,并给出相应的数学模型。 13掌握面向对象的程序设计方法。 14进一步掌握在集成环境下如何调试程序〔单步调试,设置断点、观察表达式,分块调试〕、修改程序和程序的测试。 4.运行环境及工具软件 Windows XP; Visual C++ 6.0〔完整绿色版〕; 5.系统设计 5.1 程序逻辑图 职工工资管理系统 登陆功能 用户管理 职工信息输入 职工信息输出 职工工资信息查询 计算 职工信息修改 工资排序 工资统计 导出数据 导入数据 工资计算 退出 图1:系统构造框图 5.2 程序流程图 选择2 选择1 开场 系统登录 主页面 初始化双链表 录入职工工资 修改职工工资 选择操作 查询职工工资 选择3 浏览职工工资 选择4 选择6 选择9 选择8 选择7 选择5 删除职工工资 删插入职工工资 职工工资排序 保存职工工资 平安退出系统 按编号删除 完毕 6.源程序代码 #include <stdio.h> //标准输入输出 #include <stdlib.h> //处理杂乱 #include <windows.h> //Sleep() #include <string.h> //字符串操作 #include <conio.h> //系统输入输出 #include <time.h> //时间相关 /**********************下面是对用到的全局常量声明*************************/ #define NAME 10 //职工职工XX长度 #define PASSWORD "123" //系统登陆密码 int shuru=0; //全局变量标记当前录入职工个数 FILE *fp; //声明一个文件指针 /**************************构造体定义************************************/ struct person{ //职工工资的构造体 char name[NAME]; //职工职工XX int num; //职工编号 float paid; //职工根本工资 float discount; //扣款 float extra; //奖金 float fare;//税金 float gotpaid;//应发工资 float realpaid; //实发工资 float sum; //总工资 }*pp; //声明一个构造指针 /**********************下面是对用到的函数声明*****************************/ void Password(); //密码验证函数 void Save(struct person per[]); //保存信息函数 void Inputper(struct person per[]); //录入信息函数 void Delper(struct person per[]); //删除信息函数 void Modifyper(struct person per[]); //修改信息函数 void Findper(struct person per[]); //查找信息函数 void Insertper(struct person per[]); //插入信息函数 void Sortper(struct person per[]); //排 序 函 数 void Listper(struct person per[]); //显示职工信息 void fare(struct person per[],int n);//计算税金函数 void Menu(); void Help(); //**************************程序主体************************************** void main() //程序入口 { system("color 027"); //设置当前窗口的背风光和前风光 Password(); //调用密码验函数 Help(); //调用系统信息函数 Menu(); //调用菜单函数 } void Inputper(struct person per[]) //录入职工工资函数原形 { pp=per; //指针指向构造 system("cls"); //清屏 int i; printf("请问你要输入几个职工的信息:"); scanf("%d",&shuru); if((fp=fopen("inputdata","wb+"))==NULL) //当前目录下是否存在INPUTDATA文件 { //"wb+":读写翻开或建立一个二进制文件,允许读和写 printf("Cannot open file strike any key exit!"); getch(); exit(1); } fprintf(fp,"职工编号 职工XX 根本工资 扣款 奖金 应发工资 税金 实发工作 总工资\n"); for(i=0;i<shuru;i++) { printf("输入职工编号:"); //输入职工编号 fflush(stdin); scanf("%d",&per[i].num); printf("输入职工XX:"); //输入职工XX fflush(stdin); gets(per[i].name); printf("输入职工的工资信息\n"); printf("------------------------------\n"); printf("\n根本工资: "); //根本工资 fflush(stdin); scanf("%f",&per[i].paid); printf("\n扣款: "); //扣款 fflush(stdin); scanf("%f",&per[i].discount); printf("\n奖金: "); //奖金 fflush(stdin); scanf("%f",&per[i].extra); printf("\n税金: "); //税金 printf("------------------------------\n"); per[i].sum=per[i].paid-per[i].discount+per[i].extra; per[i].realpaid=per[i].paid-per[i].discount; fprintf(fp," %6d %8s %5.1f\t %5.1f\t %3.1f\t %5.1f\t %4.1f\t\n",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum); } } void Modifyper(struct person per[]) { pp=per; int id,i=0; //id为接收用户输入的职工编号 if((fp=fopen("modifydata.sys","wb+"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } fprintf(fp,"职工编号 职工XX 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资\n"); printf("\n请输入你要修改的职工的编号:"); scanf("%d",&id); Sleep(500); printf("\n\t查找相关数据."); for(i=0;i<=15;i++) { Sleep(250); printf("."); } for(i=0;i<shuru;i++) { if(per[i].num==id) //如果找到了就执行下面语句 ,找不到直接回主界面 { printf("\n输入新职工编号:"); //输入职工编号 fflush(stdin); scanf("%d",&per[i].num); printf("\n输入新职工XX:"); //输入职工XX fflush(stdin); gets(per[i].name); printf("输入职工的工资信息\n"); printf("------------------------------\n"); printf("\n根本工资: "); scanf("%f",&per[i].paid); fflush(stdin); printf("\n扣款: "); scanf("%f",&per[i].discount); fflush(stdin); printf("\n 奖金: "); scanf("%f",&per[i].extra); printf("------------------------------\n"); per[i].sum=per[i].paid-per[i].discount+per[i].extra; per[i].realpaid=per[i].paid-per[i].discount; fprintf(fp," %6d %8s %5.1f\t %5.1f\t %3.1f\t %5.1f\t %4.1f\t\n",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum); } } } void Findper(struct person per[]) //查询职工工资信息 { int i=0,j=0,id; //循环变量和用于接收职工编号 printf("请输入你要查询的职工编号:"); scanf("%d",&id); for(i=0;i<shuru;i++) { if (per[i].num==id) //如果找到你查询的数据就执行下面语句 { //如果找不到。直接回程序主界% per[i].sum=per[i].paid-per[i].discount+per[i].extra; per[i].realpaid=per[i].paid-per[i].discount; printf("\n职工编号 职工XX 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资 \n"); printf("\n%6d %8s %5.1f\t %5.1f\t %3.1f\t %5.1f\t %5.1f\t %5.1f\t %4.1f\t \n\n",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].gotpaid,per[i].fare,per[i].realpaid,per[i].sum); system("pause"); } } } void Insertper(struct person per[]) //插入职工工资信息 { int flag=1; pp=per; int i,id; if((fp=fopen("insertdata.sys","wb+"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } fprintf(fp,"职工编号 职工XX 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资\n"); printf("输入你插入的职工编号:"); scanf("%d",&id); for(i=0;i<shuru;i++) { if(per[i].num==id) //判断职工编号信息否存在? { printf("职工编号信息已经存在!\n"); flag=0; getch(); break; } } if (flag!=0) { shuru++; //插入一个,原来的总数增加1 printf("请确认输入要插入职工编号:"); scanf("%d",&per[shuru-1].num); //如果不存在..那么就把插入的信息放到构造数组最后 printf("输入职工XX:"); fflush(stdin); gets(per[shuru-1].name); printf("输入职工的工资信息\n"); printf("------------------------------\n"); printf("\n根本工资: "); fflush(stdin); scanf("%f",&per[shuru-1].paid); printf("\n扣款: "); fflush(stdin); scanf("%f",&per[shuru-1].discount); printf("\n奖金: "); //奖金 fflush(stdin); printf("\n税金: "); //税金 fflush(stdin); printf("------------------------------\n"); per[i].sum=per[i].paid-per[i].discount+per[i].extra; per[i].realpaid=per[i].paid-per[i].discount; fprintf(fp," %6d %8s %5.1f\t %5.1f\t %3.1f\t %5.1f\t %4.1f\t\n",per[shuru-1].num,per[shuru-1].name,per[shuru-1].paid,per[shuru-1].discount,per[shuru-1].extra,per[i].realpaid,per[shuru-1].sum); Sleep(500); printf("插入数据成功!\n"); getch(); } } void Listper(struct person per[]) //浏览所有职工工 { int i=0; for(i=0;i<shuru;i++) { per[i].gotpaid=per[i].paid-per[i].discount; if (per[i].gotpaid<2000) per[i].fare=0; else if (per[i].gotpaid>=2000&&per[i].gotpaid<4999) per[i].fare=per[i].gotpaid*0.05; else if (per[i].gotpaid>=5000&&per[i].gotpaid<10000) per[i].fare=per[i].gotpaid*0.1; else if (per[i].gotpaid>=10000&&per[i].gotpaid<99999) per[i].fare=per[i].gotpaid*0.25; else if (per[i].gotpaid>=100000) per[i].fare=per[i].gotpaid*0.3; per[i].sum=per[i].paid-per[i].discount+per[i].extra; per[i].realpaid=per[i].paid-per[i].discount; } printf("\n职工编号 职工XX 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资\n"); for(i=0;i<shuru;i++) { printf("\n %6d %8s %5.1f\t %5.1f\t %3.1f\t %5.1f\t %5.1f\t %4.1f\t %5.1f\t",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].gotpaid,per[i].fare,per[i].realpaid, per[i].sum); } getch(); } void Delper(struct person per[]) //删除职工信息函数 { pp=per; struct person temp; int delnum; char ask; int i,j; if((fp=fopen("Deldata.sys","wb+"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } fprintf(fp,"职工编号 职工XX 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资\n"); system("cls"); printf("\n\n\t请输入你要删除的职工的职工编号:"); fflush(stdin); scanf("%d",&delnum); printf("\n\t是否确认删除职工%d的信息(y/n)",delnum); fflush(stdin); ask = getchar(); if(ask != 'n') { for(i=0;i<shuru;i++) { if(per[i].num == delnum) break; } if(i > shuru) printf("\n\t没有你要删除的职工!\n"); else { for(j=i;j<shuru;j++) { temp = per[j]; per[j] = per[j+1]; per[j+1] = temp; } shuru--; //删掉一个职工信息后职工总数相应-1 system("cls"); printf("\n\n删除成功!\n"); } per[i].sum=per[i].paid-per[i].discount+per[i].extra; per[i].realpaid=per[i].paid-per[i].discount; fprintf(fp," %6d %8s \t%5.1f \t%5.1f \t%5.1f \t%5.1f \t%4.1f\n",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum); getch(); } } void Sortper(struct person per[]) //排序函数 { int i,j,chose; //i,j为循环变量 chose为接收用户输入的排序方式 struct person temp; printf("排序前的数据为\n"); printf("\n职工编号 职工XX 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资\n"); for(i=0;i<shuru;i++) { printf("\n %6d %8s %5.1f\t %5.1f\t %3.1f\t %5.1f\t %4.1f\t\n",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum); } printf("\n1.按职工编号排序\t2.按总工资(高→低)排序\n"); printf("\n请您正确选择:"); fflush(stdin); scanf("%d",&chose); if(chose==1) { for(i=0;i<shuru-1;i++) { for(j=i+1;j<shuru;j++) { if(per[i].num>per[j].num) { temp=per[i]; per[i]=per[j]; per[j]=temp; } } } printf("\n职工编号 职工XX 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资\n"); for(i=0;i<shuru;i++) { printf("\n %6d %8s %5.1f\t %5.1f\t %3.1f\t %5.1f\t %4.1f\t\n",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum); } system("pause"); } else if(chose==2) { for(i=0;i<shuru-1;i++) { for(j=i+1;j<shuru;j++) { if(per[i].sum<per[j].sum) { temp=per[i]; per[i]=per[j]; per[j]=temp; } } } printf("\n职工编号 职工XX 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资\n"); for(i=0;i<shuru;i++) { printf("\n %6d %8s %5.1f\t %5.1f\t %3.1f\t %5.1f\t %4.1f\n",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum); } system("pause"); } } void Password() //密码验证函数 { char *pass=NULL; //初始化指针 int i,count; time_t start,end; //时间函数 pass=(char *)malloc(255*sizeof(char)); //分配存 while(1) { count=0; printf("\n\n\n\n\n\t\t\t职 工 工 资 管 理 系 统 \n"); printf("\n\t\t UserName:海蛟 \n"); printf("\n\t\t PassWord:"); while((count>=0)&&(pass[count++]=getch())!=13) //密码输入 { if(pass[0]=='\b') { count=0; continue; } else if(pass[count-1]=='\b') { printf("%c%c%c",'\b','\0','\b'); count-=2; } else putchar('*'); } pass[--count]='\0'; if(!strcmp(pass,PASSWORD)) //开场验证 { printf("\n\n\t\t\t\t\t\tLogining"); for(i=0;i<=25;i++) { Sleep(250); printf("."); } system("cls"); printf("\n\n\n\n\n\n\n\n\n\t\t\t"); printf(" 欢 迎 登 陆 职 工 工 资 管 理 系 统 !\n\n"); start=time(NULL); end=time(NULL); while(end-start<2) //延时2秒执行以下程序 { end=time(NULL); } system("cls"); free(pass); //释放储存密码的存 return ; } free(pass); //释放密码错误的那块存 pass=(char *)malloc(255*sizeof(char)); //重新分配储存密码存 system("cls"); printf("\a\n\n\n\n\n\n\n\n\t\t\t\t密 码 错 误 !"); getch(); system("cls"); } } void Menu() { struct person per[50]; //最大职工人数 struct person *p; //声明一个构造指针 p=per; //指针指向构造变量per int i,in; //接收用户的选择 char ch; //用于判断是否继续 do { system("cls"); printf("\n\n"); printf("\t\t =============================================\n"); printf("\t\t  * 职 工 工 资 管 理 系 统 *\n"); printf("\t\t *===========================================*\n"); printf("\t\t *     1. 录入职工工资       *\n"); printf("\t\t  *                     *\n"); printf("\t\t *     2. 修改职工工资       *\n"); printf("\t\t  *                     *\n"); printf("\t\t *     3. 查询职工工资       *\n"); printf("\t\t  *                     *\n"); printf("\t\t *     4. 浏览职工工资      *\n"); printf("\t\t  *                     *\n"); printf("\t\t *     5. 删除职工工资      *\n"); printf("\t\t  *                     *\n"); printf("\t\t *     6. 插入职工工资      *\n"); printf("\t\t  *                     *\n"); printf("\t\t *     7. 职工工资排序       *\n"); printf("\t\t  *                     *\n"); printf("\t\t *     8. 保存职工工资       *\n"); printf("\t\t  *                     *\n"); printf("\t\t *     9. 平安退出系统       *\n"); printf("\t\t =============================================\n"); printf("\t\t  请您正确选择: "); if(!(scanf("%d",&in)==1)) { while((ch=getchar())!='\n') putchar(ch); printf(" 没有此选项,请正确选择!"); getch(); continue; } fflush(stdin); switch(in) { case 1: Inputper(per); //调用录入职工工资函数 break; case 2: Modifyper(per); //调用修改职工工资函函数 break; case 3: Findper(per); //调用查询职工工资函数 break; case 4: Listper(per); //调用浏览职工工资函数 break; case 5: Delper(per); //调用删除职工工资函数 break; case 6: Insertper(per); //插入职工工资信息 break; case 7: Sortper(per); //调用职工工资排序函数 break; case 8: Save(per); //保存职工工资函数 break; case 9: //退出系统 break; default: printf("没有此选项,请正确选择!"); getch(); break; } }while(in!=9); system("cls"); printf("\n\n\n\n\n\n\n\n\t\t\t"); printf("谢 谢 使 用 本 系 统 !\n\n"); printf("\n\n\t\t\t\t\tEnding"); for(i=0;i<=30;i++) { Sleep(300); printf("."); } printf("\n"); } void Help() { printf("====================================================================\n"); printf("\n\n\t\t\t\t系 统 信 息\n"); printf("====================================================================\n"); printf("\n\n\t\t本系统是职工工资管理系统,在职工的XX栏可以输入汉字"); printf("\n\t\t如果在输入中没看到任何信息那么是因为输入错误或无信息"); printf("\n\t\t系统中的 :实发工资 = 根本工资 - 扣款 ,不需要输入"); pri
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服