1、C语言课程设计工资管理系统C语言课程设计工资管理系统东北大学信息科学与工程学院程序实践报告 题目 工资治理系统课题组长 刘诚阳课题组成员 张鹏举 于文鑫专业名称 运算机科学与技术班 级 运算机1405指导教师 张晓红2021 年 4月名目1.课题概述1.1课题任务:工资治理系统1)以结构体/共用体设计数据的结构,采纳动态链表、文件储备方式,结构化、模块化程序设计方法,设计一个功能完善的系统 ,要有功能菜单。2)本系统应具有数据爱护包括数据录入、添加、修改、删除,数据查询可按 编号、姓名、差不多工资、岗位工资、绩效工资 、房改补助、奖励、应发工资、公积金、扣税、实发工资等进行查询,也可进行组合查
2、询,排序,统计,输出,系统爱护包括数据备份、数据复原、口令爱护,关心,退出等功能。3)本系统要有通用性、界面美观、操作方便。要考虑系统安全。4)可增加其他有用的功能。1.2课题原理1)利用结构体的数据结构,采纳动态链表,实现对数据的即时增删。2)使用文件储备方式,对数据进行有效的存取。3)采纳结构化、模块化的设计方式,每个.C文件仅包含一个或一类函数,实现模块化的设计开发模式。4)使用C语言的顺序、选择、循环三种差不多语句,实现函数所需功能。5)运用函数定义、声明和调用等差不多知识,实现数值、地址的传递,进行数据运算。6)运用C语言专门的指针功能,对数据地址进行处理,实现相应操作。1.3 课题
3、实践目的1)通过程序实践,强化运算机应用技能,验证、巩固和充实所学的理论知识,加深对相关内容的明白得,拓宽知识面,培养创新精神和实践能力。 2)进一步把握C的数据类型、差不多结构、结构体、文件、链表、结构化、模块化设计等知识点。3)进一步熟悉差不多流程操纵结构实现分支的ifelse语句、switch语句和实现循环的for、while、dowhile语句、break、continue等。4)把握C语言程序设计的差不多思想,了解简单的系统分析和了解数据库系统的理论。5)把握数据库设计的差不多方法,熟悉数据库设计的步骤。6)进一步巩固、加深所学专业课程C语言程序设计的差不多理论知识,理论联系实际,进
4、一步培养综合分析问题,解决问题的能力。7)利用所学知识,开发小型应用系统,把握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。1.4 相关知识1)C语言的数据类型、差不多结构知识。2)差不多流程操纵结构实现分支的ifelse语句、switch语句和实现循环的for、while、dowhile语句、break、continue等。3)数据结构的设计。4)系统分析和数据库系统的理论及设计知识。5)结构体的建立和差不多操作。6)动态链表的建立与差不多操作。7)文件操作对数据进行输入和输出8)多文件的项目治理应用。9)开发程序所用的结构化、模块化设计等知识点。2.需求分析
5、2.1课题调研随着企业的快速进展,企业规模越来越大,职员的数量也越来越多,企业工资治理更加的复杂。工资治理是一项琐碎、复杂而又十分细致的工作,工资运算、发放、核算的工作量专门大,一样不承诺出错,假如实行手工操作,每月发放工资须手工填制大量的表格,这就会耗费工作人员大量的时刻和精力。通过运算机进行工资发放工作,不仅能够保证工资核算准确无误、快速输出,而且还能够利用运算机对有关工资的各种信息进行统计,服务于财务部门其他方面的核算和财务处理。同时运算机具有着手工治理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、储备量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事工资治理的效率,也
6、是企业科学化、正规化治理,与世界接轨的重要条件。这就对企业工资治理提出了新的要求,用运算机治理系统来治理工资差不多成为目前的趋势,使用运算机能够高速,快捷地完成以上工作。工资治理系统便是以运算机为工具,通过对工资治理所需的信息治理,不仅把治理人员从繁琐的数据运算处理中解脱出来,而且优化了治理体系,使其高效化,简易化,智能化,也提高了透亮度和互动性。专门的治理人员能够轻松地通过工资治理系统对职员的工资进行录入,查看与修改;而且公司高层也能够通过治理员身份了解公司的薪资情形,从而作出一些列财务方面的重要决策;一般职员也能够通过自己的用户名和密码登陆工资治理系统,对自己每个月的工资情形进行查询,一目
7、了然,方便快捷。因此,工资治理系统是各个企业部门必不可少的工具,具有专门好市场前景与用户需求。2.2用户需求分析1)功能需求:登陆功能,显示主菜单功能,职工信息输入、输出、修改、删除功能,职工工资查询、排序、统计功能,系统备份、还原功能,数据初始化功能,关心,退出等。2)性能需求:此工资治理系统对工资数据精度的录入、运算、统计和储存能精确到小数点后一位小数。当用户向服务器发出命令要求对数据更新处理、工资数据的查询检索时,要求系统响应时刻可不能超过1秒。3)安全需求:为保证系统数据的安全性,系统采纳用户密码登陆机制,未授权者不能进入系统。而且登录人员分为治理员和职员,安全性能通过安全口令得以保证
8、。由于软件运行数据放在数据库中,因此参数不容易被错改、破坏,万一参数受到破坏也可不能阻碍源程序。4)其他需求:系统提供了完善的数据备份与复原功能,可不能显现系统崩溃,因此具有较强健壮性。该系统是在Windows7操作系统下运行,运行可行性是专门高的。5)约束条件:硬件环境:处理器CPUPentium 以上;内存容量RAM256M或更高。软件环境:Windows7/8/XP/Vista/2000/98操作系统。3.方案设计3.1总体功能设计该职工工资治理系统总共分为四大功能和辅助功。四大功能:1.工资查询功能:工资排序、查找、统计2数据处理功能:工资添加、修改、删除、输出到文本文件3.系统爱护功
9、能:数据备份、复原、清空,修改参数,修改口令4.职员编号登记功能.辅助功能:1.关心 2.重选年月 3.切换用户 4.安全退出职工工资治理系统双入口登陆功能年月选择功能职工工资信息输入职工工资信息输出职工工资信息添加运算职工工资信息修改职工工资信息删除生成职工工资文本工资信息排序工资信息查询工资运算工资信息统计数据复原数据备份修改参数数据清空修改口令关心重选年月退出3.2数据结构设计分别定义了两个结构体,一个对职职员资信息进行储存,另外一个对职员编号进行登记只有通过治理员登记过的职员才能登陆该系统。并使用动态链表的方式对数据进行储存和查找,职员的各类信息会被以二进制的形式写入文件内进行储存,系
10、统从文件中以二进制形式读入数据。结构体如下:struct personchar num20; /编号char name20; /姓名char sex10;/性别int age;/年龄float postsalary;/岗位工资float basepay; /差不多工资float meritpay;/绩效工资float subsidy;/住房补贴float bonus;/奖金float gotpaid;/应发工资float insurance;/社会保险公积金float tax;/税金float realpaid; /实发工资struct person *next;struct staff ch
11、ar num20;/职员登记编号 struct staff *latter;3.3函数原型设计AA.1 链表的建立,数据输入、输出、显示、添加、修改、删除函数1)struct person *Creat(int n)建立职职员资信息的链表,先通过传递的形式参数n来判定需要建立多少组数据,再通过键盘输入生成相应数量的动态链表数据2)struct staff *Creat_num(int n)建立职员登记编号的链表3)int Creat_number(void)向*Creat函数传递数值的函数,即需要录入几组数据4)struct person *Input(void)读取职职员资信息的函数,从文件
12、中读取信息并以动态链表方式储存到结构体中5)struct staff *Input_num(void)读取职员登记编号的函数6)void Output(struct person *head)输出职职员资数据到文件7)void Output_num(struct staff *head)输出职员编号到文件8)void Output_txt()生成职员信息的文本文件9)void Print(void)将链表中职员的工资信息输出到屏幕上10)void Print_num(void)将链表中职员的登记编号输出到屏幕上11)int Insert(struct person *head)职员数据添加函数
13、,使用方式:Insert(Creat(Creat_number(),先确定添加数据的组数,然后通过动态链表添加数据到结构体,最后通过该函数将数据加到文件尾部,实现数据添加。12)int Insert_num(struct staff *head)职员编号添加函数,使用方式同上,用于治理员向系统中登记职员编号,只有登记过的职员才能够登陆该系统13)int Modify()修改职员信息函数14)int Delete()删除职职员资信息的函数15)int Delete_num()删除职员登记编号的函数A.2 数据备份、清空、复原1)struct person *Empty(void)清空该年月份所有
14、职职员资信息数据的函数2)void Output_b(struct person *head)职职员资信息备份,输出信息到自定名称的文件3)struct person *Input_b(void)系统还原函数,将备份文件中的信息拷贝到以当前年月命名的文件中,从而还原上一次备份的数据A.3 统计函数1)void Statistics()职职员资统计函数,统计数据中所有职职员资的最小值和最大值,并运算平均数,输出到屏幕A.4 辅助函数1)int main()主函数2)int Exit()退出函数,显示感谢使用该系统,并正确终止运行3)void Choose_month()治理员登陆时用来选择年月份
15、的函数,系统中职员各个年月份的工资分别储存在以该年月命名的不同文件下,以该函数判定系统需要打开哪个文件。4)void Choose_month_num()职员登陆时用来选择年月份的函数,功能同上,是两个不同的登陆口5)float post(int a)岗位工资猎取函数,岗位级别作为参数传递到该函数,该函数返回对应的岗位工资金额6)void Return()返回主菜单的函数A.5 各类菜单函数1)void Defined()修改参数菜单2)void Help()关心菜单,提供关心信息、设计人员信息和版本信息3)void Menu()治理员的主菜单,内含工资查询,数据处理,系统爱护,编号登记,关心
16、,重选年月,切换用户,退出等功能选项4)void Menu_num()职员的主菜单5)void Menu2()工资查询菜单,内含职职员资查找,工资排序,工资统计等功能选项6)void Menu3()职职员资数据处理菜单,内含数据添加,修改,删除,输出等功能选项7)void Menu4()系统爱护菜单,内含数据备份,清空,复原,修改参数、口令等功能选项8)void menu_print_out(void)输出数据时显示在最上面的表头9)void Menu_Register()修改在册职员编号的分菜单10)void Inquire()职职员资查找分菜单11)void Sort()排序菜单,内含从小
17、到大、从大到小排序的功能选项12)int Sort_menu_down_up()排序分菜单从小到大,内含各类排序种类13)int Sort_menu_up_down()排序分菜单从大到小,内含各类排序种类BB.1 登陆判定函数1)void password()用户登录函数,通过输入的用户名检测该用户是治理员或者职员依旧未登记用户,从而进行不同的登录方式B.2 修改参数、密码类函数1)int ChangePassword()密码修改函数,用于修改治理员密码2)int ChangePassword_num()密码修改函数,用于修改职员密码3)float ChangePostsalary()用于修改
18、初始参数中的岗位工资参数,将1-5个岗位级别分别对应不同的岗位工资4)float Subsidy_in()从文件中读取住房补贴参数5)float ChangeSubsidy()用于修改初始参数中的住房补贴参数,得到一个固定的住房补贴金额,数据储存到文件B.3 运算税金的函数1)float Tax(float a)运算税金的函数,将工资做参数传递到里面去,返回应缴税金金额CC.1查询类函数1)int Inquire_age()查询职员信息函数,以年龄查询2)int Inquire_basepay()查询职员信息函数,以差不多工资查询3)int Inquire_bonus()查询职员信息函数,以奖
19、金查询4)int Inquire_gotpaid()查询职员信息函数,以应得工资查询5)int Inquire_meritpay()查询职员信息函数,以绩效工资查询6)int Inquire_name()查询职员信息函数,以姓名查询7)int Inquire_num()查询职员信息函数,以编号查询8)int Inquire_postsalary()查询职员信息函数,以岗位工资查询9)int Inquire_realpaid()查询职员信息函数,以实发工资查询10)int Inquire_tax()查询职员信息函数,以税金查询11)void Inquire_undefined(void)查询职员
20、信息函数,编号、姓名、性别组合查询C.2 排序类函数1)int Neaten()数据整理,将职员信息按编号从小到大排列2)int Neaten_num()数据整理,将登记的职员编号从小到大排列3)int Sort_down_up_num()编号排序,升序4)int Sort_down_up_age()年龄排序,升序5)int Sort_down_up_basepay()差不多工资排序,升序6)int Sort_down_up_bonus()奖金排序,升序7)int Sort_down_up_gotpaid()应得工资排序,升序8)int Sort_down_up_meritpay()绩效工资排
21、序,升序9)int Sort_down_up_postsalary()岗位工资排序,升序10)int Sort_down_up_realpaid()实发工资排序,升序11)int Sort_down_up_tax()税金排序,升序12)int Sort_up_down_age()年龄排序,降序13)int Sort_up_down_basepay()差不多工资排序,降序14)int Sort_up_down_bonus()奖金排序,降序15)int Sort_up_down_gotpaid()应得工资排序,降序16)int Sort_up_down_meritpay()绩效工资排序,降序17)
22、int Sort_up_down_num()编号排序,降序18)int Sort_up_down_postsalary()岗位工资排序,降序19)int Sort_up_down_realpaid()实发工资排序,降序20)int Sort_up_down_tax()税金排序,降序3.4主算法设计用户登录1开始年月选择5432修改密码职员界面终止关心治理员界面1234567输出工资信息1234工资排序工资查找工资统计12348工资添加工资整理工资修改56工资删除生成文本1234数据备份数据复原数据清空56修改参数修改口令1234编号添加编号整理编号删除3.5用户界面设计1)两个操作界面。依照登
23、陆人员不同,分为治理员的操作界面和职员的查询界面,使界面显示项更加专门化和清晰化。2)采纳选择式的功能菜单。屏幕上显示功能菜单的功能项,依照菜单上提供的数字按相应的键去执行相应的子程序,执行后返回功能菜单。3)用户界面采取相同的样式进行设计,主界面上会显示当前操作的是哪个年月的职职员资,菜单的选择功能利用switch函数实现。4)通过printf函数输出各种装饰符号,Windows自带函数调剂背景色和字体颜色,以达到优化操作界面的目的。3.6程序特色设计1)多入口登陆。分成治理员登陆和职员登陆两个入口:治理员登陆之后能够查看全体职员的工资信息,并对其进行增加删改、排序、备份清空、输出打印等处理
24、;职员登陆之后只能看到自己的个人信息和工资情形。极大地保证了治理层和职员层不同的需求,以及个人信息的安全性。2)以文件形式输入和输出。程序中所有的数据在每次变动后都会通过输出函数以二进制形式输出到文件内,而且每次调用数据时差不多上从文件中输入,从而保证了系统数据的可靠性,不易丢失性。3)自动运算功能。输入职职员资信息时不用输入全部信息,例如,输入职员的岗位级别,即可获得职员在该岗位应得的工资数,职员的应得工资、实发工资以及应该缴纳的社会保险、公积金和税金差不多上通过函数直截了当运算,无需手动输入。4)差不多参数的设置。治理员能够修改岗位级别所对应的岗位工资金额,从而实现了程序的灵活性,满足公司
25、岗位薪资调整的需求。5)职员注册功能。只有治理员能够对职员进行注册登记,只有通过登记的职员才能够使用自己的职员编号登陆该系统,从而防止了外部人员对公司财务情形的猎取。各职员的初始登陆密码与编号相同,登陆后能够自行修改密码,从而保证了个人信息的安全性。6)严密的非法输入检测和纠错功能。程序中任何一个地点都考虑了非法输入,以保证程序可不能崩溃或跳出。例如,登陆时假如输入错误用户名会得到不存在用户名的提示,并要求重新输入;在菜单项选择择时,假如输入的不是数字编号,而是字母或字母与数字的组合,系统仍会提示输入错误,请重新输入,可不能显现崩溃或跳出;当在屏幕中输出数据时,假如储存数据的文件丢失、不存在,
26、系统会提示错误,文件不存在;在程序中没有任何数据的情形下选择排序、修改、删除数据的功能,会提示没有数据,无法进行操作!,可不能显现程序崩溃。7)工资按月份存取功能。考虑到该系统应该能够储存职员每个月的工资信息,因此建立多个以年月份命名的文件,用来储存不同月份的职职员资,用户只需要在登陆后输入相应的年月就能够猎取到该年月下的工资信息。4.方案实践4.1开发环境与工具Windows 7CodeBlocksVisual C+ 6.04.2程序设计关键技术1)建立动态链表,通过结构体对职员信息进行治理,包括职员信息的输入、输出、添加、修改、删除和统计等功能2)以文件形式输入和输出职员信息3)建立治理员
27、和职员两个登陆通道,实现职职员资查询和治理员对职职员资治理的分级机制4)将数据储存在不同月份文件下,实现工资按月录入与查询5)职员差不多信息和工资录入后,能够调用函数自动运算岗位工资,应得工资,应缴纳税金,应交保险和公积金,和实发工资6)查找和排序算法,用来对数据进行查找和排序7)税金运算算法,通过工资运算出应缴纳的税金金额8)统运算法,运算各组数据的最大值、最小值和平均数据9)登录系统,区别不同账号,同时对用户密码进行验证4.3个人设计实现4.3.1刘诚阳设计实现a)Insert(Creat(Creat_number( ) ) )开始NYnexthead=pt1Output(Pt2),i=1
28、提示许多据!Pt1=Input( )终止i=1,Print( )Pt2!=NULL?NY输入删除编号Strcmp(Pt1-num,strnum)=0?Y指针后移i!=1?Strcmp(Pt2-num,strnum)=0?NYPt1-next=Pt2-nextOutput(head),i=1NNY提示查询不到!f)Modify()开始NYP=NULL?运算岗位工资Posta,税金Taxm,应发、实发工资提示许多据!P=Input( ),i=0终止Print( )i!=1?NY输入修改编号Strcmp(P-num,strnum)=0?P!=NULL?Y无相同编号修改数据!NY输入职员信息Output( ),i=1NP=P-nextg)Statistics()开始NYP=NULL?i=1i+,sum=sum+money提示许多据!P=Input( )i=0,sum=0终止P-next=NULL?NYP!=NULL?YN输出max,min,sum/iP-moneymoneyP-mone
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1