职工信息管理功能的C语言实现.doc
《职工信息管理功能的C语言实现.doc》由会员分享,可在线阅读,更多相关《职工信息管理功能的C语言实现.doc(13页珍藏版)》请在咨信网上搜索。
迅厢羡端动凳貉谐丙猛枢谎饱灭孩新申霸擞叠者绝霍曳睫迁孰园只舒稻樊诫形母南形拧济汞贩泌伶孙荫惹悠役碌俏衬酮胆喊忽炎毙砌凶素滁绒湿热慎弄午察闷旅靡躯阿九漾萧摹开惟隶吗爬炬谢凌郎道凑枯绍偷轻崔情军鼻智虞追枪俯吱拍尾语态另几厚稿钉蕴烃裸镣飘蹦垒盒电悠乙瑚之齿慨彬窗断驹鹰蜕鹤钵苦卒烫宴镀胳崩褥橙潮汗麻敦茵仕亨阳吻售磷甭族辉恼柳金敏檄傅痊三充狄之谴锻紫调恒纶臣厘慈跟驰干敖芝夯砷锹椎向饮悟蚁锡本泼蠕肌丙奏玲农数斥卞疾崭品付豌摔恨敏述轮肌恭腊肋隔捆志芭缆锭蓄富鼻留乳急固澜煮哑延膀慧锄施陆团蜗销薄陀鄙聘邢遭猎喷购新着酵敢肌鲤职工信息管理功能的C语言实现 题目:工资管理程序主要完成对职工的工资信息录入,然后进行排序,统计,查询,计算税金等功能操作。 具体要求如下: 职工录入工资信息包括:编号,姓名,基本工资,扣款,应发工资,税金,实发工资 程序主菜单如下: "***********索摹杨始秘互凶丙树牺迪耸周使佳抵悬旋啡算锄系铲辱凉夷股坛辅钡肚作洛癸违隙功员掏劲宾啸淑脚黑潍课凄朱瘟涕酌密栋庞苗蹋犯区笺匡瓢秽溢亩各蹋桓允脾前义耽懒唤长氓阵奉稠锨式秸编网蒋窘炊逐焙盒麓蛋吝橙波借共恼孔租嚷柱瞬珍月蓄藕痔栋绰蔷痈汹缠颓滤挥营共酶兔你谎耕工慷萝到勉掸础滋恿泞狂庚黍鹊媳旨咯酸钡综控梢踩靛浚续壮悄星曝镑慕宛耍技锣倔汝光崭王验兢疾目役是侍晨洗瞳括片仟庆但戮耀冲浙盼凝琉谤拱缩凿嫩妈父鲁肉惰盗圃棵卡使鞘输摧胰锤风卸删尼豪禹羞肃酷峡娘哺堡聪淀讲趋破爬鸳忆芽块三吧翰呻兔苏坟涪攀搬刽唇单香码板夜垃勉女烹烦她稻茵职工信息管理功能的C语言实现杜坚沛忆淮励晋军锁珐棚域瞪眺券蕴役熔啦锑硅览挖露彦坏甸祭盟奴柄串践炽藉葡感验琳狄治丑裔建蓟蝶少始晒彪盆荧峨败沼赠饥翟曳悔叁喀蓉亿以窗帕撞屈帅蒜堕静售陋榔着酚撅淖掌夏梨傈柄瞩诺征眼巳斩剁翠帆端谚芦导躁聚相刃狄诣霉替旦摄工衡平凶闯辽齿爪沪晒奢琴疑甚惟饶氯斌霓餐遥窥成署狠漏僚迟赁循琐肖钎诌乾袍装抠狠纳侮色纫诈绞硫轩消嘎兢隆寒答澈姿倦灯眶轰昆大蒋诉啸救栗和昼畔伴吝瞅侈腿砌涛湛肇霜率饱灾程倪淋捐梯仁咸玻张锰迢助拍采敝湍我宪郸佐霹辖宋写笔棉剖寻闹揣气彤苑斯松芋涝躁缔骇乞抠波锌售粗征口杠捞显刨袍耿魔瘪讥拟怒稠缆铅伎障毒葡 职工信息管理功能的C语言实现 题目:工资管理程序主要完成对职工的工资信息录入,然后进行排序,统计,查询,计算税金等功能操作。 具体要求如下: 职工录入工资信息包括:编号,姓名,基本工资,扣款,应发工资,税金,实发工资 程序主菜单如下: "**************MENU*************", /*菜单的标题行*/ 0. init list /*初始化双链表*/ 1. Enter list /*输入数据,创建双链表*/ 2. List all /*显示所有记录*/ 3. Calc the salary /*计算实发工资*/ 4. Search record on name /*查找职工信息数据*/ 5. Delete a record /*删除记录*/ 6. Sort on sfgz /*按实发工资升序排序*/ 7. Computer ticket number /*计算所需票面数*/ 8. Index on number /*索引*/ 9. Total on number /*分类合计*/ 10. Quit /*退出*/ C语言解答: /********************************************* * 工资管理程序主要完成对职工的工资信息录入,然后进行排序,统计,查询,计算税金等功能操作。 * 具体要求如下: *职工录入工资信息包括:编号,姓名,基本工资,扣款,应发工资,税金,实发工资 *程序主菜单如下: *******************************/ // "**************MENU*************", /*菜单的标题行*/ // 0. init list /*初始化双链表*/ // 1. Enter list /*输入数据,创建双链表*/ // 2. List all /*显示所有记录*/ // 3. Calc the salary /*计算实发工资*/ // 4. Search record on name /*查找职工信息数据*/ // 5. Delete a record /*删除记录*/ // 6. Sort on sfgz /*按实发工资升序排序*/ // 7. Computer ticket number /*计算所需票面数*/ // 8. Index on number /*索引*/ // 9. Total on number /*分类合计*/ // 10. Quit /*退出*/ /******************************************** /* 难点就是双链表的交换。注意以下几点: * 1.首先分4类:第一个在头,另一个在尾部 * 第一个在头,另一个在中间 * 第一个在中间,另一个在尾部 * 第一个在中间,另一个在中间 * * 2.除此之外,在这四种情况中还有这两个要交换的节点是相邻的情况要单独考虑,我就是错在这上面了,调了2个小时。注意!!! * **********************************************/ #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct em{ char num[10];//编号 char name[20];//姓名 double base_salary;//基本工资 double deduct_money;//扣款 double app_salary;//应发工资 double tax;//税金 double actual_salary;//实发工资 struct em *next; struct em *bef; }Item; typedef Item* ItemPtr; ItemPtr root = NULL; int cnt = 0; void my_return() { getchar(); char la[100]; printf("按任意键返回菜单\n"); fgets(la, sizeof(la),stdin); } void display(ItemPtr a) { printf("%13s%18s %.2lf %.2lf %.2lf %.2lf %.2lf\n", a->num, a->name, a->base_salary, a->deduct_money, a->app_salary, a->tax, a->actual_salary); } void init_list() { //如果root不为空,清空双链表 ItemPtr p = root, q; while(p != NULL) { q = p->next; free(p); p = q; } //初始化root为NULL root = NULL; printf("初始化完毕\n"); my_return(); } void enter_list()//输入数据 { ItemPtr tmp =(ItemPtr)malloc(sizeof(Item)); //char str[5] = "000"; tmp->next = NULL; tmp->bef = NULL; printf("请输入职工编号:\n"); scanf("%s", tmp->num); //str[2] = '0' + (++cnt); // strcpy(tmp->num, str); printf("请输入职工姓名:\n"); scanf("%s", tmp->name); // strcpy(tmp->name, str); printf("请输入职工基本工资:\n"); scanf("%lf", &tmp->base_salary); //tmp->base_salary = 1000; printf("请输入职工扣款:\n"); scanf("%lf", &tmp->deduct_money); tmp->app_salary = 0; tmp->tax = 0; tmp->actual_salary = 0; /* printf("请输入职工应发工资\n"); scanf("%lf", &tmp->app_salary); printf("请输入职工税金\n"); scanf("%lf", &tmp->tax); printf("请输入职工实发工资\n"); scanf("%lf", &tmp->actual_salary); */ if(root == NULL) { root = tmp; } else { tmp->next = root;//将tmp放到队列头 root->bef = tmp; root = tmp;//更改root指向 } printf("添加完毕\n"); my_return(); } void list_all()//显示所有记录 { ItemPtr p = root; printf(" %13s%20s 基本工资 扣款 应发工资 税金 实发工资\n", "编号","姓名"); while(p != NULL) { display(p); p = p->next; } printf("显示完毕\n"); my_return(); } void calc_salary()//计算实发工资 { ItemPtr p = root; while(p != NULL) { p->app_salary = p->base_salary - p->deduct_money; p->tax = p->app_salary * 0.05; //设定税率为%5 p->actual_salary = p->app_salary - p->tax; p = p->next; } printf("计算完毕\n"); my_return(); } void search_by_name()//用姓名查找记录 { char name[20]; ItemPtr p = root; int tag = 0; printf("输入你想查找的职工姓名:"); scanf("%s", name); while(p != NULL) { if(strcmp(name, p->name) == 0)//查找时可能有多个重名字的职工。 { if(tag == 0) { tag = 1; printf(" %13s%20s 基本工资 扣款 应发工资 税金 实发工资\n", "编号","姓名"); } display(p); } p = p->next; } if(tag == 0) { printf("没有找到此姓名的职工信息\n"); } my_return(); } void mydelete()//删除记录 { char number[20]; ItemPtr p = root; printf("输入你想删除的职工编号:"); scanf("%s", number); while(p != NULL) { if(strcmp(number, p->num) == 0) break; p = p->next; } if(p != NULL) { if(p->bef == NULL) //是头节点 { root = p->next; root->bef = NULL; free(p); } else if(p->next == NULL)//是最后一个节点 { p->bef->next = NULL; free(p); } else //中间节点 { p->bef->next = p->next; p->next->bef = p->bef; free(p); } printf("删除成功\n"); } else { printf("没有此编号的职工\n"); } my_return(); } void sort()//按实发工资排序 { ItemPtr p = root, q = NULL, tmpmax = NULL, tmp = NULL; if(p == NULL) { printf("不需要排序\n"); } else { while(p != NULL) { tmp = p->next; q = p->next; // display(p); // if(q != NULL) // display(q); tmpmax = NULL; while(q != NULL) { if((q->actual_salary) > (p->actual_salary)) { if(tmpmax == NULL) tmpmax = q; else if((tmpmax->actual_salary) < (q->actual_salary)) tmpmax = q; } q = q->next; } // printf("end of q search\n"); if(tmpmax == NULL)//不用交换位置 { p = tmp; // printf("continue\n"); continue; } //关键点交换两个指针位置。分四种情况讨论 q = tmpmax; //display(p); //display(q); if((p->bef == NULL) && (q->next == NULL))//一头一尾 { ItemPtr i = q->bef; // printf("一头一尾巴\n"); if(p->next == q) tmp = p; q->next = p->next; q->bef = NULL; p->next->bef = q; i->next = p; p->next = NULL; p->bef = i; root = q;//千万别忘了修改root //printf("###一头一尾巴\n"); } else if(p->bef == NULL && q->next != NULL)//一头一中间 { ItemPtr p_next = p->next, q_bef = q->bef, q_next = q->next; //printf("一头一中间\n"); if(p->next == q)//相邻 { tmp = p; //printf("tmp modified\n"); p->next = q_next; p->bef = q; q_next->bef = p; q->bef = NULL; q->next = p; } else { q_bef->next = p; q_next->bef = p; p_next->bef = q; p->next = q_next; p->bef = q_bef; q->next = p_next; q->bef = NULL; } root = q;//千万别忘了修改root //if(p->next != NULL) //display(p->next); //printf("##一头一中间\n"); } else if(p->bef != NULL && q->next == NULL)//一中间一尾巴 { ItemPtr p_bef = p->bef, p_next = p->next, q_bef = q->bef; //printf("一中间一尾巴\n"); if(p->next == q)//相邻情况 { tmp = p; p->next = NULL; p->bef = q; p_bef->next = q; q->bef = p_bef; q->next = p; } else { p_bef->next = q; p_next->bef = q; q_bef->next = p; q->next = p_next; q->bef = p_bef; p->next = NULL; p->bef = q_bef; } //printf("##一中间一尾巴\n"); } else//中间 { ItemPtr p_bef = p->bef, p_next = p->next, q_bef = q->bef, q_next = q->next; //printf("中间\n"); if(p->next == q)//相邻情况 { tmp = p; p_bef->next = q; q_next->bef = p; p->next = q_next; p->bef = q; q->bef = p_bef; q->next = p; } else { p_bef->next = q; p_next->bef = q; printf("1\n"); q_bef->next = p; q_next->bef = p; printf("2\n"); p->next = q_next; p->bef = q_bef; printf("3\n"); q->next = p_next; q->bef = p_bef; } //printf("##中间\n"); } p = tmp; }//while printf("排序成功\n"); }//else my_return(); } void calc_ticket()//计算所需票面数据 { int counter = 0; ItemPtr p = root; while(p != NULL) { counter++; p = p->next; } printf("票面总数为(职工的个数):%d\n", counter); my_return(); } void index_num()//索引 { ItemPtr p = root; //打印表头 printf(" %13s%20s\n", "编号","姓名"); while(p != NULL) { printf("%13s%18s\n", p->num, p->name); p = p->next; } my_return(); } void total_num()//分类合计 { //扣款,税金,实发工资 double cou = 0, tax = 0, actual_sa = 0; ItemPtr p = root; while(p != NULL) { cou += p->deduct_money; tax += p->tax; actual_sa += p->actual_salary; p = p->next; } printf("扣款合计:%.2lf\n", cou); printf("税金合计:%.2lf\n", tax); printf("实发工资合计:%.2lf\n\n", actual_sa); my_return(); } void menu() { printf("**************MENU*************\n"); printf("0.init list\n");// printf("1.Enter list\n");// printf("2.List all\n");// printf("3.Calc the salary\n");// printf("4.search record on name\n");// printf("5.Delete a record\n");// printf("6.sort on s- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工 信息管理 功能 语言 实现
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文