




免费预览已结束,剩余13页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级语言程序设计课程设计设计题目:工资管理系统设计 目录1设计任务12正文需求分析1系统模块图1模块说明1用户使用说明2测试结果33设计小结44参考文献55附录(源程序)6设计任务做一个工资管理系统,要能按照姓名和卡号查找员工的工资信息,以及员工工资信息的插入,删除。同时这些信息要存储在TXT文件中还要可以按照一定顺序输出所有员工工资的信息分析工资信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能,提供显示、排序操作;而查询功能要求实现查找操作;另外还应该提供键盘式选择菜单以实现功能选择。 系统模块图2、总体设计:整个系统可以分为信息输入、信息添加、信息浏览、信息排序、信息查询和信息统计模块。 3、详细设计 工资信息采用结构体数组: struct mygz /*m每月工资*/ int yuefen; float yfgz; float sf; float df; float sj; float sfgz;struct worker /*工人信息*/ int kahao; char xingming20; struct mygz m12; float zsfgz;模块说明(1)主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。 (2)输入模块 按照工资卡号、姓名、月份、应发工资、水费、电费的顺序输入信息。 (3)添加模块 增加新的职工工资信息, 从键盘输入并逐条写到原来的输入文件中, 采用追加而不是覆 盖的方式。 (4)浏览模块 通过菜单选择按照工资卡号还是姓名浏览。 如果按照卡号浏览, 则显示的记录按照卡号 升序输出;按照姓名浏览则按照字典序输出(调用排序模块的排序功能)。 (5)排序模块 排序模块提供菜单选择,实现按照工资卡号升序、实发工资降序以及姓名字典序排序。排序方法可以选择冒泡排序、插入排序、选择排序等。 (6)查询模块 实现按照工资卡号和姓名的查询,采用基本的查找方法即可。职工工资管理系统查询个人工资情况录入工资信息删除职工记录浏览员工工资信息个人工资排序情况退出系统用户使用说明启动后屏幕上显示下面菜单 1查询个人工资情况2录入工资信息3删除个人工资情况4浏览员工工资信息5个人工资排序情况6退出系统如果你要执行某一功能,就按下该功能所对应的数字即可。查询个人工资情况:在主菜单中输入1 则进入查询子菜单界面,。系统会提示你选择菜单。输入1后则进入按姓名查询职工信息,此时系统会自动提示你输入要查询的职工姓名。输入职工号后会出现该职工的信息。输入错误职工号,要求重新输入;输入2后则进入按卡号查询职工信息,此时系统会自动提示你输入要查询的职工卡号。输入0则返回主菜单录入工资信息:在主菜单中输入2则系统会进入新界面并自动提示你输入建立的月份,输入完成后按回车键系统会逐一提示输入 卡号,如没有记录,根据提示按1 新建,系统会逐一提示出入 姓名,工资,水费,电费,输入完成后会继续提示输入下一个职工的职工号。删除个人工资情况:在主菜单中输入3系统界面是删除菜单。系统会提示你选择(0-1)。输入1则按职工号删除记录,系统会自动提示你输入要删除的职工信息,进入新界面后系统会提示你删除前该职工的卡号。输入错误职工号,显示没有该职工号的职工一个记录已经删除了时系统会提示删除后的职工信息。根据菜单提示,输入1继续删除,输入2则返回主菜单。浏览员工工资信息:在主菜单中输入4系统界面是输出菜单界面,按照输入格式:职工号、 姓名 、性别 、年龄、 工资,逐个的输出职工的信息,输出所有职工信息后系统自动退出。个人工资排序情况:在主菜单中输入5系统界面是统计菜单界面,输入工资数,显示大于该工资的职工的所有信息。关闭文件。退出系统:在使用各个功能后输入6则返回主菜单。在主菜单中输入6则退出系统。测试结果浏览界面排序界面设计小结通过这段时间的实习, 我收获颇多。这次实习是真正意义上的将所学知识运用到实际中去。我进一步理解和运用了结构化程序的思想和方法,初步掌握了开发一个小型实用系统的基本方法,学会了调试一个较长程序的基本方法,学会利用流程图表示算法,进一步掌握和提高了利用C语言进行程序设计的能力.具备了一定的编程能力. 接到C语言课程设计的作业我十分高兴,终于学到的东西可以运用了。在老师的指导和大家的共同努力下,我们终于完成了程序的大体编制。程序中包括主函数、输入模块、查询模块、修改模块、删除模块、统计模块、输出模块、追加模块。其中在输入模块中指针文件运用的比较好,因为指针是C的一个特色,它能有效的表示复杂的数据结构,动态的分配内存,方便的使用字符串、数组,可谓是C的精华。在程序设计中我们最大的收获就是:我们真正从实践的角度体会到了C语言在实际生活中的作用,也深刻体会到了它带来的方便快捷。不但使我们对C语言有更进一步的巩固和认识还使我们懂得了团队协作的重要!让我们将一年所学的C语言知识学为所用,让我们感觉到了它的神奇魅力。美中不足的就是:由于我们知识的不足以及条件的限制,本系统还有许多漏洞与不足,希望老师给以批评与帮助,我们会积极改正。而且本程序还处于初级阶段的职工工资管理功能中,只实现了对职工工资的录入、删除、修改、查询、统计、显示等简单功能,功能较简单,不一定在实际中有大的用途,程序编排中可能有烦琐之处有待进一步简化。参考文献姜灵芝 著.C语言课程设计案例精编.清华大学出版社,2008C语言程序设计教程第3版 谭浩强百度文库百度贴吧:C语言吧附录(源程序)显示一系列功能选项输入n,判断n是否是06根据n的值调用各功能模块函数#include#include#include#define N 100struct mygz /*m每月工资*/ int yuefen; float yfgz; float sf; float df; float sj; float sfgz;struct worker /*工人信息*/ int kahao; char xingming20; struct mygz m12; float zsfgz;int sm;struct worker aN;float shuijin(float m)/_个人所得税_*/float shui1,shui2; float tmp;shui1=0;shui2=0;if(m=4500) shui1=(m-4500)*0.1; shui2=50;else if(m=3500 & m4500) shui2=(m-3500)*0.05; tmp=shui1+shui2;return(tmp);float shifazsfgz(float a,float b,float c,float d) float e=a-b-c-d; return(e);/*_读取模块_*/void duqu() FILE *fp; if(fp=fopen(D:工资信息.txt,r)=NULL) printf(无法读取文件); ;return; while(!feof(fp) fread(&asm,sizeof(struct worker),1,fp); sm+; /*_排序模块_*/排序按照卡号或姓名升序排列按照实发工资降序排列快速排序法选择其他排序或返回冒泡排序法选择其他排序或返回typedef struct worker stu; sortbykahao(const void *,const void *); sortbyxingming(const void *,const void *); void paixu() int i; int choice; int (*p)(const void * ,const void *); printf(choice_1: 按卡号排序n); printf(choice_2: 按姓名排序n); printf(choice_3: 按工资排序n); printf(choice_4: 返回主菜单n); scanf(%d,&choice); while(choice!=0) if(choice=1) p=sortbykahao; if(choice=2) p=sortbyxingming; if(choice=3) int j;floattemp; for(j=0;jsm-2;j+)for(i=0;iai+1.zsfgz)temp=ai.zsfgz;ai.zsfgz=ai+1.zsfgz;ai+1.zsfgz=temp;for(i=0;i=sm-1;i+)printf(%10f %-10d %-20s n,ai.zsfgz,ai.kahao,ai.xingming); if(choice=4) return; qsort(a,sm,sizeof(stu),p); if(choice=1) for(i=0;ism;i+) printf(n%dt%st%d,ai.kahao,ai.xingming,ai.zsfgz); if(choice=2) for(i=0;ism;i+) printf(n%st%dt%d,ai.xingming,ai.kahao,ai.zsfgz); printf(n); scanf(%d,&choice); sortbykahao(const void *p,const void *q) stu *x,*y; x=(stu*)p; y=(stu*)q; return (*x).kahao-(*y).kahao); sortbyxingming(const void *p,const void *q) stu *x,*y; x=(stu*)p; y=(stu*)q; return strcmp(*x).xingming,(*y).xingming); /*_查询模块_*/查找模块卡号查找姓名查找void chaxun() int b,i,j;输出按姓名查询输入b结束判断b是否是1到2 按卡号查询开始 system(cls); label_3: b=0; while(b!=1&b!=2) printf(1,选择姓名查询.n2,选择卡号查询.n); scanf(%d,&b); if(b=1) char c20; printf(请输入您的姓名:n); scanf(%s,c); i=0; while(!(strcmp(ai.xingming,c)=0)&i=10001&d=32767) printf(请输入您的卡号(五位数字),例如:10001n); scanf(%d,&d); i=0; while(ai.kahao!=d&ism) i+; if(i=sm) printf(您查找的名字不存在,请正确输入您的名字或用卡号查询n); return; printf(%-10d %-20s n,d,ai.xingming); for(j=0;ai.mj.yuefen!=NULL;j+) printf(月份:%5d,应发工资:%10.2f,水费:%7.2f,电费:%7.2f,税金:%7.2f,实发工资:%10.2f.n, ai.mj.yuefen,ai.mj.yfgz,ai.mj.sf,ai.mj.df,ai.mj.sj,ai.mj.sfgz); printf(总实发工资:%10fn,ai.zsfgz); b=0; while(b!=1&b!=2) printf(1,继续查询.n2,返回主菜单.n); scanf(%d,&b); if(b=1) goto label_3; else ;return; /*_浏览模块_*/void liulan() struct worker x; int c; float d; int i,j,k; system(cls); for(i=0;ism;i+) c=ai.kahao; k=i; for(j=i+1;jaj.kahao) c=aj.kahao; k=j; x=ai; ai=ak; ak=x; for(i=0;ism;i+) printf(%-10d %-20s n,ai.kahao,ai.xingming); for(j=0;ai.mj.yuefen!=NULL;j+) printf(月份:%5d,应发工资:%10.2f,水费:%7.2f,电费:%7.2f,税金:%7.2f,实发工资:%10.2f.n, ai.mj.yuefen,ai.mj.yfgz,ai.mj.sf,ai.mj.df,ai.mj.sj,ai.mj.sfgz); printf(总实发工资:%10fn,ai.zsfgz); for(i=0;i40;i+) printf(n); for(i=0;ism;i+) d=ai.zsfgz; k=i; for(j=i+1;jsm;j+) if(daj.zsfgz) d=aj.zsfgz; k=j; x=ai; ai=ak; ak=x; for(i=0;ism;i+) printf(%-20s %-10d n,ai.xingming,ai.kahao); for(j=0;ai.mj.yuefen!=NULL;j+) printf(月份:%5d,应发工资:%10.2f,水费:%7.2f,电费:%7.2f,税金:%7.2f,实发工资:%10.2f.n, ai.mj.yuefen,ai.mj.yfgz,ai.mj.sf,ai.mj.df,ai.mj.sj,ai.mj.sfgz); printf(总实发工资:%10fn,ai.zsfgz); /*_删除模块_*/void shanchu() FILE *fp; int b,c,i,j; system(cls); label_4: printf(请输入要删除信息的卡号:n); scanf(%d,&b); for(i=0;ism;i+) if(ai.kahao=b) j=i; for(i=j+1;ism;i+) ai-1=ai; sm-; fp=fopen(D:工资信息.txt,w); for(i=0;i=1&b=10001&d=32767) printf(请输入您要录入工资的卡号(五位数字),例如:10001n); scanf(%d,&d); for(i=0;ism&ai.kahao!=d;i+); if(ai.kahao!=d) c=0; while(c!=1&c!=2) printf(没有该卡号记录.n1 新建n2 返回上一级n); scanf(%d,&c); if(c=2) goto label_1; if(c=1) ai.kahao=d; printf(请输入姓名:n); scanf(%s,ai.xingming); printf(请输入此人该月的应发工资,水费,电费(空格分开):n); scanf(%f%f%f,&ai.mb.yfgz,&ai.mb.sf,&ai.mb.df); ai.mb.yuefen=b+1; ai.mb.sj=shuijin(ai.mb.yfgz); ai.mb.sfgz=shifazsfgz(ai.mb.yfgz,ai.mb.sf,ai.mb.df,ai.mb.sj); ai.zsfgz=0; for(k=0;k12;k+) ai.zsfgz+=ai.mk.sfgz; sm+; c=0; while(c!=1 & c!=2) printf(1 继续n2 返回主菜单n); scanf(%d,&c); if(c=1) goto label_1; if(c=2) goto label_2; else if(ai.mb.yuefen=b+1) c=0; while(c!=1 & c!=2) printf(已有该月记录n1 覆盖原有记录n2 返回上级n); scanf(%d,&c); if(c=1) printf(请输入此人该月的应发工资,水费,电费:n); scanf(%d%d%d,&ai.mb.yfgz,&ai.mb.sf,&ai.mb.df); ai.mb.sj=shuijin(ai.mb.yfgz); ai.mb.sfgz=shifazsfgz(ai.mb.yfgz,ai.mb.sf,ai.mb.df,ai.mb.sj); ai.zsfgz=0; for(k=0;k12;k+) ai.zsfgz+=ai.mk.sfgz; while(c!=1 & c!=2) printf(1 继续n2 返回主菜单n); scanf(%d,&c); if(c=1) goto label_1; if(c=2) goto label_2; else goto label_1; if(ai.mb.yuefen=NULL) ai.mb.yuefen=b+1; printf(请输入此人该月的应发工资:n); scanf(%f,&ai.mb.yfgz); printf(请输入此人该月所用水费:n); scanf(%f,&ai.mb.sf); printf(请输入此人该月所用电费n); scanf(%f,&ai.mb.df); ai.mb.sj=shuijin(ai.mb.yfgz); ai.mb.sfgz=shifazsfgz(ai.mb.yfgz,ai.mb.sf,ai.mb.df,ai.mb.sj);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年实验室上岗试题及答案
- 2025年山西省政府采购评审专家考试真题含答案
- CN222959673U 直线型汽车座椅靠背电动锁栓 (浙江华悦汽车零部件股份有限公司)
- 2025年加氢模拟试题及答案
- 珠宝考研试题及答案
- 电厂检修培训考试题及答案
- CN120093336B 利用螺旋ct影像实现脊柱形变患者骨质疏松筛查的方法 (广东医科大学附属医院)
- CN120079912B 一种铝电机前端盖钻孔加工装置及加工方法 (山西三鼎机械制造股份有限公司)
- 2025年后置埋件题库及答案
- 国际贸易政策与经济波动
- 《心房颤动诊断和治疗中国指南2023》-抗凝解读
- DZ∕T 0033-2020 固体矿产地质勘查报告编写规范(正式版)
- 模块化箱式房屋安装及验收技术标准2
- 健康讲座:颈椎病
- NY-T 3213-2023 植保无人驾驶航空器 质量评价技术规范
- 金融数据分析 课件 欧阳资生 第1-5章 导论、金融时间序列线性模型 -极值事件
- 刀工刀法与烹饪技艺
- 桁吊操作培训课件
- 柔性电子材料的突破与发展
- 企业内部涉密测绘成果使用流程规章制度
- 低年级中秋节班会
评论
0/150
提交评论