写在前面:欢迎来到「发奋的小张」的博客。我是小张,一名普通的在校大学生。在学习之余,用博客来记录我学习过程中的点点滴滴,也希望我的博客能够更给同样热爱学习热爱技术的你们带来收获!希望大家多多关照,我们一起成长一起进步。也希望大家多多支持我鸭,喜欢我就给我一个关注吧!

员工管理系统

一、 课程设计目的

通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固

《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("data.txt","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);

}

//链表中增加职工结点的函数

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);

}

//在屏幕上显示链表中所有职工结点数据函数

void browse()

{

EMP *node;

node = h->next; //node指针指向链表第一个结点

printf("Employee no name age sex\n");

while(node) //遍历链表

{

printf("%12s%6s%5d%4s\n",node->no,node->name,node->age,node->sex);

node = node->next; //node指针指向下一个职工结点

}

printf("\n");

}

//将链表中数据写到文件中的函数

void save()

{

FILE *fp;

EMP *node;

fp = fopen("data.txt","w"); //以写的方式打开文件

node = h->next; //node指针指向链表第一个结点

while(node!=NULL)

{ //"%s %s %s %d\n" 格式符之间有空格

fprintf(fp,"%s %s %s %d\n",node->no,node->name,node->sex,node->age);

node = node ->next;

}

fclose(fp);

}

//删除职工结点的函数

void del(char *s)

{

EMP *p,*q;

p = h->next;//链表中第一个节点 p->next=p->next->next;

q = p->next;//链表中第二个节点

if(strcmp(s,p->name)==0)

{h->next=p->next;

free(p);

return;

}

while(q!=NULL)

{

if(strcmp(s,q->name)==0)

{

p->next = q->next;

free(q);

break;

}

p = q;

q = q->next;

}

}

//更新职工结点的函数

void update()

{

char name[40];

int flag = 0;

EMP *p;

printf("input the name:\n");

scanf("%s",name);

p = h->next;

while(p!=NULL)

{

if(strcmp(name,p->name)==0)

{

printf("input the age:\n");

scanf("%d",&p->age);

printf("input the sex:\n");

getchar();

scanf("%c",&p->sex);

flag = 1;

break;

}

p=p->next;

}

if(flag==0)

{

printf("error username\n");

}

}

6、系统描述

本系统采用可以自行扩容的c语言传统数据结构:链表实现。相比用数组做存储,它具有可扩展性!

系统实现了对员工的增删改查,打印输出,写入磁盘,读取磁盘信息等基本功能。

系统具有良好的扩展性,可以扩展其他功能。比如:控制台加密,组合查询等·多种功能·!

7、系统运行部分功能截图

添加员工以及显示所有员工

修改员工信息

删除员工

博主后记:

希望看到此篇博文的小伙伴,能够按照此模板写出自己需要的课程设计!如果程序运行有问题,欢迎在下方留言!博主会改正!大家一起共同进步。如果对你有所帮助,可以给博主一个赞 ,顺便关注一下博主哦,博主后续还会发一些常见的c语言课程设计。

c语言大作业实现程序功能描述,C语言程序设计大作业——员工管理系统(代码超详细内含实验报告)...相关推荐

  1. 数据结构--链栈的c语言实现(超详细注释/实验报告)

    数据结构–链栈的c语言实现(超详细注释/实验报告) 知识小回顾 栈(Stack)作为一种限定性线性表,是将线性表的插入和删除操作限制为仅在表的一端进行,通常将表中允许进行插入.删除操作的一端成为栈顶( ...

  2. c语言最简单的程序编写,C语言简单程序编写.doc

    C语言简单程序编写 项目一 C语言简单程序编写 1.1学习目标 本项目达到的目标为: 掌握程序设计的基本思路 掌握C语言的基本结构 了解流程图的符号含义 掌握C语言的关键字 会设计和编写简单的C应用程 ...

  3. 浙大远程教c语言在线作业答案,浙江大学远程教育2020面向对象程序设计在线作业答案...

    <浙江大学远程教育2020面向对象程序设计在线作业答案>由会员分享,可在线阅读,更多相关<浙江大学远程教育2020面向对象程序设计在线作业答案(28页珍藏版)>请在人人文库网上 ...

  4. 写操作系统用的C语言和写应用程序的C语言不是一个

    我以前看一本书,名叫 30天自制操作系统:大概翻了一下,感觉也不是太难:因为比如,它有一整章在讲,C语言指针.C语言画一个矩形:你要是熟悉C语言的话,指针肯定理解:在没有窗口的情况下,用Turbo C ...

  5. 程序设计基础c语言第二版巫,程序设计基础 (C语言)---2版

    图书特色: 1. 实例丰富 本书不仅理论完备,还通过 100 多个实例夯实基础,100 多个课后习题巩固练习,并通过分布在本书第 6.8 和 10 章的 3 个综合应用案例 学生成绩统计程序.学生成绩 ...

  6. c语言常考的程序,复试C语言常考趣味程序方案.doc

    复试C语言常考趣味程序方案 狼追兔子 1 巧夺偶数 2 五猴分桃 3 高次方数 4 借书方案 5 过桥问题 6 数制转换 7 打渔晒网 8 喝酒问题 9 哥德巴赫猜想 10 打印日历 11 抓交通肇事 ...

  7. c语言小学生加法考试题程序4,c语言编程题与答案4.doc

    c语言编程题与答案4 c语言编程题及答案(三) 1. 给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程. 程序1 通过输入两个 ...

  8. C语言学生学籍信息管理系统源码附赠实验报告

    一.课程设计目标 C语言课程设计的目的是通过课程设计的综合训练,培养学生实际分析问题.编程和动手能力,最终目标是通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务.本课程设计具有如下 ...

  9. c语言常见错误分析和程序调试,C语言中常见错误分析及程序调试

    总结分析了C语言中常见错误及程序调试的相关技巧,以提高初学者的编程能力. 2 8 2月 0年l 0 电脑学习 第6 期 C语言中常见错误分析及程序调试 陈伟' 陈东淼 摘要:总结分析了 C语言中常见错 ...

  10. c语言课程设计计算器程序分析,c语言课程设计简单计算器程序..docx

    课程设计名称:C语言课程设计 课程设计题目: 简单计算器程序 TOC \o "1-5" \h \z \o "Current Document" 第1章需求分析1 ...

最新文章

  1. 如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)
  2. WCF进阶:为每个操作附加身份信息
  3. hibenate5.1配置mysql_hibernate5.2的基本配置方法(详解)
  4. CCNP-第十篇-BGP(二)
  5. 手机端公告文本回滚(简单的jq代码)
  6. MDFR :基于人脸图像复原和人脸转正联合模型的人脸识别方法
  7. Mac常用开源软件与下载链接一览
  8. 特斯拉加州工厂无视禁令强行复工,马斯克:要抓就只抓我
  9. 史上最强春节红包战:互联网竞争缩影下的百亿争斗
  10. 艾伟也谈项目管理,我的项目管理观点
  11. oppor17山寨机的特点_国产山寨厂商智慧生生不息:拼多多山寨手机仍在
  12. pip下载更新及采用镜像安装numpy、matplotlib等包
  13. laravel集合collect中的implode
  14. https://juejin.im/entry/559f1d31e4b0876bf61e4d20
  15. DolphinDB Database丨 最简最快的WorldQuant 101 Alpha因子实现
  16. 麒麟 linux下安装显卡驱动,优麒麟 Linux x64 16.10
  17. 计算机科学与技术补中益气丸的成分,经典名方,补中益气丸运用解析
  18. 企微获客助手是什么?企微即将上线“获客助手”功能
  19. uniapp onChooseAvatar,uniapp微信头像昵称填写,uniapp chooseAvatar,does not have a method “onChooseAvatar“
  20. 谷歌浏览器升级后无法使用处理指引

热门文章

  1. 跟谁学 英语口语20090927疑问句
  2. mailru邮箱下载_Mail.Ru邮箱ios客户端下载|Mail.Ru邮箱iphone/ipad版下载 6.2 - 跑跑车苹果网...
  3. floor关键字用法:
  4. WCDMA常见缩略语
  5. Win11怎么把手机投屏到电脑上?
  6. 学大数据应该会什么?
  7. 点估计与区间估计、置信区间、置信水平
  8. Android穿山甲SDK激励视频
  9. AW349 黑暗城堡
  10. 尚硅谷实战项目---手机影音APP