职工工资管理系统设计--C语言课程设计.doc
《职工工资管理系统设计--C语言课程设计.doc》由会员分享,可在线阅读,更多相关《职工工资管理系统设计--C语言课程设计.doc(21页珍藏版)》请在咨信网上搜索。
《C语言程序设计》课程设计 实习报告 实 验 题 目 职工工资管理 1.问题描述: 添加模块:添加职工或工资的信息 删除模块:能通过姓名或者工号删除职工信息 修改模块:修改职工信息 查询模块:能通过姓名或者工号查询职工信息 显示模块:显示全部职工信息 文件管理模块:负责源数据文件的管理,包括新建、读取和保存源数据 2.概要设计 职工工资管理 添加模块 删除模块 修改模块 查询模块 显示模块 文件管理模块 按姓名 按工号 按姓名 按工号 新建记录数据文件 读取记录数据文件 保存记录数据文件 在各模块处用指针函数来使用后面的保存记录数据文件进行保存。 3.详细设计 include <stdio.h> # include <stdlib.h> # include <string.h> /*宏定义*/ # define N 100 /*假设工人个数是100*/ # define HEADER1 "----------------------------------------------------------------------\n" # define HEADER2 " | Number | Name | Psex | Age | Time | Ywage | Ykou | Pwage |\n" # define HEADER3 " |--------|--------|--------|-------|------|-------|------|-------|\n" # define FORMAT " |%-8d|%-8s|%-8s|%-7d|%-6d|%-7d|%-6d|%-7d|\n" # define DATA p->num ,p->name,p->sex,p->age,p->time,p->ywage,p->ykou,p->pwage # define END "-----------------------------------------------------------------------\n" /**/ typedef struct work { int num; /**/ char name[10]; char sex[10]; int age; /**/ int time; /**/ int ywage; /**/ int ykou; /**/ int pwage; /**/ }WORK; /**/ typedef struct pointer_info { WORK*pHead; /**/ int count; /**/ char fname[10]; /**/ int saveflag; /**/ }PI; /**/ void Menu(); void Add(PI*); void Del(PI*); void Save(PI*pi); void Modify(PI*pi); void Qur(PI*pi); void Load(PI*pi); void New(PI*pi); void Disp(PI*); void Wrong(); void printheader(); void main() { int sel; WORK *pwork; PI pi; pwork = (WORK*)malloc(N * sizeof(WORK)); pi.pHead = pwork; pi.count = 0; pi.fname[0] = '\0'; pi.saveflag = 0; /*显示主函数*/ Menu(); printf("Please input your choice [0~5]:"); do { scanf("%d",&sel); if (sel == 0) { /*if (pi.saveflag ==1) { if (strlen(pi.fname)) { Save(&pi); } else { New(&pi); Save(&pi); } }*/ break; } switch(sel) { case 1: Add(&pi); break; case 2: Del(&pi); break; case 3: Modify(&pi); break; case 4: Qur(&pi); break; case 5: Disp(&pi); break; default: Wrong(); break; } }while(1); pwork = pi.pHead; free(pwork); } void printheader() { printf(HEADER1); printf(HEADER2); printf(HEADER3); } void Menu() { system("cls"); printf(" The Workers' Grade Wage System \n"); printf("****************Menu*************************************\n"); printf(" * 1 添加 *\n"); printf(" * 2 删除 *\n"); printf(" * 3 修改 *\n"); printf(" * 4 查询 *\n"); printf(" * 5 显示 *\n"); printf(" * 0 退出 *\n"); printf ("*********************************************************\n"); } void Wrong( ) { printf("\n******Error :input has wrong ! press any key to continue******\n"); } void Add(PI* pi ) { int num; //char sex[10]; int nSex; int i,flag=0; WORK * pwork,*p; do { pwork=pi->pHead+pi->count; p=pi->pHead; printf("please input the number:(press '0'return menu)"); scanf("%d",&num); for(i=1;i< pi->count; i++) { if(num==p->num) { printf ("the number you input has exist,please input another one!\n"); flag=1; break; } p++; } if(flag) { flag=0; continue; } if (num != 0) { pwork->num = num; } else { Menu(); printf("please input your choice[0~5]:"); break; } printf("please input the name:"); scanf("%s",pwork->name); printf("please input the sex(0 is woman,1 is man):"); scanf( "%d", &nSex ); if( nSex == 0 ) strcpy( pwork->sex,"woman"); else strcpy( pwork->sex,"man"); printf("please input the time:"); scanf("%d", &pwork->time); printf("please input the age:"); scanf("%d", &pwork->age); printf("please input the Ywage:"); scanf("%d", &pwork->ywage); printf("please input the Ykou:"); scanf("%d", &pwork->ykou); pwork->pwage = pwork->ywage-pwork->ykou; pi->count++; pi->saveflag=1; }while(1); } void Qur(PI * pi) { int a,i,num; WORK *p; char name[10]; p=pi->pHead; Menu(); printf("1------search by number\n"); printf("2------search by name\n"); printf("3------return\n"); printf("please input your choice:[1,2]?"); scanf("%d",&a); if(a==3) { return; } if(a==1) { printf("please input the number for search:"); scanf("%d",&num); for(i=1;i<= pi->count; i++) { if(num==p->num) { break; } p++; } if(i>pi->count) { printf("no record found\n"); return; } else { printheader(); printf(FORMAT,DATA); printf(END); } } else if(a==2) { printf("please input name to search:"); scanf("%s",name); for(i=1;i<=pi->count;i++) { if(strcmp(name,p->name) !=0) { break; } p++; } if(i>pi->count) { printf("no record found\n"); return; } else { printheader(); printf(FORMAT,DATA); printf(END); } } printf("Please input your choice[0~5]:"); } void Modify(PI *pi) { int num,i; WORK *p,*pwork; p = pi->pHead; Menu(); Disp(pi); printf("please input the number of work to modify:"); scanf("%d",&num); for (i = 1;i < pi->count;i++) { if (num == p->num) { break; } p++; } if (i > pi->count) { printf("no record found\n"); return; } else { printf("please input the number:(enter '0'return menu)"); scanf("%d",&num); if (num!=0) { p->num =num; } else { Menu(); return; } printf("please input the name:"); scanf("%s",p->name); printf("please input the sex:"); scanf("%s",p->sex); printf("please input the age:"); scanf("%d",&p->age); printf("please input the time:"); scanf("%d",&p->time); printf("please input the ywage:"); scanf("%d",&p->ywage); printf("please input the ykou:"); scanf("%d",&p->ykou); pwork->pwage = pwork->ywage-pwork->ykou; pi->saveflag = 1; } } /*删除职工记录*/ void Del(PI * pi) { int sel,i,num; char name[10]; WORK *p;/*指针函数*/ p=pi->pHead; Menu(); printf("1------delete by number\n");/*选择工号*/ printf("2------delete by name\n");/*选择姓名*/ printf("any key other------return\n");/*按别的键就返回*/ printf("please input your choice:[1,2]?\n"); scanf("%d",&sel); if(sel!=1&&sel!=2)/*按别的键*/ { return; } if( sel == 1 )/*选择工号*/ { printf("Please input the number to delete:"); scanf("%d",&num); for(i=1;i<=pi->count;i++)/*按学号搜索*/ { if(num==p->num) { break; } p++; } if(i>pi->count) { printf("no record found\n"); return; } else if(i==pi->count) /*删除中间某个记录,只需要将count减1*/ { pi->count--; pi->saveflag=1; printf("record delete successfully!\n"); } else /*删除某个记录,只要将其后的数据前移覆盖即可*/ { memcpy(p,p+1,(pi->pHead + pi->count - p)*sizeof(WORK)); pi->count--; pi->saveflag = 1; printf("record delete successfully!\n"); } } else if(sel == 2)/*选择姓名*/ { printf("please input name to delete:"); scanf("%s",name); for(i=1;i<=pi->count;i++) { if(strcmp(name,p->name) != 0) { break; } p++; } if(i>pi->count) { printf("no record found\n"); return; } else if(i==pi->count)/*删除中间某个记录,只需要将count减1*/ { pi->count--; pi->saveflag=1; printf("record delete successfully!\n"); } else { /*删除某个记录,只要将其后的数据前移覆盖即可*/ memcpy(p,p+1,(pi->pHead+pi->count-p)*sizeof(WORK) ); pi->count--; pi->saveflag=1; printf("record delete successfully!\n"); } } printf("please input your choice[0~5]:"); } /*显示*/ void Disp(PI * pi) { int i; WORK *p = pi->pHead; if (pi->count==0) { printf("no record found\n"); printf("\nplease input your choice[0~5]:"); return; } printheader(); for(i=1;i<=pi->count;i++) { printf(FORMAT,DATA); printf(END); p++; } } void New(PI *pi) { FILE * fp; char name[10]; char fname[10] =".\\"; printf("please input the date file name foe create:"); scanf("%s",fname); strcat(fname,name); strcat(fname,".dat"); fp=fopen(fname,"wb"); if(fp==NULL) { printf("\n=====>open file error!\n"); return; } strcpy(pi->fname,fname); fclose(fp); } void Load (PI *pi) { FILE * fp; WORK * p=pi->pHead; char name [10]; char fname [10]= ".\\"; printf( "please input the data file name for load:"); scanf( "%s",name); strcat(fname,name); fp=fopen(fname , "rb"); if(fp==NULL) { printf("\n====>open file error!\n"); return; } pi->count = 0; pi->saveflag = 0; while(feof(fp)!=0) { if(fread(p,sizeof(WORK),1,fp)) { pi->count++; p++; } } strcpy(pi->fname,name); printf("load data file %s successfully!",name); fclose(fp); } void Save(PI * pi) { FILE * fp; int numwriten; if (!strlen(pi->fname)) New(pi); fp=fopen(pi->fname, "wb"); if(fp==NULL) { printf("\n====>open file error!\n"); fclose(fp); return ; } if (pi->count) { numwriten = fwrite(pi->pHead,1,pi->count * sizeof(WORK),fp); pi->saveflag = 0; printf("file save succesefully!"); } else printf("no record for save !"); fclose(fp); } 4测试分析 添加时 Q1:性别通过输入0或1输出woman or man 有if语句进行选择 Q2:实得工资由应发工资减去应扣工资自动得到 在程序中做减法 添加后 删除 Q1:通过工号或姓名删除 使用if语句进行选择,并用for语句对进行搜索 Q2:删除中间摸个记录 删除后 修改 查找 Q1:要求通过工号或者姓名查找 使用if语句 Q2:如果找不到记录则要返回 使用if –else语句找不到就输出源数据 显示 5. 课程设计总结 通过我们小组的共同努力终于完成任务,制作了职工工资管理系统。 虽然这系统我们是参照课本的类似例题制作,但其中还是集大家的努力进行修改,使系统更加完善。但由于能力有限,系统还是不是很稳定。比如,输入进入公司时间时,不能精确到具体时间。 总的来说,我们制作的系统还是能达到基本要求的,实现职工工资管理系统的功能。 自我评价: 通过这次作业,我发现自己的不足之处。对一些C语言的基本东西还是比较陌生,所以不能熟悉运用。增加了负担,所以这给与我提示是要再去好好看几遍书,熟悉其内容。 这次作业我们小组成员也发挥出各自所有的能力,相互协作,共同努力思考,对一些疑难点和问题进行讨论。我也发挥出带头领导的作用,制定出相对合理的工作计划并予以实施。 总的来说,我在这次工作中是投入大量时间和精力的,实实在在的努力! 教师评价 成绩评定: 日期: 年 月 日- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统 设计 语言 课程设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文