C语言程序设计大作业 您所在的位置:网站首页 如何用c语言做表格文件 C语言程序设计大作业

C语言程序设计大作业

2024-07-12 22:27| 来源: 网络整理| 查看: 265

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

员工管理系统 一、 课程设计目的

通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固 《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语言课程设计。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有