C课程设计报告员工信息管理系统.docx
- 文档编号:10659761
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:42
- 大小:1.08MB
C课程设计报告员工信息管理系统.docx
《C课程设计报告员工信息管理系统.docx》由会员分享,可在线阅读,更多相关《C课程设计报告员工信息管理系统.docx(42页珍藏版)》请在冰点文库上搜索。
C课程设计报告员工信息管理系统
C语言课程设计报告
题目:
员工信息管理系统
院系名称:
计算机学院
专业名称:
软件工程
班级:
学生姓名:
学号(8位):
指导教师:
设计起止时间:
一.设计目的
1.熟练掌握C语言的基本知识和编辑技能。
2.基本掌握程序设计的基本思路和方法。
3.通过自主编程的过程,对理论学习及动手能力有了很大的提高。
二.设计内容
1.通过管理员和普通用户登录界面进入员工管理系统。
2.该系统实现录入,添加,查询,修改,删除,排序,统计,浏览等功能。
3.可以注册新用户和修改用户密码。
三.概要设计
1.功能模块图;
2.各个模块详细的功能描述.
1.录入模块:
creat1()录入员工信息。
2.文件保存模块:
save_file()保存员工信息。
3.文件读取模块:
read_file()创建模块并读取文件中的信息。
4.添加模块:
add()添加一位员工的信息。
5.修改模块:
change()修改一位员工的信息。
6.删除模块:
delete()删除某位员工。
7.排序模块:
sort()对员工的信息排序。
8.查询模块:
search()查询某位员工的信息。
9.浏览模块:
output()浏览所有员工的信息。
10.统计模块:
record()对员工的信息进行统计。
11.登录模块:
login()给系统设置密码,选择用户界面。
12.注册模块:
sign()注册新用户。
13.密码修改模块:
modify()修改用户名密码。
四.详细设计
1.功能函数的调用关系图
2.各功能函数的数据流程图
3.重点设计及编码
在员工排序时,用的是冒泡排序,交换的是指针域。
for(r=head1;r!
=NULL;r=r->next)
for(p=head1;p->next->next!
=NULL;p=p->next)
{
if((p->next->age)>(p->next->next->age))
{
t=p->next->next;
p->next->next=t->next;
t->next=p->netx;
p->next=t;
}
}
五.测试数据及运行结果
1.正常测试数据和运行结果
登录界面(用管理员账号登录)进入系统:
浏览员工信息(输入1)
对员工按年龄进行排序
查询员工信息
修改员工信息
2.异常测试数据及运行结果
当你输入不在范围的数据时会显示出错。
输入不存在的员工姓名,会提示你此人不存在。
六.调试情况,设计技巧及体会
1.改进方案
通过这次c语言程序设计,很大程度上锻炼了我们写程序的动手能力
和自主思考能力。
但还是有很多不足之处:
1.没有对界面进行操作,只是实现了简单的功能。
2.部分代码较繁琐,可利用率不高。
3.程序注释不是太完善。
4.对于数据的错误输入提示不明确。
2.体会
通过这次课程设计,我对C语言有了更深刻的了解,增强了程序的编写能力,
巩固了专业知识,对程序的模块化观念也由模糊逐渐变得清晰了。
在程序的运行
与调试过程中出现了很多错误,通过反复地复习课本上的知识和上网查询资料等,
不停地修改与调试,我终于完成了这段程序,在调试过程中,我认识到了C语言
的灵活性与严谨性,同一个功能可以由不同的语句实现,但编写程序时要特别注
意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。
当然我也
认识到了自己的薄弱之处,如文件运用的不熟练,在以后的学习中我要集中精力、
端正态度,争取把知识学得更扎实、更全面。
七.参考文献
《C语言程序设计》王曙燕科学出版社
《C语言程序设计》谭浩强清华大学出版社
八.附录:
#include
#include
#include
#include
structnode
{
charid[10];/*员工号*/
charname[20];/*姓名*/
charsex;/*性别*/
intage;/*年龄*/
charpost[20];/*职位*/
intb_pay;/*底薪*/
intreward;/*奖金*/
intreal_pay;/*实际工资*/
structnode*next;
};
structcode
{
charname[10];/*用户名*/
charmima[10];/*密码*/
structcode*next;
};
/*录入模块*/
structnode*creat_1()/*尾插法创建带头结点的单链表*/
{
structnode*head1,*r,*s;
inti=0;
charchoice;
head1=(structnode*)malloc(sizeof(structnode));/*创建头结点*/
r=head1;
do{
s=(structnode*)malloc(sizeof(structnode));
printf("请输入第%d个人的信息:
\n",++i);
printf("输入员工序号:
");
scanf("%s",s->id);
printf("输入员工姓名:
");
getchar();
scanf("%s",s->name);
printf("输入员工性别:
");
getchar();
scanf("%c",&s->sex);
printf("输入员工年龄:
");
scanf("%d",&s->age);
printf("输入员工职位:
");
getchar();
scanf("%s",s->post);
printf("输入员工底薪:
");
scanf("%d",&s->b_pay);
printf("输入员工奖金:
");
scanf("%d",&s->reward);
printf("输入员工实际工资:
");
scanf("%d",&s->real_pay);
r->next=s;/*尾插新结点*/
r=s;/*指向尾结点*/
printf("是否继续录入?
(Y/N):
");
getchar();
choice=getchar();
}while(choice=='Y'||choice=='y');
r->next=NULL;
returnhead1;
}
/*员工文件保存模块*/
voidsave_file(structnode*head1)/*将单链表的信息保存到指定的磁盘文件中*/
{
structnode*s;
FILE*fp;
if((fp=fopen("s.txt","wt"))==NULL)
{
printf("写文件出错,按任意键退出!
\n");
getchar();
exit
(1);
}
for(s=head1->next;s!
=NULL;s=s->next)
fprintf(fp,"%s%s%c%d%s%d%d%d\n",s->id,s->name,s->sex,s->age,s->post,s->b_pay,s->reward,s->real_pay);
printf("\n文件已成功保存,按任意键返回.");
getchar();
fclose(fp);
}
/*员工文件读取模块*/
structnode*read_file()/*从指定的磁盘文件中读取信息并存入单链表*/
{
structnode*head1,*r,*s;
FILE*fp;
if((fp=fopen("s.txt","r"))==NULL)
{
printf("读文件出错,按任意键退出!
\n");
getchar();
exit
(1);
}
head1=(structnode*)malloc(sizeof(structnode));
r=head1;
while(!
feof(fp))
{
s=(structnode*)malloc(sizeof(structnode));
fscanf(fp,"%s%s%c%d%s%d%d%d\n",s->id,s->name,&s->sex,&s->age,s->post,&s->b_pay,&s->reward,&s->real_pay);
r->next=s;
r=s;
}
r->next=NULL;
fclose(fp);
returnhead1;
}
/*密码录入模块*/
structcode*creat_2()/*尾插法创建带头结点的单链表*/
{
structcode*head2,*r,*s;
inti=0;
charchoice;
head2=(structcode*)malloc(sizeof(structcode));
r=head2;
do{
s=(structcode*)malloc(sizeof(structcode));
printf("请输入第%d个人的信息:
\n",++i);
printf("请输入用户名:
");
scanf("%s",s->name);
printf("请输入密码:
");
scanf("%s",s->mima);
r->next=s;/*尾插新结点*/
r=s;/*指向尾结点*/
printf("是否继续?
(Y/N):
");
getchar();
choice=getchar();
}while(choice=='Y'||choice=='y');
r->next=NULL;
returnhead2;
}
/*密码文件保存模块*/
voidsave_inf(structcode*head2)/*将单链表的信息保存到指定的磁盘文件中*/
{
structcode*s;
FILE*fp;
if((fp=fopen("yuan.txt","wt"))==NULL)
{
printf("写文件出错,按任意键退出!
\n");
getchar();
exit
(1);
}
for(s=head2->next;s!
=NULL;s=s->next)
fprintf(fp,"%s%s\n",s->name,s->mima);
printf("\n文件已成功保存.按任意键返回.");
getchar();
fclose(fp);
}
/*密码文件读取模块*/
structcode*read_inf()/*从指定的磁盘文件中读取信息并存入单链表*/
{
structcode*head2,*r,*s;
FILE*fp;
if((fp=fopen("yuan.txt","r"))==NULL)
{
printf("读文件出错,按任意键退出!
\n");
getchar();
exit
(1);
}
head2=(structcode*)malloc(sizeof(structcode));
r=head2;
while(!
feof(fp))/*文件未结束*/
{
s=(structcode*)malloc(sizeof(structcode));/*开辟新空间存放读取的信息*/
fscanf(fp,"%s%s",s->name,s->mima);
r->next=s;
r=s;
}
printf("文件中信息已正确读出,按任意键返回!
\n");
r->next=NULL;
fclose(fp);
returnhead2;
}
/*输出员工信息模块*/
voidoutput(structnode*head1)
{
structnode*s;
printf("\n序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");
for(s=head1->next;s!
=NULL;s=s->next)
printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d\n",s->id,s->name,s->sex,s->age,s->post,s->b_pay,s->reward,s->real_pay);
}
/*添加员工信息模块*/
voidadd(structnode*head1)
{
structnode*r,*p,*s;
r=head1;
charchoice;
printf("---------------------------------\n");
printf("***********添加员工信息**********\n");
printf("---------------------------------\n");
do{
p=(structnode*)malloc(sizeof(structnode));
printf("请输入您添加的员工信息:
\n");
printf("输入员工序号:
");
scanf("%s",p->id);
printf("输入员工姓名:
");
getchar();
scanf("%s",p->name);
printf("输入员工性别:
");
getchar();
scanf("%c",&p->sex);
printf("输入员工年龄:
");
scanf("%d",&p->age);
printf("输入员工职位:
");
getchar();
scanf("%s",p->post);
printf("输入员工底薪:
");
scanf("%d",&p->b_pay);
printf("输入员工奖金:
");
scanf("%d",&p->reward);
printf("输入员工实际工资:
");
scanf("%d",&p->real_pay);
p->next=r->next;
r->next=p;
save_file(head1);
printf("\n是否继续添加(Y/N):
");
choice=getchar();
}while(choice=='Y'||choice=='y');
}
/*修改员工信息模块*/
change(structnode*head1)
{
structnode*p;
p=head1;
charname[10];
charchoose;
intchoice,flag;
do
{
printf("**********************************************\n");
printf("-----------修改员工信息------------\n");
printf("**********************************************\n");
printf("请输入您要修改的员工姓名:
");
getchar();
gets(name);
while(p!
=NULL)
{
if(strcmp(p->name,name)==0)
{
printf("\n序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");
printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d",p->id,p->name,p->sex,p->age,p->post,p->b_pay,p->reward,p->real_pay);
printf("\n你想修改的是:
\n");
printf("\n1.序号");
printf("\n2.姓名");
printf("\n3.性别");
printf("\n4.年龄");
printf("\n5.职位");
printf("\n6.底薪");
printf("\n7.奖金");
printf("\n8.实际工资");
printf("\n请选择(1-8):
");
scanf("%d",&choice);
switch(choice)
{
case1:
printf("输入修改后的序号:
");
getchar();
gets(p->id);break;
case2:
printf("输入修改后的姓名:
");
getchar();
gets(p->name);break;
case3:
printf("输入修改后的性别:
");
getchar();
scanf("%c",&p->sex);break;
case4:
printf("输入修改后的年龄:
");
scanf("%d",&p->age);break;
case5:
printf("输入修改后的职位:
");
getchar();
gets(p->post);break;
case6:
printf("输入修改后的底薪:
");
scanf("%d",&p->b_pay);break;
case7:
printf("输入修改后的奖金:
");
scanf("%d",&p->reward);break;
case8:
printf("输入修改后的实际工资:
");
scanf("%d",&p->real_pay);break;
}
printf("您修改后的信息显示:
\n");
printf("序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");
printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->age,p->post,p->b_pay,p->reward,p->real_pay);
break;
}
p=p->next;
}
if(p==NULL)
printf("此人不存在.\n");
printf("是否继续修改?
(Y/N)");
getchar();
flag=getchar();
}while(flag=='Y'||flag=='y');
}
/*删除员工信息模块*/
voiddelete(structnode*head1)
{
charname[10];
structnode*p,*q;
p=head1;
printf("--------------------------------------\n");
printf("**************删除员工信息************\n");
printf("--------------------------------------\n");
printf("输入您要删除的员工姓名:
");
getchar();
gets(name);
while(p!
=NULL)
{
q=p;
p=p->next;
if(strcmp(p->name,name)==0)
{
q->next=p->next;
printf("删除的信息显示:
\n");
printf("序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");
printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->age,p->post,p->b_pay,p->reward,p->real_pay);
free(p);
save_file(head1);
printf("已成功删除.\n");
break;
}
}
if(p==NULL)
printf("您输入的姓名不存在.\n");
}
/*查询员工信息模块*/
voidsearch(structnode*head1)
{
intchoice;
charflag;
charname[10],ID[10];
structnode*p;
do{
printf("**********查询员工信息*********\n");
printf("----------1.按姓名查询.-------------------\n");
printf("----------2.按序号查询.-------------------\n");
printf("请选择(1-2):
");
scanf("%d",&choice);
switch(choice)
{
case1:
printf("请输入姓名:
");
getchar();
gets(name);
for(p=head1->next;p!
=NULL;p=p->next)
{
if(strcmp(name,p->name)==0)
{
printf("\n序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");
printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->age,p->post,p->b_pay,p->reward,p->real_pay);
break;
}
}
if(p==NULL)
printf("您输入的姓名不存在.");
break;
case2:
printf("请输入序号:
");
getchar();
gets(ID);
for(p=head1->next;p!
=NULL;p=p->next)
{
if(strcmp(ID,p->id)==0)
{
printf("\n序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");
printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->age,p->post,p->b_pay,p->reward,p->real_pay);
break;
}
}
if(p==NULL)
printf("您输入的序号不正确.\n");
break;
default:
printf("输入错误!
\n");break;
}
printf("\n是否继续查询?
(Y/N)");
flag=getchar();
}while(flag=='y'||flag=='Y');
}
/*员工排序模块*/
voidsort(st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 员工 信息管理 系统