c语言课程设计报告职工工资管理系统

合集下载

职工工资管理系统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课程设计工资管理系统

c课程设计工资管理系统

c 课程设计工资管理系统一、教学目标本课程旨在通过学习工资管理系统的设计与实现,使学生掌握以下知识目标:1.理解工资管理的基本概念和流程。

2.掌握常用的编程语言和数据库管理系统。

3.学习软件工程的基本原则和方法。

学生将具备以下技能目标:1.能够使用编程语言实现简单的工资管理功能。

2.能够使用数据库管理系统进行工资数据的存储和管理。

3.能够运用软件工程的方法进行工资管理系统的开发和维护。

通过本课程的学习,学生将培养以下情感态度价值观目标:1.培养对计算机科学和软件工程的兴趣和热情。

2.培养解决问题的能力和团队合作精神。

3.培养对工作的敬业精神和对工资管理的重视。

二、教学内容本课程的教学内容将按照以下大纲进行和安排:1.工资管理系统的概述:介绍工资管理的基本概念和流程。

2.编程语言和数据库管理系统的学习:学习常用的编程语言和数据库管理系统,并进行相关的实践操作。

3.软件工程的原则和方法:学习软件工程的基本原则和方法,并将其应用到工资管理系统的设计和实现中。

4.工资管理系统的实现:通过编程实践,实现工资管理系统的基本功能。

5.工资管理系统的测试和优化:对实现的工资管理系统进行测试和优化,以确保其正确性和效率。

三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法进行教学,包括:1.讲授法:通过讲解和演示,向学生传授工资管理系统的相关知识和技能。

2.讨论法:学生进行小组讨论,促进学生之间的交流和合作。

3.案例分析法:通过分析实际的工资管理案例,帮助学生理解和应用所学的知识和技能。

4.实验法:安排学生进行实验操作,实践和巩固所学的知识和技能。

四、教学资源为了支持教学内容和教学方法的实施,将选择和准备以下教学资源:1.教材:选择适合学生年级和知识水平的工资管理系统相关教材。

2.参考书:提供相关的参考书籍,供学生进行深入学习和参考。

3.多媒体资料:制作和收集与工资管理系统相关的多媒体资料,如演示文稿、视频等。

c语言工资管理系统课程设计

c语言工资管理系统课程设计

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语言课程设计报告_职工工资管理系统

课程设计报告C++课程设计报告题目:人事管理系统设计者:专业班级:学号:指导教师:二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。

同时将数据储存在ckerk_list文件中并自动保存至磁盘。

注:如首次使用,尚未输入数据,请先输入数据。

输入的数据将自动保存。

再次选择输入功能时原数据将被覆盖。

②保存:将输入的资料存入磁盘读取文件clerk_list,若文件不存在,打印“打开失败并退出。

若存在,则通过循环语句将输入到结构体数组的数据逐个输入磁盘。

③读取:读取磁盘中的资料打开文件clerk_list ,若文件不存在,打印“打开失败”并退出。

若存在,读取文件中的数据,并返回职工人数。

④显示:显示职工工资资料先通过读取函数的返回值确定职工人数m,再通过循环将员工工资资料逐个打印,当循环次数达到m时退出循环。

其中总工资由程序计算,总工资=基本工资+职务工资+津贴-医疗保险-公积金⑤删除:删除某员工的资料打印员工资料并提示输入要删除职工的姓名,输入后若该职工不存在则打印“查无此人”;若存在,则显示该职工资料并询问是否确定删除。

若确定,则删除。

删除时,通过对比输入的姓名与资料中的姓名做对比从而确定要删除的项i,从第i项开始,将后一项的各成员的值赋给前一项各对应的成员,完成对第i项的删除。

⑥添加:添加新的员工资料而不覆盖原有资料打印原有职工资料,询问要添加的职工人数并询问是否确定添加。

逐个逐项输入员工信息,之后程序计算其总工资。

完成后显示“添加成功”,打印新的员工资料并自动保存。

添加的方法为:定义一个相同类型的结构体数组,将原有项复制后增添新的项,并保存新的数组。

⑦查找:按ID好查询与按姓名查找员工资料根据提示输入要查询的ID号或姓名,程序通过循环语句将输入的数字与以保存的结构体数组中的数据对比,若相同,则打印“已找到”及该员工的资料;当循环次数等于人数时结束循环,若至结束循环时也没有找到相同的,则打印“查无此人”。

C语言职工工资管理系统设计报告

C语言职工工资管理系统设计报告

C语言职工工资管理系统设计报告设计报告:C语言职工工资管理系统1.系统介绍职工工资管理系统是一种用于管理公司或组织内部职工工资信息的软件系统。

通过该系统,可以方便地录入、修改、查询和删除职工的工资信息,实现对职工工资的统一管理和自动计算。

2.系统需求分析(1)录入职工信息:系统需要提供录入职工信息的功能,包括职工编号、姓名、性别、工作岗位等基本信息。

(2)录入职工工资:系统需要提供录入职工工资的功能,包括基本工资、绩效奖金、加班工资等,以便计算总工资。

(3)查询职工工资:系统需要提供查询职工工资的功能,可以按照职工编号、姓名、性别等关键字查询。

(4)修改职工工资:系统需要提供修改职工工资的功能,可以根据职工编号进行修改。

(5)删除职工信息:系统需要提供删除职工信息的功能,按照职工编号进行删除。

3.系统设计方案(1)数据结构的设计:-职工信息结构体:包括职工编号、姓名、性别、工作岗位等成员。

-职工工资结构体:包括基本工资、绩效奖金、加班工资等成员。

-职工结构体数组:用于存储多个职工的信息和工资数据。

(2)界面设计:-主菜单:包括录入职工信息、录入职工工资、查询职工工资、修改职工工资、删除职工信息等选项。

-子菜单:不同的功能选项对应不同的界面,可以通过输入不同的选择序号实现功能切换。

-信息显示界面:用于显示职工信息和工资信息。

(3)功能设计:-录入职工信息:通过用户输入,将职工信息存储到职工结构体数组中。

-录入职工工资:通过用户输入,将职工工资信息存储到对应的职工工资结构体中。

-查询职工工资:根据用户输入的关键字,查找并显示匹配的职工工资信息。

-修改职工工资:根据用户输入的职工编号,在职工工资结构体中找到对应职工的工资信息,并修改。

-删除职工信息:根据用户输入的职工编号,在职工结构体数组中找到对应职工的信息,并删除。

4.系统实现系统的实现使用C语言编程,使用结构体和数组进行数据的组织和存储,并利用循环和条件判断语句完成功能。

c语言课程设计报告职工工资管理系统1.doc

c语言课程设计报告职工工资管理系统1.doc

c语言课程设计报告职工工资管理系统1 课程设计报告课程设计报告题目:职工工资管理系统设计者:专业班级:学号:指导教师:所属院系:2011年6月29日一.设计需求说明一、职工工资管理系统功能设计要求1. 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。

•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。

2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。

3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。

4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。

5. 删除记录:可删除数据文件中的任一记录。

6.恢复记录:能恢复被删除的任一记录。

7. 统计: (A) 计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在2000 元以上、2000~1500 元、1500~1000 元) 以内的工资职工人数及占总职工人数的百分比。

(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。

8.保存数据文件功能。

9.打开数据文件功能。

经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。

程序运行结果如下表所示(记录个数至少8个)。

二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。

同时将数据储存在ckerk_list文件中并自动保存至磁盘。

注:如首次使用,尚未输入数据,请先输入数据。

输入的数据将自动保存。

再次选择输入功能时原数据将被覆盖。

工资管理系统课程设计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语言-课程设计-教师工资管理系统(职工工资管理系统)

课程设计教师工资管理系统运行平台: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语言是一种广泛应用于系统程序设计和应用程序开发的高级语言,具有跨评台性和高效性的特点。

设计一个基于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语言在工资管理系统开发中的应用。

具体目标如下: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%。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告课程设计报告题目:职工工资管理系统设计者:专业班级:学号:指导教师:所属院系:2011年 6月29日一.设计需求说明一、职工工资管理系统功能设计要求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,若文件不存在,打印“打开失败并退出。

若存在,则通过循环语句将输入到结构体数组的数据逐个输入磁盘。

③读取:读取磁盘中的资料打开文件clerk_list ,若文件不存在,打印“打开失败”并退出。

若存在,读取文件中的数据,并返回职工人数。

④显示:显示职工工资资料先通过读取函数的返回值确定职工人数m,再通过循环将员工工资资料逐个打印,当循环次数达到m时退出循环。

其中总工资由程序计算,总工资=基本工资+职务工资+津贴-医疗保险-公积金⑤删除:删除某员工的资料打印员工资料并提示输入要删除职工的,输入后若该职工不存在则打印“查无此人”;若存在,则显示该职工资料并询问是否确定删除。

若确定,则删除。

删除时,通过对比输入的与资料中的做对比从而确定要删除的项i,从第i项开始,将后一项的各成员的值赋给前一项各对应的成员,完成对第i项的删除。

⑥添加:添加新的员工资料而不覆盖原有资料打印原有职工资料,询问要添加的职工人数并询问是否确定添加。

逐个逐项输入员工信息,之后程序计算其总工资。

完成后显示“添加成功”,打印新的员工资料并自动保存。

添加的方法为:定义一个相同类型的结构体数组,将原有项复制后增添新的项,并保存新的数组。

⑦查找:按ID好查询与按查找员工资料根据提示输入要查询的ID号或,程序通过循环语句将输入的数字与以保存的结构体数组中的数据对比,若相同,则打印“已找到”及该员工的资料;当循环次数等于人数时结束循环,若至结束循环时也没有找到相同的,则打印“查无此人”。

⑧修改:修改特定员工的特定资料打印员工信息并提示输入要修改资料的职工。

按提示确定要修改,确定要修改的项目,输入要修改成的结果并将该结果赋给对应项的对应成员,完成对特定职工特定项目的修改。

⑨统计通过循环对结构体数组中的每一项经行统计,计算工资总额为,将工资总额除以人数计算出平均工资。

根据每名职工的资料计算基本工资、职务工资、津贴之和在1000-1500圆1500-2000圆2000圆以上的员工占总员工的百分比。

三.源程序代码(附各部分解释)#include<stdio.h>#include<windows.h>#include<string.h>#include<conio.h>#define N 100struct clerk{int num; //ID号char name[20]; //int jbgz; //基本工资int zwgz; //职务工资int jt; // 津贴int yb; //医疗保险int gjj; /公积金/int total; //总工资}em[100];void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_name();void modify();void sta();void start(); /*定义各函数*/void start() //开始界面{system("cls");//清屏system("color 1E"); //设置文字颜色为黄色背景色蓝色printf("\n\n\n\n\n\n");printf("******************************************************************** ************");printf("*****************************欢迎使用工资管理系统*****************************");printf("******************************************************************** *************\n\n\n\n\n");printf("\t\t\t\t 制作: \n");printf("\t\t\t\t 2011年6月\n\n\n\n");printf("\t\t\t ***按任意键进入***\n");}void menu() //菜单界面{system("cls");system("color 1F");printf("***菜单***\n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 1 输入 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 2 显示 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 3 查找 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 4 删除 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 5 添加 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 6 修改 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 7 统计 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 8 退出 \n\n");printf("说明:*如首次使用尚未输入数据请先输入数据 \n *输入的数据将自动保存 \n *再次选择输入功能时原数据将被覆盖\n\n");}void input() /*录入函数*/{int i,m;system("cls");printf("职工人数(1--100):\n");scanf("%d",&m);for (i=0;i<m;i++){printf("请输入职工号: ");scanf("%d",&em[i].num);printf("请输入: ");scanf("%s",&em[i].name);getchar();printf("请输入基本工资: ");scanf("%d",&em[i].jbgz);printf("请输入职务工资: ");scanf("%d",&em[i].zwgz);printf("请输入津贴: ");scanf("%d",&em[i].jt);printf("请输入医疗保险: ");scanf("%d",&em[i].yb);printf("请输入公积金: ");scanf("%d",&em[i].gjj);em[i].total=((em[i].jbgz)+(em[i].zwgz)+(em[i].jt)-(em[i].yb)-(em[i].gjj));//计算总工资printf("\n");//计算总工资}printf("\n创建完毕!\n");save(m);//保存职工人数m}void save(int m) /*保存文件函数*/{int i;FILE*fp; //声明fp是指针,用来指向FILE类型的对象if ((fp=fopen("clerk_list","wb"))==NULL) //打开职工列表文件为空{printf ("打开失败\n");exit(0);}for (i=0;i<m;i++) /*将存中职工的信息输出到磁盘文件中去*/if (fwrite(&em[i],sizeof(struct clerk),1,fp)!=1)//写入数据块 &em[i]:是要输出数据的地址 sizeof(struct clerk):获取一个单体的长度 1:数据项的个数 fp:目标文件指针printf("文件读写错误\n");fclose(fp);//缓冲区最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区}int load() /*导入函数 int型*/{FILE*fp;int i=0;if((fp=fopen("clerk_list","rb"))==NULL){printf ("cannot open file\n");exit(0);}else{do{fread(&em[i],sizeof(struct clerk),1,fp); //读取i++;}while(feof(fp)==0); //检测流上的文件结束符}fclose(fp);return(i-1);//返回人数}void display() /*浏览函数*/{int i,sum=0;int m=load();system("cls");printf("职工号基本工资职务工资津贴医疗保险公积金总工资\n");for(i=0;i<m;i++) /*m为输入部分的职工人数*/{printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i]. total);sum+=em[i].total;//计算员工总工资之和}printf("\n\n职工平均工资为:%d \n",sum/m);}void del() /*删除函数 */{int m=load();int i,j,n,t,button;char name[20];printf("\n 原来的职工信息:\n");display(); //显示删除前的员工信息printf("\n");printf("按删除:\n");scanf("%s",name);for(button=1,i=0;button&&i<m;i++)//主函数中确定button==1时各函数才可以被调用{if(strcmp(em[i].name,name)==0)//按员工查找到某员工并调出其资料{printf("\n此人原始记录为:\n");//显示选定员工的信息printf("职工号基本工资职务工资津贴医疗保险公积金总工资 \n");printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i]. total);printf("\n确定删除请按1,不删除请按0\n");scanf("%d",&n);if(n==1){for(j=i;j<m-1;j++)//从第i项开始将后一项的各成员的值赋给前一项各对应的成员完成对第i项的删除{strcpy(em[j].name,em[j+1].name);em[j].num=em[j+1].num;em[j].jbgz=em[j+1].jbgz;em[j].zwgz=em[j+1].zwgz;em[j].jt=em[j+1].jt;em[j].yb=em[j+1].yb;em[j].gjj=em[j+1].gjj;em[j].total=em[j+1].total;}. button=0;}}}if(!button)//button==0表明删除已完成m=m-1;//总员工数减少一人elseprintf("\n查无此人!\n");printf("\n 删除后的所有职工信息:\n");save(m); //调用保存函数display(); //调用浏览函数printf("\n继续删除请按1,不再删除请按0\n");scanf("%d",&t);switch(t){case 1:del();break;case 0:break;default :break;}}void add()/*添加函数*/{FILE*fp;int n;int count=0;int i;int m=load();printf("\n 原来的职工信息:\n");display();printf("\n");fp=fopen("emploee_list","a");printf("请输入想增加的职工数:\n");//确定要加入的职工数n scanf("%d",&n);for (i=m;i<(m+n);i++)//添加n名员工的信息{printf("\n 请输入新增加职工的信息:\n");printf("请输入职工号: ");scanf("%d",&em[i].num);printf("\n");printf("请输入: ");scanf("%s",em[i].name);getchar();printf("请输入基本工资: ");scanf("\t%d",&em[i].jbgz);printf("请输入职务工资: ");scanf("%d",&em[i].zwgz);printf("请输入津贴: ");scanf("%d",&em[i].jt);printf("请输入医疗保险: ");scanf("\t%d",&em[i].yb);printf("请输入公积金: ");scanf("%d",&em[i].gjj);em[i].total=( em[i].jbgz+ em[i].zwgz + em[i].jt- em[i].yb- em[i].gjj);//计算该员工总工资printf("\n");count=count+1;printf("已增加的人数:\n");printf("%d\n",count);}printf("\n添加成功\n");m=m+count;//将新添加员工的人数加到总员工人数中printf("\n增加后的所有职工信息:\n");printf("\n");save(m);display();//显示添加后的信息fclose(fp);}void search()/*查询函数*/{int t,button;system("cls");//清屏do{printf("\n按1 按工号查询\n按2 按查询\n按3 回主菜单\n");scanf("%d",&t);if(t>=1&&t<=3){button=1;break;}else{button=0;printf("输入错误");}}while(button==0);//回到查询选择项while(button==1){switch(t)//选择查询方式{case 1:printf("按工号查询\n");search_num();break;case 2:printf("按查询\n");search_name();break;case 3:main();break;default:break;}}}void search_num()//按职工号查询{int a;int i,t;int m=load();printf("请输入要查找的职工号:\n");scanf("%d",&a);for(i=0;i<m;i++)if(a==em[i].num){printf("职工号基本工资职务工资津贴医疗保险公积金总工资\n");printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i]. total);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2: break;default:break;}}void search_name(){char name[30];int i,t;int m=load();printf("请输入:\n");scanf("%s",name);for(i=0;i<m;i++)if(strcmp(em[i].name,name)==0){printf("\n已找到,其记录为:\n");printf("职工号基本工资职务工资津贴医疗保险公积金总工资\n");printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i]. total);}if(i==m)printf("\n\n");printf("\n");printf("返回查询菜单请按1,继续查询请按2\n"); scanf("%d",&t);switch(t){case 1:search();break;case 2:break;default :break;}}void modify() /*修改函数*/{int num;char name[20];int jbgz;int zwgz;int jt;int yb;int gjj;int b,c,i,n,t,button;int m=load();system("cls");printf("\n 原来的职工信息:\n");display();printf("\n");printf("请输入要修改的职工的:\n");scanf("%s",name);for(button=1,i=0;button&&i<m;i++){if(strcmp(em[i].name,name)==0){printf("\n此人原始记录为:\n");printf("职工号基本工资职务工资津贴医疗保险公积金总工资 \n");printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);printf("\n确定按1 ; 不修改请按0\n");scanf("%d",&n);if(n==1){printf("\n需要进行修改的选项\n 1.职工号 2. 3.基本工资 4.职务工资 5.津贴 6.医疗保险 7.公积金 8.返回上层\n");printf("请选择序号1-8:\n");scanf("%d",&c);if(c>8||c<1)printf("\n选择错误,请重新选择!\n");}button=0;}}if(button==1)printf("\n查无此人\n");do{switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/{case 1:printf("职工号改为: ");scanf("%d",&num);em[i-1].num=num;break;case 2:printf("改为: ");scanf("%s",name);strcpy(em[i-1].name,name);break;case 3:printf("基本工资改为: ");getchar();scanf("%d",&jbgz);em[i-1].jbgz=jbgz;em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);break;case 4:printf("职务工资改为: ");scanf("%d",&zwgz);em[i-1].zwgz=zwgz;em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);break;case 5:printf("津贴改为: ");scanf("%d",&jt);em[i-1].jt=jt;em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);break;case 6:printf("医疗保险改为: ");scanf("%d",&yb);em[i-1].yb=yb;em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);break;case 7:printf("公积金改为: ");scanf("%d",&gjj);em[i-1].gjj=gjj;em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);break;case 8:modify();break;}printf("\n");printf("\n\n 确定修改请按1 ; 重新修改请按2: \n");scanf("%d",&b);}while(b==2);printf("\n修改后的所有职工信息:\n");printf("\n");save(m);display();printf("\n按1 继续修改 ,不再修改请按0\n");scanf("%d",&t);switch(t){case 1:modify();break;case 0:break;default :break;}}void sta()//统计函数{int i;int sum=0;int a=0,b=0,c=0;int m=load();system("cls");//清屏函数for(i=0;i<m;i++) /*m为输入部分的职工人数*/ {sum+=em[i].total;if((em[i].total)<=1500&&em[i].total>=1000){a++;}if(em[i].total>1500&&em[i].total<=2000){b++;}if(em[i].total>2000){c++;}}printf("\n\n工资总额为:%d\n",sum);printf("平均工资为:%d\n",sum/m);printf("\n基本工资、职务工资、津贴之和\n");printf("在1000-1500圆的员工占总员工的百分之%d\n",a*100/m);printf("在1500-2000圆的员工占总员工的百分之%d\n",b*100/m);printf("在2000圆以上的员工占总员工的百分之%d\n",c*100/m);printf("\n\n按任意键继续");getch();menu();}void main()//主函数{int n,button;char a;start();getch();menu();do{printf("功能选择(1--8):\n");scanf("%d",&n);if(n>=1&&n<=7){button=1;break;}else{button=0;printf("您输入有误,请重新选择!");}}while(button==0);while(button==1){switch(n){case 1: input();break;case 2: display();break;case 3: search();break;case 4:del();break;case 5: add();break;case 6:modify();break;case 7:sta();break;case 8:exit(0);break;default :break;}getchar();printf("\n");printf("按任意键继续\n");getch();system("cls"); /*清屏*/menu(); /*调用菜单函数*/printf("功能选择(1--8):\n");scanf("%d",&n);printf("\n");}}运行结果及截图欢迎画面菜单输入功能显示功能统计功能删除功能添加功能修改功能心得体会通过这两周的c语言课程设计,我加深了对c语言程序设计的理解,使自己的操作更加熟练,发现了自己的不足,为自己今后的继续学习指明了方向。

相关文档
最新文档