资源描述
《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语言的基本东西还是比较陌生,所以不能熟悉运用。增加了负担,所以这给与我提示是要再去好好看几遍书,熟悉其内容。
这次作业我们小组成员也发挥出各自所有的能力,相互协作,共同努力思考,对一些疑难点和问题进行讨论。我也发挥出带头领导的作用,制定出相对合理的工作计划并予以实施。
总的来说,我在这次工作中是投入大量时间和精力的,实实在在的努力!
教师评价
成绩评定:
日期: 年 月 日
目 录
第一章 总 论 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
4.3 工程技术方案 25
4.4 给排水工程 30
4.5 供电工程 31
4.6 采暖及通风 35
4.7 燃气设计 37
第五章 环境保护 38
5.1 环境保护标准 38
5.2 环境影响初步分析 38
5.3 施工期环境保护措施 39
5.4 运营期间环境保护措施 41
5.5 绿化 42
5.6 环境影响评价 43
第六章 节 能 44
6.1 依据标准、法律、法规和规范 44
6.2 能耗状况和能耗指标分析 44
6.3 节能措施 45
第七章 劳动安全卫生消防 48
7.1 设计依据 48
7.2 危害因素及危害程度分析 48
7.3 安全设施及措施 48
7.4 消防设施 50
第八章 抗震设防 52
8.1 编制依据 52
8.2 建设场地条件 52
8.3 建筑结构概况与抗震设计 54
第九章 组织机构与项目管理 56
9.1 组织机构 56
9.2 项目管理 56
第十章 项目建设实施进度 59
10.1 项目建设期 59
10.2 项目建设实施规划 59
第十一章 工程招标 60
11.1 招标依据 60
11.2 招标投标的基本原则 60
11.3 项目概况 61
11.4 项目提前招标情况 62
11.5 项目招标内容 62
第十二章 投资估算与资金措筹 65
12.1 建设投资估算的范围 65
12.2 投资估算依据 65
12.3 投资估算编制内容 66
12.4 资金筹措 70
第十三章 效益分析 71
13.1 项目实施对社会的影响分析 71
13.2 项目与所在地互适性分析 71
13.3 社会风险分析 72
13.4 社会评价结论 74
第十四章 社会稳定风险评估分析 75
14.1 社会稳定风险评估因素 75
14.2 项目建设社会稳定风险分析 76
第十五章 结论与建议 78
15.1 研究结论 78
15.2 建议 78
展开阅读全文