C语言_职工信息管理系统实训报告
职工工资管理系统c语言课程实践报告

实践报告1.目的:通过此次综合编程实践,使大学生进一步熟悉和掌握C语言的基本知识,基本编程原理;学习用C语言开发应用程序的方法;进一步熟悉计算机程序设计的基本方法,步骤,培养大学生设计,调试,测试程序能力。
2.程序功能介绍:该程序是用链表编写的职工工资管理系统,主要功能实现职工有关信息的录入,分析,查找,增加,修改,排序等功能。
职工工资管理系统上图是程序的主界面A.1是数据录入的功能提示语句B.2是数据分析的功能提示语句C.3是信息查询的功能提示语句D.4是添加信息的功能提示语句E.5是删除信息的功能提示语句F.6是修改信息的功能提示语句G.7是对信息排序的功能提示语句H.8退出该程序的功能提示语句3.具体流程图:3.程序实现1)输入1进入此函数,执行create函数调用insert函数回到create函数,回到主函数2)执行过1选项后便可以执行2选项,进入如下过程调用show report 函数3)回到主函数界面后,按选项3后进入信息查询的程序,如下4)回到主函数界面后,选择选项4进入一下过程5回到主函数后选择5后,进入删除环节调用analysis函数接着调用show report 函数5)回到主函数后,选择6,进入修改界面回到主函数6)在主菜单上选择7,进入排序项8 退出程序4.程序运行演示,在主界面上选择1,输入若干信息,入以下界面:输入4个人信息。
返回后选择2选项界面的上端是每个人的信息,下端是分析表,反映了整体情况返回主菜单后选择3,以编号为1的员工为例返回主菜单后选择4返回主菜单后,选择5,以2号员工为例选择y确定后显示返回主菜单,选择6 以3号为例选择y,确定返回主菜单后,选择8,退出4.5.代码的调试过程:本人的程序由链表实现,由于对链表的运用不是很熟练,所以花了很长的时间编写该程序,大致编完后,在编译与构建的过程中,同时也遇到了很多困难。
例如,在第一次编译的时候,出现了20多个错误与很多警告。
C++实习报告-职工管理信息系统

C++实习报告-职工管理信息系统学号面向对象应用程序设计课程设计设计说明书职工管理信息系统起止日期:2020年7 月6日至2020 年7 月10日学生姓名班级成绩指导教师(签字)计算机与信息工程学院2020 年7 月10日目录1、设计目的 (3)2、总体设计 (3)3、详细设计: (3)3.1、程序具体功能 (3)3.2、调试分析 (3)4、源程序和运行结果 (4)4.1、源程序 (4)4.2、运行结果.............................. 错误!未定义书签。
4.3、心得体会 (4)职工管理信息系统1、设计目的○1.通过实验实现对学生信息系统的管理操作;○2.进一步掌握和利用C++进行程设计的能力;○3.进一步理解和运用结构化程序设计的思想和方法;○4.初步掌握开发一个小型实用系统的基本方法;○5.学会利用流程图或N-S图表示算法;○6.掌握书写程设计开发文档的能力(书写课程设计报告);2、总体设计3、详细设计:3.1、程序具体功能:(要求详细写明)职工信息包括:职工ID、姓名、性别、出生日期、籍贯、学历、职称、工资、家庭住址、电话等、职务、类型(机关、教师、实验室、研究员等)。
试用面向对象程序设计思想,设计奖学金申请管理信息系统,使之能提供以下功能:1、职工信息录入功能2、职工信息文件读取功能3、职工信息文件保存功能4、职工信息浏览功能5、查询功能:1)按ID查询2)按职工类型查询6、修改功能:根据ID修改相应信息;7、删除职工功能:删除相应ID的职工信息。
8、排序功能(由用户指定按照职工类型或ID;指定升序或降序)9、退出3.2、调试分析(要求详细写明)上机调试之前我们对所编的程序作了纸面上的检查,先改正一些不该犯错误,如{ }没有搭配完整,漏写,拼写错误等,这些都是我们通过认真的态度在运行之前可以解决、避免的。
而且还可以减少机器时间。
往往一连串的错误是由于漏写或写错一个字符引起的。
C语言职工信息管理报告电气LR

C语言实训报告职工信息管理系统班级:负责人:组员:指导教师:日期:C语言课程设计任务书一、题目:职工信息管理系统二、目的和要求目的:要求熟练掌握C语言的基本知识和编辑技能;基本掌握结构化程序设计的基本思路和方法。
2.1 基本功能和要求(1)系统必须是菜单操作方法,进入功能必须打开菜单,并且每个菜单都有相应的帮助,菜单之间能够灵活的切换。
用户分三种权限:一般的员工用户,员工工资管理员,系统管理员。
(2)根据登陆方式,选择相应的操作方式;如果是一般的员工用户(默认权限为r即只读),就只能按照各种方式查看数据,并且只能查看自己的信息和工资情况,并且可以网上修改自己的信息等等功能;如果是员工工资管理员,除了可以查看数据外还能编辑员工基本信息数据。
如果是系统管理员,他可以拥有员工工资管理员的所有功能,并且可以创建用户,并且可以修改员工的工资体系和大小。
(3)能够对员工基本信息、工资的基本信息、工资的扣除费用信息进行统计,统计的结果能够以表格的形式来表示。
(4)员工基本信息、工资的基本信息、工资的扣除费用信息存储在相应的文件中。
数据的组织形式要求必须使用链表或者二叉树来实现.(5) 登录的用户名和密码应该存储在单独的文件中,最好做一定的加密算法。
(6)系统要求界面友好,易操作.2。
2 统计功能(1)统计每个部门的员工工资、整个公司的员工工资、员工的信息等。
(2)统计全公司总金额、每个部门的员工工资、扣税信息、工资的扣除信息、奖金、特别奖金等等。
(3)统计全公司工资最高的人员前10名,并对它们进行排序。
(4)按部门统计工资最高的人员前10名,并对它们进行排序。
(5)统计扣除工资最多的10个人。
(6)工资信息其它方面的统计。
(7)按照技术职称统计工资信息。
(8)按照工龄职称统计工资信息。
2.3 查找功能(1)可以根据员工的姓名查找。
(2)可以根据工资卡号查找。
(3)可以根据身份证号查找。
(4)可以根据部门查找。
原创c语言职工管理系统课程设计报告

原创C语言职工管理系统课程设计报告1. 引言职工管理系统是一个可以对职工信息进行录入、查询、修改和删除的软件系统。
在这个项目中,我们将使用C语言来实现这个系统。
通过设计这个项目,我们旨在提高学生们对C语言的理解和应用能力。
2. 项目背景和目的职工管理系统是一个常见的实际应用场景,他在许多企事业单位中都有使用。
通过设计和实现这个系统,我们可以帮助管理人员更有效地管理职工信息,提高管理效率。
我们的目标是设计一个简单易用、功能完善的职工管理系统,可以实现以下功能:职工信息录入、职工信息查询、职工信息修改和职工信息删除。
3. 系统设计我们将使用C语言来实现职工管理系统。
系统设计主要包括以下几个方面的功能模块:3.1 菜单功能模块在这个模块中,我们将设计一个菜单来显示系统的功能选项。
用户可以通过输入相应的选项来进入不同的功能模块。
3.2 职工信息录入功能模块在这个模块中,用户可以输入职工的信息,包括职工编号、职工姓名、职工性别、职工年龄等。
系统将会将这些信息保存到一个文件中以后的查询和修改操作。
3.3 职工信息查询功能模块在这个模块中,用户可以输入职工的编号或者姓名来查询职工的信息。
系统将会根据用户输入的信息在文件中查找相应的职工信息并显示出来。
3.4 职工信息修改功能模块在这个模块中,用户可以输入职工的编号来修改职工的信息。
用户需要输入修改后的信息,并将更新后的信息保存到文件中。
3.5 职工信息删除功能模块在这个模块中,用户可以输入职工的编号来删除职工的信息。
系统将会在文件中查找相应的职工信息并删除。
4. 系统实现系统实现主要有以下几个步骤:4.1 设计程序结构首先,我们需要设计系统的程序结构。
我们将使用函数来实现不同功能模块,通过调用不同的函数来实现系统不同的功能。
4.2 实现菜单功能模块我们将使用printf函数来输出菜单,并使用scanf函数来获取用户的输入。
根据用户的输入,我们将使用switch语句来进入相应的功能模块。
c语言职工信息管理系统设计报告

c语言职工信息管理系统设计报告一、引言职工信息管理系统是一种常用的企业信息化系统,旨在帮助企业更好地管理员工信息,提高管理效率和信息安全性。
本文介绍的是一种基于C语言的职工信息管理系统的设计与实现。
二、系统需求分析1.系统功能(1)员工信息录入:可以录入员工的个人信息,包括姓名、性别、出生日期、身份证号码、联系电话、职务等信息。
(3)员工信息修改:可以修改员工的个人信息。
(5)员工信息统计:可以对员工的信息进行统计分析,统计人数、性别比例等。
2.系统开发环境本系统需要运行在Windows 7及以上操作系统上,开发工具使用Dev-C++。
三、系统设计与实现2.系统模块设计(1)员工信息录入模块:1)输入员工的各项信息;2)自动生成员工编号;3)将员工信息写入文件保存。
1)按照不同的条件进行查询;2)查询后输出符合条件的员工信息。
2)修改员工信息;1)对员工信息进行统计分析;2)输出统计结果。
(6)系统菜单模块:1)显示系统功能菜单;2)接收用户输入进行相应操作。
3.代码实现(1)主函数模块:{system("color 3f"); //设置控制台颜色menu(); //调用主菜单函数return 0;}void insert()employee emp;ofstream fout("employee.txt", ios::app);cout << "请输入员工姓名:";cin >> ;emp.no = rand() % 1000 + 1;fout << emp.no << " " << << " " << emp.gender << " " << emp.birthday << " " << emp.id << " " << emp.phone << " " << emp.job << endl;cout << "添加成功!" << endl;fout.close();int choice;cout << "请选择查询条件(1.姓名 2.性别 3.出生日期 4.身份证号码 5.联系电话 6.职务):";case 1:break;default:cout << "编号\t\t姓名\t性别\t出生日期\t身份证号码\t\t联系电话\t职务" << endl;if (choice == 1 && == ) //按照姓名查询if (no == emp.no)elseint manCount = 0;womanCount++;四、系统测试与评估我们采用黑盒测试,使用不同的测试用例进行测试。
员工管理系统实验报告

一、实验目的1. 熟练掌握C语言编程技能,提高编程能力。
2. 理解并应用结构体、数组、链表等数据结构。
3. 学会使用文件操作,实现数据的持久化存储。
4. 设计并实现一个员工管理系统,提高实际编程能力。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C语言三、实验内容员工管理系统主要包括以下功能:1. 数据录入:录入员工信息,包括姓名、工号、性别、出生年月、部门、职位、联系方式等。
2. 数据显示:显示所有员工信息。
3. 数据查找:按工号或姓名查找员工信息。
4. 数据修改:修改指定员工的个人信息。
5. 数据删除:删除指定员工的个人信息。
6. 数据排序:按工号、姓名、部门等字段对员工信息进行排序。
四、实验步骤1. 创建员工结构体```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_NAME_LEN 50#define MAX_DEPT_LEN 50typedef struct {int id; // 员工工号char name[MAX_NAME_LEN]; // 员工姓名char gender; // 性别('M'、'F')char birth[11]; // 出生日期("YYYY-MM-DD") char dept[MAX_DEPT_LEN]; // 部门char position[MAX_NAME_LEN]; // 职位char contact[MAX_NAME_LEN]; // 联系方式} Employee;```2. 创建员工信息文件```cvoid createFile() {FILE fp = fopen("employee.dat", "wb");if (fp == NULL) {printf("创建文件失败!\n");exit(1);}fclose(fp);}```3. 数据录入```cvoid inputEmployee(Employee e) {printf("请输入员工工号:");scanf("%d", &e->id);printf("请输入员工姓名:");scanf("%s", e->name);printf("请输入性别(M/F):");scanf(" %c", &e->gender);printf("请输入出生日期(YYYY-MM-DD):"); scanf("%s", e->birth);printf("请输入部门:");scanf("%s", e->dept);printf("请输入职位:");scanf("%s", e->position);printf("请输入联系方式:");scanf("%s", e->contact);}```4. 数据显示```cvoid displayEmployee(Employee e) {printf("工号:%d\n", e->id);printf("姓名:%s\n", e->name);printf("性别:%c\n", e->gender);printf("出生日期:%s\n", e->birth);printf("部门:%s\n", e->dept);printf("职位:%s\n", e->position);printf("联系方式:%s\n", e->contact);}```5. 数据查找```cvoid searchEmployee(Employee e) {int id;printf("请输入要查找的员工工号:");scanf("%d", &id);FILE fp = fopen("employee.dat", "rb");if (fp == NULL) {printf("文件打开失败!\n");exit(1);}while (fread(e, sizeof(Employee), 1, fp) == 1) { if (e->id == id) {displayEmployee(e);break;}}fclose(fp);}```6. 数据修改```cvoid modifyEmployee(Employee e) {int id;printf("请输入要修改的员工工号:");scanf("%d", &id);FILE fp = fopen("employee.dat", "rb+");if (fp == NULL) {printf("文件打开失败!\n");exit(1);}while (fread(e, sizeof(Employee), 1, fp) == 1) { if (e->id == id) {displayEmployee(e);printf("请输入新的员工姓名:");scanf("%s", e->name);printf("请输入新的性别(M/F):");scanf(" %c", &e->gender);printf("请输入新的出生日期(YYYY-MM-DD):"); scanf("%s", e->birth);printf("请输入新的部门:");scanf("%s", e->dept);printf("请输入新的职位:");scanf("%s", e->position);printf("请输入新的联系方式:");scanf("%s", e->contact);fseek(fp, -sizeof(Employee), SEEK_CUR);fwrite(e, sizeof(Employee), 1, fp);break;}}fclose(fp);}```7. 数据删除```cvoid deleteEmployee(Employee e) {int id;printf("请输入要删除的员工工号:");scanf("%d", &id);FILE fp = fopen("employee.dat", "rb+");if (fp == NULL) {printf("文件打开失败!\n");exit(1);}Employee temp;int flag = 0;while (fread(e, sizeof(Employee), 1, fp) == 1) { if (e->id == id) {flag = 1;break;}}if (flag) {fseek(fp, -sizeof(Employee), SEEK_CUR);fread(&temp, sizeof(Employee), 1, fp);fwrite(&temp, sizeof(Employee), 1, fp);printf("删除成功!\n");} else {printf("未找到指定员工!\n");}fclose(fp);}```8. 数据排序```cvoid sortEmployee(Employee e, int (cmp)(const void , const void )) { qsort(e, 10, sizeof(Employee), cmp);}```9. 主函数```cint main() {Employee e;createFile();while (1) {printf("1. 数据录入\n");printf("2. 数据显示\n");printf("3. 数据查找\n");printf("4. 数据修改\n");printf("5. 数据删除\n");printf("6. 数据排序\n");printf("0. 退出\n");printf("请选择操作:");int choice;scanf("%d", &choice);switch (choice) {inputEmployee(&e);break;case 2:// 假设已经有10个员工信息for (int i = 0; i < 10; i++) { displayEmployee(&e);}break;case 3:searchEmployee(&e);break;case 4:modifyEmployee(&e);break;case 5:deleteEmployee(&e);break;case 6:sortEmployee(&e, cmpById);break;case 0:return 0;printf("无效的选项!\n");}}return 0;}```五、实验总结通过本次实验,我们学习了C语言编程的基本技能,掌握了结构体、数组、链表等数据结构,以及文件操作。
C语言课程设计报告(企业职工信息管理系统)

课程设计报告学院:信息科学与工程学院专业:计算机科学与技术(软件外包)班级:计算机1101学号:20111214121学生姓名:王栋指导教师:李崇威课程名称:程序设计基础设计名称:企业职工人事信息管理系统一、设计内容及要求企业职工人事基本信息包括:职工编号、姓名、性别、出生年份、职称(助工、工程师、高级工程师)、任现职年限、实发工资。
系统的主要功能包括:1. 创建职工人事基本信息文件,根据提示输入职工的各项信息,将职工信息存储到一个二进制文件中。
2. 增加职工人事基本信息,在原有职工人事基本信息文件的基础上增加新的职工信息,要求保存至原文件,并提示用户选择是否继续进行添加操作。
3. 删除职工人事基本信息,提示用户输入要进行删除操作的职工编号,如果在文件中有该信息存在,则将该编号所对应的职工信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。
4. 修改职工人事基本信息,提示用户输入要进行修改操作的职工编号,如果在文件中有该息存在,则提示用户输入要修改的选项(职称、任现职年限),结果保存至原文件,并提示用户选择是否继续进行修改操作。
5. 按不同条件进行查询操作,输出满足条件的职工信息。
(1) 按职工编号查询,输入一个编号,输出对应的职工信息。
(2) 按姓名查询,输入全名。
6. 按不同条件对职工信息进行统计工作。
(1) 统计各职称岗位的职工人数是多少,计算高级工程师的比例。
(2) 计算企业职工的平均实发工资,并输出。
(3) 统计职工工资低于平均工资的人数,并输出他们的姓名和实发工资。
二、设计思路该系统分为六大功能,分别为创建、增加、删除、修改、查询、统计,所以总体上先从界面部分定义了六个函数,这些功能通过定义的函数一步步实现。
每一个功能的实现通过字符数组的定义和使用以及各种函数的运用来解决。
三、设计结果及分析第一次写的程序虽然说能运行通过,但是没有把按不同条件统计职工信息以及删除工作功能实现,所以继续重做,一遍一遍的改正,结果程序改的乱七八糟,而且出现了许多错误,慢慢努力,总算勉强通过。
C语言课程设计报告:职工信息管理系统程序设计

1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。
流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。
流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。
职工信息管理系统c语言课程设计报告

职工信息管理系统c语言课程设计报告本职工信息管理系统的设计旨在提高职工信息管理的效率和准确度,方便企业对职工信息的管理和维护。
二、设计内容1. 系统结构本系统采用模块化设计,包括登录模块、职工信息模块、数据查询模块、数据修改模块、数据删除模块、数据添加模块和退出系统模块。
2. 系统实现(1) 登录模块本系统采用账号密码登录方式,用户需输入正确的账号和密码才能进入系统。
(2) 职工信息模块本模块主要功能是显示职工的基本信息,包括姓名、性别、年龄、工号、职位等。
(3) 数据查询模块本模块可以查询所有职工的基本信息,用户可以输入关键字进行模糊查询。
(4) 数据修改模块本模块可以修改已有职工的基本信息,包括姓名、性别、年龄、工号、职位等。
(5) 数据删除模块本模块可以删除已有职工的基本信息,用户需要输入正确的工号才能进行删除操作。
(6) 数据添加模块本模块可以添加新的职工信息,用户需要输入正确的信息进行添加操作。
(7) 退出系统模块本模块可以退出系统,返回到登录界面。
三、设计思路本系统采用文件读写的方式进行数据存储,所有职工的信息都保存在一个文本文件中。
每次用户进行操作时,系统会先读取文件中的数据,进行相应的操作后再将数据重新写入文件,保证数据的正确性和完整性。
四、设计效果经测试,本职工信息管理系统可以准确地进行数据的增删改查操作,并且可以保持数据的一致性和完整性,提高了职工信息管理的效率和准确度。
五、总结本系统的设计和实现对于提高企业的职工信息管理效率和准确度具有重要意义,同时也为学生深入掌握c语言编程技术提供了一个很好的实践机会。
《c语言程序设计报告》-职工信息管理系统

《c语言程序设计报告》一、设计题目:职工信息管理系统二、设计任务:职工信息包括:职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之难提供以下功能:(1)系统以菜单方式工作。
任一功能能执行完毕后均要求返回主菜单。
(2)职工信息录入功能——输入。
(3)职工信息浏览功能——输出。
(4)查询或排序功能(至少一种查询方式)——算法(5)按工资查询(6)按学历查询等(7)职工信息删除、修改功能(任选项)(8)退出:包括返回主界面和退出系统等功能。
3.课程设计要求:模块化程序设计上机调试通过较好的完成程序的主体设计,界面友好,功能齐全:程序思路清晰易懂,充分利用所学工具实现各项操作。
4、应用程序的模块示意图及流程图流程图5、程序设计与调试的体会:在这二周里,我觉得我学到了书上没有的知识。
刚开始盒到《C语言程序设计》课程设计任务与指导书时发现该程序特别难。
没有一点头绪,根本不知道从那里开始。
之后仔细看了设计方法及步骤时总算有了一点发现。
在调试的过程中有很多的语法错误,自己根本看不懂,即使这样我也没有放弃还是努力寻找错误,最终还是被我找到了并改正。
最难的是函数的调用,程序大体上编译成功,但是在调用函数时总是无法连接。
这是我编程序的最大难点。
程序编译完全成功后,我发现了C语言的强大的功能,C语言语言简洁、紧凑、使用方便、灵活、远算符丰富、数据结构丰富、具有良好的结构化,符合现代编程风格。
语法限制不太严格,程序设计自由度大。
程序设计是一门实践性很强的课程不可能只靠听课和看书就掌握C语言程序设计,应当十分重视自己的动手写程序和上机远行程序。
6、主要故障;(1)、在一个函数调用结束完后回不到主菜单排除方法:在该函数调用后加上bioskey()函数(2)、缺少函数的声名排除方法:在主程序里声名调用函数(3)、在写主程序的时候发现光标定位不准确,排除方法:在老师的指点下完成了这项7、源程序:#include <graphics.h>#include <conio.h>#include <stdio.h>#include <ctype.h>struct zhigong{int zhigonghao;char xingming[50];char xingbie[2];long birthday;char xueli[50]; /*定义结构体*/char zhiwu[50];long gongzi;char address[50];long phone;} workers[30];int n;main(){void input();void browse();void sortwage();void sortxl(); /*函数声名*/void del();void zhigonghao();int k;textcolor(RED); /*字体颜色*/textbackground(GREEN); /*背景颜色*/clrscr();gotoxy(1,10);{do{clrscr();printf("\n\t\t ************************************ ");printf("\n\t\t * welcome to coming * ");printf("\n\t\t ************************************ ");printf("\n\t\t * (1) input information * \n");printf("\n\t\t * (2) print information *\n");printf("\n\t\t * (3) search information *\n");printf("\n\t\t * (4) sort-wage *\n");printf("\n\t\t * (5) sort-xl *\n");printf("\n\t\t * (6) delete information *\n");printf("\n\t\t * (0) exit *\n");gotoxy(77,50);printf("\n\t\t please choose the service: (0~6)");scanf("%d",&k);switch(k){case 1:input();break;case 2:browse();bioskey(0);break;case 3:zhigonghao();bioskey(0);break;case 4:sortwage();bioskey(0);break;case 5:sortxl();bioskey(0);break;case 6:del();bioskey(0);break;case 0:exit(0);} }while(1);}}void input() /*函数调用*/{ char c;do{clrscr();gotoxy(91,27);printf("\nnumber:");scanf("%d",&workers[n].zhigonghao);gotoxy(94,25);printf("\nname:");scanf("%s",workers[n].xingming);gotoxy(97,24);printf("\nsex:");scanf("%s",workers[n].xingbie);gotoxy(100,29);printf("\nbirthday:");scanf("%ld",&workers[n].birthday);gotoxy(103,26);printf("\nxueli:");scanf("%s",workers[n].xueli);gotoxy(106,28);printf("\nzhiwu:");scanf("%s",workers[n].zhiwu);gotoxy(109,26);printf("\nwage:");scanf("%ld",&workers[n].gongzi);gotoxy(112,28);printf("\naddress:");scanf("%s",workers[n].address);gotoxy(115,26);printf("\nphone:");scanf("%ld",&workers[n].phone);n=n+1;gotoxy(25,20);printf(" you have added %d work,go on? (Y/N)\n",n);do{gotoxy(60,20);scanf("%c",&c);if (c!='y'&&c!='Y'&&c!='N'&&c!='n'){gotoxy(64,20);printf(" ");gotoxy(1,21);continue;}else break;}while (1);}while (c=='Y'||c=='y');}void browse() /*输出函数调用*/{ int i;clrscr();gotoxy(10,1);printf("\n\t***********browse all workers'information************");printf("\n\n");printf("********************************************************************************");printf("zhigonghao xingming xingbie birthday xueli zhiwu gongzi adress phone");printf("********************************************************************** **********");for(i=0;i<n;i++){ printf("%d,%13s,%8s,%13ld,%6s, %5s, %3ld, %6s, %ld\n",workers[i].zhigon ghao,workers[i].xingming,workers[i].xingbie,workers[i].birthday,workers[i].xueli,workers[i].zh iwu,workers[i].gongzi,workers[i].address,workers[i].phone);}}void zhigonghao() /*函数调用————职工号查询*/{int i,zgh;char c;do{ clrscr();gotoxy(1,5);printf("\t\t\t*****************************\n");printf("\t\t\t welcome to coming\n");printf("\t\t\t*****************************\n");printf("\t\t\tinput the zgh:");scanf("%d",&zgh);for (i=0;i<=n;i++){if (workers[i].zhigonghao==zgh){clrscr();printf("number:%d\n",workers[i].zhigonghao);printf("name:%s\n",workers[i].xingming);printf("sex:%s\n",workers[i].xingbie);printf("birthday:%ld\n",workers[i].birthday);printf("xueli:%s\n",workers[i].xueli); /*输出查找出的职工*/ printf("zhiwu:%s\n",workers[i].zhiwu);printf("wage:%ld\n",workers[i].gongzi);printf("address:%s\n",workers[i].address);printf("phone:%ld\n",workers[i].phone);getchar();gotoxy(1,20);printf("\t\t return the mune? (Y/N)\n");break;}else{clrscr();gotoxy(1,5);printf("\n\t\t****************************************");printf("\n\t\t** welcome to coming **");printf("\n\t\t****************************************");gotoxy(25,16);printf("no information");gotoxy(3,20);printf("\t\treturn the mune? (Y/N)\n");}}do{gotoxy(45,20);scanf("%c",&c);if (c!='y'&&c!='Y'&&c!='N'&&c!='n'){gotoxy(45,20);printf(" ");gotoxy(1,21);continue;}else break;}while(1);}while(c=='N'||c=='n');}void sortwage( ) /*函数调用————工资查询*/{int i,gongzi,p=0;char c;{ clrscr();gotoxy(1,5);printf("\t\t\t*****************************\n");printf("\t\t\t welcome to coming\n");printf("\t\t\t*****************************\n");printf("\t\t\tinput the gongzi:");scanf("%d",&gongzi);printf("********************************************************************** **********");printf("zhigonghao xingming xingbie birthday xueli zhiwu gongzi adress phone");printf("********************************************************************** **********");for (i=0;i<n;i++)if (workers[i].gongzi==gongzi){printf("%d,%13s,%8s,%13ld,%6s, %5s, %3ld, %6s, %ld\n",workers[i].zhigonghao,wor kers[i].xingming,workers[i].xingbie,workers[i].birthday,workers[i].xueli,workers[i].zhiwu,wor kers[i].gongzi,workers[i].address,workers[i].phone);p=p+1;}if(p==0)printf("\t\t\tno information");}}void sortxl( ) /*函数调用————学历查询*/{int i,p=0;char c,xueli[30];{ clrscr( );gotoxy(1,5);printf("\t\t\t******************************\n");printf("\t\t\t welcome to coming \n");printf("\t\t\t******************************\n");printf("\t\t\tinput the xueli:");scanf("%s",xueli);printf("********************************************************************** **********");printf("zhigonghao xingming xingbie birthday xueli zhiwu gongzi adress phone");printf("********************************************************************** **********");for (i=0;i<n;i++)if (strcmp(workers[i].xueli,xueli)==0){printf("%d,%13s,%8s,%13ld,%6s, %5s, %3ld, %6s, %ld\n",workers[i].zhigonghao,work ers[i].xingming,workers[i].xingbie,workers[i].birthday,workers[i].xueli,workers[i].zhiwu,worke rs[i].gongzi,workers[i].address,workers[i].phone);p=p+1;}if(p==0)printf("\t\t\tno information"); } }void del() /*函数调用————删除*/{int i,zhigonghao,j;char c;do{ clrscr();gotoxy(1,5);printf("\t\t\t******************************\n");printf("\t\t\t welcome to coming \n");printf("\t\t\t******************************\n");printf("\t\t\t input the zhigonghao:");scanf("%d",&zhigonghao);for (i=0;i<n;i++)if (workers[i].zhigonghao==zhigonghao){for(j=i;j<n;j++){workers[j].zhigonghao=workers[j+1].zhigonghao;strcpy(workers[j].xingming,workers[j+1].xingming);strcpy(workers[j].xingbie,workers[j+1].xingbie);workers[j].birthday=workers[j+1].birthday;strcpy(workers[j].xueli,workers[j+1].xueli);strcpy(workers[j].zhiwu,workers[j+1].zhiwu);workers[j].gongzi=workers[j+1].gongzi;strcpy(workers[j].address,workers[i+1].address);workers[j].phone=workers[j+1].phone;}n=n-1;getchar();printf("\n\n\n\n");printf("\t\t\tyou have deleted worker");gotoxy(1,20);printf("\t\t\t return the mune? (Y/N)\n");break;}else{clrscr();gotoxy(1,5);printf("\n\t\t****************************************");printf("\n\t\t** welcome to comging **");printf("\n\t\t****************************************");gotoxy(25,16);printf("no information");gotoxy(3,20);printf("\t\t\treturn the mune? (Y/N)\n");}do{gotoxy(45,20);scanf("%c",&c);if (c!='y'&&c!='Y'&&c!='N'&&c!='n'){gotoxy(45,20);printf(" ");gotoxy(1,21);continue;}else break;}while(1);}while(c=='N'||c=='n');}2005-6-12。
C语言课程设计---职工管理系统设计报告

课程名称:程序设计语言课程设计设计题目:职工信息管理系统设计学院:应用技术学院专业:电子信息工程目录:摘要: (2)任务书: (2)总结与体会: (10)摘要:通过这次的短学期,在老师的辅导下,我完成了课程设计。
通过课程设计的完成对C和C++有更深的了解。
我做的课程设计题目是职工信息管理系统设计,我主要用到了结构体,结构体数组,指针,文件等等。
对函数的调用,和指针有了更深的理解。
但我做的这个课程设计,职工信息管理系统还存在不足,还希望老师的指点。
我的这个管理系统能处理的是对公司员工的信息存储,还有对职工的查找和排序,还有对职工的信息修改。
有不足的地方还请老师指点。
昆明理工大学课程设计任务书应用技术学院学院电子信息工程专业2009 级学生姓名(学号):袁瑞(200911513127)课程设计目的:通过设计一个较为简单的管理系统,进一步熟悉C++中类的概念、类的封装、继承的实现方式。
了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。
课程设计(论文)题目及具体内容:写程序题目:职工信息管理系统设计设计说明与要求:职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)职工信息录入功能(职工信息用文件保存)(3)职工信息浏览功能(4)查询和排序功能:按工资查询、按学历查询(5)职工信息删除、修改功能(4)各函数调用关系(流程图):(6)编码及调试:(注:此系统由三个人设计,本人只设计了其中的两个功能)功能二. 修改员工信息模块:此功能代码如下:modify() /*修改员工信息*/{struct people p;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n请记住要修改的员工号.任意键继续...\n");getch();puts("\n\n");}printf_one(i);}do{printf("\n\n请输入要修改信息的员工号! 员工号:");scanf("%s",p.num);for(i=0;i<n;i++)if(strcmp(p.num,people[i].num)==0){k=i;p=people[i];}if(k==-1)printf("\n\n不存在,请重试");}while(k==-1);printf_face();printf_one(k);w1=modify_data(k,n);if(w1==1){printf("\n操作成功^_^.\n\n继续修改吗?\n\n\t 1).是2).保存并返回\t[ ]\b\b"); scanf("%d",&w0);w2=1;}else{w0=0;if(w2==1)people[k]=p;}if(w0!=1&&w2==1)save(n);}while(w0==1);system("cls");menu();}调试截图:功能三. 员工信息查询模块:此功能代码如下:search() /*查找功能*/ {int i,n,k,w1=1,w2,w3,w4,m,a;struct people p;n=load();{printf("\n\n以哪种方式查找? \n\t1).学历2).员工号[ ]\b\b"); scanf("%d",&m);switch(m){case 1:do{ k=-1;printf("\n\n请输入学历! 学历:");scanf("%s",p.xueli);printf_face();for(i=0;i<n;i++)if(strcmp(p.xueli,people[i].xueli)==0){ k=i;printf_one(k);break;}if(k==-1){ printf("\n\n没有该学历的员工");printf("\n\n重新查找吗?\n\t1).是2).否,返回[ ]\b\b"); scanf("%d",&w1);if(w1==2)printf_back();}}while(k==-1&&w1==1);break;case 2:do{k=-1;printf("\n\n输入您要查询的员工号! 员工号:");scanf("%s",p.num);printf_face();for(i=0;i<n;i++)if(strcmp(p.num,people[i].num)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\n该员工号不存在");printf("\n\n是否重新选择?\n\t1).是2).否,离开[ ]\b\b"); scanf("%d",&w1);if(w1==2)printf_back();}while(k==-1&&w1==1);break;}w4=0;w3=0;if(k!=-1){printf("\n\n请选择操作\n\t 1).继续查找2).修改3).删除4).返回菜单[ ]\b\b"); scanf("%d",&w2);switch(w2){case 2:w3=modify_data(k,n);break;case 3:{printf("\n确定吗?\n\t 1).确定2).返回[ ]\b\b");scanf("%d",&w4);if(w4==1)for(a=k;a<n;a++){strcpy(people[a].num,people[a+1].num);strcpy(people[a].name,people[a+1].name);strcpy(people[a].sex,people[a+1].sex);strcpy(people[a].age,people[a+1].age); /*删除所选员工信息*/ strcpy(people[a].xueli,people[a+1].xueli);strcpy(people[a].gongzi,people[a+1].gongzi);strcpy(people[a].address,people[a+1].address);strcpy(people[a].telephone,people[a+1].telephone);}break;}}if(w3==1||w4==1){save(n);printf("\n\n操作成功.^_^.");printf("\n\n请选择操作\n\t 1).继续查找2).返回[ ]\b\b" );scanf("%d",&w2);}}}while(w2==1);system("cls");menu();}此功能截图:员工信息是用用文本文件存储的,资料分别存储在这些文本文件中,具体如下:总结与体会:通过本次的课程设计,对C和C++又更一步的了解,了解了C上的结构体,并对结构体有了熟练的掌握,并且熟悉了指针,通过指针可以使程序很好的实现,结构体类型是一个很好的类型,在现实生活中,应用结构体可以使问题很好的解决。
c语言实验总结与反思(通用3篇)

c语言实验总结与反思(通用3篇)c语言实验总结与反思篇1一、需求分析:1.需求概述设计一个职工信息管理系统,使之能提供以下功能:(1)职工信息录入功能(2)职工信息浏览功能(3)职工信息删除功能(4)职工信息修改功能(5) 职工信息查询功能2.需求说明(1)职工信息包括:职工号、姓名、性别、出生年月、学历职务、工资、住址、电话,并且职工号要求不重复。
(2)录入的职工信息要求用文件形式保存,并对其进行浏览、查询、修改、删除等基本操作。
(3)对职工的信息分别按职工号、性别、姓名、工资四种方式进行查询,并返回所有符合条件的职工信息。
(4)对职工信息的修改应该逐个进行,一个职工的信息修改不应影响其他职工的信息。
(5)所设计的系统应以菜单的方式工作,应为用户提供清晰的使用提示,依据用户的选择进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况。
二、总体设计1.功能划分该系统可以按功能进行模块划分,如下图所示:其中:(1)菜单选择模块完成用户的选择,此模块也是职工信息管理系统的入口,用户所要进行的所有操作需要在此模块中选择,并调用相对应的模块实现相应的功能。
(2)信息输入模块完成信息的录入功能,输入的信息包括:职工号、姓名、性别、出生年月、学历职务、工资、住址、电话。
(3)信息浏览模块完成对所有的职工的信息的显示。
(4)信息查询模块分四种查询方式:按职工号查询、按性别查询、按姓名查询、按职务查询。
并且输出相对应且符合要求的职工信息。
(5)信息修改模块完成的是职工信息的修改功能。
(6)信息删除模块完成的是职工信息的删除功能。
2.数据结构本系统中的主要数据结构为职工的信息,其中包含:职工号、姓名、性别、出生年月、学历职务、工资、住址、电话等,其中的出生年月用结构体表示,其中又包含:出生的年份、出生的月份、出生的日期。
3.程序流程系统的执行应从功能菜单的选择开始,依据用户的选择进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。
职工信息管理C语言程序设计报告

目录一系统功能 (2)1系统需求分析 (2)2 系统功能总体设计 (2)3.输入输出功能 (2)4.总体设计流程图 (3)二概要设计 (4)1 抽象数据类型定义 (4)2 系统模块组成及其功能 (5)三详细设计 (6)1 用C语言定义相关数据 (6)2 各模块的类C码算法 (6)1 职工信息显示函数 (6)2 职工信息的追加函数 (6)3 职工信息修改函数 (7)4 职工信息删除函数 (9)5 职工信息查询函数 (10)6职工信息排序函数 (11)7退出函数 (11)3 函数的调用关系图 (11)四调试分析(包括流程图和截图) (12)1 显示模块N-S图 (12)2追加模块的流程图 (13)3.查询模块的流程图 (14)4.排序模块的流程图 (15)5.修改模块的流程图 (16)6删除模块流程图 (17)7.各个模块的截图及说明 (20)五总结 (26)六参考文献 (26)七程序原代码 (27)一系统功能1系统需求分析这是一个对职工信息管理的系统, 通过这个系统可以显示所有职工的信息并可以对职工信息进行追加、修改、删除、查询、排序等多种功能的操作.2 系统功能总体设计程序的功能: 随着计算机科学的发展, 现在我们不可能还是用手写的方式对职工的信息进行管理, 这就需要设计一个系统运用计算机来实现对职工信息的管理.该系统用数组实现对职工信息数据的存储, 且总体数据结构应用文件类型数据, 文件类型为结构体数组, 这就要建立数据库来存放职工的信息, 通过指针文件来实现对数据库里信息的读和写, 需要存储的职工信息包括职工号、职工姓名、性别、年龄、学历、工资、部门、职称等等, 最后通过函数的调用来实现对职工信息的管理.3.输入输出功能数据库中的数据全通过fread()函数来读取数据, 并且通过fwrite函数将修改过后的数据放到一个新的文件里去, 从而实现的系统的输入输出功能。
4.总体设计流程图二概要设计1 抽象数据类型定义Struct stu;{long int zgh; /*职工号*/Char name[10]; /*姓名*/Char xb[4]; /*性别*/Int nl; /*年龄*/Char xl[10]; /*学历*/Double gz; /*工资*/Char bm[15]; /*部门*/Char zc[10]; /*职称*/}s[40]2 系统模块组成及其功能主函数 void main()显示函数 void Disp()功能 : 显示数据库中职工的所有信息。
C语言职工信息管理系统实训报告

程序设计工程训练报告职工信息管理系统课程名称C语言程序设计工程训练姓名院(系)专业班级学号指导教师目录1 需求分析 (1)2 系统总框图和功能模块说明 (1)2.1 系统总框图 (1)2.2 功能模块说明 (2)3 系统设计 (2)3.1 主要结构体 (2)3.2主要功能函数 (3)3.3 关键函数的流程图 (4)4 系统调试 (4)5 总结 (9)6 源程序清单 (10)1 需求分析职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话(职工号不重复)。
试设计职工信息管理系统,使之能提供以下功能:●系统以菜单方式工作●职工信息录入功能(职工信息用文件保存)--输入●职工信息浏览功能--输出●职工信息查询功能-算法(其中查询方式可以按学历查询、按职工号查询等)●职工信息删除、修改功能2 系统总框图和功能模块说明2.1 系统总框图图1 系统总框图2.2 功能模块说明1.菜单模块:显示职工管理系统的主菜单,供用户选择所需的功能,通过自己定义的void menu()函数来实现。
2.输入模块:输入职工的工号、姓名以及其它的一些职工的相关信息,通过自己定义的void input()函数来实现。
3.保存模块:将内存中职工的信息输出到磁盘文件中,可以通过自己定义的void save(int)函数来实现。
4.浏览模块:浏览所有职工的相关信息,通过自己定义的void display()函数来实现。
5.删除模块:删除需要删除的职工的所有信息,通过自己定义的void del()函数来实现。
6.添加模块:添加需要添加的职工的相关信息,通过自己定义的void add()函数来实现。
7.按职工的的学历查询模块:可以按职工的学历来查询职工的相关信息,通过自己定义的void search_xuelil函数来实现。
8.按职工的电话号码查询模块:可以按职工的电话来查询职工的相关信息,通过自己定义的void search_tel函数来实现。
C语言课程设计报告 (职工信息管理)

}
printf("删除成功!");
printf("删除成功后的职工信息如下:\n");
printf("姓名\t工号\t部门\t工资\t职位\n");
for(i=0;i<10;i++)
printf("%s\t%d\t%s\t%d\t%s\n",person[i].name,person[i].num,person[i].apartment,person[i].salary,person[i].duty);
}
void Delete()
{
int m,i,n,j;
printf("删除某个职员信息时:\n");
printf("请输入你要删除的职员号:");
scanf("%d",&m);
for(i=0;i<10;i++)
{
if(person[i].num==m)
{
printf("职工信息找到!!!信息如下:\n");
C语言课程设计报告
题目:职工信息管理系统
学 院信息工程 __________
专 业计算机科学与技术 ________________
年级班别一年级〈4〉班 _____________
学 号2012051449 __________
学生姓名张 霞 ______
指导教师丁富华 _______
成 绩_
一、实验报告
printf("请选择您的操作:\n");
C语言课程设计报告职工信息管理系统设计范文

ACkNxIzB dirconf90°18;wugplbySvqOW thesam 命 族 民 、 家 系 心 们 我 匆 急 临 光 富 远 久 越 间 时 的 去 离 子 日 苦 : 念 一 作 化 感 ,百 昔 追 今 .抚 运 思 当 耻 国 忘 勿
分析:我认为链表的使 用正是本程序的最精 彩的地方所在,较数组 而言它的使用带来了 很多优点: (1)空间的 灵活分配,虽然地址不 是连续的,但只要找到 链表的头所有数据都 可以迅速找到( 2 )可 以灵活的插入或删除 元素而不会像数组那 样带来较多数据的移 动
4
ACkNxIzB dirconf90°18;wugplbySvqOW thesam 命 族 民 、 家 系 心 们 我 匆 急 临 光 富 远 久 越 间 时 的 去 离 子 日 苦 : 念 一 作 化 感 ,百 昔 追 今 .抚 运 思 当 耻 国 忘 勿
分析:周密地考虑 到了内存不足以及 职工号已存在导致 的录入失败,给予 用户适当的提示使 得设计更加人性化
ACkNxIzB dirconf90°18;wugplbySvqOW thesam 命 族 民 、 家 系 心 们 我 匆 急 临 光 富 远 久 越 间 时 的 去 离 子 日 苦 : 念 一 作 化 感 ,百 昔 追 今 .抚 运 思 当 耻 国 忘 勿
二、系统设计方案
1.程序采用模块化设计,主函数为程序的入口,各模块独立,可分块调试,各 模块由主函数控制调用。主函数的控制功能通过循环执行一个开关语句来实现。 该开关语句的条件值为调用主菜单函数得到的返回值,根据该值,调用相应的各 功能函数。 2.应用高级语言程序设计中的基本控制结构,如选择和循环等,并且包含对文 件的读、写等基本操作,在软件开发过程中应用了软件工程的基本理论。因此, 系统的设计方法是结构化设计方法,开发手段是 C 语言。 3.源程序运用多个函数,开头先进行函数声明,然后分别定义、调用各函数。
职工管理系统课程设计报告c语言

职工管理系统课程设计报告c语言一、引言职工管理系统是一个针对公司或组织内部职工信息管理的软件系统,主要用于记录职工的基本信息、工作情况、考勤记录等,方便管理人员进行数据统计和分析。
本文将介绍一个基于C语言的职工管理系统的设计与实现。
二、系统设计1. 系统功能职工管理系统主要包括以下功能模块:•添加新职工信息•修改职工信息•删除职工信息•查询职工信息•统计各部门职工人数•统计各职工职务人数2. 数据结构为了有效地存储和管理职工信息,系统采用了以下数据结构:•职工信息结构体•部门信息结构体3. 主要算法系统主要采用以下算法实现各功能模块:•添加职工信息:通过链表添加新结点•修改职工信息:更新结点中的字段信息•删除职工信息:在链表中删除指定结点•查询职工信息:根据输入的关键词在链表中查找•统计职工人数:遍历链表统计人数•统计职务人数:遍历链表统计各职务人数三、系统实现系统采用C语言编写,通过文件读写实现数据的持久化存储。
程序运行时,首先读取保存在文件中的职工信息并加载到内存中,用户可以通过交互式界面选择相应功能进行操作。
操作完成后,系统会将数据写回文件,保证数据的持久性。
四、系统优化与改进为了提高系统的性能和用户体验,可以考虑以下改进方案:•引入数据库存储,提高数据读写效率•添加更多的查询条件,提供更灵活的查询功能•增加权限管理模块,限制不同用户的操作权限•完善异常处理机制,提高系统的稳定性和可靠性五、总结通过本次课程设计,我们深入学习了C语言的应用,掌握了职工管理系统的设计与实现方法。
未来可以基于此系统进行更多功能的扩展和优化,提高系统的实用性和适用性。
以上是本文对职工管理系统课程设计报告的详细介绍,希望能对读者有所帮助。
职工信息管理系统C语言课程设计报告

目录1、前言。
32、需求分析。
33、总体设计。
34、详细设计。
45、程序清单。
56、调试过程。
187、结束语。
228、参考文献。
221.前言随着信息技术在越来越深入而广泛的应用,管理系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科。
任何一个单位要生存要发展要高效率的把内部活动有机的组织起来。
就必须建立与自身相适应的信息管理系统。
本组设计的是一个关于职工信息管理的数据库系统。
通过这个系统管理员可以简洁方便的对职工信息进行增加.删除.修改等功能。
用户也可以通过这个系统对职工信息进行查询等功能。
建立一个“职工信息管理系统”。
系统以菜单方式工作。
编写有职工基本信息,包括职工编号、姓名、部门、职称、基本工资、加班工资、奖金和总工资构成。
并且要求(1)添加职工的记录(2)查询职工(分别按职工编号和姓名)(3)对职工数据排序(分别按总工资和基本工资的降序)(4)删除职工记录(5)修改职工记录(6)部门职工分析(平均工资、各种职称所占的百分比)(7)输出职工信息表等基本操作。
建立职工信息管理的文件。
2、需求分析根据要设计的职工信息管理系统可以知道职工数据由职工编号、姓名、部门、职称、基本工资、加班工资、奖金和总工资构成。
功能要求:(1)添加职工的记录(2)查询职工(分别按职工编号和姓名)(3)对职工数据排序(分别按总工资和基本工资的降序)(4)删除职工记录(5)修改职工记录(6)部门职工分析(平均工资、各种职称所占的百分比)(7)输出职工信息表3.总体设计根据上面的需求分析,可以将这个系统设计分为以下模块:增加职工信息、删除职工信息、查询职工信息、修改职工信息、插入职工信息、排序、保存职工信息、显示职工信息。
系统功能模块如下:4.详细设计(1).主函数:创建一个链表,并使用指针。
void main(){STR *head,*p;//,*q;printf("\n\n\t\t\t你好!我觉得您在进行其他的操作之前是不是应该先创建数据?\n\n");Interface();//界面显示函数head=(STR *)malloc(sizeof(STR));p=head;//q=p;while(1){switch(a){case 0:{printf("\n\n\t\t\t这个程序已退出……\n\n");exit(0);}}(2).定义各部分功能函数:case 1:creat(head);break;case 2:found(head);break;case 4:Delete(head);break;case 7:print(head,0);break;case 5:amend(head);break;case 3:sort(head);break;case 6:aver(head);break;(3)菜单函数:void Interface()//界面显示函数{printf("\n\n");printf("\t\t\t*********************************************\n");printf("\t\t\t(1)添加职工的记录\n");//gaodingprintf("\t\t\t(2)查询职工(分别按职工编号和姓名)\n");//printf("\t\t\t(3)对职工数据排序(分别按总工资和基本工资)\n");printf("\t\t\t(4)删除职工记录\n");//printf("\t\t\t(5)修改职工记录\n");//printf("\t\t\t(6)部门职工分析(平均工资,各种职称所占的百分比)\n");printf("\t\t\t(7)输出职工信息表\n");//printf("\t\t\t(0)退出程序\n");//printf("\t\t\t********************************************\n");printf("\t\t\t请输入你要执行的命令\n\t\t\t");5、程序清单#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct str{// struct str *last;struct str *next;char num[20],name[5],bumen[10],title[10];int money1,money2,money3,money4;}STR;int a;int Delete(STR *);void creat(STR *);void Interface();void print(STR *head,int i);void amend(STR *);void found(STR *);void sprt(STR *);void aver(STR *);void exchange(STR *,STR *);//*************************************************************** void Interface()//界面显示函数{printf("\n\n");printf("\t\t\t*********************************************\n");printf("\t\t\t(1)添加职工的记录\n");//gaodingprintf("\t\t\t(2)查询职工(分别按职工编号和姓名)\n");//printf("\t\t\t(3)对职工数据排序(分别按总工资和基本工资)\n");printf("\t\t\t(4)删除职工记录\n");//printf("\t\t\t(5)修改职工记录\n");//printf("\t\t\t(6)部门职工分析(平均工资,各种职称所占的百分比)\n");printf("\t\t\t(7)输出职工信息表\n");//printf("\t\t\t(0)退出程序\n");//printf("\t\t\t********************************************\n");printf("\t\t\t请输入你要执行的命令\n\t\t\t");scanf("%d",&a);while(1){if(a>7||a<0)printf("输入错误请从新输入\n");elsebreak;printf("\t\t\t请输入你要执行的命令\n\t\t\t");scanf("%d",&a);}system("pause");system("cls");}//*********************************************************//*********************************************************//*********************************************************//*********************************************************创建void creat(STR *p){int i=1;//用来计数STR *q,*head;head=p;q=p;printf("请输入编号姓名部门职称基本工资加班工资奖金(以‘#’号结束)\n");printf(" %d ",i);scanf("%s%s%s%s%d%d%d",p->num,p->name,p->bumen,p->title,&p->money1,&p->money2,& p->money3);//getchar();p->money4=p->money1+p->money2+p->money3;while(1){i++;p=(STR *)malloc(sizeof(STR));q->next=p;// p->last=q;printf(" %d ",i);scanf("%s",p->num);if(p->num[0]=='#')break;q=p;scanf("%s%s%s%d%d%d",p->name,p->bumen,p->title,&p->money1,&p->money2,&p->money3 );p->money4=p->money1+p->money2+p->money3;// printf("%d\n",p->money4);}q->next=NULL;// head->last=NULL;print(head,1);system("pause");p=head;printf("已经输入完毕……\n");printf("\t\t\t*******************************\n");printf("\t\t\t(1)返回首页\n");printf("\t\t\t(2)退出程序\n");printf("\t\t\t*******************************\n");scanf("%d",&a);getchar();system("cls");switch(a){case 1:Interface();break;case 2:exit(1);break;default :{printf("\t\t\t抱歉,输错了!\n");a=0;}}//system("pause");//return head;}//*********************************************************//*********************************************************删除职工信息int Delete(STR *head){char t[5],b[20];//t装姓名b装编号int i;STR *p,*q;p=head;q=head;printf("\t\t\t*******************************\n");printf("\t\t\t(1)按名字删除\n");printf("\t\t\t(2)按编号删除\n");printf("\t\t\t(3)全部删除\n");printf("\t\t\t(4)返回主函数\n");printf("\t\t\t(5)退出程序\n");printf("\t\t\t*******************************\n\t\t\t");scanf("%d",&i);switch(i){case 1:{printf("\t\t\t请输入要删除的职工的名字(请一定要把名字输对)\n\t\t\t");scanf("%s",t);while(strcmp(p->name,t)){q=p;p=p->next;}q->next=p->next;// free(p);printf("\t\t\tok已经把这个职工的记录删除了\n");system("pause");system("cls");Interface();}break;case 2:{printf("\t\t\t请输入要删除的职工的编号(请一定要把编号输对)\n\t\t\t");scanf("%s",b);while(strcmp(p->num,b)){q=p;p=p->next;}q->next=p->next;// free(p);printf("\t\t\tok已经把这个职工的记录删除了\n");system("pause");system("cls");Interface();}break;case 3:{while(p->next!=NULL){q=p->next;free(p);p=q;}printf("\t\t\t已全部删除\n");system("pause");system("cls");Interface();}break;case 4:{system("cls");Interface();return 0;}case 5:{printf("\t\t\t程序即将退出\n");// system("pause");exit(0);};default :{system("cls");printf("\n\n\t\t\t又错了\n\n");Interface();return 0;}}return 0;}//*********************************************************//*********************************************************输出void print(STR *head,int i)//是0则输出到屏幕1则输出到文本{FILE *fp;int n=1;//n用来记录员工的个数STR *q,*p;q=head;p=head;if(i){//printf("\t请输入你想把数据保存的位置:如K:\\\\wang\\\\txt.dat\n");getchar();if((fp=fopen("D:\\wxc.txt","w"))==NULL){printf("\t\t\t打开失败\n");exit(0);}while(p->next!=NULL){fwrite(p,sizeof(STR),1,fp);fputs("\n",fp);p=p->next;}fclose(fp);}else{while(p!=NULL){printf("\t%d %s %s %s %s %d %d %d %d\n",n,p->num,p->name,p->bumen,p->title,p->money1,p ->money2,p->money3,p->money4);p=p->next;n++;}system("pause");system("cls");Interface();}}//*********************************************************//*********************************************************修改void amend(STR *head){char b[20];// b装编号STR *p,*q;p=head;q=head;be:printf("\n\n请输入您要修改的职工的编号或名字\n");scanf("%s",b);getchar();if(b[0]<='0'||b[0]>='9'){while(strcmp(p->name,b)){p=p->next;if(p==NULL){printf("\t\t\t对不起没有找到这个职工\n");p=head;goto be;}}printf("\t(1) %s (2) %s (3) %s (4) %s (5) %d (6) %d (7) %d (8) %d\n",p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);}else{while(strcmp(p->num,b)){p=p->next;if(p==NULL){printf("\t\t\t对不起没有找到这个职工\n");p=head;goto be;}}printf("\t(1) %s (2) %s (3) %s (4) %s (5) %d (6) %d (7) %d (8) %d\n",p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);}printf("\t\t\t请输入您要修改的内容的编号和内容\n\t\t\t");scanf("%d",&a);getchar();switch(a){case 1:scanf("%s",p->num);break;case 2:scanf("%s",p->name);break;case 3:scanf("%s",p->bumen);break;case 4:scanf("%s",p->title);break;case 5:scanf("%d",p->money1);break;case 6:scanf("%d",p->money2);break;case 7:scanf("%d",p->money3);break;case 8:scanf("%d",p->money4);break;}printf("\t%s %s %s %s %d %d %d %d\n",p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);system("pause");system("cls");Interface();}//*********************************************************//*********************************************************查找void found(STR *head){char b[10];STR *p,*q;p=head;q=head;be:printf("\n\n请输入您要查询的职工的编号或名字\n");scanf("%s",b);if(b[0]<='0'||b[0]>='9'){while(strcmp(p->name,b)){if(p==NULL){printf("\t\t\t对不起没有找到这个职工\n");p=head;goto be;}p=p->next;}printf("\t %s %s %s %s %d %d %d %d\n",p->num,p->name,p->bumen,p->title,p-> money1,p->money2,p->money3,p->money4);}else{while(strcmp(p->num,b)){if(p==NULL){printf("\t\t\t对不起没有找到这个职工\n");p=head;goto be;}p=p->next;}printf("\t%s %s %s %s %d %d %d %d\n",p->num,p->name,p->bumen,p->title,p->m oney1,p->money2,p->money3,p->money4);}system("pause");system("cls");Interface();}//*********************************************************//*********************************************************排序void sort(STR *head){STR *p,*q;//e用来当中间值int i=0,t=0,j;p=head->next;q=head;while(p!=NULL){t++;p=p->next;}p=head->next;printf("\n\n\t\t\t(1)按基本工资排序\n");printf("\t\t\t(2)按总工资排序\n\t\t\t");scanf("%d",&a);// getchar();if(a==1){while(p!=NULL){if(p->money1<head->money1){exchange(head,p);}p=p->next;q=q->next;}p=head->next;q=head;for(i=0;i<t-1;i++){for(j=i;j<t-1;j++){if(q->money1>p->money1){exchange(q,p);}q=p;p=p->next;}q=head;p=head->next;}print(head,0);}if(a==2){while(p!=NULL){if(p->money4<head->money4){exchange(head,p);}p=p->next;q=q->next;}p=head->next;q=head;for(i=0;i<t;i++){for(j=i;j<t;j++){if(q->money4>p->money4){exchange(q,p);}//printf("%d %d\n",q->money4,p->money4);q=p;p=p->next;}q=head;p=head->next;}print(head,0);}}//********************************************************* void exchange(STR *head,STR *p){STR *q;q=(STR *)malloc(sizeof(STR));q->money1=head->money1;q->money2=head->money2;q->money3=head->money3;q->money4=head->money4;strcpy(q->name,head->name);strcpy(q->bumen,head->bumen);strcpy(q->num,head->num);strcpy(q->title,head->title);head->money1=p->money1;head->money2=p->money2;head->money3=p->money3;head->money4=p->money4;strcpy(head->name,p->name);strcpy(head->bumen,p->bumen);strcpy(head->num,p->num);strcpy(head->title,p->title);p->money1=q->money1;p->money2=q->money2;p->money3=q->money3;p->money4=q->money4;strcpy(p->name,q->name);strcpy(p->bumen,q->bumen);strcpy(p->num,q->num);strcpy(p->title,q->title);}//********************************************************* void aver(STR *head){STR *p;double aver1=0,aver2=0,aver3=0,aver4=0,aver=0;int i=0;p=head;while(p!=NULL){aver1+=p->money1;i++;p=p->next;}p=head;while(p!=NULL){aver2+=p->money2;p=p->next;}p=head;while(p!=NULL){aver3+=p->money3;p=p->next;}p=head;while(p!=NULL){aver4+=p->money4;p=p->next;}printf("\t\t基本工资的平均是%.2f\n \t\t加班工资的平均是%.2f\n \t\t奖金的平均是%.2f\n \t\t总工资的平均是%.2f \n",aver1/i,aver2/i,aver3/i,aver4/i);system("pause");system("cls");Interface();}//*********************************************************//*********************************************************void main(){STR *head,*p;//,*q;printf("\n\n\t\t\t你好!我觉得您在进行其他的操作之前是不是应该先创建数据?\n\n");Interface();//界面显示函数head=(STR *)malloc(sizeof(STR));p=head;//q=p;while(1){switch(a){case 0:{printf("\n\n\t\t\t这个程序已退出……\n\n");exit(0);}case 1:creat(head);break;case 2:found(head);break;case 4:Delete(head);break;case 7:print(head,0);break;case 5:amend(head);break;case 3:sort(head);break;case 6:aver(head);break;}}}6、调试过程一.主菜单1.添加职工记录2.查询职工3.对职工数据排序4.删除职工记录5.修改职工记录6.部门职工分析7.输出职工信息表0.退出程序7.结束语通过为期二周的课程设计学习,我对《C语言》这门课程有了更深一步的了解。
c语言程序设计 员工信息管理系统

实验题目:员工信息管理系统一、实验目的1.熟悉c语言的编译连接和运行过程。
2.掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。
3.掌握if语句及switch语句的运用方法及嵌套应用方法。
4.掌握实现循环结构的三种语句while、do-while.、for 的使用。
5.掌握函数的定义方法和调用方法。
6.能够采用模块化思想调试程序。
二.实验内容1.编写程序并进行调试运行。
2.输入员工资料,并保存于文件。
每个员工包含信息如:工作证号、姓名、性别、工龄、学历、职务、电话、工资等。
3.对已存入的员工信息进行更新操作,包括添加一个员工信息、删除某个员工信息和修改某个员工信息。
4.通过输入姓名、工作证号的方式查询员工信息。
5.最后输出员工信息,供需要时打印。
二、需求分析1.该程序可用于对企业员工情况基本信息的存储、更新、查询、输出等操作,以实现对企业员工的管理。
2.其中更新功能包括:添加信息、删除信息、修改信息、可根据需要添加一个或多个员工信息,也可对个别员工信息进行适当的删除或修改。
以便随时更新员工信息。
3.程序中设计的查询功能可根据需要从若干数据中查询某个员工信息,并且可根据两种不同的方法查询:按工作证号查询和按姓名查询。
以满足不同的需要。
四、概要设计1、方案设计对系统进行分析,给出结构图分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计结构图如下:2.模块功能说明对各个模块进行功能的描述(1).输入模块:录入需要管理的员工信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。
(2).添加模块:可添加一个或多个员工信息,并将所添加员工信息保存,方便查找。
(3).删除模块:可对辞职或休假的员工信息做删除处理。
(4).修改模块:可根据需要对多个员工信息进行修改,也可随时对个别项进行修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计工程训练报告职工信息管理系统课程名称C语言程序设计工程训练姓名院(系)专业班级学号指导教师目录1 需求分析 (1)2 系统总框图和功能模块说明 (1)2.1 系统总框图 (1)2.2 功能模块说明 (2)3 系统设计 (2)3.1 主要结构体 (2)3.2主要功能函数 (3)3.3 关键函数的流程图 (4)4 系统调试 (4)5 总结 (9)6 源程序清单 (10)1 需求分析职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话(职工号不重复)。
试设计职工信息管理系统,使之能提供以下功能:●系统以菜单方式工作●职工信息录入功能(职工信息用文件保存)--输入●职工信息浏览功能--输出●职工信息查询功能-算法(其中查询方式可以按学历查询、按职工号查询等)●职工信息删除、修改功能2 系统总框图和功能模块说明2.1 系统总框图图1 系统总框图2.2 功能模块说明1.菜单模块:显示职工管理系统的主菜单,供用户选择所需的功能,通过自己定义的void menu()函数来实现。
2.输入模块:输入职工的工号、姓名以及其它的一些职工的相关信息,通过自己定义的void input()函数来实现。
3.保存模块:将内存中职工的信息输出到磁盘文件中,可以通过自己定义的void save(int)函数来实现。
4.浏览模块:浏览所有职工的相关信息,通过自己定义的void display()函数来实现。
5.删除模块:删除需要删除的职工的所有信息,通过自己定义的void del()函数来实现。
6.添加模块:添加需要添加的职工的相关信息,通过自己定义的void add()函数来实现。
7.按职工的的学历查询模块:可以按职工的学历来查询职工的相关信息,通过自己定义的void search_xuelil函数来实现。
8.按职工的电话号码查询模块:可以按职工的电话来查询职工的相关信息,通过自己定义的void search_tel函数来实现。
9.修改模块:可以修改需要修改的职工的相关信息,通过自己定义的void modify()函数来实现。
10.退出系统模块:退出职工信息管理系统,通过头文件windows.h中的exit(0)函数来实现。
3 系统设计3.1 主要结构体struct employee //定义一个职工信息的结构体{int num;char name[10];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];}em[100]; };3.2主要功能函数void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify();3.3 系统的总体流程图4 系统调试1.运行程序,进入职工信息管理系统的主菜单:2.输入数字“1”进行录入职工信息:3.录入职工信息4.输入“2”浏览职工信息:5.输入“y”后继续,输入“3”进行查询职工信息:6.进入主菜单,输入“4”进行删除职工信息:7.进入主菜单输入“5”进行添加职工信息:8.进入主菜单输入“6”进行修改职工信息:9.进入主菜单输入”7”退出职工信息管理系统。
5 总结通过这次课程设计,增加了我们对软件技术的了解,虽然还不明确软件技术包含的具体内容,但从学习C语言这门课程开始,已发现程序设计的好处,它对我们数学的学习也有很大的帮助。
在学习C语言的过程中也学到和巩固了许多计算机应用基础知识,对计算机的机体也有了一个较为详细的了解。
在具体操作中对这学期所学的C语言的理论知识得到巩固加强,达到实训的目的,也发现自己的不足之处,为我们以后的c语言学习奠定了基础,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。
发现上机操作的重要作用,特别是对数组和循环有了深刻的理解。
通过实际操作,学会 C 语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。
由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。
在用的时候难免出现这样那样的错误。
如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。
解决的这个问题的办法是调整。
一个系统的菜单和提示信息非常重要。
如果没有这些用户根本不知道怎么用你设计的这个系统。
在设计的调试过程中也无法顺利的完成调试工作。
有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的比较顺利。
回顾起此次课程设计,至今我们仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在这些日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识本次课程设计结束了,对于我们的影响很大。
我们通过这次实践学到了许多知识。
学到了设计一个简单的系统。
要注意哪些方面。
也使我们知道自己哪些方面做得还不够。
6 源程序清单#include <stdio.h>#include <windows.h>#include <time.h>#include <string.h>#define N 100struct employee{int num;char name[10];char sex;int age;char xueli[30];int wage;char addr[30];double tel;}em[100]; /*定义一个结构体*/void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify(); /*定义各函数*/void menu() /*菜单函数*/{printf("计算机科学与技术专业\n");printf("\n");printf("计算机123班敖立伟\n");printf("\n");printf(" ******************职工信息管理系统****************\n"); printf(" 1.录入职工信息");printf(" 2.浏览职工信息\n");printf(" 3.查询职工信息");printf(" 4.删除职工信息\n");printf(" 5.添加职工信息");printf(" 6.修改职工信息\n");printf(" 7.退出\n");printf(" ********************谢谢使用******************\n");printf("\n");printf("\n");}void main(){int n,flag;char a;menu(); /*调用菜单函数*/do{printf("请选择你需要操作的步骤(1--7):\n");scanf("%d",&n);if(n>=1&&n<=7){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(n){case 1:printf(" ◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break;case 2:printf(" ◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;case 3:printf(" ◆◆◆按职工号查询职工信息◆◆◆\n");printf("\n");search();break;case 4:printf(" ◆◆◆删除职工信息◆◆◆\n");printf("\n");del();break;case 5:printf(" ◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break;case 6:printf(" ◆◆◆修改职工信息◆◆◆\n");printf("\n");modify();break;case 7:exit(0);break;default :break;}getchar();printf("\n");printf("是否继续进行(y or n):\n");scanf("%c",&a);if(a=='y'){flag=1;system("cls"); /*清屏*/menu(); /*调用菜单函数*/printf("请再次选择你需要操作的步骤(1--6):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}void input() /*录入函数*/{int i,m;printf("请输入需要创建信息的职工人数(1--100):\n");scanf("%d",&m);for (i=0;i<m;i++){printf("请输入职工号:");scanf("%d",&em[i].num);printf("\n");printf("请输入姓名: ");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女 m--男): ");scanf("%c",&em[i].sex);printf("请输入年龄: ");scanf("%d",&em[i].age);printf("请输入学历: ");scanf("%s",em[i].xueli);printf("请输入工资: ");scanf("%d",&em[i].wage);printf("请输入住址: ");scanf("%s",em[i].addr);printf("请输入电话: ");scanf("%lf",&em[i].tel);printf("\n");}printf("\n创建完毕!\n");save(m);}void save(int m) /*保存文件函数*/{int i;FILE*fp;if ((fp=fopen("employee_list","wb"))==NULL) /*创建文件并判断是否能打开*/ {printf ("cannot open file\n");exit(0);}for (i=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() /*导入函数*/{FILE*fp;int i=0;if((fp=fopen("employee_list","rb"))==NULL){printf ("cannot open file\n");exit(0);}else{do{fread(&em[i],sizeof(struct employee),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);}void display() /*浏览函数*/{int i;int m=load();printf("\n 职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");for(i=0;i<m;i++) /*m为输入部分的职工人数*/printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].a ge,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);}void del() /*删除函数*/{int m=load();int i,j,n,t,flag;char name[20];printf("\n 原来的职工信息:\n");display(); /* 调用浏览函数*/printf("\n");printf("请输入要删除的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(em[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].age ,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1) /*如果删除,则其他的信息都往上移一行*/{for(j=i;j<m-1;j++){strcpy(em[j].name,em[j+1].name);em[j].num=em[j+1].num;em[j].sex=em[j+1].sex;em[j].age=em[j+1].age;strcpy(em[j].xueli,em[j+1].xueli);em[j].wage=em[j+1].wage;strcpy(em[j].addr,em[j+1].addr);em[j].tel=em[j+1].tel;}flag=0;}}}if(!flag)m=m-1;elseprintf("\n对不起,查无此人!\n");printf("\n 浏览删除后的所有职工信息:\n");save(m); /*调用保存函数*/display(); /*调用浏览函数*/printf("\n继续删除请按1,不再删除请按0\n");scanf("%d",&t);switch(t){case 1:del();break;case 0:break;default :break;}}void add()/*添加函数*/{FILE*fp;int n;int count=0;int i;int m=load();printf("\n 原来的职工信息:\n");display(); /* 调用浏览函数*/printf("\n");fp=fopen("emploee_list","a");printf("请输入想增加的职工数:\n");scanf("%d",&n);for (i=m;i<(m+n);i++){printf("\n 请输入新增加职工的信息:\n");printf("请输入职工号: ");srand((int)time(0));em[i].num=rand()%10000+20000000;if(em[i].num!=em[i-1].num)printf("%8d ",em[i].num);printf("\n");printf("请输入姓名: ");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女 m--男): "); scanf("%c",&em[i].sex);printf("请输入年龄: ");scanf("%d",&em[i].age);printf("请输入学历: ");scanf("%s",em[i].xueli);printf("请输入工资: ");scanf("%d",&em[i].wage);printf("请输入住址: ");scanf("%s",em[i].addr);printf("请输入电话: ");scanf("%lf",&em[i].tel);printf("\n");count=count+1;printf("已增加的人数:\n");printf("%d\n",count);}printf("\n添加完毕!\n");m=m+count;printf("\n浏览增加后的所有职工信息:\n");printf("\n");save(m);display();fclose(fp);}void search()/*查询函数*/{int t,flag;do{printf("\n按职工号查询请按1 ; 按学历查询请按2 ; 按电话号码查询请按3,进入主函数按4\n");scanf("%d",&t);if(t>=1&&t<=4){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(t){case 1:printf("按职工号查询\n");search_num();break;case 2:printf("按学历查询\n");search_xueli();break;case 3:printf("按电话号码查询\n");search_tel();break;case 4:main();break;default:break;}}}void search_num(){int num;int i,t;int m=load();printf("请输入要查找的职工号(0--1000000000):\n");scanf("%d",&num);for(i=0;i<m;i++)if(num==em[i].num){printf("\n已找到此人,其记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].age ,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2: break;default:break;}}void search_xueli(){char xueli[30];int i,t;int m=load();printf("请输入要查找的学历:\n");scanf("%s",xueli);for(i=0;i<m;i++)if(strcmp(em[i].xueli,xueli)==0){printf("\n已找到,其记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询学历请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2:break;default :break;}}void search_tel(){long int tel;int i, t;int m=load();printf("请输入要查找的电话号码:\n");scanf("%lf",&tel);for(i=0;i<m;i++)if(tel==em[i].tel){printf("\n已找到此人,其记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].age ,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询电话号码请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2:break;default :break;}}void modify() /*修改函数*/{int num;char name[10];char sex;int age;char xueli[30];int wage;char addr[30];long int tel;int b,c,i,n,t,flag;int m=load(); /*导入文件内的信息*/printf("\n 原来的职工信息:\n");display(); /* 调用浏览函数*/printf("\n");printf("请输入要修改的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(em[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].age ,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");scanf("%d",&n);if(n==1){printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.性别 4.年龄 5.学历 6.工资 7.住址 8.电话\n");printf("请输入你想修改的那一项序号:\n");scanf("%d",&c);if(c>8||c<1)printf("\n选择错误,请重新选择!\n");}flag=0;}}if(flag==1)printf("\n对不起,查无此人!\n");do{switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/{case 1:printf("职工号改为: ");scanf("%d",&num);em[i-1].num=num;break;case 2:printf("姓名改为: ");scanf("%s",name);strcpy(em[i-1].name,name);break;case 3:printf("性别改为: ");getchar();scanf("%c",&sex);em[i-1].sex=sex;break;case 4:printf("年龄改为: ");scanf("%d",&age);em[i-1].age=age;break;case 5:printf("学历改为: ");scanf("%s",xueli);strcpy(em[i-1].xueli,xueli);break;case 6:printf("工资改为: ");scanf("%d",wage);break;case 7:printf("住址改为: ");scanf("%s",addr);strcpy(em[i-1].addr,addr);break;case 8:printf("电话改为: ");scanf("%lf",&tel);em[i-1].tel=tel;break;}printf("\n");printf("\n是否确定所修改的信息?\n 是,请按1 ; 不,重新修改,请按2: \n");scanf("%d",&b);}while(b==2);printf("\n浏览修改后的所有职工信息:\n");printf("\n");save(m);display();printf("\n继续修改请按1,不再修改请按0\n"); scanf("%d",&t);switch(t){case 1:modify();break;case 0:break;default :break;}}。