c语⾔⼤作业实现程序功能描述,C语⾔程序设计⼤作业——员⼯管理系统(代码超详细内含实验报告)...
写在前⾯:欢迎来到「发奋的⼩张」的博客。我是⼩张,⼀名普通的在校⼤学⽣。在学习之余,⽤博客来记录我学习过程中的点点滴滴,也希望我的博客能够更给同样热爱学习热爱技术的你们带来收获!希望⼤家多多关照,我们⼀起成长⼀起进步。也希望⼤家多多⽀持我鸭,喜欢我就给我⼀个关注吧!
员⼯管理系统
⼀、 课程设计⽬的
通过本课程设计,强化上机动⼿能⼒,使学⽣在理论和实践的基础上进⼀步巩固
《C 语⾔程序设计》课程学习的内容,掌握⼯程软件设计的基本⽅法。
学会将知识应⽤于实际的⽅法,提⾼分析和解决问题的能⼒,增加综合能⼒。
为后续各门计算机课程的学习打下坚实基础。
为毕业设计和以后⼯作打下必要基础。
⼆、课程设计内容
针对某企业的员⼯,对其信息进⾏系统的管理。
三、需求分析
对所开发系统功能、性能的描述,想要实现的⽬标。
此系统可对该⼚员⼯进⾏信息的录⼊,修改,删除,添加,查询,排序,统计,
打印等功能。⽤户可通过提⽰选择进⼊某⼀功能界⾯,然后进⾏对员⼯的信息管
理。每⼀功能模块都充分为⽤户考虑,编排详细。使⽤户可以⽅便快捷的了解员
⼯信息,及时有效的对员⼯进⾏信息的管理。
四、概要设计
1.系统结构图(功能模块图)
对系统进⾏分析,给出系统结构图;
分析:此系统,为⽅便客户输⼊,以及使程序清晰化,因⽽本⼈采⽤模块法,
将每⼀功能模块化,使程序中各函数间调⽤更加明了。
2.功能模块说明
对各个模块进⾏功能的描述。
录⼊模块:输⼊该⼚现有员⼯信息并保存与⽂件中,⽅便⽇后进⾏排序,更新,统计,打印等操作。
输出模块:将所有员⼯信息,或所需员⼯信息输出于屏幕上,⽤于打印或查询员⼯信息。
删除模块:对已退休或离开该⼚的员⼯进⾏删除操作。
添加模块:添加新⼊⼚的员⼯信息并保存起来。
修改模块:到该员⼯并,选择所要修改的选项。
排序模块:本程序只对员⼯年龄进⾏从⼩到⼤排序。(此模块代码还没写)
查询模块:此模块分为按姓名,年龄,⼯作查询。(此模块代码还没写)
五、职⼯管理系统代码
#include
#include
#include
#include
struct employee
{
char no[40]; //职⼯号
char name[40]; //职⼯姓名
char sex[10]; //职⼯性别
int age; //职⼯年龄
struct employee *next;//下⼀结点指针
};
typedef struct employee EMP;
EMP *h;
void load(); //读⽂件数据,并创建链表
void save(); //将链表中数据写到⽂件中
void add(EMP *p); //链表中增加职⼯结点
void del(char *s); //链表中删除指定姓名的职⼯结点
void update(); //链表中更新职⼯结点中的数据
void browse(); //在屏幕上显⽰链表中所有结点数据
void menu(); //显⽰系统主菜单
void delEmp(); //删除职⼯
void addEmp(); //增加职⼯
void main(void)
{
int op;//operation
h =(EMP *)malloc(sizeof(EMP)); //创建链表的头结点
h->next = NULL; //初始化链表头节点中下⼀节点指针为NULL menu();
scanf("%d",&op);
while(op!=0)
{
switch(op)
{
case 1:
load();
break;
case 2:
save();
break;
case 3:
addEmp();
break;
case 4:
delEmp();
break;
case 5:
update();
break;
case 6:
browse();
break;
}
menu();
scanf("%d",&op);
}
}
//显⽰系统主菜单函数
void menu()
{
printf(" Main Menu\n");
printf(" ********************** \n");
printf(" * 0:quit 1 :load * \n");
printf(" * 2:save 3 :add * \n");
printf(" * 4:delete 5 :update * \n");
printf(" * 6:browse 7 :default* \n");
printf(" ********************** \n");
}
//读⽂件数据,并创建链表函数
void load()
{
FILE *fp;
char ch;
fp = fopen("","r");
if(fp==NULL)
{
printf("打开⽂件错误,按任意返回主菜单\n");
getch();//程序停下来,等待输⼊
return;
}
while(!feof(fp))
{
EMP *node =(EMP *)malloc(sizeof(EMP));
node->next = NULL;
fscanf(fp,"%s%s%s%d",node->no,node->name,node->sex,&node->age);//从⽂件中读⼀⾏职⼯信息add(node); //调⽤函数增加链表结点
}
fclose(fp);
}
//链表中增加职⼯结点的函数
fprintf作用void add(EMP *p)
{
EMP *q;
q = h->next; //将q指针指向链表中第⼀个职⼯结点
if(q==NULL) //如果q指针为NULL,则表⽰当前链表为空
{
h->next = p; //p指针指向的结点为链表中第⼀个结点
p->next = NULL;
}
else
{
while(q->next!=NULL) //通过while循环到链表中最后⼀个结点
{
q = q ->next;
}
q->next = p; //将q指针指向的最后⼀个结点的next指针指向新增结点
p->next =NULL; //现在p指针指向的是最后⼀个结点,因此将该节点的next指针设为NULL }
}
//增加职⼯函数
void addEmp()
{
EMP *node;
node = (EMP *)malloc(sizeof(EMP));
node->next = NULL;
printf("input the employee's no name sex age:\n");
scanf("%s%s%s%d",node->no,node->name,node->sex,&node->age);
add(node);
}
//删除职⼯函数
void delEmp()
{
char name[40];
printf("input del name:\n");
scanf("%s",name);
del(name);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论