职工信息管理系统C语言课程设计报告.docx
- 文档编号:9703280
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:31
- 大小:89.83KB
职工信息管理系统C语言课程设计报告.docx
《职工信息管理系统C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统C语言课程设计报告.docx(31页珍藏版)》请在冰点文库上搜索。
职工信息管理系统C语言课程设计报告
1、前言。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
2、需求分析。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
3、总体设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
4、详细设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
4
5、程序清单。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
5
6、调试过程。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
18
7、结束语。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
22
8、参考文献。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
22
1.前言
随着信息技术在越来越深入而广泛的应用,管理系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科。
任何一个单位要生存要发展要高效率的把内部活动有机的组织起来。
就必须建立与自身相适应的信息管理系统。
本组设计的是一个关于职工信息管理的数据库系统。
通过这个系统管理员可以简洁方便的对职工信息进行增加.删除.修改等功能。
用户也可以通过这个系统对职工信息进行查询等功能。
建立一个“职工信息管理系统”。
系统以菜单方式工作。
编写有职工基本信息,包括职工编号、姓名、部门、职称、基本工资、加班工资、奖金和总工资构成。
并且要求
(1)添加职工的记录
(2)查询职工(分别按职工编号和姓名)
(3)对职工数据排序(分别按总工资和基本工资的降序)
(4)删除职工记录
(5)修改职工记录
(6)部门职工分析(平均工资、各种职称所占的百分比)
(7)输出职工信息表
等基本操作。
建立职工信息管理的文件。
2、需求分析
根据要设计的职工信息管理系统可以知道职工数据由职工编号、姓名、部门、职称、基本工资、加班工资、奖金和总工资构成。
功能要求:
(1)添加职工的记录
(2)查询职工(分别按职工编号和姓名)
(3)对职工数据排序(分别按总工资和基本工资的降序)
(4)删除职工记录
(5)修改职工记录
(6)部门职工分析(平均工资、各种职称所占的百分比)
(7)输出职工信息表
3.总体设计
根据上面的需求分析,可以将这个系统设计分为以下模块:
增加职工信息、删除职工信息、查询职工信息、修改职工信息、插入职工信息、排序、保存职工信息、显示职工信息。
系统功能模块如下:
4.详细设计
(1).主函数:
创建一个链表,并使用指针。
voidmain()
{
STR*head,*p;//,*q;
printf("\n\n\t\t\t你好!
我觉得您在进行其他的操作之前是不是应该先创建数据?
\n\n");
Interface();//界面显示函数
head=(STR*)malloc(sizeof(STR));
p=head;
//q=p;
while
(1)
{
switch(a)
{
case0:
{
printf("\n\n\t\t\t这个程序已退出……\n\n");
exit(0);
}
}
(2).定义各部分功能函数:
case1:
creat(head);break;
case2:
found(head);break;
case4:
Delete(head);break;
case7:
print(head,0);break;
case5:
amend(head);break;
case3:
sort(head);break;
case6:
aver(head);break;
(3)菜单函数:
voidInterface()//界面显示函数
{
printf("\n\n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t
(1)添加职工的记录\n");//gaoding
printf("\t\t\t
(2)查询职工(分别按职工编号和姓名)\n");//
printf("\t\t\t(3)对职工数据排序(分别按总工资和基本工资)\n");
printf("\t\t\t(4)删除职工记录\n");//
printf("\t\t\t(5)修改职工记录\n");//
printf("\t\t\t(6)部门职工分析(平均工资,各种职称所占的百分比)\n");
printf("\t\t\t(7)输出职工信息表\n");//
printf("\t\t\t(0)退出程序\n");//
printf("\t\t\t********************************************\n");
printf("\t\t\t请输入你要执行的命令\n\t\t\t");
5、程序清单
#include
#include
#include
typedefstructstr
{
//structstr*last;
structstr*next;
charnum[20],name[5],bumen[10],title[10];
intmoney1,money2,money3,money4;
}STR;
inta;
intDelete(STR*);
voidcreat(STR*);
voidInterface();
voidprint(STR*head,inti);
voidamend(STR*);
voidfound(STR*);
voidsprt(STR*);
voidaver(STR*);
voidexchange(STR*,STR*);
//***************************************************************
voidInterface()//界面显示函数
{
printf("\n\n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t
(1)添加职工的记录\n");//gaoding
printf("\t\t\t
(2)查询职工(分别按职工编号和姓名)\n");//
printf("\t\t\t(3)对职工数据排序(分别按总工资和基本工资)\n");
printf("\t\t\t(4)删除职工记录\n");//
printf("\t\t\t(5)修改职工记录\n");//
printf("\t\t\t(6)部门职工分析(平均工资,各种职称所占的百分比)\n");
printf("\t\t\t(7)输出职工信息表\n");//
printf("\t\t\t(0)退出程序\n");//
printf("\t\t\t********************************************\n");
printf("\t\t\t请输入你要执行的命令\n\t\t\t");
scanf("%d",&a);
while
(1)
{
if(a>7||a<0)
printf("输入错误请从新输入\n");
else
break;
printf("\t\t\t请输入你要执行的命令\n\t\t\t");
scanf("%d",&a);
}
system("pause");
system("cls");
}
//*********************************************************
//*********************************************************
//*********************************************************
//*********************************************************创建
voidcreat(STR*p)
{
inti=1;//用来计数
STR*q,*head;
head=p;
q=p;
printf("请输入编号姓名部门职称基本工资加班工资奖金(以‘#’号结束)\n");
printf("%d",i);
scanf("%s%s%s%s%d%d%d",p->num,p->name,p->bumen,p->title,&p->money1,&p->money2,&p->money3);
//getchar();
p->money4=p->money1+p->money2+p->money3;
while
(1)
{
i++;
p=(STR*)malloc(sizeof(STR));
q->next=p;
//p->last=q;
printf("%d",i);
scanf("%s",p->num);
if(p->num[0]=='#')
break;
q=p;
scanf("%s%s%s%d%d%d",p->name,p->bumen,p->title,&p->money1,&p->money2,&p->money3);
p->money4=p->money1+p->money2+p->money3;
//printf("%d\n",p->money4);
}
q->next=NULL;
//head->last=NULL;
print(head,1);
system("pause");
p=head;
printf("已经输入完毕……\n");
printf("\t\t\t*******************************\n");
printf("\t\t\t
(1)返回首页\n");
printf("\t\t\t
(2)退出程序\n");
printf("\t\t\t*******************************\n");
scanf("%d",&a);
getchar();
system("cls");
switch(a)
{
case1:
Interface();break;
case2:
exit
(1);break;
default:
{printf("\t\t\t抱歉,输错了!
\n");
a=0;}
}
//system("pause");
//returnhead;
}
//*********************************************************
//*********************************************************删除职工信息
intDelete(STR*head)
{
chart[5],b[20];//t装姓名b装编号
inti;
STR*p,*q;
p=head;
q=head;
printf("\t\t\t*******************************\n");
printf("\t\t\t
(1)按名字删除\n");
printf("\t\t\t
(2)按编号删除\n");
printf("\t\t\t(3)全部删除\n");
printf("\t\t\t(4)返回主函数\n");
printf("\t\t\t(5)退出程序\n");
printf("\t\t\t*******************************\n\t\t\t");
scanf("%d",&i);
switch(i)
{
case1:
{
printf("\t\t\t请输入要删除的职工的名字(请一定要把名字输对)\n\t\t\t");
scanf("%s",t);
while(strcmp(p->name,t))
{
q=p;
p=p->next;
}
q->next=p->next;
//free(p);
printf("\t\t\tok已经把这个职工的记录删除了\n");
system("pause");
system("cls");
Interface();
}break;
case2:
{
printf("\t\t\t请输入要删除的职工的编号(请一定要把编号输对)\n\t\t\t");
scanf("%s",b);
while(strcmp(p->num,b))
{
q=p;
p=p->next;
}
q->next=p->next;
//free(p);
printf("\t\t\tok已经把这个职工的记录删除了\n");
system("pause");
system("cls");
Interface();
}break;
case3:
{
while(p->next!
=NULL)
{
q=p->next;
free(p);
p=q;
}
printf("\t\t\t已全部删除\n");
system("pause");
system("cls");
Interface();
}break;
case4:
{
system("cls");
Interface();
return0;
}
case5:
{
printf("\t\t\t程序即将退出\n");
//system("pause");
exit(0);
};
default:
{
system("cls");
printf("\n\n\t\t\t又错了\n\n");
Interface();
return0;
}
}
return0;
}
//*********************************************************
//*********************************************************输出
voidprint(STR*head,inti)//是0则输出到屏幕1则输出到文本
{
FILE*fp;
intn=1;//n用来记录员工的个数
STR*q,*p;
q=head;
p=head;
if(i)
{
//printf("\t请输入你想把数据保存的位置:
如K:
\\\\wang\\\\txt.dat\n");
getchar();
if((fp=fopen("D:
\\wxc.txt","w"))==NULL)
{
printf("\t\t\t打开失败\n");
exit(0);
}
while(p->next!
=NULL)
{
fwrite(p,sizeof(STR),1,fp);
fputs("\n",fp);
p=p->next;
}
fclose(fp);
}
else
{
while(p!
=NULL)
{
printf("\t%d%s%s%s%s%d%d%d%d\n",n,p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);
p=p->next;
n++;
}
system("pause");
system("cls");
Interface();
}
}
//*********************************************************
//*********************************************************修改
voidamend(STR*head)
{
charb[20];//b装编号
STR*p,*q;
p=head;
q=head;
be:
printf("\n\n请输入您要修改的职工的编号或名字\n");
scanf("%s",b);
getchar();
if(b[0]<='0'||b[0]>='9')
{
while(strcmp(p->name,b))
{
p=p->next;
if(p==NULL)
{
printf("\t\t\t对不起没有找到这个职工\n");
p=head;
gotobe;
}
}
printf("\t
(1)%s
(2)%s(3)%s(4)%s(5)%d(6)%d(7)%d(8)%d\n",p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);
}
else
{
while(strcmp(p->num,b))
{
p=p->next;
if(p==NULL)
{
printf("\t\t\t对不起没有找到这个职工\n");
p=head;
gotobe;
}
}
printf("\t
(1)%s
(2)%s(3)%s(4)%s(5)%d(6)%d(7)%d(8)%d\n",p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);
}
printf("\t\t\t请输入您要修改的内容的编号和内容\n\t\t\t");
scanf("%d",&a);
getchar();
switch(a)
{
case1:
scanf("%s",p->num);break;
case2:
scanf("%s",p->name);break;
case3:
scanf("%s",p->bumen);break;
case4:
scanf("%s",p->title);break;
case5:
scanf("%d",p->money1);break;
case6:
scanf("%d",p->money2);break;
case7:
scanf("%d",p->money3);break;
case8:
scanf("%d",p->money4);break;
}
printf("\t%s%s%s%s%d%d%d%d\n",p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);
system("pause");
system("cls");
Interface();
}
//*********************************************************
//*********************************************************查找
voidfound(STR*head)
{
charb[10];
STR*p,*q;
p=head;
q=head;
be:
printf("\n\n请输入您要查询的职工的编号或名字\n");
scanf("%s",b);
if(b[0]<='0'||b[0]>='9')
{
while(strcmp(p->name,b))
{
if(p==NULL)
{
printf("\t\t\t对不起没有找到这个职工\n");
p=head;
gotobe;
}
p=p->next;
}
printf("\t%s%s%s%s%d%d%d%d\n",p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);
}
else
{
while(strcmp(p->num,b))
{
if(p==NULL)
{
printf("\t\t\t对不起没有找到这个职工\n");
p=head;
gotobe;
}
p=p->next;
}
printf("\t%s%s%s%s%d%d%d%d\n",p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);
}
system("pause");
system("cls");
Interface();
}
//*********************************************************
//*********************************************************排序
voidsort(STR*head)
{
STR*p,*q;//e用来当中间值
inti=0,t=0,j;
p=head->next;
q=head;
while(p!
=NULL)
{
t++;
p=p->next;
}
p=head->next;
printf("\n\n\t\t\t
(1)按基本工资排序\n");
printf("\t\t\t
(2)按总工资排序\n\t\t\t");
scanf("%d",&a);
//getchar();
if(a==1)
{
while(p!
=NULL)
{
if(p->money1
{
exchange(head,p);
}
p=p->next;
q=q->next;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工 信息管理 系统 语言 课程设计 报告