职工工资管理系统设计c语言课程设计.docx
- 文档编号:7000319
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:24
- 大小:270.34KB
职工工资管理系统设计c语言课程设计.docx
《职工工资管理系统设计c语言课程设计.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统设计c语言课程设计.docx(24页珍藏版)》请在冰点文库上搜索。
职工工资管理系统设计c语言课程设计
《C语言程序设计》课程设计
实习报告
实验题目职工工资管理
1.问题描述:
添加模块:
添加职工或工资的信息
删除模块:
能通过姓名或者工号删除职工信息
修改模块:
修改职工信息
查询模块:
能通过姓名或者工号查询职工信息
显示模块:
显示全部职工信息
文件管理模块:
负责源数据文件的管理,包括新建、读取和保存源数据
2.概要设计
在各模块处用指针函数来使用后面的保存记录数据文件进行保存。
3.详细设计
include
#include
#include
/*宏定义*/
#defineN100/*假设工人个数是100*/
#defineHEADER1"----------------------------------------------------------------------\n"
#defineHEADER2"|Number|Name|Psex|Age|Time|Ywage|Ykou|Pwage|\n"
#defineHEADER3"|--------|--------|--------|-------|------|-------|------|-------|\n"
#defineFORMAT"|%-8d|%-8s|%-8s|%-7d|%-6d|%-7d|%-6d|%-7d|\n"
#defineDATAp->num,p->name,p->sex,p->age,p->time,p->ywage,p->ykou,p->pwage
#defineEND"-----------------------------------------------------------------------\n"
/**/
typedefstructwork
{
intnum;/**/
charname[10];
charsex[10];
intage;/**/
inttime;/**/
intywage;/**/
intykou;/**/
intpwage;/**/
}WORK;
/**/
typedefstructpointer_info
{
WORK*pHead;/**/
intcount;/**/
charfname[10];/**/
intsaveflag;/**/
}PI;
/**/
voidMenu();
voidAdd(PI*);
voidDel(PI*);
voidSave(PI*pi);
voidModify(PI*pi);
voidQur(PI*pi);
voidLoad(PI*pi);
voidNew(PI*pi);
voidDisp(PI*);
voidWrong();
voidprintheader();
voidmain()
{
intsel;
WORK*pwork;
PIpi;
pwork=(WORK*)malloc(N*sizeof(WORK));
pi.pHead=pwork;
pi.count=0;
pi.fname[0]='\0';
pi.saveflag=0;
/*显示主函数*/
Menu();
printf("Pleaseinputyourchoice[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)
{
case1:
Add(&pi);
break;
case2:
Del(&pi);
break;
case3:
Modify(&pi);
break;
case4:
Qur(&pi);
break;
case5:
Disp(&pi);
break;
default:
Wrong();
break;
}
}while
(1);
pwork=pi.pHead;
free(pwork);
}
voidprintheader()
{
printf(HEADER1);
printf(HEADER2);
printf(HEADER3);
}
voidMenu()
{
system("cls");
printf("TheWorkers'GradeWageSystem\n");
printf("****************Menu*************************************\n");
printf("*1添加*\n");
printf("*2删除*\n");
printf("*3修改*\n");
printf("*4查询*\n");
printf("*5显示*\n");
printf("*0退出*\n");
printf("*********************************************************\n");
}
voidWrong()
{
printf("\n******Error:
inputhaswrong!
pressanykeytocontinue******\n");
}
voidAdd(PI*pi)
{
intnum;
//charsex[10];
intnSex;
inti,flag=0;
WORK*pwork,*p;
do
{
pwork=pi->pHead+pi->count;
p=pi->pHead;
printf("pleaseinputthenumber:
(press'0'returnmenu)");
scanf("%d",&num);
for(i=1;i
{
if(num==p->num)
{
printf("thenumberyouinputhasexist,pleaseinputanotherone!
\n");
flag=1;
break;
}
p++;
}
if(flag)
{
flag=0;
continue;
}
if(num!
=0)
{
pwork->num=num;
}
else
{
Menu();
printf("pleaseinputyourchoice[0~5]:
");
break;
}
printf("pleaseinputthename:
");
scanf("%s",pwork->name);
printf("pleaseinputthesex(0iswoman,1isman):
");
scanf("%d",&nSex);
if(nSex==0)
strcpy(pwork->sex,"woman");
else
strcpy(pwork->sex,"man");
printf("pleaseinputthetime:
");
scanf("%d",&pwork->time);
printf("pleaseinputtheage:
");
scanf("%d",&pwork->age);
printf("pleaseinputtheYwage:
");
scanf("%d",&pwork->ywage);
printf("pleaseinputtheYkou:
");
scanf("%d",&pwork->ykou);
pwork->pwage=pwork->ywage-pwork->ykou;
pi->count++;
pi->saveflag=1;
}while
(1);
}
voidQur(PI*pi)
{
inta,i,num;
WORK*p;
charname[10];
p=pi->pHead;
Menu();
printf("1------searchbynumber\n");
printf("2------searchbyname\n");
printf("3------return\n");
printf("pleaseinputyourchoice:
[1,2]?
");
scanf("%d",&a);
if(a==3)
{
return;
}
if(a==1)
{
printf("pleaseinputthenumberforsearch:
");
scanf("%d",&num);
for(i=1;i<=pi->count;i++)
{
if(num==p->num)
{
break;
}
p++;
}
if(i>pi->count)
{
printf("norecordfound\n");
return;
}
else
{
printheader();
printf(FORMAT,DATA);
printf(END);
}
}
elseif(a==2)
{
printf("pleaseinputnametosearch:
");
scanf("%s",name);
for(i=1;i<=pi->count;i++)
{
if(strcmp(name,p->name)!
=0)
{
break;
}
p++;
}
if(i>pi->count)
{
printf("norecordfound\n");
return;
}
else
{
printheader();
printf(FORMAT,DATA);
printf(END);
}
}
printf("Pleaseinputyourchoice[0~5]:
");
}
voidModify(PI*pi)
{
intnum,i;
WORK*p,*pwork;
p=pi->pHead;
Menu();
Disp(pi);
printf("pleaseinputthenumberofworktomodify:
");
scanf("%d",&num);
for(i=1;i
{
if(num==p->num)
{
break;
}
p++;
}
if(i>pi->count)
{
printf("norecordfound\n");
return;
}
else
{
printf("pleaseinputthenumber:
(enter'0'returnmenu)");
scanf("%d",&num);
if(num!
=0)
{
p->num=num;
}
else
{
Menu();
return;
}
printf("pleaseinputthename:
");
scanf("%s",p->name);
printf("pleaseinputthesex:
");
scanf("%s",p->sex);
printf("pleaseinputtheage:
");
scanf("%d",&p->age);
printf("pleaseinputthetime:
");
scanf("%d",&p->time);
printf("pleaseinputtheywage:
");
scanf("%d",&p->ywage);
printf("pleaseinputtheykou:
");
scanf("%d",&p->ykou);
pwork->pwage=pwork->ywage-pwork->ykou;
pi->saveflag=1;
}
}
/*删除职工记录*/
voidDel(PI*pi)
{
intsel,i,num;
charname[10];
WORK*p;/*指针函数*/
p=pi->pHead;
Menu();
printf("1------deletebynumber\n");/*选择工号*/
printf("2------deletebyname\n");/*选择姓名*/
printf("anykeyother------return\n");/*按别的键就返回*/
printf("pleaseinputyourchoice:
[1,2]?
\n");
scanf("%d",&sel);
if(sel!
=1&&sel!
=2)/*按别的键*/
{
return;
}
if(sel==1)/*选择工号*/
{
printf("Pleaseinputthenumbertodelete:
");
scanf("%d",&num);
for(i=1;i<=pi->count;i++)/*按学号搜索*/
{
if(num==p->num)
{
break;
}
p++;
}
if(i>pi->count)
{
printf("norecordfound\n");
return;
}
elseif(i==pi->count)/*删除中间某个记录,只需要将count减1*/
{
pi->count--;
pi->saveflag=1;
printf("recorddeletesuccessfully!
\n");
}
else/*删除某个记录,只要将其后的数据前移覆盖即可*/
{
memcpy(p,p+1,(pi->pHead+pi->count-p)*sizeof(WORK));
pi->count--;
pi->saveflag=1;
printf("recorddeletesuccessfully!
\n");
}
}
elseif(sel==2)/*选择姓名*/
{
printf("pleaseinputnametodelete:
");
scanf("%s",name);
for(i=1;i<=pi->count;i++)
{
if(strcmp(name,p->name)!
=0)
{
break;
}
p++;
}
if(i>pi->count)
{
printf("norecordfound\n");
return;
}
elseif(i==pi->count)/*删除中间某个记录,只需要将count减1*/
{
pi->count--;
pi->saveflag=1;
printf("recorddeletesuccessfully!
\n");
}
else
{/*删除某个记录,只要将其后的数据前移覆盖即可*/
memcpy(p,p+1,(pi->pHead+pi->count-p)*sizeof(WORK));
pi->count--;
pi->saveflag=1;
printf("recorddeletesuccessfully!
\n");
}
}
printf("pleaseinputyourchoice[0~5]:
");
}
/*显示*/
voidDisp(PI*pi)
{
inti;
WORK*p=pi->pHead;
if(pi->count==0)
{
printf("norecordfound\n");
printf("\npleaseinputyourchoice[0~5]:
");
return;
}
printheader();
for(i=1;i<=pi->count;i++)
{
printf(FORMAT,DATA);
printf(END);
p++;
}
}
voidNew(PI*pi)
{
FILE*fp;
charname[10];
charfname[10]=".\\";
printf("pleaseinputthedatefilenamefoecreate:
");
scanf("%s",fname);
strcat(fname,name);
strcat(fname,".dat");
fp=fopen(fname,"wb");
if(fp==NULL)
{
printf("\n=====>openfileerror!
\n");
return;
}
strcpy(pi->fname,fname);
fclose(fp);
}
voidLoad(PI*pi)
{
FILE*fp;
WORK*p=pi->pHead;
charname[10];
charfname[10]=".\\";
printf("pleaseinputthedatafilenameforload:
");
scanf("%s",name);
strcat(fname,name);
fp=fopen(fname,"rb");
if(fp==NULL)
{
printf("\n====>openfileerror!
\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("loaddatafile%ssuccessfully!
",name);
fclose(fp);
}
voidSave(PI*pi)
{
FILE*fp;
intnumwriten;
if(!
strlen(pi->fname))
New(pi);
fp=fopen(pi->fname,"wb");
if(fp==NULL)
{
printf("\n====>openfileerror!
\n");
fclose(fp);
return;
}
if(pi->count)
{
numwriten=fwrite(pi->pHead,1,pi->count*sizeof(WORK),fp);
pi->saveflag=0;
printf("filesavesuccesefully!
");
}
else
printf("norecordforsave!
");
fclose(fp);
}
4测试分析
添加时
Q1:
性别通过输入0或1输出womanorman
有if语句进行选择
Q2:
实得工资由应发工资减去应扣工资自动得到
在程序中做减法
添加后
删除
Q1:
通过工号或姓名删除
使用if语句进行选择,并用for语句对进行搜索
Q2:
删除中间摸个记录
删除后
修改
查找
Q1:
要求通过工号或者姓名查找
使用if语句
Q2:
如果找不到记录则要返回
使用if–else语句找不到就输出源数据
显示
5.课程设计总结
通过我们小组的共同努力终于完成任务,制作了职工工资管理系统。
虽然这系统我们是参照课本的类似例题制作,但其中还是集大家的努力进行修改,使系统更加完善。
但由于能力有限,系统还是不是很稳定。
比如,输入进入公司时间时,不能精确到具体时间。
总的来说,我们制作的系统还是能达到基本要求的,实现职工工资管理系统的功能。
自我评价:
通过这次作业,我发现自己的不足之处。
对一些C语言的基本东西还是比较陌生,所以不能熟悉运用。
增加了负担,所以这给与我提示是要再去好好看几遍书,熟悉其内容。
这次作业我们小组成员也发挥出各自所有的能力,相互协作,共同努力思考,对一些疑难点和问题进行讨论。
我也发挥出带头领导的作用,制定出相对合理的工作计划并予以实施。
总的来说,我在这次工作中是投入大量时间和精力的,实实在在的努力!
教师评价
成绩评定:
日期:
年月日
目录
第一章总论1
1.1项目概况1
1.2可行性研究报告编制单位4
1.3承办单位简介4
1.4项目区概况5
1.5可行性研究依据9
1.6可行性研究的范围10
第二章项目建设背景及必要性11
2.1项目建设背景11
2.2项目建设必要性14
第三章项目建设地址及条件17
3.1项目建设地址17
3.2项目建设条件17
第四章工程建设方案22
4.1项目设计依据与原则22
4.2工程规划方案23
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统 设计 语言 课程设计
文档标签
- 语言程序设计教师工资管理系统
- 语言课程设计报告职工工资
- c++课程设计职工工资管理
- 职工工资管理课程设计传洋职工工资管理
- 语言职工工资管理系统
- 职工工资管理系统设计
- C语言职工工资管理系统设计报告语言职工工资
- c++课程设计高校工资管理
- java课程设计职工工资管理
- 职工工资管理系统语言
- 语言课程设计职工工资管理
- 语言课程设计职工考勤
- c语言课程设计报告职工工资管理系统语言课程设计
- 课程设计职工工资管理系统
- 档案管理课程设计教职工
- 课程设计工资管理系统设计
- 课程设计职工管理系统
- 基于c++语言职工工资
- 语言程序设计纳税工资系统
- 语言教师管理系统
- 语言程序设计报告职工工资管理
- VFP程序设计工资管理系统
- 教师工资管理系统
- 教师工资管理系统
- C++程序工资管理系统
- C++语言程序设计17秋福师C++
- 语言程序设计企业员工管理