收藏 分销(赏)

职工工资管理系统设计--C语言课程设计.doc

上传人:w****g 文档编号:6883100 上传时间:2024-12-23 格式:DOC 页数:21 大小:467KB 下载积分:10 金币
下载 相关 举报
职工工资管理系统设计--C语言课程设计.doc_第1页
第1页 / 共21页
职工工资管理系统设计--C语言课程设计.doc_第2页
第2页 / 共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语言的基本东西还是比较陌生,所以不能熟悉运用。增加了负担,所以这给与我提示是要再去好好看几遍书,熟悉其内容。 这次作业我们小组成员也发挥出各自所有的能力,相互协作,共同努力思考,对一些疑难点和问题进行讨论。我也发挥出带头领导的作用,制定出相对合理的工作计划并予以实施。 总的来说,我在这次工作中是投入大量时间和精力的,实实在在的努力! 教师评价 成绩评定: 日期: 年 月 日
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服