薪酬管理-数据结构与算法工资管理系统综合实验报告_第1页
薪酬管理-数据结构与算法工资管理系统综合实验报告_第2页
薪酬管理-数据结构与算法工资管理系统综合实验报告_第3页
薪酬管理-数据结构与算法工资管理系统综合实验报告_第4页
薪酬管理-数据结构与算法工资管理系统综合实验报告_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈阳理工大学应用技术学院沈阳理工大学应用技术学院《数据结构与算法》综合实验报告课程名称: 《数据结构与算法》综合实专 业: 计算机科学与技术班级学号: 姓 名: 王娇指导教师: 孙承成 绩:完成日期: 20XX 年 月 日、 实验题目工资管理系统二、 实验时间地时间:20XX/6/10地点三、 实验目的理解线性表的定义、线性表的顺序存储结构和链式存储结构。理解线性表的逻辑结构特征的差异。重点掌握线性表和链表上各种基本运算的实现。综合运用线性表解决些复杂的实际问题。四、实验内容()、功能关系介绍添加功能,通过它可以添加新的员工信息,非常方便,输入1即可进入添加页面,添加完以后,输入4保存。是id号查询,二是姓名查询。是删除,二是通过姓名删除。6修改功能,通过它可以修改员工信息,譬如电话,工资等,可输入id号进行修改,修改完以后返回主页面输入4进行保存。5插入功能,与添加功能有区别,它可选择性的插入,随意插,他也是添加新的员工,非常方便,返回主页面,输入4保存。4保存功能,它可保存添加,插入和修改的员工信息。7显示功能,通过它可以显示所有员工的详细信息。0返回功能,通过它可返回主页面,进行其他操作。(二)、采用数据结构 该员工工资管理系统采用了单链表的建立,输入,插入,查找,删除,输出等功能(三)、语言工具 C语言编程五、预习内容 (一)、单链表分线性单链表和静态的单链表。线性单链表是用一组不连续的存储单元来存放线性表中的数据,因此链表中结点的逻辑次序和物理次序不一定相同。为了正确的表示结点间的逻辑关系,在存储线、性表时,存储每个数据元素值的同时,还要存储指示其后继结点的地址信息,这两部分信息组成的存储映像称为结点。一个结点有两个域组成:数据域和指针域。1)、创建单链表:、扦插法建表2)、在单链表中查找:1、每个元素的定序2、(二)采用“数结点的法出单链表的,用指针p次指个结点,一个元素数,一数后一个结点(L)。单链表插入操作在单链表 L中i个插入一个数据元素 e,找单链表中的个结点,后一个的结点指针 s指示,s结点数据域为 e。改-1个结点的指针使其指s,后使s结点的指针域指原i个结点。(三)、单链表的删除 (p-nextNULL)&&(k<i-1)(p-nextNULL)&&(k<i-1)1、开辟一块连续空间,初始化为空闲静态链表。2、空闲链上的结点分配。3、空闲链上的回收分配。4、静态单链表结点的分配与释放六、算法描述(流程图与说明)(一)、详细描述工资管理系统(要求)该系统能够实现工资管理。系统包括录入、游览、查询、统计等功能。其中录入功能要求能够添加新的工资信息到文件;游览功能要求能按照工资卡号、姓名分类游览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求能够按照工资卡号、姓名查询;统计功能要求能够按照月份累计统计某职工在某时间段实发工资总金额(提示)文件中一行数据对应一个职工工资信息。工资信息的数据结构采用结构体数据,一个数组元素对应一条工资单录。工资单信息包括工资卡号、姓名、月份、应发工资、、、金、实发工资等。--金,其中金计算法为:、应发工资应发工资800=080应发工资1400(-80)*5%、应发工资1400(-140)*10%该系统分单数、查询数、添加数、数、显示数、数、数、入数、数个块。单数的要显示的单,单数要的块,选要行的法,单数有个,在0~7间一个,入到应的块。1带入添加块;2带进入查询块;3带进入块;4带进入块;5670、id、姓名、性别、部门、技术称编、电话、基本资、务资、应发资、实发资、税金、补助。(二)、据结构采用添加和都运用到链表输和,查询运用到了链表查找,删除运用到了链表删除,保存,,还有都运用到了链表输和输出(三)、算法描述本系统一开始就运用了结构体类型,定义了一个结构体类型变量worker,来定义各种,还定义了一个据节点,用于创建链表。,:Node*locate(Linkm,charfind[],charfangshi[]) {},m为链表find,fangshi为两个组利用strcmp(fangshi,"id")程序如果表利用id查询、删除,本程序是用Idname查询、删除该查询:chaxun(Linkm),是m为,表有idnamelacate()lacate()为,输,结。添加:add(Linkm),m为,输,申请节点,用节点存放输,输0,页面,输入krm为有lacate()确定用哪一种行删除,找到执行删除,有。:modify(Linkm为,表有get()输入id,用id得到想据,功,失败。:xianshi(Linkm)m为,表有,所有。insert(Linkmekm;dpmpfwrite(p,sizeof(Node),1,fp)c()、系统模块图工资管理系统1234 5 670键 添查删保插修显退加询除存入改示输读 模模模模 模 模模出块块块块 块 块块根 屏根 根 根 根 据 幕姓i姓名d名查号姓i姓名d名查号删询删除除i d 出d号号 插查 入询6.1功能模块图()、系统功能模块图开始开始编译运行Y有/错NMain函数menu函数choose=0Choos!=0退出连接调用各个功能函数(choosse=?)执行错误添加查询删除保存插入修改显示退出输入正确图6.2系统流程模块图(六)、函数流程图Node*p,*r,*s;charr=mr->next!=NULLYr=r->next; NmYp=(Node*)malloc(sizeof(Node));NY p==NULLprintf("exit(0);N:");gets(p->data.gzkh);Ystrcmp(p->data.gz kh,"0")==0NYp->data.yfgz<800 为0Np->data.yfgz<=140000

Y应发资N应发资-1400)*0.13图中是否有数据NYid删除,“2”通过姓名删除Choose==1Choose==2YNid号已存在的姓名locate()函数locate()函数P!=NullNr=mNr-next!=pYr=r-nextr-next=p-next退出4图FILE*fp;Node*p;intcount=0FILE*fp;Node*p;intcount=0fpYfp==NullNp=m->next下移P!=nullNY写入count++NCount>0Y保存成功新数据更新5v图个数的后面插入个数的后面插入申请结点newinfoNNewinfo==nulY没有记录返回根据提示键盘插信息税金=0Newinfo->data.yfgz<800YYNNewinfo->data.yfgz<1400p=m->nextNmYYStrcmp(p->data.id,find)==0newinfo->next=p->next;p->next=newinfop=p->next退出N6图m->next==nullm->next==nullidlocate()无记录返回YPStrcpy(p->data.id,find)复制N根据提示键盘插信息税金=0Newinfo->data.yfgz<800YYN-800)*0.05Newinfo->data.yfgz<1400N0退出无法修改7图P=m-nextP=m-nextP=nullYNPY出语句p=p->next;退出8 x图Node*rNode*rNstrcmp(fangshi,”id”)==0)Ystrcmp(fangshi,”name”)==0)Nr=m->nextNrYYr=m->nextstrcmp(r->data.id,find)==0Yreturnr;rNr=r->nextYstrcmp(r->,find)==0NYreturnr;r=r-nextN9 e图7.1 1:7.2

2:7.3

d2d“1d““2d13:7.4

73“3”你将你进id,方法雷同,如747.5 “4”进行文件的,的路径是"d:\\hello.txt","wb7.5:7.6

图75第几个据后面,选择之后即可进行信息的录,如果在职工卡号后0,则返回主页面,否则继续插7.6:7.7

“d选择你要的信息,之后你会用到一个,保存,如7.7777.8 作之后你可以通过信息7.87.9

图78079

79#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>//#include<system.h>intsaveflag=0;//标志一下,定义一个标志变量,用到的时候再找typedefstructstructworkerjava{chargzkh[20]; */charid[20]; /*id号charname[20]; /*姓名*/charsex; 性别*///int gl; 工龄chardepartment[20]; 部门charlevel[10]; /**/charjsbh[20]; /*charphone[20];floatjbgz; /**/floatzwgz; /**/floatyfgz; /**/floatsfgz; /*floattax;floatbz; /**/};typedefstructnode{structworkerdata; //workdatastructnode *next; //notenext}Node,*Link; //notemenu() /*菜单函数*/{system("cls");//textcolor(12);//gotoxy(10,5);cprintf(" 王娇管理系统:\n");//gotoxy(10,8);cprintf("********************菜单********************\n");//gotoxy(10,9);cprintf("*1添加2查询*\n");//gotoxy(10,10);cprintf("*3删除4保存*\n");//gotoxy(10,11);cprintf("*5插入6修改*\n");//gotoxy(10,12);cprintf("* 7 示 0 出 *\n");//gotoxy(10,13);cprintf("**********************************************\n");}/*位函数*/Node*locate(Linkm,charfind[],charfangshi[]){Node*r;if(strcmp(fangshi,"id")==0) /*id*/{r=m->next;while(r){if(strcmp(r->data.id,find)==0)returnr;r=r->next;}}elseif(strcmp(fangshi,"name")==0){r=m->next;while(r){if(strcmp(r->,find)==0)returnr;r=r->next;}}}/**/chaxun(Link{intchoose;charinputdata[20]; /*Node*p;if((m->next)==NULL){system("cls");printf("\n信息!\n");getchar();return;}system("cls");printf("1 通过id2 通过姓名\n"); //选择1通过,选择2,通过nameprintf("请输入[1/2]\n");scanf("%d",&choose);getchar();if(choose==1){printf("请输入据!\n");scanf("%s",&inputdata);getchar();p=locate(m,inputdata,"id");if(p){printf("资卡号姓名实发资税务基本资:=%4f\n",p->data.gzkh,p->,p->data.sfgz,p->data.tax,p->data.jbgz);//printf("%4s%4s%4f%4f%4f\n",p->data.gzkh,p->,p->data.sfgz,p->data.tax,p->data.sfgz);printf("任意键继续getchar();}else{printf("无法找到!\n");getchar();}}elseif(choose==2){printf("请输入数据!\n");scanf("%s",&inputdata);getchar();p=locate(m,inputdata,"name");if(p!=NULL){printf("工资卡号姓名应发工资税务发工资:=%4f\n",p->data.gzkh,p->,p->data.sfgz,p->data.tax,p->data.jbgz);//printf("%s%s%f%f%f\n",p->data.gzkh,p->,p->data.sfgz,p->data.tax,p->data.sfgz);printf("任意键继续getchar();}else{printf("getchar();}}}/*函数add(Linkm){Node*p,*r,*s;charnumstr[20];r=m;while(r->next!=NULL){r=r->next;}while(m){p=(Node*)malloc(sizeof(Node));//if(p==NULL){printf("申请记忆空间exit(0);}printf("职工编号:");gets(p->data.gzkh);if(strcmp(p->data.gzkh,"0")==0){break;}printf("id:");gets(p->data.id);printf(":");gets(p->);printf("别:");//gets(p->data.sex);p->data.sex=getchar();getchar();printf(getchar();gets(p->data.department);printf("技术职称:");gets(p->data.level);printf("技术职称编:");gets(p->data.jsbh);printf("电话:");gets(p->data.phone);printf("基本工资:");gets(numstr);p->data.jbgz=atof(numstr);printf("职务工资:");gets(numstr);p->data.zwgz=atof(numstr);printf("补助:");gets(numstr);p->data.bz=atof(numstr);p->data.yfgz=p->data.jbgz+p->data.zwgz+p->data.bz; //基本工资+职务工资+补助;if(p->data.yfgz<800)p->data.tax=0; //如果应发工<8000,elseif(p->data.yfgz<=1400)p->data.tax=(p->data.yfgz-800)*0.05; //8001400=(应发工-800)*0.05elsep->data.tax=(p->data.yfgz-1400)*0.1; //1400=(应发工-1400)*0.1p->data.sfgz=p->data.jbgz+p->data.zwgz+p->data.bz-(p->data.tax);//工=基本工+职务工+补助-;p->next=NULL;r->next=p;r=p;saveflag=1;}}/*删除函数*/delete(Linkm){intchoose;Node*p,*r;charfind[20];if(m->next==NULL){system("cls");printf("没有记录!\n");getchar();return;}system("cls");printf(" 1 id除 2 \n");//1id2nameprintf("入1或2:\n");scanf("%d",&choose);getchar();if(choose==1){printf("idscanf("%s",find);getchar();p=locate(m,find,"id");if(p!=NULL){r=m;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("d成功getchar();saveflag=1;}else{printf("idgetchar();}}elseif(choose==2){printf("入已存现在的scanf("%s",find);getchar();p=locate(m,find,"name");if(p!=NULL){r=m;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("删除成功getchar();saveflag=1;}else{printf("无法找到姓名!\n");getchar();}}}/*显示数据*/xianshi(Link{Node*p;p=m->next;if(p==NULL){printf("没有记录!\n");getchar();return;}while(p){printf("\t资 金 \n");printf("\t%4s\t%4s\t%4f\t%4f\t%4f\n",p->data.gzkh,p->,p->data.yfgz,p->data.tax,p->data.sfgz);p=p->next;}getch();}/**/modify(Link{Node*p;charfind[20];charnumstr[20];if(m->next==NULL){system("cls");printf("getchar();return;}system("cls");printf("你想id!\n");gets(find);p=locate(m,find,"id");if(p){strcpy(p->data.id,find);printf("printf("gets(p->);printf("p->data.sex=getchar();getchar();printf(":");gets(p->data.department);getchar();printf(":");gets(p->data.level);getchar();printf(":");gets(p->data.jsbh);getchar();printf(":");gets(p->data.phone);getchar();printf(":");gets(numstr);p->data.jbgz=atof(numstr);getchar();printf(":");gets(numstr);p->data.zwgz=atof(numstr);getchar();printf(":");gets(numstr);p->data.bz=atof(numstr);getchar();p->data.yfgz=p->data.jbgz+p->data.zwgz+p->data.bz;if(p->data.yfgz<800) p->data.tax=0;elseif(p->data.yfgz<=1400)p->data.tax=(p->data.yfgz-800)*0.05;else p->data.tax=(p->data.yfgz-1400)*0.1;p->data.sfgz=p->data.jbgz+p->data.zwgz+p->data.bz-(p->data.tax);printf("你修改成功!\n");getch();saveflag=1;}else{printf("无法修改!\n");}}/*save(Linkm){FILENode*p;intcount=0;fp=fopen("d:\\hello.txt","wb");//if(fp==NULL)//判断如果为空,就会输出下面{printf("无法代getchar();return;}p=m->next;//while(p!=NULL){fwrite(p,sizeof(Node),1,fp);//p=p->next;count++;//count是否成功}if(count>0){}else{

printf("成功getchar();saveflag=0;system("cls");printf("保存成功!\n");getchar();}fclose(fp);}/*插入函*/insert(Link{Linkp,newinfo;charch;charfind[20];charnumstr[20];system("cls");printf("pleaseinputthefind[20]gets(find);//获得要输入的数newinfo=(Node*)malloc(sizeof(Node));if(newinfo==NULL){printf("记录getchar();return;}printf("请输入插入!\n");printf("职工卡号:");gets(newinfo->data.gzkh);printf("id号:");gets(newinfo->data.id);printf("姓名:");gets(newinfo->);printf("性别:");newinfo->data.sex=getchar();getchar();printf("部门:");gets(newinfo->data.department);getchar();:");gets(newinfo->data.level);getchar();printf(":");gets(newinfo->data.jsbh);getchar();:");gets(newinfo->data.phone);getchar();:");gets(numstr);newinfo->data.jbgz=atof(numstr);getchar();:");gets(numstr);newinfo->data.zwgz=atof(numstr);getchar();:");gets(numstr);newinfo->data.bz=atof(numstr);getchar();newinfo->data.yfgz=newinfo->data.jbgz+newinfo->data.zwgz+newinfo->data.bz;if(newinfo->data.yfgz<800) elseif(newinfo->data.yfgz<=1400)newinfo->data.tax=(newinfo->data.yfgz-800)*0.05;else newinfo->data.tax=(newinfo->data.yfgz-1400)*0.1;newinfo->data.sfgz=newinfo->data.jbgz+newinfo->data.zwgz+newinfo->data.bz-(newinfo->data.tax);printf("你插入成功saveflag=1;p=m->next;while(m){if(strcmp(p->data.id,find)==0){newinfo->next=p->next;p->next=newinfo;bre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论