C语言课设——职工工资管理系统
c课程设计工资管理系统
![c课程设计工资管理系统](https://img.taocdn.com/s3/m/6e5f6fe203d276a20029bd64783e0912a2167c9e.png)
c 课程设计工资管理系统一、教学目标本课程旨在通过学习工资管理系统的设计与实现,使学生掌握以下知识目标:1.理解工资管理的基本概念和流程。
2.掌握常用的编程语言和数据库管理系统。
3.学习软件工程的基本原则和方法。
学生将具备以下技能目标:1.能够使用编程语言实现简单的工资管理功能。
2.能够使用数据库管理系统进行工资数据的存储和管理。
3.能够运用软件工程的方法进行工资管理系统的开发和维护。
通过本课程的学习,学生将培养以下情感态度价值观目标:1.培养对计算机科学和软件工程的兴趣和热情。
2.培养解决问题的能力和团队合作精神。
3.培养对工作的敬业精神和对工资管理的重视。
二、教学内容本课程的教学内容将按照以下大纲进行和安排:1.工资管理系统的概述:介绍工资管理的基本概念和流程。
2.编程语言和数据库管理系统的学习:学习常用的编程语言和数据库管理系统,并进行相关的实践操作。
3.软件工程的原则和方法:学习软件工程的基本原则和方法,并将其应用到工资管理系统的设计和实现中。
4.工资管理系统的实现:通过编程实践,实现工资管理系统的基本功能。
5.工资管理系统的测试和优化:对实现的工资管理系统进行测试和优化,以确保其正确性和效率。
三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法进行教学,包括:1.讲授法:通过讲解和演示,向学生传授工资管理系统的相关知识和技能。
2.讨论法:学生进行小组讨论,促进学生之间的交流和合作。
3.案例分析法:通过分析实际的工资管理案例,帮助学生理解和应用所学的知识和技能。
4.实验法:安排学生进行实验操作,实践和巩固所学的知识和技能。
四、教学资源为了支持教学内容和教学方法的实施,将选择和准备以下教学资源:1.教材:选择适合学生年级和知识水平的工资管理系统相关教材。
2.参考书:提供相关的参考书籍,供学生进行深入学习和参考。
3.多媒体资料:制作和收集与工资管理系统相关的多媒体资料,如演示文稿、视频等。
c语言课程设计职工工资管理系统源代码
![c语言课程设计职工工资管理系统源代码](https://img.taocdn.com/s3/m/26ada668b307e87101f696bc.png)
绝对可以完美运行,下面有运行图片#include<stdio.h> //调用库函数#include<string.h> //字符串处理#include<conio.h> //控制台输入输出#include<stdlib.h> //定义杂项函数及内存分配函数#define N 2 //宏定义以3代替N/******************************************************************************函数声明*******************************************************************************/ void enter();int menu();void input();void output();void search();void search_employeeid();void search_name();void edit();void array();void array_basesalary();void array_postwage();void array_totalwage();void statistics();void save();void load();/******************************************************************************职工类型定义*******************************************************************************/ struct employee{char employeeid[10];char name[10];char sex[10];int age;float basesalary;float postwage;float totalwage;};/******************************************************************************职工变量定义******************************************************************************/ struct employee emp[N];struct employee replace;struct employee *p=emp;/*****************************************************************************系统主函数******************************************************************************/ void main(){int c;while(1){printf(" \n\n\n\n");printf(" 欢迎进入职工工资管理系统\n\n\n");printf(" 1 进入管理系统\n\n");printf(" 0 退出\n\n");printf(" \n\n\n\n");printf(" 请输入你选择:\n");scanf("%d",&c);switch(c){case 1:enter();break;case 0:printf(" 谢谢使用!\n");exit(0);}}}/***************************************************************************** 功能:登陆函数,进行密码验证*****************************************************************************/ void enter(){char q;char key[10],password[10]="china";int k=1,i;printf(" 请输入密码:\n");for(i=0;i<5;i++){q=getch();key[i]=q;printf("*");}while(k<=3){if(strncmp(key,password,5)==0){while(1){int a;//system("cls");a=menu();switch(a){case 1:input();break;case 2:output();break;case 3:search();break;case 4:edit();break;case 5:array();break;case 6:load();statistics();break;case 0:printf("\n\n 谢谢使用!\n\n\n\n");save();exit(0);}}}else{k++;printf(" 输入密码错误!请再次输入:");for(i=0;i<5;i++){q=getch();key[i]=q;printf("*");}if(k>2){if(strncmp(password,key,5)==0)continue;else{printf(" 输入密码错误三次,系统将自动退出!\n");exit(0);}}}}}/************************************************************************功能: 主菜单函数参数:a类型:int说明: 变量返回值: a************************************************************************/int menu(){int a ;printf("\n\n");printf("|*****************欢迎进入职工工资管理系统************************|\n");printf("| |\n");printf("| |\n");printf("| 1 职工信息输入|\n");printf("| |\n");printf("| 2 职工信息输出|\n");printf("| |\n");printf("| 3 职工信息查询|\n");printf("| |\n");printf("| 4 职工信息修改|\n");printf("| |\n");printf("| 5 工资排序|\n");printf("| |\n");printf("| 6 工资统计|\n");printf("| |\n");printf("| 0 退出|\n");printf("| |\n");printf("| |\n");printf("|*****************************************************************|\n");printf("\n\n");printf(" 请输入你所选择的选项:");scanf("%d",&a);while(a>6||a<0){printf(" error!\n");printf(" 请重新输入你所选择的选项:");scanf("%d",&a);}return a;}/********************************************************************************* ***功能:职工信息输入********************************************************************************** ***/void input(){int c;p=emp;printf(" 进入职工信息输入模块\n\n\n");for(c=0;c<N;c++,p++){p[c].totalwage=p[c].basesalary+p[c].postwage;printf(" 请输入第%d个职工信息:\n\n",c+1);printf(" 请输入职工号:\n");scanf("%s",p->employeeid);if(strcmp(p->employeeid,"0")!=0){printf(" 请输入职工姓名:\n");scanf("%s",p->name);printf(" 请输入职工性别: \n");scanf("%s",&p->sex);printf(" 请输入职工年龄: \n");scanf("%d",&p->age);printf(" 请输入职工基本工资:\n");scanf("%f",&p->basesalary);printf(" 请输入职工岗位工资:\n");scanf("%f",&p->postwage);printf(" 职工信息输入完成!\n\n");}elsereturn;}save();}/******************************************************************************* 功能:职工信息输出********************************************************************************/ void output(){int j;load();p=emp;printf(" 进入职工信息输出模块\n\n\n");printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("-------------------------------------------------------------------------------\n");for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");}printf("\n\n 职工信息输出完成!\n\n");getchar();}/******************************************************************************功能:职工信息查询******************************************************************************/ void search(){int j;while(1){printf("*********************职工信息查询*********************\n\n\n");printf(" 1 按职工号查询\n");printf(" 2 按职工姓名查询\n");printf(" 0 退出该项操作\n");printf("\n\n");while(1){printf(" 请输入你的选择\n");scanf("%d",&j);if(j>=0&&j<=2){switch(j){case 1:search_employeeid();break;case 2:search_name();break;case 0:return;}}else{printf(" 输入错误!\n\n");printf(" 请再次输入你的选择: \n\n");}}}}/******************************************************************************* 功能:按职工号查询函数*******************************************************************************/ void search_employeeid(){char employeeid[10];int k,j;p=emp;printf("*********************按职工号查询职工信息*****************************\n\n\n\n");printf(" 请输入要查询职工的职工号:\n\n");scanf("%s",employeeid);for(k=0;k<N;k++){if(strcmp(employeeid,p->employeeid)==0){j=k;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");break;}else{printf(" not found\n");return;}}}/*****************************************************************************功能:按职工姓名查询函数*****************************************************************************/ void search_name(){char name[10];int flog=0;int f,j;p=emp;printf("******************************按职工姓名查询职工信息***********************\n\n\n");printf(" 请输入要查询职工的姓名:\n\n");scanf("%s",name);for(f=0;f<N;f++,p++){if(strcmp(name,p->name)==0){j=f;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");break;}else{printf(" not found \n\n");return;}}getchar();}/*******************************************************************************功能:职工信息修改函数*******************************************************************************/ void edit(){char e[10];int g=0,j;char flog;p=emp;printf(" 请输入你要修改职工的职工号:\n");scanf("%s",e);for(g=0;g<N;g++){// if(*e==p[g].employeeid)if(strcmp(e,p->employeeid)==0){j=g;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p[j].sex ,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");printf(" 是否要修改该职工信息?y(是)or n(否)?\n\n");getchar();scanf("%c",&flog);if(flog == 'y'){printf(" 请输入新姓名:\n");scanf("%s",p->name);printf(" 请输入性别:\n");scanf("%s",&p->sex);printf(" 请输入年龄:\n");scanf("%d",&p->age);printf(" 请输入基本工资:\n");scanf("%f",&p->basesalary);printf(" 请输入岗位工资:\n");scanf("%f",&p->postwage);printf(" 修改职工信息成功!\n\n");}if(flog == 'n'){printf(" 退出该项操作!\n\n");return;}save();}if(g==N){printf(" not found \n\n\n");return;}}}/************************************************************************ 功能:职工工资排列函数************************************************************************/ void array(){int j;while(1){printf("*************************工资排序*********************\n\n");printf(" 1 按基本工资排序\n\n");printf(" 2 按岗位工资排序\n\n");printf(" 3 按总工资排列\n\n");printf(" 0 退出\n\n");printf("\n\n\n");while(1){printf(" 请输入你的选择:\n\n");scanf("%d",&j);if(j>=0&&j<=3){switch(j){case 1:array_basesalary();break;case 2:array_postwage();break;case 3:array_totalwage();break;case 0:return;}}else{printf(" 输入错误!\n\n\n");printf(" 请再次输入你的选择:\n\n");}}}}/**************************************************************************功能:按基本工资排列(选择法)***************************************************************************/void array_basesalary(){int i,j,k;p=emp;for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++){if(p[k].basesalary<p[j].basesalary)k=j;}if(k!=i){replace=emp[k];emp[k]=emp[i];emp[i]=replace;}}for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/************************************************************************功能:按岗位工资排列(冒泡法)*************************************************************************/void array_postwage(){int i,j;p=emp;for(i=0;i<N;i++){for(j=0;j<N-i;j++){if(p[j].postwage<p[j+1].postwage){replace=emp[j];emp[j]=emp[j+1];emp[j+1]=replace;}}}for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/************************************************************************功能:按总工资排列(插入法)************************************************************************/void array_totalwage(){int i,j;p=emp;for(i=1;i<N;i++){replace=emp[i];for(j=i-1;j>=0&&p[i].totalwage>p[i].totalwage;j--){emp[j+1]=emp[j];emp[j+1]=replace;}}for(j=N-1;j>=0;j--){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别| 年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/*************************************************************************功能:工资统计函数**************************************************************************/void statistics(){int z,a=0,b=0,c=0;p=emp;for(z=0;z<N;z++){if(p[z].totalwage>3000){a++;continue;}if(p[z].totalwage>=2000&&p[z].totalwage<=3000){b++;continue;}if(p[z].totalwage<=2000&&p[z].totalwage>0){c++;continue;}}printf(" 总工资在3000元以上的职工人数有:%d\n\n",a);printf(" 总工资在2000元至3000元的职工人数有:%d\n\n",b);printf(" 总工资在2000元以下的职工人数有:%d\n\n",c);getchar();}/*************************************************************************** 功能:导出函数***************************************************************************/ void save(){int k;FILE *fp;p=emp;if((fp=fopen("emp_list","wb"))==NULL){printf(" Create file error!\n");return;}for(k=0;k<N;k++,p++){if(fwrite(p,sizeof(struct employee),1,fp)!=1){printf(" file save error!\n\n");break;}elsecontinue;}getchar();fclose(fp);}/***********************************************************************功能:导入函数***********************************************************************/ void load(){int l;FILE *fp;p=emp;if((fp=fopen("emp_list","rb"))==NULL){printf(" Create file error!\n");exit(0);}for(l=0;l<N;l++,p++){if(fread(p,sizeof(struct employee),1,fp)!=1){printf(" file read error!\n\n");break;}elsecontinue;}getchar();fclose(fp);}下面是实验结果。
c语言工资管理系统课程设计
![c语言工资管理系统课程设计](https://img.taocdn.com/s3/m/d550b3f1d0f34693daef5ef7ba0d4a7303766c48.png)
c语言工资管理系统课程设计一、课程目标知识目标:1. 掌握C语言中数据类型、变量、运算符、控制结构等基本知识;2. 学会使用数组、结构体等C语言高级特性;3. 理解文件操作在C语言中的应用;4. 掌握工资管理系统的基本功能模块及其实现方法。
技能目标:1. 能够运用C语言编写简单的工资管理系统程序;2. 学会分析工资管理系统的需求,设计合理的程序结构;3. 掌握调试程序、解决常见编译错误和逻辑错误的方法;4. 提高学生的编程实践能力和问题解决能力。
情感态度价值观目标:1. 培养学生对待编程的兴趣和热情,激发自主学习C语言的积极性;2. 培养学生的团队协作精神,提高沟通与协作能力;3. 增强学生的信息安全意识,注重保护用户隐私;4. 培养学生遵循编程规范,养成良好的编程习惯。
课程性质分析:本课程为C语言高级应用课程,以实现工资管理系统为项目驱动,结合实际应用场景,让学生在实践中掌握C语言编程技能。
学生特点分析:学生已具备C语言基础知识,具有一定的编程能力,但对复杂程序设计、模块化编程尚需进一步锻炼。
教学要求:结合课程性质和学生特点,注重实践操作,引导学生自主学习,培养编程思维和问题解决能力。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. C语言基础回顾:数据类型、变量、常量、运算符、控制结构(条件语句、循环语句);2. 函数:函数定义、调用、参数传递、返回值;3. 数组与字符串:一维数组、二维数组、字符串操作;4. 指针:指针概念、指针运算、指针与数组、指针与函数;5. 结构体:结构体定义、结构体变量创建、结构体数组、结构体指针;6. 文件操作:文件打开与关闭、读写文件、文件定位;7. 工资管理系统功能模块设计:需求分析、模块划分、数据结构设计;8. 编程实践:编写工资管理系统各功能模块代码,如员工信息管理、工资计算、工资查询等;9. 系统调试与优化:编译错误处理、逻辑错误调试、性能优化;10. 代码规范与编程习惯:命名规范、代码组织、注释使用。
c语言工资管理系统课程设计
![c语言工资管理系统课程设计](https://img.taocdn.com/s3/m/a1085638dcccda38376baf1ffc4ffe473368fdd5.png)
c语言工资管理系统课程设计一、课程目标知识目标:1. 让学生掌握C语言中数组、结构体、文件操作等基本知识,并能将其应用于工资管理系统。
2. 使学生了解工资管理系统的基本功能需求,如员工信息录入、查询、修改和删除等。
3. 帮助学生理解工资计算方法,包括基本工资、加班工资、税金和实发工资等。
技能目标:1. 培养学生运用C语言设计、编写和调试工资管理系统的能力。
2. 提高学生分析问题、解决问题的能力,使其能够根据实际需求,优化系统功能。
3. 培养学生团队协作和沟通能力,通过分组完成任务,共同完成课程设计。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动学习和探究的精神。
2. 培养学生认真负责的态度,对待课程设计任务,养成良好的编程习惯。
3. 引导学生关注实际应用,理解计算机技术在企业管理中的重要性,提高职业素养。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为C语言课程设计,旨在帮助学生将所学知识应用于实际项目中,提高编程能力和解决实际问题的能力。
2. 学生特点:学生已经掌握了C语言的基本知识,具有一定的编程基础,但对实际项目开发尚缺乏经验。
3. 教学要求:结合教材内容,以实用性为导向,注重培养学生的实际操作能力和团队协作能力。
二、教学内容1. 教学大纲:a. C语言数组、结构体和文件操作复习b. 工资管理系统功能需求分析c. 工资计算方法及实现d. 系统设计、编码与调试e. 团队协作与项目展示2. 教学内容安排与进度:a. 第一周:复习C语言数组、结构体和文件操作相关知识,讲解工资管理系统项目背景和功能需求。
b. 第二周:分析工资计算方法,引导学生设计系统功能模块,编写系统设计文档。
c. 第三周:根据设计文档,分组进行编码,实现工资管理系统的基础功能。
d. 第四周:优化系统功能,进行系统调试,确保系统稳定运行。
e. 第五周:团队协作,整理项目文档,准备项目展示。
3. 教材章节与内容:a. 数组、结构体和文件操作:教材第3章、第4章、第6章b. 工资管理系统功能需求分析:教材第10章 实践项目案例c. 工资计算方法及实现:教材第7章 循环与分支结构d. 系统设计、编码与调试:教材第8章 函数与模块化编程e. 团队协作与项目展示:教材第12章 软件工程实践4. 教学内容列举:a. 数组、结构体和文件操作:数组的使用、结构体定义和操作、文件读写。
工资管理系统课程设计c语言
![工资管理系统课程设计c语言](https://img.taocdn.com/s3/m/dac64ce5970590c69ec3d5bbfd0a79563d1ed415.png)
工资管理系统课程设计c语言一、课程目标知识目标:1. 学生能够理解工资管理系统的基本功能需求,掌握C语言实现工资管理系统所需的基本语法和结构;2. 学生能够运用结构体、数组、文件操作等C语言知识模块,实现工资管理系统中数据的存储、查询、修改和删除等功能;3. 学生了解并掌握C语言中的模块化编程思想,将工资管理系统划分为独立的功能模块,提高代码的可读性和可维护性。
技能目标:1. 学生能够运用所学知识,独立完成一个简单的工资管理系统的设计、编码和调试;2. 学生掌握利用C语言进行系统分析、设计和实现的基本方法,具备基本的编程实践能力;3. 学生能够运用调试工具和技巧,对程序进行调试和优化,提高程序运行的稳定性和效率。
情感态度价值观目标:1. 学生通过本课程的学习,培养对编程的兴趣,提高问题解决能力和创新意识;2. 学生在团队协作中,学会沟通、分享和合作,培养良好的团队精神和职业素养;3. 学生认识到编程在工资管理系统等实际应用中的重要性,激发其学习热情,培养积极的学习态度。
课程性质:本课程为高年级C语言程序设计课程的实践环节,旨在让学生通过实际项目的开发,巩固所学知识,提高编程能力。
学生特点:学生已经具备一定的C语言基础,了解基本语法和编程技巧,但实际项目经验不足。
教学要求:结合学生特点,课程设计应注重实践性、实用性和综合性,引导学生运用所学知识解决实际问题,提高编程实践能力。
在教学过程中,关注学生的个体差异,提供适当的指导和帮助,确保学生能够达到预定的学习目标。
通过课程目标的分解,为后续教学设计和评估提供明确的方向。
二、教学内容1. 工资管理系统需求分析:介绍工资管理系统的基本功能,如员工信息管理、工资计算、数据存储与查询等。
教材章节:《C语言程序设计》第十章——文件。
2. C语言基础知识回顾:回顾结构体、数组、指针等基本概念及其在工资管理系统中的应用。
教材章节:《C语言程序设计》第三章——结构体与联合;《C语言程序设计》第四章——数组与字符串;《C语言程序设计》第五章——指针。
工资管理系统课程设计C语言
![工资管理系统课程设计C语言](https://img.taocdn.com/s3/m/67672a12e55c3b3567ec102de2bd960590c6d930.png)
工资管理系统 课程设计 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语言-课程设计-教师工资管理系统(职工工资管理系统)](https://img.taocdn.com/s3/m/8bbbfdc2eefdc8d377ee3290.png)
课程设计教师工资管理系统运行平台: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 welcome(){printf(”\n\n\n 〉>>>>欢迎使用教师工资管理系统Beta1.2〈<<〈<\n”);printf(” *******************************************************\n”);printf(”* C语言课程设计教师工资管理系统*\n”);printf(”*班级: 电气信息类1001班学号:0909100119 *\n”);printf(”*姓名:弓箭*\n");printf(" *******************************************************\n”);printf(”\n\n 按下任意键进入系统..。
c语言课程设计职工工资管理系统
![c语言课程设计职工工资管理系统](https://img.taocdn.com/s3/m/951ec1795627a5e9856a561252d380eb629423c8.png)
一、概述随着社会的发展和进步,工资管理系统在企业管理中扮演着重要的角色。
为了提高工资管理的效率和准确性,许多企业都倾向于引入计算机系统来进行工资管理。
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语言工资管理系统课程设计](https://img.taocdn.com/s3/m/5b9c6f10f342336c1eb91a37f111f18582d00c46.png)
c语言工资管理系统课程设计一、教学目标本课程的目标是使学生掌握C语言在工资管理系统开发中的应用。
具体目标如下:1.理解C语言的基本语法和数据结构。
2.掌握函数的定义和调用。
3.学习模块化编程思想。
4.能够使用C语言编写简单的程序。
5.学会使用C语言进行文件操作。
6.能够独立完成工资管理系统的开发。
情感态度价值观目标:1.培养学生对计算机编程的兴趣。
2.培养学生解决问题的能力。
3.培养学生团队合作的意识。
二、教学内容教学内容以《C程序设计语言》为基础,结合实际情况进行调整。
教学大纲如下:1.C语言概述:介绍C语言的历史和发展,理解C语言的特点。
2.基本语法:学习数据类型、运算符、表达式等基本语法知识。
3.控制结构:学习顺序结构、分支结构和循环结构。
4.函数:学习函数的定义、调用和返回值。
5.数组和字符串:学习一维、二维数组的使用,字符串的基本操作。
6.指针:学习指针的概念和应用。
7.结构体和文件:学习结构体的定义和使用,文件的基本操作。
8.模块化编程:学习模块的划分和调用。
9.工资管理系统实例:以实际项目为例,讲解工资管理系统的开发过程。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解基本语法和理论知识。
2.案例分析法:分析实际项目,理解工资管理系统的开发过程。
3.实验法:动手编写程序,巩固所学知识。
4.讨论法:分组讨论问题,培养团队合作能力。
四、教学资源教学资源包括:1.教材:《C程序设计语言》。
2.参考书:提供相关的参考书籍,以便学生深入理解C语言。
3.多媒体资料:制作PPT等教学课件,辅助讲解。
4.实验设备:提供计算机实验室,方便学生动手实践。
五、教学评估教学评估是检验学生学习成果的重要手段。
本课程的评估方式包括以下几个方面:1.平时表现:评估学生的出勤、课堂表现、参与讨论等情况,占总评的20%。
2.作业:布置课后作业,评估学生的编程能力和理解程度,占总评的30%。
工资管理系统c语言课程设计
![工资管理系统c语言课程设计](https://img.taocdn.com/s3/m/38e98fb1a1116c175f0e7cd184254b35eefd1a3e.png)
工资管理系统c语言课程设计工资管理系统C语言课程设计本设计主要包括以下几个部分:1. 员工信息管理:包括对员工信息的增加、删除、修改和查询功能。
2. 工资计算:根据员工的基本工资、加班工资和奖金等因素,计算员工的实际工资。
3. 工资发放:实现将已经计算好的工资发放给员工,并记录工资发放的日期和金额。
4. 统计报表:根据员工的部门、职位等信息,生成工资统计报表。
设计思路:1. 定义员工信息结构体,包括员工号、姓名、性别、部门、职位、基本工资等字段。
2. 定义全局数组保存所有员工的信息,可以设置一个全局变量表示员工数量,每次添加或删除员工时相应地更新该变量。
3. 实现菜单功能,用户可以选择增加、删除、修改和查询员工信息,以及进行工资计算和工资发放等操作。
4. 增加员工信息时,可以通过用户输入的员工信息创建新的员工结构体,并添加到数组中。
5. 删除员工信息时,可以根据员工号进行查找,找到对应的员工信息并从数组中删除。
6. 修改员工信息时,可以先根据员工号查找对应的员工信息,再让用户输入要修改的字段,然后更新相应的字段。
7. 查询员工信息时,可以根据员工号或姓名进行查找,找到对应的员工信息并输出。
8. 工资计算时,根据员工的基本工资、加班工资和奖金等因素,计算员工的实际工资,并将结果存入员工结构体中的工资字段。
9. 工资发放时,可以通过用户输入的员工号查找对应的员工信息,并将员工的工资发放日期和金额记录下来。
10. 统计报表时,可以根据员工的部门、职位等信息进行筛选,将符合条件的员工信息显示出来。
以上是一个简单的工资管理系统的设计思路,可以根据需要进行更详细的设计和代码编写。
C语言课程设计---职工工资管理系统
![C语言课程设计---职工工资管理系统](https://img.taocdn.com/s3/m/c86d007701f69e3143329474.png)
C语言程序设计课程设计题目:职工工资管理系统院(系):专业班级:学号:学生姓名:指导教师:教师职称:起止时间:课程设计(报告)任务及评语目录第1章课程设计的目的与要求 (1)1.1 课程设计目的 (1)1.2 课程设计的实验环境 (1)1.3 课程设计的预备知识 (1)1.4 课程设计要求 (1)第2章课程设计内容 (2)2.1程序功能介绍 (2)2.2程序整体设计说明 (2)2.2.1设计思路 (2)2.2.2数据结构设计及用法说明 (3)2.2.3程序结构(流程图) (5)2.2.4各模块的功能及程序说明 (6)2.2.5程序结果 (6)2.3程序源代码及注释 (7)第3章课程设计总结 (16)参考资料 (17)第1章课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行Windows 2000/XP操作系统的微机系统。
C语言程序设计及相应的开发环境。
1.3 课程设计的预备知识熟悉C语言及C语言开发工具。
1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2章课程设计内容2.1程序功能介绍该系统能够实现工资信息管理。
系统包括录入,浏览,查询,统计等功能。
其中录入功能要求能够添加新的工资信息到文件;浏览功能要求能按照工资卡号,姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求能够按照工资卡号,姓名查询;统计功能要求能够按照月份累计统计某职工在某时间段实发工资总金额。
C语言课程设计报告---职工工资管理系统
![C语言课程设计报告---职工工资管理系统](https://img.taocdn.com/s3/m/e88520d4cc22bcd126ff0ccf.png)
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语言课程设计工资管理系统
![c语言课程设计工资管理系统](https://img.taocdn.com/s3/m/bc813ea6ba4cf7ec4afe04a1b0717fd5370cb244.png)
c语言课程设计工资管理系统一、教学目标本章节的教学目标是使学生掌握C语言的基本语法,能够运用C语言编写简单的工资管理系统程序。
具体分为以下三个部分:1.知识目标:使学生掌握C语言的数据类型、变量、运算符、控制结构、函数等基本语法知识。
2.技能目标:培养学生运用C语言进行程序设计的能力,使学生能够独立编写并调试简单的工资管理系统程序。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和好奇心,提高学生解决问题的能力,培养学生的团队协作意识。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、变量、运算符、控制结构、函数等。
具体安排如下:1.C语言的基本语法和编程环境:介绍C语言的编程规范,熟悉集成开发环境(如Visual Studio、Code::Blocks等)。
2.数据类型、变量和运算符:整型、浮点型、字符型数据,变量的声明和初始化,算术运算符、关系运算符、逻辑运算符等。
3.控制结构:顺序结构、选择结构(if-else)、循环结构(for、while、do-while)等。
4.函数:函数的定义和声明,调用函数,函数的返回值,函数的参数传递等。
5.工资管理系统实例:设计并实现一个简单的工资管理系统程序,包括员工信息的录入、工资的计算和输出等功能。
三、教学方法本章节的教学方法采用讲授法、案例分析法和实验法相结合的方式进行。
具体安排如下:1.讲授法:讲解C语言的基本语法、数据类型、变量、运算符、控制结构、函数等知识点,让学生系统地掌握C语言的基础知识。
2.案例分析法:通过分析实际的工资管理系统案例,让学生了解并掌握如何运用C语言解决实际问题。
3.实验法:让学生动手编写并调试工资管理系统程序,培养学生的实际编程能力和解决问题的能力。
四、教学资源本章节的教学资源包括教材、参考书、多媒体资料和实验设备等。
具体安排如下:1.教材:选用权威、实用的C语言教材,如《C程序设计语言》(K&R)、《C Primer Plus》等。
C语言课程设计工资管理系统
![C语言课程设计工资管理系统](https://img.taocdn.com/s3/m/94a1862e26d3240c844769eae009581b6ad9bd71.png)
界面布局:检查界面布局是否合理,是否符合用户习惯 功能测试:测试各个功能模块是否正常工作,是否有错误提示 性能测试:测试系统的响应速度和稳定性,是否有卡顿现象
兼容性测试:测试系统在不同操作系统和浏览器上的兼容性,是否有显示异常
员工信息录入:包括姓名、性别、年龄、 职位、薪资等信息
员工信息删除:删除不再需要的员工信 息
测试目的:验 证系统功能是 否符合设计要
求
测试内容:功 能测试、性能 测试、安全性
测试等
测试方法:黑 盒测试、白盒 测试、灰盒测
试等
测试结果:列 出测试过程中 发现的问题及
解决方案
测试结论:对 系统的整体性 能和稳定性进
行评估
测试建议:针 对测试中发现 的问题提出改
进建议
硬件要求:服务器、网络设备、存 储设备等
部署步骤:安装操作系统、安装数 据库管理系统、安装Web服务器、 部署工资管理系统等
添加标题
添加标题
添加标题
添加标题
软件要求:操作系统、数据库管理 系统、Web服务器等
维护方案:定期备份数据、定期检 查系统运行情况、定期更新系统软 件等
系统运行环境:Windows、Linux等操作系统 硬件要求:CPU、内存、硬盘等 软件安装:安装C语言编译器、数据库管理系统等 系统维护:定期备份数据、更新软件、修复漏洞等
升级方式:自动升级或手动升级 升级内容:功能升级、性能升级、安全升级等 扩展方式:插件扩展、模块扩展、功能扩展等 扩展内容:增加新功能、优化性能、提高安全性等
汇报人:
排序算法:快速排序、归并排序、 堆排序等
图算法:最短路径、最小生成树等
添加标题
添加标题
添加标题
添加标题
C语言课程设计报告-工资管理系统
![C语言课程设计报告-工资管理系统](https://img.taocdn.com/s3/m/04ecc8024b35eefdc8d33361.png)
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语言课程设计报告 职工工资管理系统](https://img.taocdn.com/s3/m/aa20f6044a73f242336c1eb91a37f111f1850ddb.png)
一.设计需求说明一、职工工资管理系统功能设计要求1. 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5. 删除记录:可删除数据文件中的任一记录。
6.恢复记录:能恢复被删除的任一记录。
7. 统计: (A) 计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在2000 元以上、2000~1500 元、1500~1000 元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
8.保存数据文件功能。
9.打开数据文件功能。
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
程序运行结果如下表所示(记录个数至少8 个)。
二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。
同时将数据储存在ckerk_list文件中并自动保存至磁盘。
注:如首次使用,尚未输入数据,请先输入数据。
输入的数据将自动保存。
再次选择输入功能时原数据将被覆盖。
②保存:将输入的资料存入磁盘读取文件clerk_list,若文件不存在,打印“打开失败并退出。
若存在,则通过循环语句将输入到结构体数组的数据逐个输入磁盘。
职工工资管理系统c语言程序设计
![职工工资管理系统c语言程序设计](https://img.taocdn.com/s3/m/5e0bd533178884868762caaedd3383c4bb4cb40c.png)
职工工资管理系统 C 语言程序设计简介职工工资管理系统是一个用于帮助企业管理职工工资的程序,它可以实现对职工的基本信息、工作时长、工资等进行管理。
本文将介绍如何使用 C 语言实现一个简单的职工工资管理系统。
功能设计1. 添加职工信息系统可以添加新的职工信息,包括职工编号、姓名、性别、职位等。
2. 修改职工信息已有职工信息可以进行修改,如姓名、性别、职位等。
3. 计算工资系统可以根据职工的工作时长和基础工资计算出实际工资。
4. 查询职工信息可以通过职工编号或姓名查询职工的详细信息。
5. 显示所有职工信息将所有职工的信息显示在界面上。
开发流程1. 定义数据结构首先,我们需要定义一个数据结构Employee来保存职工的信息,包括职工编号、姓名、性别、职位、基础工资等字段。
struct Employee {int id;char name[50];char gender[10];char position[50];float baseSalary;float hoursWorked;float totalSalary;};2. 编写主要函数添加职工信息void addEmployee(struct Employee emp) {// 将 emp 添加到员工列表中}修改职工信息void updateEmployee(struct Employee emp) {// 根据职工编号修改对应的员工信息}计算工资float calculateSalary(struct Employee emp) {// 计算职工的实际工资return emp.baseSalary + emp.hoursWorked * hourlyRate;}查询职工信息void searchEmployee(int id) {// 根据职工编号查询职工信息}显示所有职工信息void displayAllEmployees() {// 显示所有职工的信息}3. 用户界面交互为了方便用户操作,可以设计一个简单的用户界面,使用控制台打印实现信息展示和输入。
C语言课设——职工工资管理系统
![C语言课设——职工工资管理系统](https://img.taocdn.com/s3/m/90c8be3ba26925c52cc5bfbb.png)
一引言C语言是Combined Language(组合语言)的中英混合简称。
是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数、结构体和文件等,然后确定处理过程。
本课题中主要应用了C语言中的数组、结构体、文件等关键技术。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型;结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构,在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型,结构体只能描述一个对象的状态,不能描述一个对象的行为。
文件是一种组织外部存储介质上的数据的数据类型。
它具有两个特征:一是对一个数据集合可以用一个名字命名;二是保存在外部存储介质上,可以长期保存。
通过此次课设可以锻炼学生理论联系实际能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解,并达到如下目的:1.熟悉C语言程序的编辑、编译链接和运行的过程。
2.熟练运用if语句和switch语句以及嵌套应用。
3.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。
4. 掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。
5.掌握结构体类型变量、数组的定义和使用。
6. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。
2程序流程图主函数源代码:void main(){int choose=0;while(true){show();printf("\t\t====>请选择:");scanf("%d",&choose);system("cls");switch(choose){case 0: exit(0);ame,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3);定义i=0i<Number输出职工信息开始结束定义数据类型numberTemp,i i<numberTempi++添加成功输出职工信息开始结束}}查找职工信息函数的实现查找记录前如图11所示。
职工工资管理系统设计--C语言课程设计
![职工工资管理系统设计--C语言课程设计](https://img.taocdn.com/s3/m/147e33502b160b4e767fcf3a.png)
《C语言程序设计》课程设计实习报告实验题目职工工资管理1.问题描述:添加模块:添加职工或工资的信息删除模块:能通过姓名或者工号删除职工信息修改模块:修改职工信息查询模块:能通过姓名或者工号查询职工信息显示模块:显示全部职工信息文件管理模块:负责源数据文件的管理,包括新建、读取和保存源数据2.概要设计职工工资管理添加模块删除模块修改模块查询模块显示模块文件管理模块按姓名按工号按姓名按工号新建记录数据文件读取记录数据文件保存记录数据文件在各模块处用指针函数来使用后面的保存记录数据文件进行保存。
3.详细设计include <stdio.h># include <stdlib.h># include <string.h>/*宏定义*/# define N 100 /*假设工人个数是100*/# define HEADER1 "----------------------------------------------------------------------\n"# define HEADER2 " | Number | Name | Psex | Age | Time | Ywage | Ykou | Pwage |\n"# define HEADER3 " |--------|--------|--------|-------|------|-------|------|-------|\n"# define FORMAT " |%-8d|%-8s|%-8s|%-7d|%-6d|%-7d|%-6d|%-7d|\n"# define DATA p->num ,p->name,p->sex,p->age,p->time,p->ywage,p->ykou,p->pwage# define END "-----------------------------------------------------------------------\n"/**/typedef struct work{int num; /**/char name[10];char sex[10];int age; /**/int time; /**/int ywage; /**/int ykou; /**/int pwage; /**/}WORK;/**/typedef struct pointer_info{WORK*pHead; /**/int count; /**/char fname[10]; /**/int saveflag; /**/}PI;/**/void Menu();void Add(PI*);void Del(PI*);void Save(PI*pi);void Modify(PI*pi);void Qur(PI*pi);void Load(PI*pi);void New(PI*pi);void Disp(PI*);void Wrong();void printheader();void main(){int sel;WORK *pwork;PI pi;pwork = (WORK*)malloc(N * sizeof(WORK));pi.pHead = pwork;pi.count = 0;pi.fname[0] = '\0';pi.saveflag = 0;/*显示主函数*/Menu();printf("Please input your choice [0~5]:");do{scanf("%d",&sel);if (sel == 0){/*if (pi.saveflag ==1){if (strlen(pi.fname)){Save(&pi);}else{New(&pi);Save(&pi);}}*/break;}switch(sel){case 1:Add(&pi);break;case 2:Del(&pi);break;case 3:Modify(&pi);break;case 4:Qur(&pi);break;case 5:Disp(&pi);break;default:Wrong();break;}}while(1);pwork = pi.pHead;free(pwork);}void printheader(){printf(HEADER1);printf(HEADER2);printf(HEADER3);}void Menu(){system("cls");printf(" The Workers' Grade Wage System \n");printf("****************Menu*************************************\n");printf(" * 1 添加*\n");printf(" * 2 删除*\n");printf(" * 3 修改*\n");printf(" * 4 查询*\n");printf(" * 5 显示*\n");printf(" * 0 退出*\n");printf ("*********************************************************\n"); }void Wrong( ){printf("\n******Error :input has wrong ! press any key to continue******\n");}void Add(PI* pi ){int num;//char sex[10];int nSex;int i,flag=0;WORK * pwork,*p;do{pwork=pi->pHead+pi->count;p=pi->pHead;printf("please input the number:(press '0'return menu)");scanf("%d",&num);for(i=1;i< pi->count; i++){if(num==p->num){printf ("the number you input has exist,please input another one!\n");flag=1;break;}p++;}if(flag){flag=0;continue;}if (num != 0){pwork->num = num;}else{Menu();printf("please input your choice[0~5]:");break;}printf("please input the name:");scanf("%s",pwork->name);printf("please input the sex(0 is woman,1 is man):");scanf( "%d", &nSex );if( nSex == 0 )strcpy( pwork->sex,"woman");elsestrcpy( pwork->sex,"man");printf("please input the time:");scanf("%d", &pwork->time);printf("please input the age:");scanf("%d", &pwork->age);printf("please input the Ywage:");scanf("%d", &pwork->ywage);printf("please input the Ykou:");scanf("%d", &pwork->ykou);pwork->pwage = pwork->ywage-pwork->ykou;pi->count++;pi->saveflag=1;}while(1);}void Qur(PI * pi){int a,i,num;WORK *p;char name[10];p=pi->pHead;Menu();printf("1------search by number\n");printf("2------search by name\n");printf("3------return\n");printf("please input your choice:[1,2]?");scanf("%d",&a);if(a==3){return;}if(a==1){printf("please input the number for search:");scanf("%d",&num);for(i=1;i<= pi->count; i++){if(num==p->num){break;}p++;}if(i>pi->count){printf("no record found\n");return;}else{printheader();printf(FORMAT,DATA);printf(END);}}else if(a==2){printf("please input name to search:");scanf("%s",name);for(i=1;i<=pi->count;i++){if(strcmp(name,p->name) !=0){break;}p++;}if(i>pi->count){printf("no record found\n");return;}else{printheader();printf(FORMAT,DATA);printf(END);}}printf("Please input your choice[0~5]:");}void Modify(PI *pi){int num,i;WORK *p,*pwork;p = pi->pHead;Menu();Disp(pi);printf("please input the number of work to modify:");scanf("%d",&num);for (i = 1;i < pi->count;i++){if (num == p->num){break;}p++;}if (i > pi->count){printf("no record found\n");return;}else{printf("please input the number:(enter '0'return menu)");scanf("%d",&num);if (num!=0){p->num =num;}else{Menu();return;}printf("please input the name:");scanf("%s",p->name);printf("please input the sex:");scanf("%s",p->sex);printf("please input the age:");scanf("%d",&p->age);printf("please input the time:");scanf("%d",&p->time);printf("please input the ywage:");scanf("%d",&p->ywage);printf("please input the ykou:");scanf("%d",&p->ykou);pwork->pwage = pwork->ywage-pwork->ykou;pi->saveflag = 1;}}/*删除职工记录*/void Del(PI * pi){int sel,i,num;char name[10];WORK *p;/*指针函数*/p=pi->pHead;Menu();printf("1------delete by number\n");/*选择工号*/printf("2------delete by name\n");/*选择姓名*/printf("any key other------return\n");/*按别的键就返回*/ printf("please input your choice:[1,2]?\n");scanf("%d",&sel);if(sel!=1&&sel!=2)/*按别的键*/{return;}if( sel == 1 )/*选择工号*/{printf("Please input the number to delete:");scanf("%d",&num);for(i=1;i<=pi->count;i++)/*按学号搜索*/{if(num==p->num){break;}p++;}if(i>pi->count){printf("no record found\n");return;}else if(i==pi->count) /*删除中间某个记录,只需要将count减1*/ {pi->count--;pi->saveflag=1;printf("record delete successfully!\n");}else /*删除某个记录,只要将其后的数据前移覆盖即可*/{memcpy(p,p+1,(pi->pHead + pi->count - p)*sizeof(WORK));pi->count--;pi->saveflag = 1;printf("record delete successfully!\n");}}else if(sel == 2)/*选择姓名*/{printf("please input name to delete:");scanf("%s",name);for(i=1;i<=pi->count;i++){if(strcmp(name,p->name) != 0){break;}p++;}if(i>pi->count){printf("no record found\n");return;}else if(i==pi->count)/*删除中间某个记录,只需要将count减1*/ {pi->count--;pi->saveflag=1;printf("record delete successfully!\n");}else{ /*删除某个记录,只要将其后的数据前移覆盖即可*/ memcpy(p,p+1,(pi->pHead+pi->count-p)*sizeof(WORK) );pi->count--;pi->saveflag=1;printf("record delete successfully!\n");}}printf("please input your choice[0~5]:");}/*显示*/void Disp(PI * pi){int i;WORK *p = pi->pHead;if (pi->count==0){printf("no record found\n");printf("\nplease input your choice[0~5]:");return;}printheader();for(i=1;i<=pi->count;i++){printf(FORMAT,DATA);printf(END);p++;}}void New(PI *pi){FILE * fp;char name[10];char fname[10] =".\\";printf("please input the date file name foe create:");scanf("%s",fname);strcat(fname,name);strcat(fname,".dat");fp=fopen(fname,"wb");if(fp==NULL){printf("\n=====>open file error!\n");return;}strcpy(pi->fname,fname);fclose(fp);}void Load (PI *pi){FILE * fp;WORK * p=pi->pHead;char name [10];char fname [10]= ".\\";printf( "please input the data file name for load:");scanf( "%s",name);strcat(fname,name);fp=fopen(fname , "rb");if(fp==NULL){printf("\n====>open file error!\n");return;}pi->count = 0;pi->saveflag = 0;while(feof(fp)!=0){if(fread(p,sizeof(WORK),1,fp)){pi->count++;p++;}}strcpy(pi->fname,name);printf("load data file %s successfully!",name);fclose(fp);}void Save(PI * pi){FILE * fp;int numwriten;if (!strlen(pi->fname))New(pi);fp=fopen(pi->fname, "wb");if(fp==NULL){printf("\n====>open file error!\n");fclose(fp);return ;}if (pi->count){numwriten = fwrite(pi->pHead,1,pi->count * sizeof(WORK),fp);pi->saveflag = 0;printf("file save succesefully!");}elseprintf("no record for save !");fclose(fp);}4测试分析添加时Q1:性别通过输入0或1输出woman or man有if语句进行选择Q2:实得工资由应发工资减去应扣工资自动得到在程序中做减法添加后删除Q1:通过工号或姓名删除使用if语句进行选择,并用for语句对进行搜索Q2:删除中间摸个记录删除后修改查找Q1:要求通过工号或者姓名查找使用if语句Q2:如果找不到记录则要返回使用if –else语句找不到就输出源数据显示5.课程设计总结通过我们小组的共同努力终于完成任务,制作了职工工资管理系统。
中南大学C语言程序设计实验——职工工资管理系统(附详细操作说明及注释)
![中南大学C语言程序设计实验——职工工资管理系统(附详细操作说明及注释)](https://img.taocdn.com/s3/m/19ad5273a32d7375a41780d7.png)
/* Note:Your choice is C IDE */#include "stdio.h"#include "string.h"#include "conio.h"#include "stdlib.h"struct Message /*此结构体用于存放职工信息以及创建链表*/{char name[30];int ID;int JBGZ;int ZWGZ;int JT;int YLBX;int GJJ;long int Total;float Sum_3;struct Message *nextPrt;} static *head,*Rec_1=NULL,*Rec_2=NULL, *Rec_3=NULL; /*此处创建一个表头,以及三个用于恢复函数的静态变量*/static float Sum_JBGZ=0,Sum_ZWGZ=0,Sum_JT=0,Sum_YLBX=0,Sum_GJJ=0; static float Average_JBGZ,Average_ZWGZ,Average_JT,Average_YLBX,Average_GJJ; void Input(); /*此处声明各一级函数*/ void Output();void Delete();void Add();void Recover();void Modify();void Search();void Statistic();struct Message *creat(struct Message *h); /*此处声明各二级函数*/ void print_Message(struct Message *h);struct Message *del_Message(struct Message *h,char *str);struct Message *add_Message(struct Message *h,struct Message *a,char *strafter); struct Message *Recover_Message(struct Message *h);struct Message *Modify_Message(struct Message *h,char *str);void Search_Message(struct Message *h);void Statistic_Message(struct Message *h);main() /*主函数为菜单页*/ {char i; /*功能:调用各一级函数一级退出程序*/clrscr();gotoxy(27,9);printf("\16[ 中南大学 ]");gotoxy(27,11);printf("\16[ 职工工资管理系统 ]");gotoxy(27,13);printf("\16[ 设计者:刘路 ]");gotoxy(27,15);printf("\16[ 输入任意键继续 ]\n");getch();for(;;){clrscr();gotoxy(25,9);printf("* * * * * * *菜单* * * * * *");gotoxy(25,10);printf("* a. 输入记录 *");gotoxy(25,11);printf("* b. 显示记录 *");gotoxy(25,12);printf("* c. 修改记录 *");gotoxy(25,13);printf("* d. 查找记录 *");gotoxy(25,14);printf("* e. 添加记录 *");gotoxy(25,15);printf("* f. 删除记录 *");gotoxy(25,16);printf("* g. 恢复记录 *");gotoxy(25,17);printf("* h. 统计数据 *");gotoxy(25,18);printf("* i. 退出程序 *");gotoxy(25,19);printf("* 请选择 a—i *");gotoxy(25,20);printf("* * * * * * * * * * * * * **");i=getch();if(i=='i')break;else switch(i){case'a':Input();break; /*调用记录输入函数*/ case'b':Output();break; /*调用记录显示函数*/ case'c':Modify();break; /*调用记录修改函数*/ case'd':Search();break; /*调用记录查找函数*/ case'e':Add();break; /*调用记录添加函数*/case'f':Delete();break; /*调用记录删除函数*/case'g':Recover();break; /*调用记录恢复函数*/case'h':Statistic();break; /*调用记录统计函数*/}}}void Input() /*定义输入函数(一级)*/{ /*主要功能:调用二级子函数创建链表*/head=NULL;head=creat(head);}void Output() /*定义显示函数(一级)*/{ /*主要功能:调用二级子函数实现按一定格式输出所有职工工资信息*/clrscr();print_Message(head);}void Delete() /*定义删除函数(一级)*/{ /*主要功能:调用二级子函数实现删除任意职工工资信息并输出删除后的工资信息*/char name[50],*del_Mes=name;clrscr();gotoxy(1,1);printf("请输入姓名:\n");scanf("%s",name);head=del_Message(head,del_Mes);clrscr();printf("删除数据后:\n");printf("----------------------------------------------------------\n");print_Message(head);}void Add() /*定义添加函数(一级)*/{ /*主要功能:调用二级函数以实现在任意位置添加一条或多条职工工资信息*/char after_name[30],i;struct Message* p;clrscr();gotoxy(1,1);printf("\n请输入需要添加的信息\n");printf("----------------------------------------------------------\n");p=(struct Message*)malloc(sizeof (struct Message));if(p!=NULL){printf("请输入姓名:\n");scanf("%s",&p->name);printf("请输入ID:\n");scanf("%d",&p->ID);printf("请输入基本工资:\n");scanf("%d",&p->JBGZ);printf("请输入职位工资:\n");scanf("%d",&p->ZWGZ);printf("请输入津贴:\n");scanf("%d",&p->JT);printf("请输入医疗保险:\n");scanf("%d",&p->YLBX);printf("请输入公积金:\n");scanf("%d",&p->GJJ);p->Total=p->JBGZ+p->ZWGZ+p->JT-p->YLBX-p->GJJ;printf("总工资为:%d\n",p->Total);}printf("\n输入在哪个职工信息下方添加新信息:\n");scanf("%s",after_name);head=add_Message(head,p,after_name);printf("\n是否继续添加?Y/N");i=getch();while (i!='N'){printf("\n请输入你想要添加的信息\n");printf("----------------------------------------------------------\n");p=(struct Message*)malloc(sizeof (struct Message));if(p!=NULL){printf("请输入姓名:\n");scanf("%s",&p->name);printf("请输入ID:\n");scanf("%d",&p->ID);printf("请输入基本工资:\n");scanf("%d",&p->JBGZ);printf("请输入职位工资:\n");scanf("%d",&p->ZWGZ);printf("请输入津贴:\n");scanf("%d",&p->JT);printf("请输入医疗保险:\n");scanf("%d",&p->YLBX);printf("请输入公积金:\n");scanf("%d",&p->GJJ);p->Total=p->JBGZ+p->ZWGZ+p->JT-p->YLBX-p->GJJ;printf("总工资为:%ld\n",p->Total);}printf("\n输入在哪个职工信息下方添加新信息:\n");scanf("%s",after_name);head=add_Message(head,p,after_name);printf("\n是否继续添加?Y/N");i=getch();}clrscr();gotoxy(1,1);printf("\n添加后的信息为:\n");printf("----------------------------------------------------------\n");print_Message(head);}void Recover() /*定义记录恢复函数(一级)*/{ /*主要功能:调用二级函数以实现恢复已删除的信息*/clrscr();head=Recover_Message(head);gotoxy(1,4);printf("恢复成功!^_^\n");printf("\n输入任意键退出...");getch();}void Modify() /*定义记录修改函数(一级)*/{ /*主要功能:调用二级函数以实现修改任意职工的任意信息*/char name[50],*Mod_Message=name;clrscr();printf("请输入需要修改信息的员工:\n");scanf("%s",name);head=Modify_Message(head,Mod_Message);clrscr();printf("修改后的信息为:\n");printf("----------------------------------------------------------\n");print_Message(head);}void Search() /*定义记录查找函数(一级)*/{ /*主要功能:调用二级函数实现按照姓名或ID通过关键字查找或精确查找的方式搜索职工信息*/ clrscr();Search_Message(head);}void Statistic() /*定义记录统计函数(一级)*/{ /*调用二级函数以实现以表格的形式输出职工工资信息并统计前三项工资总额在一定范围内的人数及比例*/clrscr();Statistic_Message(head);printf("\n输入任意键退出...");getch();}struct Message *creat(struct Message *h) /*定义创建链表函数(二级)*/{char i;struct Message *p1,*p2;clrscr();p1=p2=(struct Message*)malloc(sizeof (struct Message));if(p2!=NULL){gotoxy(1,1);printf("请输入姓名:\n");scanf("%s",&p2->name);printf("请输入ID:\n");scanf("%d",&p2->ID);printf("请输入基本工资:\n");scanf("%d",&p2->JBGZ);printf("请输入职位工资:\n");scanf("%d",&p2->ZWGZ);printf("请输入津贴:\n");scanf("%d",&p2->JT);printf("请输入医疗保险:\n");scanf("%d",&p2->YLBX);printf("请输入公积金:\n");scanf("%d",&p2->GJJ);p2->Total=p2->JBGZ+p2->ZWGZ+p2->JT-p2->YLBX-p2->GJJ;printf("总工资为:%ld\n",p2->Total);h=p2;p2->nextPrt=NULL;printf("输入s退出,输入其他键继续...\n");i=getch();}while(i!='s'){p2=(struct Message*)malloc(sizeof (struct Message));if(p2!=NULL){printf("请输入姓名:\n");scanf("%s",&p2->name);printf("请输入ID:\n");scanf("%d",&p2->ID);printf("请输入基本工资:\n");scanf("%d",&p2->JBGZ);printf("请输入职位工资:\n");scanf("%d",&p2->ZWGZ);printf("请输入津贴:\n");scanf("%d",&p2->JT);printf("请输入医疗保险:\n");scanf("%d",&p2->YLBX);printf("请输入公积金:\n");scanf("%d",&p2->GJJ);p2->Total=p2->JBGZ+p2->ZWGZ+p2->JT-p2->YLBX-p2->GJJ;printf("总工资为:%ld\n",p2->Total);p2->nextPrt=NULL;p1->nextPrt=p2;p1=p2;printf("输入s退出,输入其他键继续...\n");i=getch();}}return h;}void print_Message(struct Message *h) /*定义记录输出函数(二级)*/{struct Message *temp;int i=0;temp=h;gotoxy(1,4);printf("ID\t\b\b姓名\t\b\b基本工资\t职位工资\t\b\b\b\b\b\b津贴\t\b医疗保险\t 公积金\t\b总工资\n");if (temp==NULL) printf("没有找到信息!\n");while(temp!=NULL){i++;printf("%d\t\b\b%s\t\b\b%d\t%d\t %d\t%d\t%d\t%d\n",temp->ID,temp->name,temp->JBGZ,temp->ZWGZ,temp->JT,temp->YLBX,temp->GJJ,temp->Total);(Sum_JBGZ+=temp->JBGZ,Sum_ZWGZ+=temp->ZWGZ,Sum_JT+=temp->JT,Sum_YLBX+=temp->YLBX,Sum_GJJ+=temp->GJJ);temp=temp->nextPrt;}(Average_JBGZ=Sum_JBGZ/i,Average_ZWGZ=Sum_ZWGZ/i,Average_JT=Sum_J T/i,Average_YLBX=Sum_YLBX/i,Average_GJJ=Sum_GJJ/i);printf("各项平均工资:\t\b\b%.1f\t%.1f\t %.1f\t%.1f\t%.1f\n",Average_JBGZ,Average_ZWGZ,Average_JT ,Average_YLBX,Average_GJJ);printf("输入任意键退出...");getch();}struct Message *del_Message(struct Message *h,char *str) /*定义记录删除函数(二级)*/{struct Message *p1,*p2;p1=h;if(p1==NULL){printf("没有找到信息!\n");return h;}p2=p1->nextPrt;if(!strcmp(p1->name,str)){Rec_2=p1;Rec_3=p2;h=p2;return h;}while(p2!=NULL){if(!strcmp(p2->name,str)){Rec_1=p1;Rec_2=p2;Rec_3=p2->nextPrt;p1->nextPrt=p2->nextPrt;return h;}else{p1=p2;p2=p2->nextPrt;}}printf("删除成功!^_^");getch();return h;}struct Message *add_Message(struct Message *h,struct Message *a,char *strafter) /*定义记录添加函数(二级)*/{struct Message *p1,*p2;p1=h;while(p1!=NULL){if(!strcmp(p1->name,strafter)){a->nextPrt=p1->nextPrt;p1->nextPrt=a;return h;}elsep1=p1->nextPrt;}return h;}struct Message* Recover_Message(struct Message *h)/*定义记录恢复函数(二级)*/{if(Rec_1==NULL){h=Rec_2;Rec_2->nextPrt=Rec_3;}else{Rec_1->nextPrt=Rec_2;Rec_2->nextPrt=Rec_3;}return h;}struct Message* Modify_Message(struct Message *h,char *str)/*定义记录修改函数(二级)*/{struct Message *p1;int i;p1=h;if(p1==NULL){printf("没有找到信息!");return h;}while(strcmp(p1->name,str))p1=p1->nextPrt;printf("请输入需要修改的信息(序号):\n");printf("1.姓名 2.ID 3.基本工资 4.职务工资 5.津贴 6.医疗保险 7.公积金 8.总工资\n");scanf("%d",&i);switch(i){case 1:{printf("请输入修改后的姓名:\n");scanf("%s",&p1->name);};break;case 2:{printf("请输入修改后的ID:\n");scanf("%d",&p1->ID);};break;case 3:{printf("请输入修改后的基本工资:\n");scanf("%d",&p1->JBGZ);};break;case 4:{printf("请输入修改后的职务工资:\n");scanf("%d",&p1->ZWGZ);};break;case 5:{printf("请输入修改后的津贴:\n");scanf("%d",&p1->JT);};break;case 6:{printf("请输入修改后的医疗保险:\n");scanf("%d",&p1->YLBX);};break;case 7:{printf("请输入修改后的公积金:\n");scanf("%d",&p1->GJJ);};break;case 8:{printf("请输入总工资:\n");scanf("%d",&p1->Total);};break;}printf("\n修改成功!^_^\n输入任意键查看结果...");getch();return h;}void Search_Message(struct Message *h) /*定义记录搜索函数(二级)*/{struct Message* p1;int a,b,i,u,n=0,x1=0,x2,x3=0,x4=0,x5,x6,w1=1,w2=1,w3=0;char name[50];p1=h;if (p1==NULL) printf("没有找到信息!");printf("请选择查找方式:1.按姓名查找 2.按ID查找\n");scanf("%d",&a);printf("请选择搜索方式:1.按关键字搜索 2.精确搜索\n");scanf("%d",&b);if(a==1&&b==1){printf("请输入姓名:\n");scanf("%s",name);while(p1!=NULL){for(i=0;name[i]!='\0';i++)for(u=0;p1->name[u]!='\0';u++)if (name[i]==p1->name[u]) n++;if (2*n>=strlen(name)){printf("ID\t\b\b姓名\t\b\b基本工资\t职位工资\t\b\b\b\b\b\b津贴\t\b 医疗保险\t公积金\t\b总工资\n");printf("%d\t\b\b%s\t\b\b%d\t%d\t %d\t%d\t%d\t%d\n",p1->ID,p1->name,p1->JBGZ,p1->ZWGZ,p1->JT,p1->YLBX,p1->GJJ,p1->Total);}p1=p1->nextPrt;}p1=h;printf("\n输入任意键退出...");getch();}if(a==1&&b==2){printf("请输入姓名:\n");scanf("%s",name);while(p1!=NULL){if(!strcmp(p1->name,name)){printf("ID\t\b\b姓名\t\b\b基本工资\t职位工资\t\b\b\b\b\b\b津贴\t\b 医疗保险\t公积金\t\b总工资\n");printf("%d\t\b\b%s\t\b\b%d\t%d\t %d\t%d\t%d\t%d\n",p1->ID,p1->name,p1->JBGZ,p1->ZWGZ,p1->JT,p1->YLBX,p1->GJJ,p1->Total);}p1=p1->nextPrt;}p1=h;printf("\n输入任意键退出...");getch();}if(a==2&&b==1){printf("请输入ID:\n");scanf("%d",&x1);x2=x1;while(x2!=0){x2=x2/10;if(x2!=0)w1++; /*记录输入数据的位数w1*/}while(p1!=NULL){x6=x1; /*用x6暂时存储输入的数据*/for(i=1;i<=w1;i++) /*执行w1次循环*/{x3=x6%10; /*x3为x6的末位数*/x5=p1->ID;while(x5!=0){x5=x5/10;if(x5!=0)w2++; /*记录链表中某一节点位数*/}x5=1;x4=p1->ID; /*x4暂时存储链表中某一节点的ID*/for(u=1;u<=w2;u++) /*执行w2次循环*/{if((x4%10)==x3) /*判断x4的末位是否等于x3,若相等,则跳出循环,继续循环以判断该节点中是否还有输入数据中的其他数字*/{w3++; /*某节点的ID中,只要存在输入数据中的某一位数字,则w3增加1*/break;}x4=x4/10; /*判断x4的末位是否等于x3,若不相等,则去掉x4的末位数*/}x6=x6/10; /*去掉x6的末位数,继续循环判断该节点中是否还有输入数据中的其他数据*/w2=1; /*恢复w2的初值,否则位数将继续累加*/}if(w3==w1) /*如果w3与w1相等则表示该节点的ID中包含有输入数据中的所有数字,则输出该节点的数据*/{printf("ID\t\b\b姓名\t\b\b基本工资\t职位工资\t\b\b\b\b\b\b津贴\t\b 医疗保险\t公积金\t\b总工资\n");printf("%d\t\b\b%s\t\b\b%d\t%d\t %d\t%d\t%d\t%d\n",p1->ID,p1->name,p1->JBGZ,p1->ZWGZ,p1->JT,p1->YLBX,p1->GJJ,p1->Total);}p1=p1->nextPrt; /*节点位置向后移动一位,继续循环以判断是否符合输出要求*/};p1=h;printf("\n输入任意键退出...");getch();}if(a==2&&b==2){printf("请输入ID:\n");scanf("%d",&x1);while(p1!=NULL){if(p1->ID==x1){printf("ID\t\b\b姓名\t\b\b基本工资\t职位工资\t\b\b\b\b\b\b津贴\t\b 医疗保险\t公积金\t\b总工资\n");printf("%d\t\b\b%s\t\b\b%d\t%d\t %d\t%d\t%d\t%d\n",p1->ID,p1->name,p1->JBGZ,p1->ZWGZ,p1->JT,p1->YLBX,p1->GJJ,p1->Total);}p1=p1->nextPrt;}p1=h;printf("\n输入任意键退出...");getch();}}void Statistic_Message(struct Message *h) /*定义记录统计函数*/ {struct Message *p1;int i=0,a1=0,b1=0,c1=0;float a2,b2,c2;p1=h;printf("┏━━━┳━━━━━┳━━━━┳━━━━┳━━━┳━━━━┳━━━┳━━━┓\n");printf("┃ ID号┃姓名┃基本工资┃职务工资┃津贴┃医疗保险┃公积金┃总工资┃\n");printf("┣━━━╋━━━━━╋━━━━╋━━━━╋━━━╋━━━━╋━━━╋━━━┫\n");while(p1!=NULL){i++;printf("┃%d\t┃ %s\t \b\b\b\b\b\b\b\b┃%d\t\b\b\b\b ┃ %d\t┃%d\t┃%d\t ┃ %d\t\b\b\b\b\b\b┃%ld ┃\n",p1->ID,p1->name,p1->JBGZ,p1->ZWGZ,p1->JT,p1->YLBX,p1->GJJ,p1->Total);printf("┣━━━╋━━━━━╋━━━━╋━━━━╋━━━╋━━━━╋━━━╋━━━┫\n");(Sum_JBGZ+=p1->JBGZ,Sum_ZWGZ+=p1->ZWGZ,Sum_JT+=p1->JT,Sum_YLBX+=p1->YLBX,Sum_GJJ+=p1->GJJ);p1=p1->nextPrt;}(Average_JBGZ=Sum_JBGZ/i,Average_ZWGZ=Sum_ZWGZ/i,Average_JT=Sum_J T/i,Average_YLBX=Sum_YLBX/i,Average_GJJ=Sum_GJJ/i);printf("┃┃┃┃┃┃┃┃┃\n");printf("┣━━━┻━━━━━╋━━━━╋━━━━╋━━━╋━━━━╋━━━╋━━━┫\n");printf("┃各项平均工资┃%.1f\t\b\b\b\b ┃ %.1f\t┃%.1f\t\b ┃%.1f\t\b\b\b\b ┃%.1f\t\b\b\b\b\b\b┃\t\b\b ┃\n",Average_JBGZ,Average_ZWGZ,Average_JT,Average_YLBX,Average_GJJ);printf("\b┗━━━━━━━━━┻━━━━┻━━━━┻━━━┻━━━━┻━━━┻━━━┛");p1=h;while(p1!=NULL){p1->Sum_3=(p1->JBGZ+p1->ZWGZ+p1->JT);if(p1->Sum_3>=1000 && p1->Sum_3<1500) a1++;if(p1->Sum_3>=1500 && p1->Sum_3<=2000) b1++;if(p1->Sum_3>2000) c1++;p1=p1->nextPrt;}a2=((float)a1/i)*100;b2=((float)b1/i)*100;c2=((float)c1/i)*100;printf("\n\n前三项工资和在1000-1500元之间的职工人数为:%d,占总职工人数的百分比为:%.2f%",a1,a2);printf("\n前三项工资和在1500-2000元之间的职工人数为:%d,占总职工人数的百分比为:%.2f%",b1,b2);printf("\n前三项工资和在2000元以上的职工人数为:%d,占总职工人数的百分比为:%.2f%",c1,c2);p1=h;Sum_JBGZ=0;Sum_ZWGZ=0;Sum_JT=0;Sum_YLBX=0;Sum_GJJ=0;}【欢迎使用职工工资管理系统】本系统可实现对职工工资信息的录入,显示,修改,查找,删除,恢复,添加,统计等功能,具体操作说明如下:进入程序后输入任意键进入主菜单,依菜单所示选择功能,输入序号即可调用该功能:1.输入a:调用记录输入功能,可依照屏幕提示依次输入职工的姓名,ID号,基本工资,职务工资,津贴,医疗保险,公积金(以Enter作为输入结尾)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一引言C语言是Combined Language(组合语言)的中英混合简称。
是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数、结构体和文件等,然后确定处理过程。
本课题中主要应用了C语言中的数组、结构体、文件等关键技术。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型;结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构,在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型,结构体只能描述一个对象的状态,不能描述一个对象的行为。
文件是一种组织外部存储介质上的数据的数据类型。
它具有两个特征:一是对一个数据集合可以用一个名字命名;二是保存在外部存储介质上,可以长期保存。
通过此次课设可以锻炼学生理论联系实际能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解,并达到如下目的:1.熟悉C语言程序的编辑、编译链接和运行的过程。
2.熟练运用if语句和switch语句以及嵌套应用。
3.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。
4. 掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。
5.掌握结构体类型变量、数组的定义和使用。
6. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。
图2程序流程图主函数源代码: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所示。
图3 添加记录前效果图输入一条记录信息:选择1,回车。
输入记录如图4所示。
图4 输入记录效果图添加后如图5所示。
图5 添加记录后效果图添加函数代码流程图,如图6所示。
图6 添加函数流程图添加源代码://添加职工信息void add(){int numberTemp=0;int i=0;struct worker temp;printf("请输入要添加职工个数:");scanf("%d",&numberTemp);for(i=0;i<numberTemp;i++){printf("输入第%d个职工信息\n",i+1);printf("姓名:");scanf("%s",);printf("工号:");scanf("%s",temp.ID);printf("基本工资:");scanf("%d",&temp.salary1);printf("职务工资:");scanf("%d",&temp.salary2);printf("津贴:");scanf("%d",&temp.salary3);wo[Number++]=temp; //写入到数组bc(&temp); //写入到文件}printf("添加成功\n");}3.2 查看职工信息函数的实现查看记录前如图7所示。
图7查看记录前效果图输入一条记录信息:如图8所示:图8输入记录效果图查看记录后如图9所示。
图9查看记录后效果图查看函数代码流程图,如图10所示。
开始定义i=0i<Number输出职工信息结束图10查看函数流程图查看源代码://查看职工信息void see(){int i=0;printf("以下是全部职工\n");printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");while(i<Number){printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3); i++;}}3.3 查找职工信息函数的实现查找记录前如图11所示。
图11查找记录前效果图输入一条记录信息:选择3,回车如图12所示。
图12输入记录效果图查找记录后如图13所示。
图13查找记录后效果图查找函数代码流程图,如图14所示。
图14查找函数流程图查找源代码://查找职工信息void search(){int n=0;printf("1 按姓名查找\n");printf("2 按工号查找\n");scanf("%d",&n);switch(n){case 1: xmcz();break;case 2: ghcz();break;default: printf("输入错误!\n");break;}}void xmcz()//按姓名查找{char name[30];int i=0;printf("请输入要查找职工姓名:");scanf("%s",name);system("cls");printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");for (i=0;i<Number;i++){if (strcmp(name,wo[i].name)==0){printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3); }}}void ghcz()//按工号查找{char id[10];int i=0;printf("请输入要查找职工工号:");scanf("%s",id);system("cls");printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");for (i=0;i<Number;i++){if (strcmp(id,wo[i].ID)==0){printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3); }}}3.4 删除职工信息函数的实现删除记录前如图15所示。
图15删除记录前效果图输入一条记录信息:选择4,回车后, 如图16所示:图16输入记录效果图删除记录后如图17所示。
图17删除记录后效果图删除函数代码流程图,如图18所示。
图18删除函数流程图删除源代码://删除职工信息void del(){int n=0;printf("1 按姓名删除\n");printf("2 按工号删除\n");scanf("%d",&n);switch(n){case 1: xmsc();break;case 2: ghsc();break;}}void xmsc()//按姓名删除{FILE *fp=NULL;char name[30];int i=0;int j=0;printf("请输入要删除的职工姓名:"); scanf("%s",name);for(i=0;i<Number;i++){if (strcmp(name,wo[i].name)==0){for (j=i;j<Number-1;j++){wo[j]=wo[j+1];}Number--;}}//将剩余数据写入文件擦除以前的数据fp=fopen("C://worker.dat","wb");for (i=0;i<Number;i++){fwrite(&wo[i],sizeof(struct worker),1,fp); }fclose(fp);printf("删除成功;\n");}void ghsc()//按工号删除{FILE *fp=NULL;char id[60];int i=0;int j=0;printf("请输入要删除的职工工号:"); scanf("%s",id);for(i=0;i<Number;i++){if (strcmp(id,wo[i].ID)==0){for (j=i;j<Number-1;j++){wo[j]=wo[j+1];}Number--;}}//将剩余数据写入文件擦除以前的数据fp=fopen("C://worker.dat","wb");for (i=0;i<Number;i++){fwrite(&wo[i],sizeof(struct worker),1,fp);}fclose(fp);printf("删除成功;\n");}3.5 统计职工工资函数的实现统计记录前如图19所示。