资源描述
计算机工程系课程设计报告
成绩:
指导教师
(署名):
课程名称: C语言程序设计
课程设计题目:公司员工业绩管理系统
班级计算机科学与技术16-4班
姓名 曾钦钰
学号
2023年6月
目录
1 系统开发设计的意义 1
2 系统介绍 1
3 功能介绍 1
4 系统功能模块结构图 2
5 函数编写 2
6实训源程序代码和调试过程(涉及截图) 3
1.1 进入界面 3
1.2 选择菜单 4
1.3 输入信息 4
1.4 显示信息 5
1.5 增项 5
1.6 删项 6
1.7 修改信息 6
1.8记录信息 7
1.9查找 7
2.0 退出系统 8
7 源程序代码 9
小结 19
参考文献 20
1 系统开发设计的意义
为了实现提高公司管理部门的工作效率;充足运用资源;减少不必要的人力,物力和财力的支出;方便公司管理部门的工作人员全面地掌握员工住宿情况等目的。
2 系统介绍
该系统定位于公司员工的管理,暂时考虑单机环境下的实现;操作系统选择目前常用的Windows 7,Windows 8,和Windows 10系统。
3 功能介绍
1, 进入主界面:规定输入密码,输入三次错误系统锁定。
2,输入记录:将员工的基本信息涉及身份证号,姓名,性别,地区,分数等数据作为一个记录写入文献。
3,显示记录:显示员工的各项信息 。
4,增长记录: 增长多个员工的基本信息,位于之前的员工后面。
5,删除记录: 删除员工信息。
6,修改记录:可以修改员工的任何一项基本信息。
7,查找记录:可以根据员工的身份证号查找并显示出员工的信息。
8,退出系统
4 系统功能模块结构图
本管理系统理由输入记录,显示记录,增长记录,删除记录,修改记录,查找记录,六个大模块组成,其总体结构图如下。
图4-1
5 函数编写
定义结构类型;
定义全局变量;
定义、编写记录(数据)输入函数;
定义、编写记录(数据)显示函数;
定义、编写记录(数据)增长函数;
定义、编写记录(数据)删除函数;
定义、编写记录(数据)修改函数;
定义、编写记录(数据)查找函数;
函数名称
函数功能
enter()
进入函数
input();
输入函数
display()
显示函数
add ()
增长函数
delet()
删除函数
amend()
修改函数
preside ();
记录函数
fint ();
查找函数
output();
退出函数
图5-1
6实训源程序代码和调试过程(涉及截图)
1.1 进入界面
图6-1
1.2 选择菜单
图6-2
1.3 输入信息
图6-3
1.4 显示信息
图6-4
1.5 增项
图6-5
1.6 删项
图6-6
1.7 修改信息
图6-7
1.8记录信息
图6-8
1.9查找
图6-9
2.0 退出系统
图6-10
7 源程序代码
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define N 20
struct worker /*定义员工结构体*/
{
long num;
char name[20];
char sex[2];
char address[20];
int score[3];
int sum;
int ave;
};
struct worker wor[N];
int t=1,pl=0;
void enter();
void input();
void display();
void add();
void delet();
void amend();
void preside();
void fint();
void output();
void main()
{
int password;
int i;
printf("\n\n\n\n\t\t\t公司员工业绩管理系统\n"); /*初始界面 输入验证密码*/
for(i=1;i<=3;i++)
{
printf("\n\n\t\t\t请输入密码:");
scanf("%d",&password);
if(password==511)
{
enter();
break;
}
printf("error!please input again!");
}
printf("密码输入三次有误!系统锁定!");
}
void enter() /*进入主菜单函数*/
{
int choice,w;
char k;
system("cls");
printf("\t\t\t公司员工业绩管理系统\n\n");
printf("\t\t1. 录入.\t2. 显示.\t3. 增项.\t4. 删项.\n\t\t5. 修改.\t6. 记录.\t7. 查找.\t8.退出.\n");
printf("\n 输入序号执行相应功能:");
scanf("%d",&choice);
switch(choice)
{
case 1: input();break;
case 2: display(); break;
case 3: add();break;
case 4: delet();break;
case 5: amend();break;
case 6: preside(); break;
case 7: fint(); break;
case 8: output();break;
default: w=1;
}
if(w==1)
{
printf("输入有误,按任意键重新选怿.\n");
k=getchar();
getch();
enter();
}
}
void input() /*员工信息录入的函数*/
{
int x,count=0,i;
char w,r[20],o;
struct worker *p;
p=wor;
system("cls");
printf("\t\t\t 员工信息的录入.\n");
do
{
pl++;
printf("请输入第%d 个员工的信息.\n\n",t);
printf("身份证号:\n");
scanf("%ld",&p->num);
printf("姓名:\n");
scanf("%s",&p->name);
printf("\n");
printf("性别:\n");
gets(r);
gets(&p->sex);
printf("\n");
printf("地区:\n");
scanf("%s",&p->address);
printf("\n");
printf("三种成绩:1.出勤率.2.年销售业绩.3.平时表现.\n");
for(i=0;i<3;i++)
scanf("%d",&p->score[i]);
p->sum = p->score[0] + p->score[1] + p->score[2];
p->ave = p->sum/3;
printf("\n\n 是否要继续输入员工信息,假如是请按 y;不是请按 n.\n");
o=getchar();
w=getchar();
if(w=='y' || w=='Y')
{
t++;
x=1;
p++;
}
else
x=0;
}
while(x==1);
if(w=='n' || w=='N')
printf("按任意键返回.\n");
getch();
enter();
}
void display() /*显示员工信息*/
{
int i,j;
system("cls");
printf("\t\t\t 员工信息显示.\n\n");
for(j=0;j<t;j++)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n","身份证号","姓名","性别","地区","出勤率","年销售业绩","平时表现","年终均分","年终年终年终总分");
printf("%ld\t%s\t%s\t%s\t",wor[j].num, wor[j].name, wor[j].sex,wor[j].address);
for(i=0;i<3;i++)
printf("%d\t", wor[j].score[i]);
printf("%d\t", wor[j].ave);
printf("%d\t", wor[j].sum);
printf("\n\n");
}
printf("\n 按任意键返回.\n");
getch();
enter();
}
void add() /*员工信息的增长*/
{
int i,x;
char a, w;
struct worker *p;
p=wor+t;
system("cls");
printf("\n\t\t\t增长员工信息.\n");
do
{
printf("请输入第%d 个员工的信息.\n\n",t+1);
printf("身份证号:\n");
scanf("%ld",&p->num);
printf("\n");
printf("姓名:\n");
scanf("%s",p->name);
printf("\n");
printf("性别:\n");
scanf("%s",p->sex);
printf("\n");
printf("地区:\n");
scanf("%s",p->address);
printf("\n");
printf("三种成绩:1.出勤率.2.年销售业绩.3.平时表现.\n");
for(i=0;i<3;i++)
scanf("%d",&p->score[i]);
for(i=0;i<3;i++)
p->sum = p->score[0] + p->score[1] + p->score[2];
p->ave = p->sum/3;
a=getchar();
printf("\n 是否要继续输入员工信息,假如是请按 y;不是请按 n.\n\n");
w=getchar();
p++;
t++;
if(w=='y'||w=='Y')
{
x=1;
}
if(w=='n'||w=='N')
{
x=0;
break;
}
}while(x==1) ;
if(x==0)
{
printf("\n");
printf("按任意键返回.\n");
getch();
enter();
}
}
void delet() /*员工信息的删除*/
{
long b;
int z,j;
int r=t;
char c,x;
struct worker *p;
system("cls");
printf("\n\t\t\t删除员工信息\n");
printf(" 请输入要删除员工的身份证号:\n\n");
scanf("%ld",&b);
for(p=wor;p<wor+t;p++)
if(p->num==b)
break;
else
r--;
if(r==0)
{
printf("你要删除的员工不存在,请按任意键返回.\n");
getch();
enter();
}
printf("\n 你要删除的员工为:\n");
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","身份证号","姓名","性别","地区","出勤率 ","年销售业绩","平时表现","年终均分","年终年终总分");
printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address);
for(j=0;j<3;j++)
printf("%-8d",p->score[j]);
printf("%-8d",p->ave);
printf("%-8d",p->sum);
printf("\n你拟定要删除吗?如是请输入 y;不是请输入 n.\n");
x=getchar();
c=getchar();
if(c=='y'||c=='Y')
{
for(p=wor;p<wor+t;p++)
*p=*(p+1);
t--;
printf("系统已为你删除信息,请按任意键返回.\n");
getch();
enter();
}
if(c=='n'||c=='N')
{
printf("删除信息取消!按任意键返回.\n");
getch();
enter();
}
}
void amend() /*员工信息的修改*/
{
long j;
int i,z,r=t;
char c,d,e,f,q,u,l,v,m,k,h1,h2,h3,h4;
struct worker *p;
system("cls");
printf("\n\t\t\t修改员工信息\n");
printf(" 请输入要修改员工的身份证号:\n\n");
scanf("%ld",&j);
for(p=wor;p<wor+t;p++)
if(p->num==j)
break;
else
r--;
if(r==0)
{
printf("你输入的员工不存在,请按任意键返回.\n");
getch();
enter();
}
printf("\n 你要修改的员工为:\n");
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","身份证号","姓名","性别","地区","出勤率 ","年销售业绩","平时表现","年终均分","年终年终总分");
printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address);
for(j=0;j<3;j++)
printf("%-8d",p->score[j]);
printf("%-8d",p->ave);
printf("%-8d",p->sum);
printf("\n\n 是否要修改身份证号:是请按 y;不是请按 n.\n\n");
l=getchar();
c=getchar();
if(c=='y'||c=='Y')
{
printf("请输入对的的身份证号:\n\n");
scanf("%ld",&p->num);
}
if(c=='n'||c=='N')
z=1;
printf("是否要修改姓名:是请按 y;不是请按 n.\n\n");
q=getchar();
d=getchar();
m=getchar();
if(d=='y'||d=='Y')
{
printf("请输入对的的姓名:\n");
scanf("%s",p->name);
u=getchar();
}
if(d=='n'||c=='N')
z++;
printf("\n 是否要修改性别:是请按 y;不是请按n.\n\n");
e=getchar();
k=getchar();
if(e=='y'||e=='Y')
{
printf("请输入对的的性别:\n");
scanf("%s",p->sex);
}
if(e=='N'||e=='n')
z++;
printf("\n 是否要修改地区:是请按 y;不是请按 n.\n\n");
h3=getchar();
h4=getchar();
if(h3=='y'||h3=='Y')
{
printf("请输入对的的地区:\n");
scanf("%s",p->address);
}
if(h3=='N'||h3=='n')
z++;
printf("\n 是否要修改三种成绩:是请按 y;不是请按 n.\n\n");
f=getchar();
if(f=='y'||f=='Y')
{
printf("请输入对的的三种成绩:");
for(i=0;i<3;i++)
scanf("%d",&p->score[i]);
p->sum = p->score[0] + p->score[1] + p->score[2];
p->ave = p->sum/3;
}
v=getchar();
if(f=='n'||f=='N')
{
printf("请按任意键返回.\n");
getch();
enter();
}
}
void preside() /*员工信息的记录*/
{
int i,j,o=0,b=10,r=60;
struct worker *p;
system("cls");
printf("\n\t\t\t 员工信息记录.\n");
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","身份证号","姓名","性别","地区","出勤率 ","年销售业绩","平时表现","年终均分","年终年终总分");
for(p=wor;p<wor+t;p++)
{
printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address);
for(j=0;j<3;j++)
printf("%-8d",p->score[j]);
printf("%-8d",p->ave);
printf("%-8d",p->sum);
printf("\n\n");
}
printf("\n\n\n");
for(p=wor;p<wor+t;p++)
{
for(i=0;i<3;i++)
if(p->score[i]<r)
{
b=b-1;o=o+1;
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","身份证号","姓名","性别","地区","出勤率 ","年销售业绩","平时表现","年终均分","年终年终总分");
printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address);
for(j=0;j<3;j++)
printf("%-8d",p->score[j]);
printf("%-8d",p->ave);
printf("%-8d",p->sum);
printf("\n\n");
break;
}
}
if(b==10)
printf("\n\n 公司所有的人都通过考试.\n\n");
else if(b<10)
printf("\n 以上为合格的,公司不合格的人数为:%d 人.\n\n",o);
printf("\n");
printf("记录完毕,请按任意键返回.\n");
getch();
enter();
}
void fint() /*查找员工信息*/
{
int i,j=t;
long num_a;
struct worker *p;
char a,b;
system("cls");
printf("\n\t\t\t查找员工信息\n");
printf("\t\t\t 请输入要查找的员工身份证号:\n");
scanf("%ld",&num_a);
for(p=wor;p<wor+t;p++)
{
j--;
if(p->num==num_a)
break;
if(j==0)
{
printf("不存在该员工,请按任意键返回.\n\n");
a=getchar();
getch();
enter();
}
}
printf("\n 你要查找的员工为:\n\n");
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","身份证号","姓名","性别","地区","出勤率 ","年销售业绩","平时表现","年终均分","年终年终总分");
printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address);
for(i=0;i<3;i++)
printf("%-8d",p->score[i]);
printf("%-8d",p->ave);
printf("%-8d",p->sum);
printf("\n\n 查找完毕,请按任意键返回.");
b=getchar();
getch();
enter();
}
void output() /*退出系统*/
{
system("cls");
exit(0);
}
小结
这次实验,虽然看起来很简朴,但是真的坐起来的时候就发现了困难重重,让我深刻的体会到了要做一个软件,里面需要的很多知识还是我们没有接触过的,所以我们需要不断的实践,不断的学习,不断的发现问题去思考问题。实验是培养我们综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。本次实验让我受益匪浅。通过这次实验,我也将课本上的知识融会贯通,起到了很好的辅助学习的效果,我也发现我学到的知识比上个学期学的还要多。理论和实践相结合是学习的最有效的方法,这次设计中我也发现了自己的很多局限性之处,对以前所学的理解不够深刻,掌握不够牢固。通过这次实验过后,我也把所学过的知识重新温故了一边。
参考文献
[1]谭浩强《C程序设计(第三版)》 北京 清华大学出版社 2023.7
[2]耿国华《高级程序设计技术(C语言版)》西安电子科技大学出版社 2023
[3]谭浩强《C程序设计教程》 北京 高等教育出版社 1992
[4]C编写组编 《常用C语言用法快速查询手册》 北京 龙门书局 1995
展开阅读全文