资源描述
《综合实验》
实验报告
实 验 名 称___职工工资信息管理系统________
学 生 专业_____网络工程_________________
学 生 学 号____ ________
学 生 姓 名______ _______________
一、 题目
职工工资信息管理系统
Ⅰ、需要处理的基础抒抉
职工基本信息:如工资卡号、身份证号、姓名、性别、年龄、工龄、部门、技术职称、技术职称编号、家庭电话号码、手机号码等。
工资基础信息:技术职称编号、技术职称、基本工资、职务工资、各种补助等。
费用扣除信息:工资卡号、水费、电费、清洁费(5元/月)、闭路电视费(10/月)等。
工资单数据:工资卡号、姓名、应发工资、水费、电费、清洁费、闭路电视费、税金、实发工资、特别奖励。其中:税金计算方法为:
应发工资<1800元,税金=0;
1800<应发工资<3400,税金=(应发工资-1800)*5%
应发工资>3400元,税金=(应发工资-3400)*10%
Ⅱ、系统功能:
(1)、各种基本数据的录入。如:职工基本信息录入。
(2)、各种基本数据的修改。如:允许对以及录入的数据重新进行编辑、修改。
(3)、各种基本数据的插入。如:在工资基础信息中插入一条新信息。
(4)、各种基本数据的删除。如:假设某员工调离,删除该员工的相关信息等。
(5)、基于各种数据的查询。如:技术职称为技术员的所有员工、基本工资在1000元以上的员工等。
(6)、基于各种基本数据的统计计算
Ⅲ、数据结构说明及举例
数据结构可以采用十字交叉链表,也允许辅之以其他链表来完成对系统基础数据的完整描述。
二、 系统功能模块结构图
职工工资信息管理系统
载入模块
插入模块
统计模块
查找模块
删除模块
修改模块
录入模块
三、 各模块功能
① 载入模块(struct worker *loadrec())
根据data.txt文件中所保存的数据送到内存中进行处理,此时可省略录入信息的过程。
② 录入模块(struct worker *enterrec())
对数据进行格式化,重新录入所有员工的信息。
③ 修改模块(void change(struct worker *p1))
根据用户所提供的员工身份证号查找员工并重新输入改员工的信息。
④ 插入模块(void newrec(struct worker *head))
新建一个员工的信息,并把该员工放到数据链表的最后面。
⑤ 删除模块(struct worker *delrec(struct worker *head))
根据用户锁提供的员工身份证号查找员工并删除该员工的信息。
⑥ 查找模块
根据用户的操作判断用户所需要查找的数据类型进行查找。
⑦ 统计模块
根据用户的操作判断用户所需要统计的数据类型进行统计。
四、实验结果
1、
2、
3、
4、……
五、体会
以前也做过很多实验,有时候觉得做实验没什么用,都是些小工具、小实验。现在才发现原来大实验是靠平时积累出来的,没有写过小实验,怎么会懂得写像这次综合实验一样的大实验呢!能写出想职工工资信息管理系统这么“庞大”的实验真的很有成就感。总结一句话:知识是日积月累的。由于时间比较赶,所以就实现了大部分的功能,还有小部分内容有待完善,敬请老师谅解,谢谢!
六、参考文献
①《C程序设计》 谭浩强 清华大学出版社
② 百度知道
……
附录:程序清单(程序代码)
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#include "stdlib.h"
#define LEN sizeof(struct worker)
struct worker
{
char credit_num[20];
char id[20];
char name[10];
char sex[10];
int age;
int workage;
char department[20];
char position[20];
int position_num;
char telephone[9];
char mobilephone[12];
double basepay;
double positionpay;
double extrapay;
double water_fare;
double power_fare;
double clean_fare;
double tv_fare;
double pay;
double tax;
double realpay;
double others;
struct worker *next;};
void menu() //菜单
{
system("cls");
printf(" ********************\n");
printf(" * 职工工资信息管理系统 *\n");
printf(" ********************\n");
printf(" 功能有限 敬请谅解\n");
printf(" 如有雷同 纯属巧合\n");
printf(" **********************************************\n");
printf(" **********************************************\n");
printf(" ** 0、退出编辑 **\n");
printf(" ** 1、数据录入 **\n");
printf(" ** 2、数据修改 **\n");
printf(" ** 3、数据插入 **\n");
printf(" ** 4、数据删除 **\n");
printf(" ** 5、数据查询 **\n");
printf(" ** 6、数据统计计算 **\n");
printf(" ** 任何情况下点击右上角的叉叉图标即可关闭 **\n");
printf(" **********************************************\n");
printf(" **********************************************\n");
printf("请输入所选择的序号:");
}
struct worker *enterrec() //录入信息
{
struct worker *head,*p1,*p2;
FILE *fp;
system("cls");
p1=p2=(struct worker*)malloc(LEN);
head=p1;
printf("\n\n请正确输入职工基本信息:(本项信息没有的用""0""代替)\n请输入身份证号码:");
scanf("%s",p1->id);
while(strcmp(p1->id,"0")!=0)
{printf("请输入姓名:");
scanf("%s",p1->name);
printf("请输入性别:");
scanf("%s",p1->sex);
printf("请输入年龄:");
scanf("%d",&p1->age);
printf("请输入工龄:");
scanf("%d",&p1->workage );
printf("请输入部门:");
scanf("%s",p1->department );
printf("请输入技术职称:");
scanf("%s",p1->position);
printf("请输入技术职称编号:");
scanf("%d",&p1->position_num );
printf("请输入工资卡号:");
scanf("%s",p1->credit_num );
printf("请输入家庭电话号码:");
scanf("%s",p1->telephone);
printf("请输入手机号码:");
scanf("%s",p1->mobilephone);
printf("请输入基本工资:");
scanf("%lf",&p1->basepay);
printf("请输入职务工资:");
scanf("%lf",&p1->positionpay);
printf("请输入补助资金:");
scanf("%lf",&p1->extrapay);
printf("请输入水费:");
scanf("%lf",&p1->water_fare);
printf("请输入电费:");
scanf("%lf",&p1->power_fare);
printf("请输入特别奖励资金:");
scanf("%lf",&p1->others);
p1->clean_fare=5;
p1->tv_fare=10;
p1->pay=p1->basepay+p1->positionpay+p1->extrapay-p1->water_fare-p1->power_fare-p1->clean_fare-p1->tv_fare;
if(p1->pay<=1800) p1->tax=0;
else if(p1->pay>1800&&p1->pay<=3400) p1->tax=(p1->pay-1800)*0.05;
else p1->tax=(p1->pay-3400)*0.1;
p1->realpay=p1->pay-p1->tax+p1->others;
p1=(struct worker*)malloc(LEN);
p2->next=p1;
p2=p1;
printf("请输入下一个员工身份证号码(若录入结束输入0即可!)");
scanf("%s",p1->id);
}
p2->next=NULL;
fp=fopen("data.txt","at+");
p1=head;
while(p1->next!=NULL)
{
fprintf(fp,"%s %s %s %d %d %s %s %d %s %s %s %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f\n",p1->id,p1->name,p1->sex,p1->age,p1->workage,p1->department,p1->position,p1->position_num,p1->credit_num,p1->telephone,p1->mobilephone,p1->basepay,p1->positionpay,p1->extrapay,p1->water_fare,p1->power_fare,p1->others,p1->pay,p1->tax,p1->realpay);
p1=p1->next;}
fclose(fp);
printf("录入成功\n");
system("pause");
return head;
}
void change(struct worker *p1) //修改
{
char id[20];
system("cls");
printf("请输入要编辑的员工身份证号:");
scanf("%s",id);
while(p1->next!=NULL)
{
if(strcmp(p1->id,id)==0) break;
else p1=p1->next;}
if(strcmp(p1->id,id)==0)
{
printf("\n\n请重新输入该职工基本信息:\n请输入身份证号码:");
scanf("%s",p1->id);
printf("请重新输入姓名:");
scanf("%s",p1->name);
printf("请重新输入性别:");
scanf("%s",p1->sex);
printf("请重新输入年龄:");
scanf("%d",&p1->age);
printf("请重新输入工龄:");
scanf("%d",&p1->workage );
printf("请重新输入部门:");
scanf("%s",p1->department );
printf("请重新输入技术职称:");
scanf("%s",p1->position);
printf("请重新输入技术职称编号:");
scanf("%d",&p1->position_num );
printf("请重新输入工资卡号:");
scanf("%s",p1->credit_num );
printf("请重新输入家庭电话号码:");
scanf("%s",p1->telephone);
printf("请重新输入手机号码:");
scanf("%s",p1->mobilephone);
printf("请重新输入基本工资:");
scanf("%lf",&p1->basepay);
printf("请重新输入职务工资:");
scanf("%lf",&p1->positionpay);
printf("请重新输入补助资金:");
scanf("%lf",&p1->extrapay);
printf("请重新输入水费:");
scanf("%lf",&p1->water_fare);
printf("请重新输入电费:");
scanf("%lf",&p1->power_fare);
printf("请重新输入特别奖励资金:");
scanf("%lf",&p1->others);
p1->clean_fare=5;
p1->tv_fare=10;
p1->pay=p1->basepay+p1->positionpay+p1->extrapay-p1->water_fare-p1->power_fare-p1->clean_fare-p1->tv_fare;
if(p1->pay<=1800) p1->tax=0;
else if(p1->pay>1800&&p1->pay<=3400) p1->tax=(p1->pay-1800)*0.05;
else p1->tax=(p1->pay-3400)*0.1;
p1->realpay=p1->pay-p1->tax+p1->others;
printf("修改成功\n");}
else printf("找不到该员工\n");
system("pause");
}
void write(struct worker *head) //写入
{
system("cls");
struct worker *p1;
FILE *fp;
fp=fopen("data.txt","wt+");
p1=head;
while(p1->next!=NULL)
{
fprintf(fp,"%s %s %s %d %d %s %s %d %s %s %s %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f\n",p1->id,p1->name,p1->sex,p1->age,p1->workage,p1->department,p1->position,p1->position_num,p1->credit_num,p1->telephone,p1->mobilephone,p1->basepay,p1->positionpay,p1->extrapay,p1->water_fare,p1->power_fare,p1->others,p1->pay,p1->tax,p1->realpay);
p1=p1->next;}
fclose(fp);
printf("数据已成功保存在data.txt中!\n");
}
struct worker *loadrec()
{
FILE *fp;
struct worker *head,*p1,*p2;
fp=fopen("data.txt","rt");
p1=p2=(struct worker*)malloc(LEN);
head=p1;
while(!feof(fp))
{
fscanf(fp,"%s %s %s %d %d %s %s %d %s %s %s %lf %lf %lf %lf %lf %lf %lf %lf %lf\n",p1->id,p1->name,&p1->sex,&p1->age,&p1->workage,p1->department,p1->position,&p1->position_num,p1->credit_num,&p1->telephone,p1->mobilephone,&p1->basepay,&p1->positionpay,&p1->extrapay,&p1->water_fare,&p1->power_fare,&p1->others,&p1->pay,&p1->tax,&p1->realpay);
p1=(struct worker*)malloc(LEN);
p2->next=p1;
p2=p1;
}
p1->next=NULL;
return head;
}
void newrec(struct worker *head) //插入
{
system("cls");
struct worker *p1,*p2;
p1=head;
while(p1->next!=NULL)
p1=p1->next;
p2=(struct worker*)malloc(LEN);
p2->next=NULL;
p1->next=p2;
p2=p1;
printf("\n\n请输入新职工基本信息:\n请输入身份证号码:");
scanf("%s",p1->id);
printf("请输入姓名:");
scanf("%s",p1->name);
printf("请输入性别:");
scanf("%s",p1->sex);
printf("请输入年龄:");
scanf("%d",&p1->age);
printf("请输入工龄:");
scanf("%d",&p1->workage );
printf("请输入部门:");
scanf("%s",p1->department );
printf("请输入技术职称:");
scanf("%s",p1->position);
printf("请输入技术职称编号:");
scanf("%d",&p1->position_num );
printf("请输入工资卡号:");
scanf("%s",p1->credit_num );
printf("请输入家庭电话号码:");
scanf("%s",p1->telephone);
printf("请输入手机号码:");
scanf("%s",p1->mobilephone);
printf("请输入基本工资:");
scanf("%lf",&p1->basepay);
printf("请输入职务工资:");
scanf("%lf",&p1->positionpay);
printf("请输入补助资金:");
scanf("%lf",&p1->extrapay);
printf("请输入水费:");
scanf("%lf",&p1->water_fare);
printf("请输入电费:");
scanf("%lf",&p1->power_fare);
printf("请输入特别奖励资金:");
scanf("%lf",&p1->others);
p1->clean_fare=5;
p1->tv_fare=10;
p1->pay=p1->basepay+p1->positionpay+p1->extrapay-p1->water_fare-p1->power_fare-p1->clean_fare-p1->tv_fare;
if(p1->pay<=1800) p1->tax=0;
else if(p1->pay>1800&&p1->pay<=3400) p1->tax=(p1->pay-1800)*0.05;
else p1->tax=(p1->pay-3400)*0.1;
p1->realpay=p1->pay-p1->tax+p1->others;
printf("插入信息成功\n");
system("pause");
}
struct worker *delrec(struct worker *head) //删除
{
system("cls");
struct worker *p1,*p2;
char str[20];
p1=head;
p2=NULL;
printf("请输入要删除职工的身份证号:");
scanf("%s",str);
while(p1->next!=NULL)
{ if(strcmp(p1->id,str)==0) break;
else
p2=p1;
p1=p1->next;}
if(p1->next==NULL&&(strcmp(p1->id,str)!=0)) printf("找不到该员工\n");
else if(p2==NULL) {p1=p1->next;head=p1;printf("删除成功!\n");}
else {p2->next=p1->next;printf("删除成功!\n");}
system("pause");
return head;
}
void search1(struct worker *head)
{
system("cls");
struct worker *p1;
p1=head;
printf("技术职称为技术员的所有员工身份证号:\n");
while(p1!=NULL)
{
if(strcmp(p1->position,"技术员")==0) {printf("%s\n",p1->id);p1=p1->next;}
else p1=p1->next;}
system("pause");
}
void search2(struct worker *head)
{
system("cls");
struct worker *p1;
p1=head;
printf("基本工资在1000元以上的员工身份证号:\n");
while(p1!=NULL)
{
if(p1->basepay>=1000) {printf("%s\n",p1->id);p1=p1->next;}
else p1=p1->next;}
system("pause");
}
void menu1(struct worker *head)
{
system("cls");
int n;
printf(" ** 1、查询技术职称为技术员的所有员工\n");
printf(" ** 2、查询基本工资在1000元以上的员工\n");
printf("请输入所选择的序号:");
scanf("%d",&n);
switch(n)
{
case 1: search1(head);break;
case 2: search2(head);break;
default : printf("输入有误,请退出重新输入\n");system("pause");}
}
void statistic1(struct worker *head)
{
struct worker *p1;
int n=0;
p1=head;
while(p1!=NULL)
{
if(p1->age<=20) {n++;p1=p1->next;}
else p1=p1->next;}
printf("年龄20岁以下青年员工数:%d\n",n-1);
system("pause");
}
void statistic2(struct worker *head)
{
struct worker *p1;
int n=0;
p1=head;
while(p1!=NULL)
{
if(p1->age>20&&p1->age<=45) {n++;p1=p1->next;}
else p1=p1->next;}
printf("年龄20岁以上,45岁以下的员工数:%d\n",n);
system("pause");
}
void statistic3(struct worker *head)
{
struct worker *p1;
int n=0;
p1=head;
while(p1!=NULL)
{
if(p1->age>=55) {n++;p1=p1->next;}
else p1=p1->next;}
printf("年龄55岁以上退休员工数:%d\n",n);
system("pause");
}
void menu2(struct worker *head)
{
system("cls");
int n;
printf(" ** 1、计算年龄20岁以下青年员工数\n");
printf(" ** 2、年龄20岁以上,45岁以下的员工数\n");
printf(" ** 3、年龄55岁以上退休员工数\n");
printf("请输入所选择的序号:");
scanf("%d",&n);
switch(n)
{
case 1: statistic1(head);break;
case 2: statistic2(head);break;
case 3: statistic3(head);break;
default : printf("输入有误,请退出重新输入\n");system("pause");}
}
main()
{
system("color 0A");
int n;
struct worker *head=NULL;
menu();
head=loadrec();
scanf("%d",&n);
while(n!=0)
{switch(n)
{
case 1: head=enterrec();break;
case 2: change(head);break;
case 3: newrec(head);break;
case 4: head=delrec(head);break;
case 5: menu1(head);break;
case 6: menu2(head);break;
case 0: return 0;
default : printf("输入有误,请退出重新进入!");}
write(head);
menu();
scanf("%d",&n);
}
system("cls");
printf("谢谢使用!\n");
return 0;
}
目 录
第一章 总论 1
第一节 项目背景 1
第二节 项目概况 2
第二章 项目建设必要性 5
第三章 市场分析与建设规模 7
第一节 汽车市场需求分析 7
第二节 市场预测 12
第三节 项目产品市场分析 13
第四节 建设规模 16
第四章 场址选择 17
第一节 场址所在位置现状 17
第二节 场址建设条件 17
第五章 技术方案、设备方案、工程方案 22
第一节 技术方案 22
第二节 设备方案 28
第三节 工程方案 33
第六章 原材料、燃料供应 38
第七章 总图布置与公用辅助工程 39
第一节 总图布置 39
第二节 公用辅助工程 43
第八章 环境影响评价 52
第一节 环境保护设计依据 52
第二节 项目建设和生产对环境的影响 52
第三节 环境保护措施 54
第四节 环境影响评价 56
第九章 劳动安全卫生与消防 57
第一节 劳动安全卫生 57
第二节 消防 64
第十章 节能与节能措施 67
第一节 项目概况 67
第二节 项目综合能耗 69
第三节 节约及合理利用能源的主要措施 71
第十一章 项目实施进度与人力资源配置 76
第一节 建设工期 76
第一节 项目实施进度 76
第二节 生产组织与人员培训 79
第十二章 投资估算与资金筹措 82
第一节 建设投资估算 82
第二节 总投资估算 86
第三节 资金筹措 86
第十四章 财务效益分析 88
第一节 财务评价基础数据与参数选取 88
第二节 销售收入及销售税金估算 89
第三节 成本费用估算 89
第四节 财务评价 91
第五节 不确定性分析 93
第十三章 风险分析 95
第十四章 结论与建议 97
第一节 研究结论 97
第二节 建议 97
展开阅读全文