毕业论文-C语言课程设计报告职工工资管理系统
职工工资管理系统C程序设计报告
一、课程设计目的和要求(一)设计目的1、通过这次专题实习,巩固和加深对所学相关知识点的理解。
2、进一步熟悉基本流程控制结构——实现分支的if…else语句、switch语句和实现循环的for、while…、do…while语句、break、continue等。
3、基本数据类型、数组、结构体、自定义类、函数的应用。
4、加强对模块化程序设计和面向对象程序设计的理解。
5、掌握C\C++语言程序设计的基本思想,了解简单的系统分析和设计方法。
(二)设计要求1、启动软件时,进行密码校验。
若出错三次,则自动退出系统。
2、实现简易的提示菜单界面,刚运行时应显示版本信息。
用所学的知识尽量实现良好的、美观的“人机界面”,便于软件的操作使用。
3、要求把所有录入的数据以文件的形式,保存在硬盘上。
4、系统包含以下基本功能:登陆功能、显示主菜单功能、职工信息输入、职工信息输出、职工信息查询、职工信息修改、工资排序、工资统计、导出数据、导入数据、退出等。
二课程设计任务内容1、设计登陆功能:用户输入口令,如果与系统内保存的密码相一致,则成功;否则重新输入口令,直至输入口令正确才可登陆系统。
若出错三次,则自动退出该系统。
2、显示菜单:用户登录成功,系统显示界面,显示系统功能的提示信息。
3、职工信息输入:用户输入要添加的职工工号,姓名,年龄,性别,基本工资,岗位工资,总工资信息等。
当职工工号为0时输入结束。
输入数据时,须验证数据的输入格式正确,保证职工号的唯一性。
4、职工信息输出:将结构体中的职工信息输出到屏幕上。
5、职工信息查询:1按职工号查询;2按职工姓名查询。
查到则显示他全部信息,否则输出“not found”。
6、职工信息修改:修改职工信息并保存(工号不能修改)。
7、工资排序:对结构体数组中的所有职工按基本工资降序排序,用选择法实现;对结构体数组中的所有职工按岗位工资降序排序,用冒泡法实现;对结构体数组中的所有职工总工资降序排序,用插入法实现。
c语言工资管理系统课程设计报告
程序设计课程设计报告工资管理系统院系:地质工程系班级:地质工程班组员:欣永胡世俊积荣海俊马小成目录一、............................................. 设计目的1二、........................................ 设计容与要求21. 设计容 (3)2. 设计要求 (4)三、......................................... 总流程图设计5四、..................................... 程序详细功能设计6五、............................................. 程序调试7六、............................................. 设计小结8七、............................................. 参考文献9附录 (10)一、设计目的在计算机中建立相应的数据结构,利用程序实现工资的输入、查询、增、删、改、统计、输出等操作。
进一步掌握利用C语言进行程序设计的能力;进一步理解和运用结构化程序设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用流程图表示算法。
《工资管理系统》的设计与实现,此次程序设计主要利用 c 语言的基础知识开发一个简单的职工工资管理系统。
工资管理系统是一个企业不可缺少的一部分,它利用计算机对职工工资进行统一管理,实现工资管理工作的系统化、规化和自动化,为企业提高工作效率。
二、设计容与要求1.设计容主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,至少具有如下功能:对职工信息的录入、修改或删除,通过职工或工号进行查找,并逐项列出相信的职工工资信息,另外也可以查看所有职工目前的工资状况。
C语言课程设计报告教师工资管理系统职工工资管理系统
课程设计教师工资管理系统运行平台:VC6.0〔其他平台未经测试,不一定保证有效〕制弓箭中南大学信息科学与工程学院源代码如下:*include <stdio.h>*include <stdlib.h>*include <string.h>*include <conio.h>*define LEN sizeof(struct teacher)struct teacher{int num;char name[20];char sex[20];char workplace[50];char address[50];long phone;double de_salary;double de_jintie;double de_shenghuobutie;double yingfa_salary;double cost_phone;double cost_water_elec;double cost_rent;double cost_tax;double cost_weisheng;double cost_gongjijin;double cost_all;double shifa_salary;struct teacher *next;};/***********************************读取函数************************************/struct teacher *load(){struct teacher *p1,*p2,*head;FILE *fp;int i=1;if((fp=fopen("save","rb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();return (NULL);}else{head=NULL;p1=(struct teacher *)malloc(LEN);while (fread(p1,LEN-4,1,fp)==1){if(i==1){head=p1;p2=p1;i=2;}else{p2->next=p1;p2=p2->next;}p1=(struct teacher *)malloc(LEN);}p2->next=NULL;free(p1);fclose(fp);return(head);}}/**********************************欢送菜单函数*************************************/void wele(){printf("\n\n\n >>>>>欢送使用教师工资管理系统Beta1.2<<<<<\n");printf(" *******************************************************\n");printf(" * C语言课程设计教师工资管理系统*\n");printf(" * 班级:电气信息类1001班学号:0909100119 *\n");printf(" * XX:弓箭*\n");printf(" *******************************************************\n");printf("\n\n 按下任意键进入系统...");getch();system("cls");}/**********************************制作人员*************************************/void list(){system("cls");printf("\n\n\n >>>>>所有侵权必究<<<<<\n");printf("*******************************************************************************\n");printf("* 学校(College): 中南大学Central South University *\n");printf("* 软件名称(Software):教师工资管理系统Teacher's Salary Managing System *\n");printf("* 版本号(Edition): Beta1.2 *\n");printf("* 制作人(Producer):弓箭James *\n");printf("* 所在班级(Class):电气信息类1001班Electric Information 1001 *\n");printf("* 所在学院(Institute):信息科学与工程学院Information Engineering Institute*\n");printf("*******************************************************************************\n");printf(" >>>>>ILLEGAL COPY BANNED<<<<<\n");printf("\n\n 按下任意键返回主菜单...");getch();}/***********************************菜单函数*****************************************/int menu(){int i;printf("\n\n\n >>>>>欢送使用教师工资管理系统Beta1.2<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师信息*\n");printf(" * 2.插入教师信息*\n");printf(" * 3.修改教师信息*\n");printf(" * 4.删除教师信息*\n");printf(" * 5.浏览教师信息*\n");printf(" * 6.显示制作人员*\n");printf(" * 7.退出系统*\n");printf(" *******************************************************\n");printf(" 请输入你想要的操作:");scanf("%d",&i);getchar();return i;}/***********************************插入函数*****************************************/void input(){struct teacher *head,*p1,*p2,*p3,*px;int i,t;FILE *fp;char k,n='n',num[30],name[20];p1=p2=p3=px=(struct teacher *)malloc(LEN);if((head=load())!=NULL){do{n='n';printf(" 请输入要插入的教师信息:\n");printf(" ------------------------------\n");printf(" 请输入教工号:");gets(num);px->num=atoi(num);printf(" 请输入XX:");gets(px->name);printf(" 请输入性别:");gets(px->sex);printf(" 请输入单位名称:");gets(px->workplace);printf(" 请输入家庭住址:");gets(px->address);printf(" 请输入联系:");gets(num);px->phone=atoi(num);printf(" 请输入根本工资:");gets(num);px->de_salary=atof(num);printf(" 请输入津贴:");gets(num);px->de_jintie=atof(num);printf(" 请输入生活补贴:");gets(num);px->de_shenghuobutie=atof(num);printf(" 请输入费:");gets(num);px->cost_phone=atof(num);printf(" 请输入水电费:");gets(num);px->cost_water_elec=atof(num);printf(" 请输入房租:");gets(num);px->cost_rent=atof(num);printf(" 请输入个人所得税:");gets(num);px->cost_tax=atof(num);printf(" 请输入卫生费:");gets(num);px->cost_weisheng=atof(num);printf(" 请输入公积金:");gets(num);px->cost_gongjijin=atof(num);px->yingfa_salary=px->de_salary+px->de_jintie+px->de_shenghuobutie;px->cost_all=px->cost_phone+px->cost_water_elec+px->cost_rent+px->cost_tax+px->cost_weisheng+px->cost_g ongjijin;px->shifa_salary=px->yingfa_salary-px->cost_all;printf(" 数据输入完毕,按下任意键继续...");getch();system("cls");printf("\n\n\n >>>>>>>>>>> 插入教师信息<<<<<<<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师号*\n");printf(" * 2.输入XX *\n");printf(" * 3.返回上级菜单*\n");printf(" *******************************************************\n");printf(" 请选择插入式:");scanf("%d",&i);getchar();while (i<1||i>3){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入要插入在哪条数据后面:");scanf("%d",&t);getchar();p1=head;while (p1->num!=t){if (p1->next!=NULL){ p1=p1->next;}else{printf(" 查找不到相关数据!\n");break;}}if (p1->num==t){printf("-----------------------------要插入的信息如下:--------------------------------\n");printf("教工号XX 性别单位名称家庭住址联系\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",px->num,px->name,px->sex,px->workplace,px->address,px->phone);printf("费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf\n",px->cost_phone,px->cost_water_elec,px ->cost_rent,px->cost_tax,px->cost_weisheng,px->cost_gongjijin,px->cost_all);printf("根本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",px->de_salary,px->de_jintie,px->de_shenghuobutie,px->yin gfa_salary,px->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定插入吗.〔y或n〕:");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (p1->num==t){if(p1==head)/*如果插入点为头指针*/{p3=p1->next;p1->next=px;px->next=p3;p2=head;}else if(p1->next==NULL)/*如果插入点为末尾指针*/{p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p1->next=px;px->next=NULL;}else{/*如果插入点为中间指针*/p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p3=p1->next;px->next=p3;p1->next=px;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(" 插入成功!按下任意键继续...");getch();}}else {printf(" 插入已被取消!按下任意键继续...");getch();}break;case 2:printf(" 请输入要插入的教师XX:");gets(name);p1=head;while (strcmp((p1->name),name)!=0){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (strcmp((p1->name),name)==0){printf("-----------------------------要插入的信息如下:--------------------------------\n");printf("教工号XX 性别单位名称家庭住址联系\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);printf("费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);printf("根本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yin gfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定插入吗.〔y或n〕:");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (strcmp((p1->name),name)==0){if(p1==head)/*如果插入点为头指针*/{p1->next=px;p2=head;}else if(p1->next==NULL)/*如果插入点为末尾指针*/{p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p1->next=px;px->next=NULL;}else{/*如果插入点为中间指针*/p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p1->next=px;p3=p3->next;px->next=p3;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(" 插入成功!按下任意键继续...");getch();}}else {printf(" 插入已被取消!按下任意键继续...");getch();}break;case 3:break;default :break;}if (i!=3){printf("\n 继续插入其他教师的信息吗.〔y或n〕");scanf("%c",&n);getchar();}}while((n=='y'||n=='Y')&&i!=3);}printf(" 数据插入成功!按下任意键返回主菜单...");getch();getchar();}/***********************************输入函数*****************************************/void insert(){FILE *fp;char m,num[30];struct teacher *p1;p1=(struct teacher *)malloc(LEN);if((fp=fopen("save","ab"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{printf(" 请输入教师信息:\n");do{printf(" ------------------------------\n");printf(" 请输入教工号:");gets(num);p1->num=atoi(num);printf(" 请输入XX:");gets(p1->name);printf(" 请输入性别:");gets(p1->sex);printf(" 请输入单位名称:");gets(p1->workplace);printf(" 请输入家庭住址:");gets(p1->address);printf(" 请输入联系:");gets(num);p1->phone=atoi(num);printf(" 请输入根本工资:");gets(num);p1->de_salary=atof(num);printf(" 请输入津贴:");gets(num);p1->de_jintie=atof(num);printf(" 请输入生活补贴:");gets(num);p1->de_shenghuobutie=atof(num);printf(" 请输入费:");gets(num);p1->cost_phone=atof(num);printf(" 请输入水电费:");gets(num);p1->cost_water_elec=atof(num);printf(" 请输入房租:");gets(num);p1->cost_rent=atof(num);printf(" 请输入个人所得税:");gets(num);p1->cost_tax=atof(num);printf(" 请输入卫生费:");gets(num);p1->cost_weisheng=atof(num);printf(" 请输入公积金:");gets(num);p1->cost_gongjijin=atof(num);p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_g ongjijin;p1->shifa_salary=p1->yingfa_salary-p1->cost_all;fwrite(p1,LEN-4,1,fp);printf(" 输入下一个.〔y或n〕");m=getchar();if(m!='y'&&m!='Y'){printf(" 数据保存成功!按下任意键返回主菜单...");getch();}getchar();}while (m=='y'||m=='Y');}fclose(fp);}/***********************************修改函数*****************************************/void modify(){struct teacher *head,*p1,*p2;int i;FILE *fp;char m='n',n='n',num2[30];p1=head=(struct teacher *)malloc(LEN);if((head=load())!=NULL){do{int num=0;char name[20];p1=head;system("cls");printf("\n\n\n >>>>>>>>>>> 修改教师信息<<<<<<<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师号*\n");printf(" * 2.输入XX *\n");printf(" * 3.返回上级菜单*\n");printf(" *******************************************************\n");printf(" 请选择修改式:");scanf("%d",&i);getchar();while (i<1||i>3){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入要修改的教师号:");scanf("%d",&num);getchar();while (p1->num!=num){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (p1->num==num){system("cls");printf("\n\n\n >>>>>欢送使用教师工资管理系统Beta1.2<<<<<\n");printf("----------------------------------原信息如下:---------------------------------\n");printf("教工号XX 性别单位名称家庭住址联系\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);printf("费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf\n",p1->cost_phone,p1->cost_water_elec,p1 ->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);printf("根本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yin gfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" *******************************************************\n");printf(" * 1.教师号 2.XX *\n");printf(" * 3.性别 4.单位名称*\n");printf(" * 5.家庭住址 6.联系*\n");printf(" * 7.根本工资8.津贴*\n");printf(" * 9.生活补贴10.费*\n");printf(" * 11.水电费12.房租*\n");printf(" * 13.所得税14.卫生费*\n");printf(" * 15.公积金*\n");printf(" *******************************************************\n");do{printf(" 请选择要修改的数据:");scanf("%d",&i);getchar();while (i>15||i<1){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入新教师号:");gets(num2);p1->num=atoi(num2);break;case 2:printf(" 请输入新XX:");gets(p1->name);break;case 3:printf(" 请输入新性别:");gets(p1->sex);break;case 4:printf(" 请输入新单位名称:");gets(p1->workplace);break;case 5:printf(" 请输入新家庭住址:");gets(p1->address);break;case 6:printf(" 请输入新联系:");gets(num2);p1->phone=atoi(num2);break;case 7:printf(" 请输入新根本工资:");gets(num2);p1->de_salary=atof(num2);break;case 8:printf(" 请输入新津贴:");gets(num2);p1->de_jintie=atof(num2);break;case 9:printf(" 请输入新生活补贴:");gets(num2);p1->de_shenghuobutie=atof(num2);break;case 10:printf(" 请输入新费:");gets(num2);p1->cost_phone=atof(num2);break;case 11:printf(" 请输入新水电费:");gets(num2);p1->cost_water_elec=atof(num2);break;case 12:printf(" 请输入新房租:");gets(num2);p1->cost_rent=atof(num2);break;case 13:printf(" 请输入新所得税:");gets(num2);p1->cost_tax=atof(num2);break;case 14:printf(" 请输入新卫生费:");gets(num2);p1->cost_weisheng=atof(num2);break;case 15:printf(" 请输入新公积金:");gets(num2);p1->cost_gongjijin=atof(num2);break;default:break;}p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_g ongjijin;p1->shifa_salary=p1->yingfa_salary-p1->cost_all;printf(" 继续修改其他数据吗.(y或n):");scanf("%c",&m);getchar();}while (m=='y'||m=='Y');p2=head;if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{fwrite(head,LEN-4,1,fp);do{p2=p2->next;fwrite(p2,LEN-4,1,fp);}while(p2->next!=NULL);printf("------------------------------修改后数据如下:---------------------------------\n");printf("教工号XX 性别单位名称家庭住址联系\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);printf("费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);printf("根本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yin gfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");}fclose(fp);}break;case 2:printf(" 请输入要修改的教师XX:");gets(name);while (strcmp(p1->name,name)!=0){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (strcmp(p1->name,name)==0){system("cls");printf("\n\n\n >>>>>欢送使用教师工资管理系统Beta1.2<<<<<\n");printf("----------------------------------原信息如下:---------------------------------\n");printf("教工号XX 性别单位名称家庭住址联系\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);printf("费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);printf("根本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yin gfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" *******************************************************\n");printf(" * 1.教师号 2.XX *\n");printf(" * 3.性别 4.单位名称*\n");printf(" * 5.家庭住址 6.联系*\n");printf(" * 7.根本工资8.津贴*\n");printf(" * 9.生活补贴10.费*\n");printf(" * 11.水电费12.房租*\n");printf(" * 13.所得税14.卫生费*\n");printf(" * 15.公积金*\n");printf(" *******************************************************\n");do{printf(" 请选择要修改的数据:");scanf("%d",&i);getchar();while (i>15||i<1){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入新教师号:");gets(num2);p1->num=atoi(num2);break;case 2:printf(" 请输入新XX:");gets(p1->name);break;case 3:printf(" 请输入新性别:");gets(p1->sex);break;case 4:printf(" 请输入新单位名称:");gets(p1->workplace);break;case 5:printf(" 请输入新家庭住址:");gets(p1->address);break;case 6:printf(" 请输入新联系:");gets(num2);p1->phone=atoi(num2);break;case 7:printf(" 请输入新根本工资:");gets(num2);p1->de_salary=atof(num2);break;case 8:printf(" 请输入新津贴:");gets(num2);p1->de_jintie=atof(num2);break;case 9:printf(" 请输入新生活补贴:");gets(num2);p1->de_shenghuobutie=atof(num2);break;case 10:printf(" 请输入新费:");gets(num2);p1->cost_phone=atof(num2);break;case 11:printf(" 请输入新水电费:");gets(num2);p1->cost_water_elec=atof(num2);break;case 12:printf(" 请输入新房租:");gets(num2);p1->cost_rent=atof(num2);break;case 13:printf(" 请输入新所得税:");gets(num2);p1->cost_tax=atof(num2);break;case 14:printf(" 请输入新卫生费:");gets(num2);p1->cost_weisheng=atof(num2);break;case 15:printf(" 请输入新公积金:");gets(num2);p1->cost_gongjijin=atof(num2);break;default:break;}p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_g ongjijin;p1->shifa_salary=p1->yingfa_salary-p1->cost_all;printf(" 继续修改其他数据吗.(y或n):");scanf("%c",&m);getchar();}while (m=='y'||m=='Y');p2=head;if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{fwrite(head,LEN-4,1,fp);do{p2=p2->next;fwrite(p2,LEN-4,1,fp);}while(p2->next!=NULL);printf("------------------------------修改后数据如下:---------------------------------\n");printf("教工号XX 性别单位名称家庭住址联系\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);printf("费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);printf("根本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yin gfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");}fclose(fp);}break;case 3:break;default :break;}if (i!=3){printf("\n 继续修改其他教师的信息吗.〔y或n〕");scanf("%c",&n);}}while((n=='y'||n=='Y')&&i!=3);}}/***********************************删除函数*****************************************/void deletes(){struct teacher *head,*p1,*p2,*p3;int i;char k;FILE *fp;char n='n';p1=p2=p3=(struct teacher *)malloc(LEN);if((head=load())!=NULL){do{int num;char name[20];p1=head;system("cls");printf("\n\n\n >>>>>>>>>>> 删除教师信息<<<<<<<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师号*\n");printf(" * 2.输入XX *\n");printf(" * 3.返回上级菜单*\n");printf(" *******************************************************\n");printf(" 请选择删除式:");scanf("%d",&i);getchar();while (i<1||i>3){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入要删除的信息的教师号:");scanf("%d",&num);getchar();while (p1->num!=num){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (p1->num==num){printf("-----------------------------要删除的信息如下:--------------------------------\n");printf("教工号XX 性别单位名称家庭住址联系\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);printf("费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf\n",p1->cost_phone,p1->cost_water_elec,p1 ->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);printf("根本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yin gfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定删除吗.〔y或n〕:");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (p1->num==num){if(p1==head){p1=p1->next;p2=p1;}else if(p1->next==NULL){p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1->next=NULL;}else{p2=head;p3=p1;p1=head;while(p1->next!=p3){p1=p1->next;}p3=p3->next;p1->next=p3;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(" 删除成功!按下任意键继续...");getch();}}else {printf(" 删除已被取消!按下任意键继续...");getch();}break;case 2:printf(" 请输入要修改的教师XX:");gets(name);while (strcmp((p1->name),name)!=0){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (strcmp((p1->name),name)==0){printf("-----------------------------要删除的信息如下:--------------------------------\n");printf("教工号XX 性别单位名称家庭住址联系\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);printf("费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);printf("根本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yin gfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定删除吗.〔y或n〕:");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (strcmp((p1->name),name)==0){if(p1==head){p1=p1->next;p2=p1;}else if(p1->next==NULL){p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1->next=NULL;}else{p2=head;p3=p1;p1=head;while(p1->next!=p3){p1=p1->next;}p3=p3->next;p1->next=p3;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)。
职工工资管理系统c语言课程实践报告
实践报告1.目的:通过此次综合编程实践,使大学生进一步熟悉和掌握C语言的基本知识,基本编程原理;学习用C语言开发应用程序的方法;进一步熟悉计算机程序设计的基本方法,步骤,培养大学生设计,调试,测试程序能力。
2.程序功能介绍:该程序是用链表编写的职工工资管理系统,主要功能实现职工有关信息的录入,分析,查找,增加,修改,排序等功能。
职工工资管理系统上图是程序的主界面A.1是数据录入的功能提示语句B.2是数据分析的功能提示语句C.3是信息查询的功能提示语句D.4是添加信息的功能提示语句E.5是删除信息的功能提示语句F.6是修改信息的功能提示语句G.7是对信息排序的功能提示语句H.8退出该程序的功能提示语句3.具体流程图:3.程序实现1)输入1进入此函数,执行create函数调用insert函数回到create函数,回到主函数2)执行过1选项后便可以执行2选项,进入如下过程调用show report 函数3)回到主函数界面后,按选项3后进入信息查询的程序,如下4)回到主函数界面后,选择选项4进入一下过程5回到主函数后选择5后,进入删除环节调用analysis函数接着调用show report 函数5)回到主函数后,选择6,进入修改界面回到主函数6)在主菜单上选择7,进入排序项8 退出程序4.程序运行演示,在主界面上选择1,输入若干信息,入以下界面:输入4个人信息。
返回后选择2选项界面的上端是每个人的信息,下端是分析表,反映了整体情况返回主菜单后选择3,以编号为1的员工为例返回主菜单后选择4返回主菜单后,选择5,以2号员工为例选择y确定后显示返回主菜单,选择6 以3号为例选择y,确定返回主菜单后,选择8,退出4.5.代码的调试过程:本人的程序由链表实现,由于对链表的运用不是很熟练,所以花了很长的时间编写该程序,大致编完后,在编译与构建的过程中,同时也遇到了很多困难。
例如,在第一次编译的时候,出现了20多个错误与很多警告。
【设计】职工工资管理系统C语言程序课程设计报告
【关键字】设计课程设计报告课程名称C语言程序设计课题名称职工工资管理系统专业机械电子班级1101班学号0121姓名王贝贝指导教师肖伟平何宏郭芳2012年12 月19 日湖南工程学院课程设计任务书课程名称C语言程序设计课题职工工资管理系统专业班级机械电子1101班学生姓名王贝贝学号0121指导老师肖伟平何宏郭芳审批任务书下达日期2012 年12 月19日任务完成日期2012年12月29日一、设计内容与设计要求1.设计内容:职工工资管理系统设计涉及的知识点:①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:1)用C语言实现系统;利用结构体数组实现职工工资的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观;各项显示数据均要求以表格的形式输出;在各功能子模块中应设计相应的二级菜单。
2) 建立一个职工工资信息数据库,文件名为zggzk.txt,并从该文件中读取数据;3) 职工工资管理系统应能提供以下功能:(1)主菜单界面设计。
通过提示用户输入一个数字选项,调用相应的功能函数。
(2)显示功能:完成全部职工记录的显示,显示时按表格的形式,且应有表头;(3)计算功能:完成全部职工的应发工资、税款和实发工资的计算并显示;计算方法是:①应发工资=基本工资+奖金②税款的计算方法是:(基本工资+奖金)<=3500时,税款为0;3500<(基本工资+奖金)<=5000时,税款=(基本工资+奖金-3500)*0.03(基本工资+奖金)>5000时,税款=(基本工资+奖金-3500)*0.1-105③实发工资=应发工资-扣款-税款(4)修改功能:能分别按指定职工工号和按指定姓名修改一个职工的基本工资、奖金和扣款中的一项或多项数据,修改后重新计算职工的应发工资、税款和实发工资,并重新排序和显示;(5)查询功能:要求能分别按工号和按姓名查询一条记录并以表格形式显示;(6)追加功能:追加一条或多条新职工记录,要求在追加过程中有相应的提示信息,完成追加后能重新计算和显示;(7)删除功能:要求可按指定的工号和指定的姓名两种定位方式删除职工的记录。
C语言职工工资管理系统设计报告
C语言职工工资管理系统设计报告设计报告:C语言职工工资管理系统1.系统介绍职工工资管理系统是一种用于管理公司或组织内部职工工资信息的软件系统。
通过该系统,可以方便地录入、修改、查询和删除职工的工资信息,实现对职工工资的统一管理和自动计算。
2.系统需求分析(1)录入职工信息:系统需要提供录入职工信息的功能,包括职工编号、姓名、性别、工作岗位等基本信息。
(2)录入职工工资:系统需要提供录入职工工资的功能,包括基本工资、绩效奖金、加班工资等,以便计算总工资。
(3)查询职工工资:系统需要提供查询职工工资的功能,可以按照职工编号、姓名、性别等关键字查询。
(4)修改职工工资:系统需要提供修改职工工资的功能,可以根据职工编号进行修改。
(5)删除职工信息:系统需要提供删除职工信息的功能,按照职工编号进行删除。
3.系统设计方案(1)数据结构的设计:-职工信息结构体:包括职工编号、姓名、性别、工作岗位等成员。
-职工工资结构体:包括基本工资、绩效奖金、加班工资等成员。
-职工结构体数组:用于存储多个职工的信息和工资数据。
(2)界面设计:-主菜单:包括录入职工信息、录入职工工资、查询职工工资、修改职工工资、删除职工信息等选项。
-子菜单:不同的功能选项对应不同的界面,可以通过输入不同的选择序号实现功能切换。
-信息显示界面:用于显示职工信息和工资信息。
(3)功能设计:-录入职工信息:通过用户输入,将职工信息存储到职工结构体数组中。
-录入职工工资:通过用户输入,将职工工资信息存储到对应的职工工资结构体中。
-查询职工工资:根据用户输入的关键字,查找并显示匹配的职工工资信息。
-修改职工工资:根据用户输入的职工编号,在职工工资结构体中找到对应职工的工资信息,并修改。
-删除职工信息:根据用户输入的职工编号,在职工结构体数组中找到对应职工的信息,并删除。
4.系统实现系统的实现使用C语言编程,使用结构体和数组进行数据的组织和存储,并利用循环和条件判断语句完成功能。
C语言课程设计报告:职工信息管理系统程序设计
1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。
流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。
流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。
工资管理系统课程设计C语言
工资管理系统 课程设计 C语言一、课程目标知识目标:1. 理解工资管理系统的基本概念和功能需求;2. 掌握C语言中的基本数据类型、运算符、控制结构等编程知识点;3. 学会使用C语言设计并实现一个简单的工资管理系统。
技能目标:1. 能够运用C语言编写出结构清晰、逻辑合理的程序代码;2. 能够运用数组、结构体等数据结构存储和管理工资数据;3. 能够运用文件操作实现工资数据的持久化存储。
情感态度价值观目标:1. 培养学生解决问题的能力和团队协作精神,激发学生对编程的兴趣;2. 增强学生对信息技术的认识,使其意识到信息技术在现实生活中的应用价值;3. 培养学生严谨、认真的学习态度,提高学生的编程素养。
课程性质:本课程为C语言编程实践课,旨在让学生通过动手实践,掌握C语言编程的基本技能,并能够运用所学知识解决实际问题。
学生特点:学生为高年级学生,已具备一定的C语言基础,有较强的逻辑思维能力,但对实际应用场景的编程经验不足。
教学要求:结合学生特点,注重实践操作,引导学生从实际问题出发,逐步培养编程思维,提高编程能力。
课程目标分解为具体学习成果,便于教学设计和评估。
二、教学内容1. 工资管理系统概述- 系统需求分析- 功能模块划分2. C语言基础知识回顾- 数据类型- 运算符与表达式- 控制结构(顺序、分支、循环)3. 数据结构设计- 数组- 结构体4. 函数与模块化编程- 函数定义与调用- 模块化设计5. 文件操作- 文件打开与关闭- 文件读写操作6. 工资管理系统功能实现- 员工信息管理- 工资计算- 工资查询- 数据存储与读取7. 测试与调试- 功能测试- 性能测试- 代码调试教学内容安排与进度:第1周:工资管理系统概述及需求分析第2周:C语言基础知识回顾第3周:数据结构设计第4周:函数与模块化编程第5周:文件操作第6周:工资管理系统功能实现(1)第7周:工资管理系统功能实现(2)第8周:测试与调试教材章节及内容:《C语言程序设计》第3章:数据类型、运算符与表达式第4章:控制结构第6章:函数与模块化编程第7章:数组和字符串第8章:结构体与共同体第9章:文件操作教学内容紧密结合课程目标,注重科学性和系统性,通过以上教学内容,使学生能够掌握C语言编程的核心知识,并能够将其应用于工资管理系统的设计与实现。
C语言 职工工资管理系统设计报告
《C语言程序设计》课程设计报告设计题目:职工工资管理系统专业:班级:学号:姓名:信息工程学院1 前言工资管理系统是企业不可缺少的一部分,它利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。
本程序旨在训练读者的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。
本程序中涉及结构体、数组、文件等方面的知识。
2 需求分析2.1 课程设计目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。
通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。
2.2 课程设计任务职工工资管理系统功能设计要求(1)输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
(2)显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
(3)修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
(4)查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
(5)删除记录:可删除数据文件中的任一记录。
(6)统计: (A)计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
(7)保存数据文件功能。
例如:职工工资信息表ID号姓名基本工资职务工资津贴医疗保险- 公积金- 总工资01 张望 1286 794 198 109 135 203402 李明1185 628 135 94 114 174003 王小民895 438 98 64 73 129404 张效章1350 868 210 116 150 216205 彭山745 398 84 61 68 1098各项平均工资 1092.2 625.2 145 88.8 108(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)2.3 设计环境(1)WINDOWS 2000/2003/XP/7/Vista系统(2)Visual C++2.4 开发语言C语言3 分析和设计从主菜单中选择相对应的数字,使程序进入不同的程序模块,用switch实现其功能,程序共分为六个模块,分别为:主函数、Input( )函数(输入函数)、Display(T)显示函数(计算职工工资信息并输入文件)、Delete (T)删除函数(从文件中读入信息并将其删除),Chick(T)查询模块,Change(T);修改模块,sum(T);统计模块3.1 系统模块图图3.1 系统模块图主菜单查 找 功 能 显 示 功 能 删 除 功 能输 入 功 能 退 出 程 序添 加 功 能修 改 功 能 按姓名删除按工号查找 修改工号 修改姓名 修改职务工资修改基本工资修改医疗保修改津贴修改公积金按姓名查找 按工号删除4 具体代码实现#include"stdio.h"#include<stdlib.h>#include<conio.h>#include<string.h> // 头文件static int n=0; // 定义静态全局变量,存储已经读入记录的条数。
c语言课程设计职工工资管理系统
一、概述随着社会的发展和进步,工资管理系统在企业管理中扮演着重要的角色。
为了提高工资管理的效率和准确性,许多企业都倾向于引入计算机系统来进行工资管理。
C语言是一种广泛应用于系统程序设计和应用程序开发的高级语言,具有跨评台性和高效性的特点。
设计一个基于C语言的职工工资管理系统将会成为一个有价值的课程设计。
二、系统功能需求1. 职工信息管理:系统需要能够记录、查看和修改职工的基本信息,包括尊称、工号、部门、入职日期等。
2. 薪资核算:系统应能根据职工的实际出勤、加班情况、请假情况等自动生成薪资,并能够灵活处理各类津贴和抠款。
3. 考勤管理:系统需要提供考勤记录的输入和查询功能,以便及时了解职工的工作情况。
4. 报表输出:系统需要能够生成各类工资报表,方便管理人员进行核对和统计。
5. 数据备份和恢复:系统应具备数据备份和恢复功能,以保证数据的安全性和完整性。
三、系统设计与技术选择在设计该系统时,应采用模块化、分层的设计思路,以便系统具有良好的可维护性和扩展性。
1. 界面设计:可以采用文本界面或图形界面进行设计,具体选择取决于系统的实际应用环境和用户需求。
2. 数据存储:可以选择采用文件系统或数据库来存储系统数据,常见的选择包括文本文件、CSV文件、SQLite数据库等。
3. 算法选择:需要根据系统的具体需求选择合适的算法来实现薪资核算和报表生成等功能。
4. 开发工具:可以选择C语言的集成开发环境(IDE)来进行开发,例如Visual Studio、Dev-C++等。
四、系统实现在进行系统开发时,需要按照设计要求逐步实现各个功能模块,同时进行严格的测试和调试工作,以确保系统的稳定性和准确性。
1. 职工信息管理模块:包括新增、修改、删除职工信息等功能。
2. 薪资核算模块:根据考勤情况自动生成薪资并进行津贴和抠款处理。
3. 考勤管理模块:提供考勤记录的输入和查询功能,确保数据的及时更新和准确性。
4. 报表输出模块:能够生成各类工资报表,包括月度工资表、年度工资统计表等。
C语言课程设计报告---职工工资管理系统
C语言课程设计报告---职工工资管理系统湖南涉外经济学院C 语言课程设计(报告书)题目职工工资管理系统作者肖梦星陈名河学院信息科学与工程学院专业软件工程2012102班任课教师李桥二〇一二年十二月二十七日机房管理系统【设计目的】设计“机房管理系统”使其具有上机、下机、查询上机时间、机器使用情况显示等功能。
1、随时都可以来这里上下机,24小时为你服务。
2、上机时间还可以来查询你的上机时间。
3、还可查询本机房所有电脑的使用情况。
【设计思路】根据要求,把学生的信息输入电脑,文本文件存入。
还保存了记录做以查询,使用情况,另外还应提供键盘式选择菜单实现功能选择。
【总体设计】【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用int main() /*主函数*/{int n=0;for(k=0;k<30;k++) /*全部机器标记为未使用*/com[k].f=0;for(;;){switch(main_menu()){case 1:printf("\t\t\t输入学生信息:\n");n=input(stu,n);break;case 2:printf("\t\t\t学生上机\n");online(stu,n);printf("\t\t");system("pause");break;case 3:printf("\t\t\t学生下机\n");offline(stu,n);printf("\t\t");system("pause");break;case 4:printf("\t\t\t上机时间查询\n"); search(stu,n);printf("\t\t");system("pause");break;case 5:printf("\t\t\t机器使用情况显示\n\n"); display();break;case 0:printf("\n\n\t\t感谢使用机房收费管理系统,欢迎下次使用,再见!\n\n");printf("\t\t");system("pause");exit(0);}}return 0;}2.流程图图 2. 主函数流程图3.程序运行截图图3. 主界面截图说明:选择数字0——5,完成相应功能。
职工工资管理系统c语言程序设计报告
职工工资管理系统1. 背景职工工资管理是企业管理中一个重要且复杂的环节。
合理进行工资管理可以激励员工的工作积极性,提高生产效率和企业的竞争力。
然而,在人工操作的情况下,计算工资涉及到复杂的计算过程和大量的数据处理,容易出现错误和繁琐。
因此,开发一个自动化的职工工资管理系统对于企业的工资管理具有重要意义。
2. 分析职工工资管理系统的核心目标是计算职工的工资,并提供工资查询和报表生成的功能。
为了实现此目标,我们需要设计一个合理的系统架构,并根据需求提供相应的功能模块。
2.1 系统架构职工工资管理系统的基本架构包括以下几个模块:•职工信息管理模块:用于管理职工的基本信息,包括姓名、职位、级别等。
•薪资标准管理模块:用于管理不同职位和级别的薪资标准,包括基本工资、绩效奖金等。
•工资计算模块:根据职工的基本信息和薪资标准,计算实际工资。
•工资查询模块:用于查询职工的工资信息。
•报表生成模块:用于生成各种工资相关的报表,如工资总额、平均工资等。
2.2 功能模块职工工资管理系统应当具备以下功能模块:1.职工信息管理:–添加职工信息–修改职工信息–删除职工信息–查询职工信息2.薪资标准管理:–添加薪资标准–修改薪资标准–删除薪资标准–查询薪资标准3.工资计算:–根据职工信息和薪资标准计算工资4.工资查询:–查询指定职工的工资信息5.报表生成:–生成工资总额报表–生成平均工资报表–生成各部门工资报表2.3 数据结构与算法为了实现上述功能,我们需要选择合适的数据结构和算法来支持系统的运行。
1.数据结构:对于职工信息的管理,我们可以使用链表或数组来存储职工的基本信息。
对于薪资标准的管理,可以使用哈希表或平衡二叉树来存储标准信息。
2.算法:在工资计算模块中,需要根据薪资标准和职工信息计算出实际工资。
可以使用算法来进行工资计算,如基本工资加上绩效奖金等。
3. 结果根据上述分析,我们可以设计并实现一个简单的职工工资管理系统。
c语言课程设计报告-工资管理系统 精品
课程设计报告商贸学院课程设计任务书5 设计题目:工资管理系统学生姓名课程名称C程序设计课程设计专业班级自普本20XX-1 自应本20XX-1地点I302/304 起止时间20XX.6.30-20XX.7.11设计内容及要求主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,至少具有如下功能:工资录入,按人名、基本工资、实发工资、个人所得税进行查询和按部门进行分类统计。
操作界面要符合用户的一般习惯,图形或文本界面都可以。
要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。
设计参数文件记录的字段数量不少于6个,分类统计中统计的项不少于2个。
进度要求1. 布置设计题目,讲解要求和说明 20XX.6.302. 确定设计任务,确定具体的功能,熟悉相关知识 20XX.7.13. 按功能需求确定程序的主要模块 20XX.7.24. 编程实现程序的功能 20XX.7.3 - 20XX.7.45. 调试并完善程序 20XX.7.7 - 20XX.7.86. 撰写课程设计报告 20XX.7.97. 提交课程设计报告并答辩 20XX.7.10- 20XX.7.11参考资料《C程序设计经典教程》清华大学出版社 20XX.3 《C陷阱与缺陷》人民邮电出版社 20XX.2其它说明1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
目录摘要 (1)1设计内容、任务及具体要求 (2)1.1设计内容 (2)1.2设计任务及具体要求 (2)2概要设计 (3)2.1该系统的功能简介 (3)2.2 总体程序框图 (3)2.3各个模块之间的主要关系 (4)3系统功能模块的具体设计 (5)3.1各个模块的程序流程图及运行界面 (5)3.2对关键代码加以分析说明 (15)4程序调试分析 (23)5程序使用说明 (24)6总结 (25)致谢 (26)参考文献 (27)附:源程序 (28)1 设计内容、任务及具体要求1.1设计内容《工资管理查询系统》主要根据课程设计要求进行设计,并了解了公司的职工的工资工作流程,该系统功能主要包括六大模块:1)职工个人说得税的计算模块,根据工资多余5000,在1000—5000之间,少余1000三种情况进行计算。
C语言课程设计报告—工资信息管理系统
C 语言程序设计编程实践是学习C语言程序设计的一重要环节,为提高学生程序设计能力,通过课堂和上机实践练习使学生的程序设计能力上一台阶。
通过前四单元温顾而知新、庖丁解牛、举一反三、熟能生巧等过程的练习设计下面一个完整的程序。
1、题目要求设计“工资信息管理系统”要求:该系统能够实现工资信息管理。
系统包括录入,浏览,查询,统计等功能。
录入功能要求:能够添加新的工资信息到文件;浏览功能要求:能够按照工资卡号,姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求:能够按照工资卡号,姓名查询;统计功能要求:能够按照月份累计统计某职工在某时间段发工资总金额。
职工数据如下:姓名银行卡号月份应发工资水费电费税金实发工资wanglei 05507101 6 5000.00 25.00 35.00 360.00 4580.00wanglei 05507101 7 5100.00 20.00 40.00 370.00 4670.002、分析:根据题目要求,应当把职工工资信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现职工工资浏览,查询,统计等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
3、总体设计:根据题目要求,可以将系统分为六个模块:1)职工工资信息浏览模块;2)添加工工资信息模块;3)统计职工工资总合模块;4)按名字查询职工工资信息模块;5)按卡号查询职工工资信息模块;6)功能选择4、详细设计:#include<iostream.h>#include<stdio.h>#include<stdlib.h>#include<string.h>//头函数名/*********职员工资信息结构体*********//***包括职工的姓名、银行卡好、工作月份、应发工资、实发工资、水费、电费、税***/ struct staff//职员工资信息结构体{char Name[10];char CardNumber[10];int Month;float APWages; float Water; float Electrical; float Tax; };FILE *fp;//定义文件指针===全局变量 struct staff temp;void printf_face()//输出函数 { printf("\n 姓名 银行卡号 月份 应发工资 水费 电费 税 实发工资 \n ");printf("%s %s %d %.2f %.2f %.2f %.2f %.2f\n",,temp.CardNumber,temp.Month,temp.SPWages,temp.Water,temp.Electrical,temp.Tax,temp.APWages);}一、/**********浏览职工工资信息==模块*********/void PrintInformation()//浏览职工工资信息{struct staff temp;if((fp=fopen("wages","rb"))==NULL) { printf("cannot open the file!"); exit(0);}while(fread(&temp,sizeof(struct staff),1,fp)==1) fclose(fp); }二、/**********添加职工工资信息==模块void Increase()//添加职工工资信息 {if((fp=fopen("wages","ab+"))==NULL) { printf("cannot open the file!"); exit(0);}printf("\n 请输入要==添加的工资信息: \n");printf("\n 姓名 银行卡号 月份 应发工资&temp.Electrical); if(temp.SPWages<=800) temp.Tax=0;if((temp.SPWages>800.0)&&(temp.SPWages<1400.0))temp.Tax=(temp.SPWages-800)*0.05;if(temp.SPWages>1400){temp.Tax=(temp.SPWages-1400)*0.1;} fwrite(&temp,sizeof(struct staff),1,fp); fclose(fp);}/***计算税金并添加到文件相应结构体中***/三、/*********统计某职工工资总合==模块void Statistics()//统计某职工工资总合 {struct staff temp; char tempname[10]; float sum=0;int monthstart=0,monthover=0;printf("\n 输入姓名 起始月份 终止月份 if((fp=fopen("wages","rb"))==NULL) {printf("cannot open the file!")}while(fread(&temp,sizeof(struct staff),1,fp)==1) { if(strcmp(,tempname)==0)/******判断是否是该职工******/ { if(temp.Month>=monthstart&&temp.Month<=monthover) { sum+=temp.APWages;}}}printf("%d 月到 %d 月的工资总和fclose(fp); }四、/*********按名字查询某职工工资信息==模块void NameSearch()//按名字查询某职工工资信息 {char tempname[10]; struct staff temp;printf("\n 输入姓名:"); scanf("%s",tempname);if((fp=fopen("wages","rb"))==NULL) {printf("cannot open the file!"); exit(0); }while(fread(&temp,sizeof(struct staff),1,fp)==1) /*** { if(strcmp(,tempname)==0) /** { printf_face();}}fclose(fp);}五、/********按卡号查询某职工工资信息==模块void CardNumberSearch()//按卡号查询某职工工资信息 {char tempCardNumber[10];printf("\n 输入卡号:");scanf("%s",tempCardNumber);if((fp=fopen("wages","rb"))==NULL){printf("cannot open the file!");exit(0);}while(fread(&temp,sizeof(struct staff),1,fp)==1) /***读文件中资料**/{if(strcmp(temp.CardNumber,tempCardNumber)==0) /**判断是否是该卡号**/{printf_face();}}fclose(fp);六、/**********职工工资信息查询==模块int Search(){int n;while(1){printf("\n1. 按照卡号查询: \n ");printf("\n2. 按照姓名查询: \n ");printf("\n0. 返回上级目录: \n");scanf("%d",&n);switch(n){case 1:CardNumberSearch();break;case 2:NameSearch();break;case 0:return 0;break;}}}七、/***************功能选择==模块***********/void ShowMenu(){while(1){ Array printf("1. 添加工资信息: \n");printf("2. 浏览工资信息: \n" );printf("3. 统计工资信息: \n" );printf("4. 查询工资信息: \n");printf("0. 退出系统: " );scanf("%d",&n);switch(n){case 1:Increase();break;case 2:PrintInformation();break;case 3:Statistics();break;case 4:Search();break;case 0:exit(0);break;}}}/***************主函数*************/ void main(){ShowMenu();}运行结果可以达到要求的目的。
c语言课程设计报告_职工工资管理系统
课程设计报告C++课程设计报告题目:人事管理系统设计者:专业班级:学号:指导教师:二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环.同时将数据储存在ckerk_list文件中并自动保存至磁盘。
注:如首次使用,尚未输入数据,请先输入数据.输入的数据将自动保存.再次选择输入功能时原数据将被覆盖.②保存:将输入的资料存入磁盘读取文件clerk_list,若文件不存在,打印“打开失败并退出.若存在,则通过循环语句将输入到结构体数组的数据逐个输入磁盘。
③读取:读取磁盘中的资料打开文件clerk_list ,若文件不存在,打印“打开失败”并退出。
若存在,读取文件中的数据,并返回职工人数。
④显示:显示职工工资资料先通过读取函数的返回值确定职工人数m,再通过循环将员工工资资料逐个打印,当循环次数达到m时退出循环.其中总工资由程序计算,总工资=基本工资+职务工资+津贴—医疗保险—公积金⑤删除:删除某员工的资料打印员工资料并提示输入要删除职工的姓名,输入后若该职工不存在则打印“查无此人”;若存在,则显示该职工资料并询问是否确定删除。
若确定,则删除.删除时,通过对比输入的姓名与资料中的姓名做对比从而确定要删除的项i,从第i项开始,将后一项的各成员的值赋给前一项各对应的成员,完成对第i项的删除。
⑥添加:添加新的员工资料而不覆盖原有资料打印原有职工资料,询问要添加的职工人数并询问是否确定添加.逐个逐项输入员工信息,之后程序计算其总工资。
完成后显示“添加成功",打印新的员工资料并自动保存.添加的方法为:定义一个相同类型的结构体数组,将原有项复制后增添新的项,并保存新的数组。
⑦查找:按ID好查询与按姓名查找员工资料根据提示输入要查询的ID号或姓名,程序通过循环语句将输入的数字与以保存的结构体数组中的数据对比,若相同,则打印“已找到"及该员工的资料;当循环次数等于人数时结束循环,若至结束循环时也没有找到相同的,则打印“查无此人”.⑧修改:修改特定员工的特定资料打印员工信息并提示输入要修改资料的职工姓名.按提示确定要修改,确定要修改的项目,输入要修改成的结果并将该结果赋给对应项的对应成员,完成对特定职工特定项目的修改。
C语言课程设计报告-工资管理系统
C语言课程设计报告-工资管理系统一.系统功能设计一个职工工资管理系统,其功能包括:(1)职工基本工资信息录入包括工号,姓名,应发工资,奖金,扣款,应发工资,扣税,实发工资。
(2)职工基本工资信息保存(3)职工基本工资信息查询按照工号查询按照姓名查询(4)职工基本工资信息显示在屏幕上显示所有的职工基本工资信息。
(5)职工基本工资信息更新能够实现修改,删除,插入,排序功能。
(6)职工基本工资信息统计统计公司员工工资在各等级的人数主界面系统主界面应有如下功能选项录入职工基本工资信息查询职工基本工资信息保存职工基本工资信息删除职工基本工资信息插入职工基本工资信息修改职工基本工资信息统计职工基本工资信息排序职工基本工资信息显示职工基本工资信息退出代码如下:#incl ude <stdio.h>typed ef st ructemplo yee{ char num[10]; //保存职工编号 char name[15]; //保存职工姓名 floa t jbg z; //保存职工基本工资f loatjj; //保存职工奖金f loatkk; //保存职工扣款float yfgz; //保存职工应发工资 fl oat s k; //保存职工税款f loatsfgz; //保存职工实发工资}ZG GZ;voidmenu(){ pr intf(" Empoy ee Sy stem\n"); pr intf("--<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@--<-<-<@\n"); pr intf(" *1 i nputr ecord *2 dele te recor d\n");print f(" *3 sear ch reco rd *4 mo dify rec ord\n"); pri ntf("*5 in sert re cord *6countr ecord\n");p rintf(" *7sortrecor d *8 sav e reco rd\n"); prin tf("*9 dis play rec ord *0 q uit re cord\n"); pr intf("--<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@--<-<-<@\n"); pr intf("Plea se en ter y ou ch oice(0-9)\n");}i nt in put(Z GGZ a[],in t k){ intj,x; ch ar st r[10];j=x=0;while(1) {p rintf("----------------------------\n"); prin tf("请输入职工的编号:(按0返回主菜单)"); sc anf("%s",s tr); str cpy(a[k].n um,st r);f or(j=0;j<k;j++) {if(st rcmp(a[j].num,s tr)==0){ prin tf("已经有工号为%s的员工信息!请重新输入员工号。
C语言职工工资管理系统程序设计报告
C语言职工工资管理系统程序设计报告内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)C语言课程设计报告题目小型职工工资管理系统专业班级 2016级通信工程本科1班组别通信第二组学生姓名院(系)信息工程系指导教师(职称)完成时间 2017年5月31日课程设计任务书题目职工工资管理系统班级 2016级通信工程本科1班学号姓名学号姓名学号姓名学号姓名学号姓名一、主要内容:本课程设计结合本学期所学C语言知识,准备设计开发一个简单职工工资管理系统。
工资管理系统是企业不可或缺的一部分,它利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。
设计开发这个系统需要用到单链表、文件读取操作、结构体、函数、指针等C语言知识。
本课程设计准备通过Windows控制台应用程序实现职工工资管理系统的简单运行。
利用所学知识,本着简单、易用的设计原则,本课程设计尽量实现良好、美观的“人机界面”,便于软件的操作使用。
本次设计主要学习内容包括:(一)进一步学习并熟练掌握C语言语法和编程思想。
(二)学习C语言提供的库函数,熟悉Visual C++ 的开发工具。
(三)学习C语言函数、链表、结构体、文件读取、指针等知识。
(四)学习如何查阅他人的文档进行软件的设计与开发。
二、基本要求:(一)质量要求1.职工工资管理系统基本功能模块的设计应包括:显示主菜单功能、职工信息的录入、添加、删除、修改、查询、排序功能,退出系统。
测试文件的读取与存储是否正常、测试评估界面是否合理,友好。
2.对职工工资管理系统设计并进行调试、修复、完善、测试。
3.定期主动向指导教师汇报任务进度,认真填写相关报告文档。
4.按时完成各阶段工作,不突击,不抄袭。
(二)进度要求1.明确课程设计任务,搜集资料:2017年2月28日—3月14日。
2.完成程序的设计与实现,撰写课程设计论文初稿:2017年3月15日—5月15日。
C语言课设——职工工资管理系统
一引言C语言是Combined Language(组合语言)的中英混合简称。
是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数、结构体和文件等,然后确定处理过程。
本课题中主要应用了C语言中的数组、结构体、文件等关键技术。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型;结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构,在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型,结构体只能描述一个对象的状态,不能描述一个对象的行为。
文件是一种组织外部存储介质上的数据的数据类型。
它具有两个特征:一是对一个数据集合可以用一个名字命名;二是保存在外部存储介质上,可以长期保存。
通过此次课设可以锻炼学生理论联系实际能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解,并达到如下目的:1.熟悉C语言程序的编辑、编译链接和运行的过程。
2.熟练运用if语句和switch语句以及嵌套应用。
3.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。
4. 掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。
5.掌握结构体类型变量、数组的定义和使用。
6. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。
二 系统总体设计2.1程序功能(1)添加职工信息 (2)查看职工信息 (3)查找职工信息 (4)删除职工信息 (5) 统计职工信息 (6) 修改职工信息 (7) 保存数据 (8) 作者信息 (0)退出2.2程序功能图图1 程序功能图2.3主函数流程图职工工资管理系统添加职工信息查看职工信息查找职工信息删除职工信息统计职工信息修改职工信息保存数据作者信息退出图2 程序流程图主函数源代码:选择8作者信息选择0 退出结束统计职工信息删除职工信息修改职工信息选择6 选择5 选择4 按姓名按工号保存数据选择7 按姓名按工号选择3 选择2选择1查找职工信息添加职工信息查看职工信息按姓名按工号 主菜单开始选择操作void main(){int choose=0;while(true){show();printf("\t\t====>请选择:"); scanf("%d",&choose); system("cls");switch(choose){case 0: exit(0);//退出break;case 1: add();back();//添加职工信息break;case 2: see();back();//查看职工信息break;case 3: search();back();// 查找职工信息break;case 4: del();back();//删除职工信息break;case 5: statistics();back();//统计职工工资break;case 6: modify();back();//修改职工信息break;case 7:reserve();back();//保存数据break;case 8:author();back();//作者信息break;default:break;}fflush(stdin);getchar();system("cls");}}三程序详细设计3.1添加职工信息函数的实现添加记录前如图3所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计基础课程设计报告书题目: 职工工资管理系统课程设计任务书目录第1章课程设计的目的与要求..................... 错误!未定义书签。
1.1 课程设计目的 (3)1.2 课程设计的实验环境 (3)1.3 课程设计的预备知识 (3)1.4 课程设计要求 (3)第2章课程设计内容 (4)2.1程序功能介绍 (4)2.2程序整体设计说明 (4)2.2.1设计思路 (4)2.2.2数据结构设计及用法说明 (5)2.2.3各模块的功能及程序说明 (6)2.2.4程序结果 (7)2.3程序源代码及注释 (9)第3章课程设计总结.............................. 错误!未定义书签。
第1章课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行Windows 2003/XP操作系统的微机系统。
C语言程序设计及相应的开发环境。
1.3 课程设计的预备知识熟悉C语言及C语言开发工具。
1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2章课程设计内容2.1程序功能介绍每一个职工的工资信息包含姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金。
编写程序实现对职工工资的录入、显示、修改、查询、保存等功能。
参考数据ID号姓名基本工资职务工资津贴医疗保险- 公积金- 总工资01 张望1286 794 198 109 135 203402 李明1185 628 135 94 114 174003 王小民895 438 98 64 73 129404 张效章1350 868 210 116 150 216205 彭山745 398 84 61 68 10982.2程序整体设计说明根据题目要求,应该把职工工资信息用结构体形式输入,再定义一个变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作。
在程序中需实现职工工资浏览、查询、修改等功能的操作,所以要建立相应的功能模块来实现。
在头文件中将所需包含的函数进行输入,再进行变量的定义,如:定义数据结构,有关职工工资管理需要输入的基本信息再用指针的方法将这些有关变量进行地址存储。
再定义出工资管理整个程序中所需要的函数原型;然后进行主函数的书写,并显示所有数据。
主函数无限循环,数据的录入、修改、查询等均是对内存中的链表进行操作,每次操作后将数据保存到文件。
2.2.1设计思路首先利用while(1)对提示页面无限调用,帮助用户输入对应的正确数字编码,在输入职工信息时,运用void import()调用函数对文件的使用,首先定义一个指针文件,又以写的方式打开此文件,在打开的文件中输入要管理的职工人数,用一个for循环按照姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金的格式循环获取职工的记录,使用fwrite()将职工记录写入文件“word”中,并fclose关闭文件。
在查询职工信息时,按职工号查询,首先是以只读(二进制)的方式打开文件“word”,然后输入要查询的职工号,用一个for循环来控制查询的人数,之后在显示器上显示某一个职工信息,然后关闭文件。
在修改职工信息时,按职工号修改,首先是以读写的方式打开文件“word”。
输入要修改的职工号,用一个for循环来控制输入的数量。
然后对职工的信息进行修改,就可获得新的职工记录。
之后文件指针指向该修改的记录开头,此时用fwrite覆盖当前记录,修改完成时系统会显示修改后的文件数据:姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金然后关闭文件。
在显示职工信息时,运用void browse()调用函数对文件的使用。
首先以只读的方式打开一个文本文件”word”。
操作无误则用for循环输出正在查询职工的:记录号职工号姓名性别年龄工资。
这些完成后用fclose(fp)函数关闭文件。
2.2.2数据结构设计及用法说明数据结构:定义结构体people,用于存放职工的基本信息和工资信息.使用struct结构体编辑主菜单,定义全局变量,用于存放结构体数组。
使用一维数组。
用for语句编辑输入模块,用switch、for语句编辑查找职工数据,用if,for语句编辑修改职工信息。
用法说明:启动后屏幕上会显示下面菜单:1 录入信息2 修改信息3 显示所有4 查询信息5 退出执行者若要执行某一功能,就按下该功能所对应的数字即可。
输入职工信息:在主菜单中输入1则系统会进入新界面并自动提示你输入职工号,输入完成后按回车键系统会逐一提示输入姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金,输入完成后会继续提示输入下一个职工的职工号。
修改职工信息:在主菜单中输2,系统会自动提示你输入要修改的职工号,然后进行修改。
修改成功显示已修改后的文件数据;输入错职工号显示查无此人。
显示职工信息:在主菜单中输入3系统界面是输出菜单界面,按照输入格式:姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金,逐个的输出职工的信息,输出所有职工信息后系统自动退出。
查询职工信息:主菜单中输入4 则进入查询子菜单界面,输入职工号后会出现该职工的信息。
输入错误职工号,显示查无此人。
退出:在主菜单中输入5则退出系统。
并显示“退出成功请关闭”。
2.2.3各模块的功能及程序说明首先是定义了一个输入输出头文件,接着是一个宏定义,下面是函数声明部分,用结构体存储和录入该程序的所有数据,主函数部分包括设计的全部信息,之后是输出主菜单和调用函数,退出程序。
此程序中包括:输入模块、查询模块、修改模块、显示模块。
输入模块:该模块先是对姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金的录入并保存到文件“word ”中。
查询模块:实现按职工号查询每个职工的信息,查询显示姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金修改模块:该模块实现按职工号对职工所有信息的修改。
显示模块: 该模块实现按职工号输出职工的所有信息。
退出模块:保存并且关闭,用来退出while(1)的死循环2.2.4程序结果展示录入模块:修改模块:查询模块:显示模块:退出模块:2.3程序源代码及注释/*每一个职工的工资信息包含姓名、ID号、基本工资、职务工资、岗位津贴、医疗保险、公积金。
编写程序实现对职工工资的录入、显示、修改、查询、保存等功能。
参考数据ID号姓名基本工资职务工资津贴医疗保险- 公积金- 总工资01 张望1286 794 198 109 135 203402 李明1185 628 135 94 114 174003 王小民895 438 98 64 73 129404 张效章1350 868 210 116 150 216205 彭山745 398 84 61 68 1098*/源码:#include<stdio.h>#include<string.h>#include<stdlib.h>#define max 30 //定义void menu();//菜单void import();void browse();//显示所有void search_num();//查询信息void revise();//修改信息struct people { //定义个人信息结构体char no[5]; //编号char name[max]; //名字int basepay;//基本工资int wage; //职务工资int subsidy;//津贴int surance;//医疗保险int fund; //公积金int total; //z总和};struct people num[max]; //定义人员信息数组void main(){//主函数menu();}void menu() //菜单{int a;int i=0;while(1) {printf("\n**********************\n") ;printf("1.录入信息\n") ;printf("2.修改信息\n") ;printf("3.显示所有\n") ;printf("4.查询信息\n") ;printf("5.退出\n") ;printf("\n**********************\n") ;printf ("请输入数字编码");scanf("%d",&a);switch (a) {case 1:{ //录入数据import();break;}case 2:{ //修改信息revise();break;}case 3:{ //显示信息browse();break;}case 4:{ //查询信息search_num();break;}case 5:{ //退出printf("退出成功请关闭") ;defaul:{ //输入错误printtf("请重新输入");break;}}} }void import(){ //录入信息FILE *fp;int n,i; //n用来存储职工数i用来存储第几个员工if ((fp=fopen("word","wb"))==NULL) //{ //printf("不能建立word文件\n"); // 这四行用来判断是否可以正确打开exit(1); //}printf("输入职工人数:");scanf ("%d",&n);for(i=0;i<n;i++){printf("请输入第%d个职工的编号",i+1);scanf("%s",&num[i].no); //职工号printf("请输入第%d姓名信息",i+1);scanf("%s",&num[i].name); //姓名printf("请输入第%d基本工资",i+1) ;scanf("%d",&num[i].basepay) ; //基本工资printf("请输入职务工资") ;scanf("%d",&num[i].wage) ; //职务工资printf("请输入津贴") ;scanf("%d",&num[i].subsidy) ; //津贴printf("请输入医疗保险") ;scanf("%d",&num[i].surance) ; //保险printf("请输入公积金") ;scanf("%d",&num[i].fund) ; //公积金num[i].total=num[i].basepay+num[i].wage+num[i].subsidy+num[i].surance+num[i].fund; //计算总和fwrite(&num[i],sizeof(struct people),1,fp); //写入到文件中}fclose(fp); //关闭文件}void revise(){ //修改信息FILE *fp;int i;char number[5];if((fp=fopen("word","rb+"))==NULL) //二进制读的方式打开printf("不能打开word文件\n");exit(1);}printf("输入要修改的的职工号:");scanf("%s",number);for(i=0;fread(&num[i],sizeof(struct people),1,fp);i++)if(!strcmp(num[i].no,number)) break; //对比职工号如果没有这个职工号就退出if(feof(fp)) //如果fp文件指针到达文件尾{printf("\t查无此人\n");exit(2);}//fseek(fp,i*sizeof(struct people),SEEK_SET);printf("请输入职工新的编号");scanf("%s",&num[i].no);printf("请输入姓名信息");scanf("%s",&num[i].name);printf("请输入基本工资") ;scanf("%d",&num[i].basepay) ;printf("请输入职务工资") ;scanf("%d",&num[i].wage) ;printf("请输入津贴") ;scanf("%d",&num[i].subsidy) ;printf("请输入医疗保险") ;scanf("%d",&num[i].surance) ;printf("请输入公积金") ;scanf("%d",&num[i].fund) ;num[i].total=num[i].basepay+num[i].wage+num[i].subsidy+num[i].surance+num[i].fund;fseek(fp,-(long)sizeof(struct people),SEEK_CUR); //移动指针到所在数组的第一个地址上fwrite(&num[i],sizeof(struct people),1,fp); //写入数据fclose(fp);}void browse(){ //显示信息int i;FILE *fp;if((fp=fopen("word","r"))==NULL){printf("不能打开word文件\n");exit(0);}printf("职工号\t 姓名\t 基本工资\t 职务工资\t 津贴\t 医疗保险\t 公积金\t \t总工资\n");for(i=0;fread(&num[i],sizeof(struct people),1,fp)!=0;i++)printf("%s\t %s\t %d\t\t %d\t\t %d\t %d\t\t %d\t\t %d\t\n",num[i].no,num[i].name,num[i].basepay,num[i].wage ,num[i].subsidy,num[i].surance,num[i].fund,num[i].total);}fclose(fp);}void search_num(){//查询信息FILE *fp;int i;char number[5];if((fp=fopen("word","rb"))==NULL){printf("不能打开word文件\n");exit(1);}printf("要查询的职工号:");scanf("%s",number);for(i=0;fread(&num[i],sizeof(struct people),1,fp);i++)if(!strcmp(num[i].no,number)) break;if(feof(fp)){printf("\t查无此人\n");}printf("职工号\t 姓名\t 基本工资\t 职务工资\t 津贴\t 医疗保险\t 公积金\t 总工资\n");printf("%s\t %s\t %d\t %d\t %d\t %d\t %d\t %d\t\n",num[i].no,num[i].name,num[i].basepay,num[i].wage,num[ i].subsidy,num[i].surance,num[i].fund,num[i].total);fclose(fp);}第3章课程设计总结经过一学期的C语言学习,我们掌握了C语言的基础知识,我对课程设计有了一定的了解,并且通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的。