简单的职工管理系统课程设计报告

合集下载

原创c语言职工管理系统课程设计报告

原创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语句来进入相应的功能模块。

职工管理系统程序设计报告

职工管理系统程序设计报告

程序设计报告( 2015 / 2016 学年第一学期)题目:职员信息管理系统专业信息科技英才班组长学号姓名 Q14010120 陈明阳组员学号姓名 Q14010119 花子栋Q14010122 周行洲指导教师薛景指导单位日期 2015 年 10 月 23 日XXXXXXXXXXXXXXX(题目格式:宋体,三号,加粗,居中对齐)一、课题内容和要求(标题格式:宋体,四号,加粗,两端对齐,下同)XX系统是............(中文字体:宋体,英文字体:Times New Roman,小四号,不加粗,两端对齐,1.5倍行距,首行缩进2字符,段前段后距为0)二、相关理论知识描述该课题的相关理论知识和要点。

(中文字体:宋体,英文字体:Times New Roman,小四号,不加粗,两端对齐,1.5倍行距,首行缩进2字符,段前段后距为0)三、需求分析明确课题要完成的主要功能,并进行描述。

(中文字体:宋体,英文字体:Times New Roman,小四号,不加粗,两端对齐,1.5倍行距,首行缩进2字符,段前段后距为0)(报告中所有的图必须统一编号,图必须有名称,图形、图名称必须居中,图中所有字体为5号字体;图形中的所有框图、线条必须“组合”成为一个整体;图形必须嵌入到文字当中,不得浮于文字上方;全文中的(1)、(2)、(3)等格式必须统一为中文括号或者英文括号。

)四、概要设计1 、设计类,对每个类明确成员变量和方法,明确类与类之间的关系,并用UML图表示出来。

(二级标题格式:宋体,小四号,不加粗,两端对齐,不缩进,下同)2 、类中主要方法的实现需要有流程图(中文字体:宋体,英文字体:Times New Roman,小四号,不加粗,两端对齐,1.5倍行距,首行缩进2字符,段前段后距为0)五、源程序代码Class1:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace WindowsFormsApplication2{public class people{public int age;//年龄public string sex;//性别public string name;//姓名public int day;//出勤天数public double attend;//考勤率public int partcreated;//部门效益public double income;//个人工资public char partment;//部门public string classic;//职位// public int partrank;//部门排名// public int personrank;//个人排名public int number;//编号public people()//构造函数【附初值】{number = 0;age =day= 0;sex = "男";name = "any";partcreated = 0;partment = 'Z';classic = "职员";income = 0;}public void calincome()//计算个人收入{//throw new System.NotImplementedException();income = 4000 * attend + partcreated * 0.05;}public void calattend()//计算出勤率{//throw new System.NotImplementedException();attend = day / 31.0 ;}}}Form 1:using System;using System.Collections;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Threading.Tasks;using System.Windows.Forms;namespace WindowsFormsApplication2{//private people[] poe;// public people _people;public partial class Form1 : Form{//private people[] _peo;public people[] peo;void readdatabase(people[] p)//从文件读出{Encoding.GetEncoding("GB2312"));int n = 0;while (true){string line = sr.ReadLine();if (line == string.Empty || line == null) break;string[] data = line.Split(' ');ArrayList mydata = new ArrayList();for (int i = 0; i < data.Length; i++){if (data[i].Trim() != string.Empty){mydata.Add(data[i].Trim());}}p[n].number = Convert.ToInt32(mydata[0]);p[n].name = Convert.ToString(mydata[1]);p[n].sex = Convert.ToString(mydata[2]);p[n].classic = Convert.ToString(mydata[3]);p[n].partment = Convert.ToChar(mydata[4]);p[n].partcreated = Convert.ToInt32(mydata[5]);p[n].day = Convert.ToInt32(mydata[6]);p[n].income = Convert.ToDouble(mydata[7]);p[n].attend = Convert.ToDouble(mydata[8]);p[n].age = Convert.ToInt32(mydata[9]);n++;}sr.Close();}void writedatabase(people[]p)//写入到文件{FileStream fs = new FileStream("data.dat", FileMode.Create);StreamWriter sw = new StreamWriter(fs, Encoding.Default);string text;int i;for(i=0;p[i].number!=0;i++){text = Convert.ToString(p[i].number) + " " + p[i].name + " " + p[i].sex + " " +p[i].classic + " " + p[i].partment + " " + Convert.ToString(p[i].partcreated) + " " + Convert.ToString(p[i].day) + " " + Convert.ToString(p[i].income) + " " + Convert.ToString(p[i].attend) + " " +Convert.ToString(p[i].age)+'\n';sw.Write(text);}fs.Close();}void redata(people[] p)//刷新表格{int i;dataGridView1.Rows.Clear();for (i = 0; p[i].number!=0; i++){dataGridView1.Rows.Add();dataGridView1.Rows[i].Cells["编号"].Value = p[i].number;dataGridView1.Rows[i].Cells["姓名"].Value = p[i].name;dataGridView1.Rows[i].Cells["性别"].Value = p[i].sex;dataGridView1.Rows[i].Cells["职位"].Value = p[i].classic;dataGridView1.Rows[i].Cells["部门"].Value = p[i].partment;dataGridView1.Rows[i].Cells["部门效益"].Value = p[i].partcreated;dataGridView1.Rows[i].Cells["出勤天数"].Value = p[i].day;p[i].calincome();dataGridView1.Rows[i].Cells["工资"].Value = p[i].income;p[i].calattend();dataGridView1.Rows[i].Cells["出勤"].Value = p[i].attend;dataGridView1.Rows[i].Cells["年龄"].Value = p[i].age;}}void outdata(people[] p)//将表格数据存入数组{int i;for (i = 0; i < dataGridView1.Rows.Count; i++){p[i].number = Convert.ToInt32(dataGridView1.Rows[i].Cells["编号"].Value);p[i].name = Convert.ToString(dataGridView1.Rows[i].Cells["姓名"].Value);p[i].sex = Convert.ToString(dataGridView1.Rows[i].Cells["性别"].Value);p[i].classic = Convert.ToString(dataGridView1.Rows[i].Cells["职位"].Value);p[i].partment = Convert.ToChar(dataGridView1.Rows[i].Cells["部门"].Value);p[i].partcreated = Convert.ToInt32(dataGridView1.Rows[i].Cells["部门效益"].Value);p[i].day = Convert.ToInt32(dataGridView1.Rows[i].Cells["出勤天数"].Value);p[i].income = Convert.ToDouble(dataGridView1.Rows[i].Cells["工资"].Value);p[i].attend = Convert.ToDouble(dataGridView1.Rows[i].Cells["出勤"].Value);p[i].age = Convert.ToInt32(dataGridView1.Rows[i].Cells["年龄"].Value);}for (; i < 50; i++)//剩下空间归零{p[i].number = 0;}void reflesh(people[] p)//刷新数组(以编号标记成员是否有效){int i,j;for (i = 0; i < 50; i++){if (p[i].number == 0){for (j = i; j < 49; j++)p[i] = p[i + 1];}}}void rank(people []p,int x)//排序函数/*0:编号;1:考勤;2:工资;3:职位;4:部门;5:部门效益*/ { int z;for (z = 0; ; z++)//求现有人数{if (p[z].number == 0){break; }}switch (x){case 0://排序编号{people q=p[0];int i, j;for(i=0;i<z;i++){for (j = i; j < z; j++){if(p[j].number<p[i].number){q = p[i];p[i] = p[j];p[j] = q;}}}}; break;case 1://排序考勤{int i, j;for (i = 0; i < z; i++){for (j = i; j < z; j++){if (p[j].attend < p[i].attend){q = p[i];p[i] = p[j];p[j] = q;}}}}break;case 2://排序工资{people q = p[0];int i, j;for (i = 0; i < z; i++){for (j = i; j < z; j++){if (p[j].income< p[i].income){q = p[i];p[i] = p[j];p[j] = q;}}}}break;case 3://排序职位{people q = p[0];int i, j;for (i = 0; i < z; i++){for (j = i; j < z; j++)if (p[j].classic.GetHashCode()< p[i].classic.GetHashCode()){q = p[i];p[i] = p[j];p[j] = q;}}}}; break;case 4://排序部门{people q = p[0];int i, j;for (i = 0; i < z; i++){for (j = i; j < z; j++){if (p[j].partment < p[i].partment){q = p[i];p[i] = p[j];p[j] = q;}}}}; break;case 5://排序部门效益{people q = p[0];int i, j;for (i = 0; i < z; i++){for (j = i; j < z; j++){if (p[j].partcreated< p[i].partcreated){q = p[i];p[i] = p[j];p[j] = q;}}}; break;}}double average(people[]p){int i;double ans = 0;for(i=0;p[i].number!=0;i++){ans = ans + p[i].income;}return (ans / (i));}//求工资均值void search(people []p)//搜索功能{int i;int row = dataGridView1.Rows.Count-1;//得到总行数int cell = dataGridView1.Rows[1].Cells.Count-1;//得到总列数string strTxt = textBox1.Text;//得到输入的字符串,并付值给变量Regex r = new Regex(strTxt); // 定义一个Regex对象实例for (i = 0; i < row; i++)//得到总行数并在之内循环{for (int j = 0; j < cell; j++)//得到总列数并在之内循环{Match m = r.Match(dataGridView1.Rows[i].Cells[j] .Value.ToString()); // 在字符串中模糊匹配if (m.Success){ //对比TexBox中的值是否与dataGridView中的值相同(上面这句)dataGridView1.CurrentCell = dataGridView1[j, i];//定位到相同的单元格return;//返回}else { }}}if(i==row){MessageBox.Show("未找到匹配项");}}{label2.Text = Convert.ToString(average(p));rank(p, 2);int i;for(i=0; p[i].number!=0;i++)//工资最大{i++;i--;}i--;label4.Text = p[i].name;rank(p, 5);for (i = 0; p[i].number != 0; i++)//部门效益最大{i++;i--;}i--;label6.Text = Convert.ToString( p[i--].partment);rank(peo, 0);//恢复原数组}public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e)//加载窗体时读取数据库{peo = new people[50];int i;for (i = 0; i < 50; i++){peo[i]=new people();}readdatabase(peo);rank(peo, 0);redata(peo);infor(peo);}private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e){}private void button4_Click(object sender, EventArgs e)//窗口实现排序{int x = 0;switch (comboBox1.Text){case "编号": x = 0; break;case "出勤": x = 1; break;case "工资": x = 2; break;case "职位": x = 3; break;case "部门": x = 4; break;case "部门效益": x = 5; break;}rank(peo, x);redata(peo);}private void button5_Click_1(object sender, EventArgs e)//窗口开启编辑模式{rank(peo, 0);redata(peo);dataGridView1.ReadOnly = false;MessageBox.Show(("已开始编辑,请小心使用")+'\n'+"务必输入编号,否则该成员将视为无效");label8.Text = "编辑模式" ;label8.ForeColor = System.Drawing.Color.Red;}private void button6_Click(object sender, EventArgs e)//窗口关闭编辑模式并保存{dataGridView1.ReadOnly = true;outdata(peo);reflesh(peo);writedatabase(peo);readdatabase(peo);redata(peo);infor(peo);label8.Text = "查看模式";label8.ForeColor = System.Drawing.Color.Black;private void button7_Click(object sender, EventArgs e){search(peo);}}}六、测试数据及其结果分析图5如图1所示,点击“启用编辑”按钮,开始编辑,可以添加,删除,修改职员数据。

职工管理系统课程设计报告

职工管理系统课程设计报告

职工管理系统课程设计报告1.引言职工管理系统是一种企业管理软件,它的主要作用是帮助企业管理职工的基本信息、工资、考勤、培训等内容。

本文将介绍我们小组设计的职工管理系统。

2.概述职工管理系统拥有多个功能模块,包括人事管理、工资管理、考勤管理、培训管理等。

其中,人事管理模块包括职工的基本信息、职务信息、部门信息等;工资管理模块包括职工的薪资计算、社保、公积金等;考勤管理模块包括职工的出勤记录、加班、请假等;培训管理模块则包括职工的培训计划、课程安排、培训记录等。

3.功能设计我们小组的职工管理系统,采用了Java语言进行开发,使用MVC 架构模式进行开发。

具体功能设计如下:3.1人事管理模块人事管理模块用于管理职工的基本信息、职务信息、部门信息等。

其中,职工的基本信息包括姓名、性别、出生日期、身份证号等;职务信息包括职务名称、职级、任职时间等;部门信息包括部门名称、部门经理、部门编号等。

除此之外,人事管理模块还可以进行权限管理,设置不同角色的权限不同。

3.2工资管理模块工资管理模块包括职工的薪资计算、社保、公积金等。

职工的薪资计算需要考虑个人工资、绩效、考勤等因素,同时还要进行税前扣减、税后扣减等计算。

社保、公积金等则需要根据国家政策进行计算。

3.3考勤管理模块考勤管理模块用于管理职工的出勤记录、加班、请假等。

出勤记录需要记录职工的出勤时间、迟到早退、旷工等,加班需要统计职工的加班时间和加班费用,请假需要记录职工的请假类型、请假时间等。

3.4培训管理模块培训管理模块用于管理职工的培训计划、课程安排、培训记录等。

培训计划需要包括培训的目标、内容、时间、地点等,课程安排需要包括课程名称、讲师、授课时间、授课地点等,培训记录需要记录职工的培训情况、培训效果等。

4.技术选型我们小组采用了Spring Boot、MyBatis等技术进行开发,前端采用了Bootstrap、jQuery等技术进行开发。

其中,Spring Boot提供了优雅的开发方式,MyBatis则提供了便捷的数据库交互方式,Bootstrap、jQuery则为前端提供了丰富的UI组件和JavaScript库。

数据结构课程设计 简单的职工管理系统

数据结构课程设计 简单的职工管理系统

数据结构课程设计简单的职工管理系统简单的职工管理系统设计1. 引言本文旨在设计一个简单的职工管理系统,用于匡助管理者进行职工信息的录入、查询、修改和删除等操作。

该系统基于数据结构的相关知识,通过合理的数据结构设计和算法实现,实现对职工信息的高效管理。

2. 功能需求2.1 职工信息录入系统提供一个录入界面,管理者可以输入职工的基本信息,包括职工编号、姓名、性别、年龄、职位等。

系统应该能够对输入的信息进行合法性验证,并将信息存储到合适的数据结构中。

2.2 职工信息查询系统提供一个查询界面,管理者可以根据职工的编号、姓名、职位等条件进行查询。

系统应该能够根据查询条件从数据结构中快速定位到符合条件的职工信息,并将结果展示给管理者。

2.3 职工信息修改系统提供一个修改界面,管理者可以根据职工的编号或者姓名等条件选择一个职工信息进行修改。

系统应该能够根据选择的职工信息,提供可修改的字段,并对输入的修改信息进行合法性验证,并更新数据结构中对应的职工信息。

2.4 职工信息删除系统提供一个删除界面,管理者可以根据职工的编号或者姓名等条件选择一个职工信息进行删除。

系统应该能够根据选择的职工信息,从数据结构中删除对应的职工信息,并给出相应的提示。

3. 数据结构设计为了高效地管理职工信息,我们可以采用链表作为基本的数据结构。

每一个节点表示一个职工信息,包括职工编号、姓名、性别、年龄、职位等字段。

节点之间通过指针进行连接,形成一个链表结构。

3.1 链表节点设计每一个链表节点包含以下字段:- 职工编号(int)- 姓名(string)- 性别(string)- 年龄(int)- 职位(string)- 指向下一个节点的指针(Node*)3.2 链表操作设计- 初始化链表:创建一个空链表,并初始化头节点指针为NULL。

- 添加节点:根据输入的职工信息创建一个新节点,并将其插入到链表的合适位置。

- 删除节点:根据职工的编号或者姓名等条件,找到对应的节点,并将其从链表中删除。

职工管理系统课程设计

职工管理系统课程设计

职工管理系统课程设计一、教学目标本课程旨在使学生掌握职工管理系统的理论知识,培养学生运用职工管理系统进行实际操作的能力,并树立正确的职工管理理念。

具体目标如下:1.知识目标:•了解职工管理系统的定义、功能和应用范围;•掌握职工信息录入、查询、修改和删除的操作方法;•理解职工管理系统的数据分析和报表生成过程。

2.技能目标:•能够熟练使用职工管理系统进行职工信息的录入、查询、修改和删除;•能够根据需求设置职工管理系统的参数和权限;•能够运用职工管理系统进行数据分析和报表生成。

3.情感态度价值观目标:•培养学生对职工管理工作的重视和责任感;•培养学生遵守数据安全和隐私保护的原则;•培养学生积极向上、团结协作的工作态度。

二、教学内容本课程的教学内容主要包括职工管理系统的理论知识、操作方法和实践应用。

具体安排如下:1.职工管理系统的理论知识:•职工管理系统的定义、功能和应用范围;•职工信息录入、查询、修改和删除的基本操作;•职工管理系统的数据分析和报表生成原理。

2.职工管理系统的操作方法:•职工信息录入、查询、修改和删除的具体步骤;•职工管理系统的参数设置和权限管理;•数据分析和报表生成的实践操作。

3.职工管理系统的实践应用:•结合具体案例,分析职工管理系统的实际应用场景;•讨论职工管理系统在提高工作效率和促进团队协作方面的作用;•分析职工管理系统在企业管理和人力资源规划中的重要性。

三、教学方法为了提高教学效果和学生的参与度,本课程将采用多种教学方法相结合的方式进行教学。

具体方法如下:1.讲授法:通过教师的讲解,使学生了解职工管理系统的理论知识,为学生提供系统的知识结构。

2.讨论法:学生进行小组讨论,分享职工管理系统的操作经验和实践案例,促进学生之间的交流和合作。

3.案例分析法:通过分析具体案例,使学生了解职工管理系统在实际应用中的作用和效果,培养学生解决问题的能力。

4.实验法:安排上机实验环节,让学生亲自动手操作职工管理系统,巩固所学知识和技能。

高校职工简单管理系统课程设计报告

高校职工简单管理系统课程设计报告

课程设计报告课程名称程序设计课程设计项目名称高校在职职工简单管理软件设计班级11级计算机科学与技术一班实验室名称(或课室) SS1-304 专业计算机科学与技术任课教师陈章学号11251102133姓名叶晓生广东商学院教务处制分数___________ 评语:指导教师(签名)年月日说明:指导教师评分后,课程设计报告交院(系)办公室保存。

高校在职职工简单管理软件设计1 系统功能要求:本人计划编写一个高校在职职工简单管理软件,主要用来管理职工的一些基本信息。

软件功能如下:(1)减少一个职工(需指定要删除职工的职工号);(2)增加一个职工;(3)查找一个职工号的信息(需指定职工号或电话号码);(4)统计指定二级单位的职工人数、工资总额;(5)按职工的工资多少对职工排序;(6)显示所有职工信息;(7)保存记录。

2 系统总体设计思想:(1)开发与设计的总体思想:高校在职职工简单管理软件算法说明:STEP1 预处理,定义结构体STEP2 进入欢迎界面STEP3 选择某一种功能STEP4 根据提示输入一个字母STEP5 对于输入的字母编辑删除、增加、查找、统计、排序的函数STEP6 如果输入的字母表示退出,退出系统(2)系统模块结构图(3)系统设计流程图3 系统详细设计思想(2)函数的描述1.主函数函数原型:void main(void) 功能:控制程序参数:void返回值:void2.菜单函数函数原型:void menu(void) 功能:显示菜单参数:void返回值:void3.增加职工信息函数函数原型:int add(em*,int) 功能:增加记录参数:em*,int返回值:int4.删除职工信息函数函数原型:int del(em*.int)功能:删除指定职工号职工信息参数:em*,int返回值:int5.查询职工信息函数函数原型:void search(em*,int)功能:根据职工号或职工电话号码查询职工信息6.统计职工信息函数函数原型:void count(em*,int)功能:统计同一二级单位的职工人数和工资总额7.排序函数函数原型:void sort(em*,int)功能:按照工资少到多排序8.保存职工信息函数函数原型:void sort(em*,int)功能:保存职工信息9.函数原型:void display(em*,int)功能:显示职工信息(3)本系统涉及的知识点:结构、数组、循环、函数、分支、指针、文件4 课程设计总结对C语言文件方面的知识不熟悉,对跟文件有关的函数使用也不甚了解,导致在写保存信息方面时花费了较多时间;对结构体和指针方面的知识有点忘记,需要加强复习对C语言文件如何保存与打开的知识不熟悉,与文件有关的函数使用也不清楚,经过课本,到网上查询了相关知识,询问同学,之后才逐步把自己的文件打开和存储问题解决了。

简单职工管理系统课程设计报告

简单职工管理系统课程设计报告

简单职工管理系统课程设计报告
课程设计(论文)
题目名称简单的职工管理系统课程名称数据结构课程设计
学生姓名
学号
系、专业信息工程系、通信工程指导教师
12 月 23 日
摘要
建立一个“简单的职工管理系统”,系统以菜单方式工作,编写存放有职工基本信息,包含职工工号,姓名,性别,出生年月,学历,职务,工资,住址,电话等,而且要求录入职工号不重复;录入的职工号信息要求用文件形式保存,并能够对其进行浏览、查询、修改、删除等基本操作,建立职工信息管理的文件。

关键词:职工信息管理;文件;浏览;查询;修改;插入;删除;排序
目录
1 问题描述 (2)
2 需求分析 (2)
3 概要设计 (3)
3.1抽象数据类型定义 (3)
3.2模块划分 (3)
4 详细设计 (4)
4.1数据类型的定义 (4)
4.2主要模块的算法描述 (6)
5 测试分析 (7)
6 课程设计总结 (12)
参考文献 (12)
附录(源程序清单) (13)。

简单职工管理系统课程设计报告

简单职工管理系统课程设计报告

简单职工管理系统课程设计报告
一、课程设计背景
在当今社会中,职工管理是企业管理中至关重要的一环。

随着企业规模的不断
扩大和职工数量的增加,传统的人工管理已经不能满足现代管理的需求。

因此,设计一个简单、有效的职工管理系统是非常必要的。

二、系统设计目标
本课程设计的目标是建立一个简单易用的职工管理系统,实现对职工信息的录入、查询、编辑和删除等基本功能,以提高管理效率。

三、系统功能设计
1. 登录功能
系统管理员可以通过用户名和密码登录系统,确保系统的安全性。

2. 职工信息录入
管理员可以录入新职工的基本信息,包括姓名、工号、职位、部门等信息。

3. 职工信息查询
系统可以根据工号或姓名等关键字查询职工信息,方便管理员查找需要的信息。

4. 职工信息编辑
管理员可以对已有职工信息进行编辑,包括修改个人信息、调整职位等。

5. 职工信息删除
管理员可以删除不需要的职工信息,确保系统数据的及时更新。

四、系统功能实现
系统采用C++语言开发,基于面向对象的编程思想,实现了上述功能模块。


过简单的控制台界面,管理员可以方便地进行操作。

五、课程设计总结
通过本次课程设计,我深入了解了职工管理系统的设计和实现过程,锻炼了自
己的编程能力和解决问题的能力。

同时,也对职工管理的重要性有了更深刻的认识,相信这将对我未来的工作和学习有很大帮助。

以上是简单职工管理系统课程设计报告的内容,希望能对大家有所帮助。

职工工资管理系统课程设计报告

职工工资管理系统课程设计报告

目录一、需求分析 (2)二、概要设计 (2)三、详细设计 (5)四、调试分析 (18)五、用户手册 (19)六、测试数据 (19)七、附录 (23)一、需求分析职工工资管理系统功能设计要求(1)输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。

•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。

(2)显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。

(3)修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。

(4)查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。

(5)删除记录:可删除数据文件中的任一记录。

(6)统计: (A)计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以内的工资职工人数及占总职工人数的百分比。

(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。

(7)保存数据文件功能。

例如:职工工资信息表ID号姓名基本工资职务工资津贴医疗保险- 公积金- 总工资01 张望1286 794 198 109 135 203402 李明1185 628 135 94 114 174003 王小民 895 438 98 64 73 129404 张效章 1350 868 210 116 150 216205 彭山745 398 84 61 68 1098⋯⋯⋯⋯⋯⋯⋯⋯各项平均工资1092.2 625.2 145 88.8 108(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)二、概要设计1、程序总体功能框架:2、一些数据结构的介绍:struct worker 定义职工的结构体{int num; 职工工号char name[20]; 职工姓名int jibengongzi; 职工的基本工资int zhiwugongzi; 职工的职务工资int jintie; 职工的津贴int yiliaobaoxian; 职工的医疗保险int gongjijin; 职工的公积金int qiansan; 职工前三项工资(基本工资、职务工资、津贴)之和 int sum; 职工的总工资}worker[100]; 建立最多为100,、名为worker的结构体3、定义主要的函数:void menu();void Input();void Modify();void Search();void Add();void Delete();void Show();void Exit();4、几个主要函数介绍:○1清屏函数:system("cls");将前面操作的屏幕清楚,但不会清除数据○2菜单函数:menu();显示主菜单,便于选择○3输入函数:Input();用于输入数据○4修改函数:Modify(); 用于修改数据○5查找函数:Search(); 用于查找信息○6添加函数:Add(); 用于增加信息○7删除函数:Delete(); 用于删除信息○8显示函数:Show(); 用于显示信息○9退出函数:Exit(); 用于退出该系统○10选择函数:select();用于选择显示信息或返回到菜单○11保存信息的函数:save():用于保存信息○12保存人数的函数:P();用于保存已保存数据的人数5、本程序模块结构⑴主函数模块int main(){system("cls");menu();}执行主函数后,执行菜单函数。

职工管理系统课程设计报告

职工管理系统课程设计报告

课程设计报告书专业:计算机科学与技术课程设计名称:《建设技术》题目:职工管理系统摘要在当今社会,互联网空前的发展,给人们的工作和生活带来了极大的便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率的首选。

考虑到当前大量企业的企业职工管理尚处于手工作业阶段,不但效率低下,还常常因为管理的不慎而出现纰漏。

因此根据部分企业提供的需求,设计企业职工管理系统,以帮助企业达到企业职工管理办公自动化、节约管理成本、提高企业工作效率的目的。

根据实际需求,“企业职工信息管理系统”项目采用模块化的设计思想,在Windows XP操作系统环境下,搭建JSP运行环境JDK+TOMCAT,通过使用JAVA脚本语言完成动态的、交互的web服务器应用程序,实现职工个人信息查询、浏览及用户密码修改的功能。

本系统具有多方面特点:系统功能完备,用户使用方便简捷,人性化的用户界面,安全设置齐全,大大减少了操作人员和用户的工作负担,提高了企业职工信息管理的工作效率和企业的信息化的水平。

关键词:java;jsp;数据库表;信息管理、企业员工目录目录 1一、设计目的11.1 开发背景11.2 研究现状1二、需求分析32.1 系统需求分析42.1.1 功能需求42.1.2 数据需求42.2 技术可行性52.2.1 程序语言的选择52.2.2 JSP技术特点62.2.3 操作可行性72.2.4 经济可行性72.3 环境可行性分析82.3.1 软件环境82.3.2 硬件环境82.4 系统结构可行性82.4.1 模式采用82.4.2 经典MVC模式9三、模块分析及设计103.1 数据库分析103.2 数据库概念结构设计113.3 数据库逻辑结构设计123.4 系统模块划分133.4.1系统登录133.4.2编辑模块14四、制作过程及要点174.1 首页174.2 查看职工信息页194.3 ID查询页204.4 浏览职工信息页214.5 添加职工信息页224.6 修改职工信息页234.7 删除职工信息页:(同查询页)244.8 修改密码页:254.9 职工登录页:26五、设计总结27六、参考资料29一、设计目的1.1开发背景现代信息技术的发展,在改变着我们的生活方式的同时,也改变着我们的工作方式,使传统意义上的企业职工管理的形式和涵都在发生着根本性的变化。

数据结构课程设计报告简单的职工管理系统

数据结构课程设计报告简单的职工管理系统

数据结构课程设计题目名称:简单的职工管理系统计算机科学与技术学院一.需求分析1.问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。

2.要求职工对象包括、性别、出生年月、工作年月、学历、职务、住址、等信息。

(1)新增一名职工:将新增职工对象按以字典方式职工管理文件中。

(2)删除一名职工:从职工管理文件中删除一名职工对象。

(3)查询:从职工管理文件中查询符合某些条件的职工。

(4)修改:检索某个职工对象,对其某些属性进行修改。

(5)排序:按某种需要对职工对象文件进行排序。

3.实现提示职工对象数不必很多,便于一次读入存,所有操作不经过外存交换。

(1)由键盘输入职工对象,以文件方式保存。

程序执行时先将文件读入存。

(2)对职工对象中的""按字典顺序进行排序。

(3)对排序后的职工对象进行增、删、查询、修改等操作。

二.概要设计1.设计一个职工的结构体typedef struct Worker{char* name;char* sex;char* Bothdate;char* Workdate;char* school;char* duty;char* address;char* phone;struct Worker *next;}worker;2.主体函数(1).输入函数void Scanfwork(worker** phead,worker** pend,int num);(2).输出函数void Printfwork(worker* phead);(3).查询职工函数void Findworker(worker* phead);(4).更新职工函数void Updata(worker* phead);(5).删除职工函数void Delwork(worker** phead,worker** pend);void Delete(worker** phead,worker** pend,char* name);(6).按字典排序函数worker* Sort(worker** phead,worker** pend,int num);(7).文件调用函数void save(worker* phead);(8).增加职工函数void Addworker(worker** phead,worker** pend,worker* p);worker* GetnodeIn();三.详细设计1.流程图2.代码详细分析(1).输入函数void Scanfwork(worker** phead,worker** pend,int num) {int i;srand((unsigned int)time(0));for(i=0;i<num;i++){Addworker(phead,pend,Getwork());}}(2).输出函数void Printfwork(worker* phead){while(phead){printf("%s %s %s %s %s %s %s %s\n",phead->name,phead->s ex,phead->Bothdate,phead->Workdate,phead->school,phead->duty,phea d->phone,phead->address);phead=phead->next;}printf("b返回主菜单");key=getchar();switch (key){case 'b':return;break;default:printf("按错了\n");}}(3).查询职工函数void Findworker(worker* phead){char* keyword = NULL;worker* w=NULL;worker* newhead=NULL;worker* newend=NULL;worker* pDel=NULL;worker* bj=phead;while(1){while(1){printf("请输入要查询的关键字:");keyword=getstring();printf("按a键确认你的输入,按其他键重新输入:");if(getkey()=='a'){break;}else{free(keyword);keyword=NULL;}}phead=bj;while(phead){if(strncmp(phead->name,keyword,strlen(keyword))==0||strncmp(phead->sex,keyword,strlen(keyword))==0|| strncmp(phead->Bothdate,keyword,strlen(keyword))==0||strncmp(phead->Workdate,keyword,strlen(keyword))==0||strncmp(phead->school,keyword,strlen(keyword))==0||strncmp(phead->duty,keyword,strlen(keyword))==0||strncmp(phead->address,keyword,strlen(keyword))==0||strncmp(phead->phone,keyword,strlen(keyword))==0){w=(worker*)malloc(sizeof(worker));w->name=phead->name;w->sex=phead->sex;w->Bothdate=phead->Bothdate;w->Workdate=phead->Workdate;w->duty=phead->duty;w->school=phead->school;w->address=phead->address;w->phone=phead->phone;w->next=NULL;Addworker(&newhead,&newend,w);}phead=phead->next;}if(newhead!=NULL){Printfwork(newhead);while(newhead){pDel=newhead;newhead=newhead->next;free(pDel);pDel=NULL;}newhead=NULL;newend=NULL;}if(key=='b'){return;}else{printf("没有找到\n");}}}(4).更新职工函数void Updata(worker* phead){worker* bj=phead;char* name1;while(1){printf("请输入要修改的名字");name1=getstring();phead=bj;while(phead){if(strncmp(phead->name,name1,strlen(name1))==0){printf("请输入新的");free(phead->phone);phead->phone=getstring();}phead=phead->next;}printf("y继续修改,其他键返回");if(getkey()!='y'){return;}}}(5).删除职工函数void Delwork(worker** phead,worker** pend){char* name1;while(1){printf("请输入删除的:");name1=getstring();Delete(phead,pend,name1);printf("按y继续删除其他键返回主菜单\n");if(getkey()!='y'){return;}}}void Delete(worker** phead,worker** pend,char* name) {worker* bj= *phead;worker* pDel=NULL;if(strncmp((*phead)->name,name1,strlen(name1))==0) {pDel=*phead;*phead=(*phead)->next;free(pDel);pDel=NULL;return;}while(bj->next!=NULL){if(strncmp(bj->next->name,name1,strlen(name1))==0){pDel=bj->next;bj->next=bj->next->next;free(pDel);pDel=NULL;if(bj->next==NULL){*pend=bj;}return;}bj=bj->next;}}(6).按字典排序函数worker* Sort(worker** phead,worker** pend,int num){int i;int j;worker* bj=*phead;worker* sign=NULL;worker* sign1=NULL;char temp[20]={0};char temp1[20]={0};char temp2[20]={0};char temp3[20]={0};char temp4[20]={0};char temp5[20]={0};char temp6[15]={0};char temp7[12]={0};for(i=0;i<num;i++){bj=(*phead);sign=bj;for(j=i+1;j<num;j++){sign1=sign->next;if(strncmp(sign->name,sign1->name,strlen(sign1->name))>=0) {strcpy(temp,sign->name);strcpy(temp1,sign->sex);strcpy(temp2,sign->Bothdate);strcpy(temp3,sign->Workdate);strcpy(temp4,sign->school);strcpy(temp5,sign->duty);strcpy(temp6,sign->address);strcpy(temp7,sign->phone);strcpy(sign->name,sign1->name);strcpy(sign->sex,sign1->sex);strcpy(sign->Bothdate,sign1->Bothdate);strcpy(sign->Workdate,sign1->Workdate);strcpy(sign->school,sign1->school);strcpy(sign->duty,sign1->duty);strcpy(sign->address,sign1->address);strcpy(sign->phone,sign1->phone);strcpy(sign1->name,temp);strcpy(sign1->sex,temp1);strcpy(sign1->Bothdate,temp2);strcpy(sign1->Workdate,temp3);strcpy(sign1->school,temp4);strcpy(sign1->duty,temp5);strcpy(sign1->address,temp6);strcpy(sign1->phone,temp7);}sign=sign->next;}}return *phead;}(7).文件调用函数void save(worker* phead){FILE* pf;fopen_s(&pf,"F:\\worker.txt","w+");while(phead){fprintf(pf,"%s %s %s %s %s %s %s %s\n",phead->name,phea d->sex,phead->Bothdate,phead->Workdate,phead->school,phead->du ty,phead->phone,phead->address);phead=phead->next;}fclose(pf);}(9).增加职工函数void Addworker(worker** phead,worker** pend,worker* p){if(*phead==NULL){*phead=p;}else{(*pend)->next=p;}*pend=p;}worker* GetnodeIn(){worker* w=(worker*)malloc(sizeof(worker));printf("请输入名字\n");w->name=getstring();printf("请输入性别\n");w->sex=getstring();printf("请输入出生年月\n");w->Bothdate=getstring();printf("请输入工作年月\n");w->Workdate=getstring();printf("请输入学历\n");w->school=getstring();printf("请输入职务\n");w->duty=getstring();printf("请输入\n");w->phone=getstring();printf("请输入住址\n");w->address=getstring();w->next=NULL;return w;}四.调试分析1.在写职工程序的时候遇到了单链表排序问题,解决的方法我选择了询问网络以及身边的朋友2.当写删除的时候遇到了头删除的问题,解决方法我选择了查看书籍3.当调用文件保存的时候也遇到了问题,例如文件容不能直接覆盖,数据不能全部输出等问题,解决的方法我选择了询问网络,查看视频等4.在写职工程序的时候,虽然遇到了很多问题,我通过自己的努力以及身边朋友的帮助,使我克服了问题,这次的课程设计提高我自己写代码能力,以及训练了我运用链表的增删改查方面的知识和文件的调用存取方面的知识。

数据结构简单教职工管理系统课程设计报告

数据结构简单教职工管理系统课程设计报告

课程设计报告(本科)课程:数据结构学号:姓名:班级:教师:时间:计算机科学与技术系创建文件,录入信息,并保存到文件中以修改生日为例,修改职工的某些属性附录:源程序代码# include <stdio.h># include <stdlib.h>#include <windows.h> //Sleep()函数的头文件功能:执行挂起一段时间#include<conio.h> //getch() 函数的头文件# include <string.h># include <iostream.h>typedef struct{char name[18];char sex[8]; //性别;男male,女femalechar birthday[11];char workday[11];char xueli[10];char zhiwu[10];char address[10];char tel[12];}xinxi;typedef struct XX{char name[18];char sex[8]; //性别;男male,女femalechar birthday[11];char workday[11];char xueli[10];char zhiwu[10];char address[10];char tel[12];struct XX *next;}node,*linklist;char fname[15]="work10.txt"; //不重新创建文件时,对文件work10.txt进行操作;若创建新文件则其值改变//--------------------------------------------------------------------------------------//辅助函数//--------------------------------------------------------------------------------------void menu(){cout<<"|------------------------------------------------------------------------------|"; // - 80个cout<<"| 欢迎使用职工管理系统|"; cout<<"|------------------------------------------------------------------------------|";cout<<"| 0、结束操作|"; cout<<"| 1、创建职工文件|"; cout<<"| 2、添加职工信息|"; cout<<"| 3、删除职工信息|"; cout<<"| 4、查找职工信息|"; cout<<"| 5、修改职工信息|"; cout<<"| 6、排序职工信息|"; cout<<"| 7、显示所有职工信息|"; cout<<"|------------------------------------------------------------------------------|";}void EXIT(){printf("\n\n\n\n\n\n");printf("|------------------------------------------------------------------------------|");printf("| 谢谢使用!|");printf("| |");printf("| 欢迎下次使用!|");printf("| |");printf("| 再见!|");printf("|------------------------------------------------------------------------------|");}void writef(xinxi worker0){FILE*fp;if((fp=fopen(fname,"a"))==NULL){printf("文件不存在!请先创建!\n");exit(0);}if(fwrite(&worker0,sizeof(xinxi),1,fp)!=1)printf("file write error!\n");fclose(fp);printf("信息保存成功!\n");}void print(linklist L){linklist q;q=L->next;while (q){printf("姓名%s\n",q->name);printf("性别%s\n",q->sex);printf("生日%s\n",q->birthday);printf("工日%s\n",q->workday);printf("学历%s\n",q->xueli);printf("职务%s\n",q->zhiwu);printf("地址%s\n",q->address);printf("电话%s\n",q->tel);cout<<endl;q=q->next;}}void readall(linklist &L,xinxi worker0){int i;L=new node;L->next=NULL;linklist u,p;p=L;FILE *fp;if((fp=fopen(fname,"r"))==NULL){printf("无法打开此文件!");exit(0);}while(!feof(fp)){if(fread(&worker0,sizeof(xinxi),1,fp)!=1){if(feof(fp)){fclose(fp);break;}elseprintf("read file error!\n");}u=new node;for(i=0;i<18;i++)u->name[i]=[i];for(i=0;i<8;i++)u->sex[i]=worker0.sex[i];for(i=0;i<11;i++)u->birthday[i]=worker0.birthday[i];for(i=0;i<11;i++)u->workday[i]=worker0.workday[i];for(i=0;i<10;i++)u->xueli[i]=worker0.xueli[i];for(i=0;i<10;i++)u->zhiwu[i]=worker0.zhiwu[i];for(i=0;i<10;i++)u->address[i]=worker0.address[i];for(i=0;i<11;i++)u->tel[i]=worker0.tel[i];u->tel[i]=NULL;p->next=u;p=u;}fclose(fp);p->next=NULL;}//-------------------------------------------------------------------------------------- //功能函数//-------------------------------------------------------------------------------------- void create(){void insert();FILE*fp;int num,i;printf("请输入文件名:");scanf("%s",fname);strcat(fname,".txt"); //串连接函数,把第二个字符串添加到第一个字符串后面if((fp=fopen(fname,"w"))==NULL){printf("打开文件出错!\n");exit(0);}fclose(fp);cout<<"文件创建成功!"<<endl;cout<<"下面开始输入职工信息!"<<endl<<"任意键继续..."<<endl;getch();system("cls");cout<<"你想输入多少个职工信息?请输入:";cin>>num;for(i=0;i<num;i++)insert();}void insert(){xinxi worker;int i;for(i=0;i<18;i++)[i]=' ';for(i=0;i<8;i++)worker.sex[i]=' ';for(i=0;i<11;i++)worker.birthday[i]=' ';for(i=0;i<11;i++)worker.workday[i]=' ';for(i=0;i<10;i++)worker.xueli[i]=' ';for(i=0;i<10;i++)worker.zhiwu[i]=' ';for(i=0;i<10;i++)worker.address[i]=' ';for(i=0;i<12;i++)worker.tel[i]=' ';cout<<"请按以下顺序输入职工信息!"<<endl;cout<<"姓名性别生日工日学历职务地址电话"<<endl;scanf("%s%s%s%s%s%s%s%s",&,&worker.sex,&worker.birthday,&worker.wo rkday,&worker.xueli,&worker.zhiwu,&worker.address,&worker.tel);writef(worker);}void del(linklist &L){linklist p,r;jp_c:char name[10],c;int x=0;p=L->next;r=L;system("cls");system("color f0");printf("请输入删除职工的名字:");scanf("%s",name);while(p) //名字不匹配且未找到链尾{if(strcmp(p->name,name)==0){r->next=p->next;free(p);x++;printf("删除成功!\n");printf("是否继续删除(Y/N)?\n");cin>>c;if(c=='Y'||c=='y')goto jp_c;else{printf("是否输出删除后的职工信息(Y/N)?\n");cin>>c;if(c=='Y'||c=='y'){cout<<"*****************************"<<endl;print(L);cout<<"*****************************"<<endl;cout<<"输出完成!"<<endl<<"任意键继续..."<<endl;getch();return;}elsereturn;}}r=p;p=p->next;}if(x==0)printf("未找到该职工的信息!\n");}void search_name(linklist L){int i;node *p;p=L->next;char name[10];int n=0;printf("请输入要查找职工的姓名:");scanf("%s",name);printf("正在进行查找,请稍候...\n");int k=3;for(i=0;i<350000000*k;i++) //延时3秒{}while(p){if(strcmp(p->name,name)==0){printf("该职工的信息如下:\n");printf("********************************\n");printf("姓名%s\n",p->name);printf("性别%s\n",p->sex);printf("生日%s\n",p->birthday);printf("工日%s\n",p->workday);printf("学历%s\n",p->xueli);printf("职务%s\n",p->zhiwu);printf("地址%s\n",p->address);printf("电话%s\n",p->tel);printf("********************************\n");cout<<endl;n++;}p=p->next;}if(n==0)printf("未找到该职工的信息!\n");}void search_tel(linklist L){int i;node *p;p=L->next;char tel[12];int n=0;printf("请输入要查找职工的电话:");scanf("%s",tel);printf("正在进行查找,请稍候...\n");int k=3;for(i=0;i<350000000*k;i++) //延时3秒{}while(p){if(strcmp(p->tel,tel)==0){printf("该职工的信息如下:\n");printf("********************************\n");printf("姓名%s\n",p->name);printf("性别%s\n",p->sex);printf("生日%s\n",p->birthday);printf("工日%s\n",p->workday);printf("学历%s\n",p->xueli);printf("职务%s\n",p->zhiwu);printf("地址%s\n",p->address);printf("电话%s\n",p->tel);printf("********************************\n");cout<<endl;n++;}p=p->next;}if(n==0)printf("未找到该职工的信息!\n");}void search_and(linklist L){int i;node *p;p=L->next;char tel[12],name[10];int n=0;printf("请输入要查找职工的姓名和电话:");scanf("%s%s",name,tel);printf("正在进行查找,请稍候...\n");int k=3;for(i=0;i<350000000*k;i++) //延时3秒{}while(p){if((strcmp(p->name,name)==0)&&(strcmp(p->tel,tel)==0)){printf("该职工的信息如下:\n");printf("********************************\n");printf("姓名%s\n",p->name);printf("性别%s\n",p->sex);printf("生日%s\n",p->birthday);printf("工日%s\n",p->workday);printf("学历%s\n",p->xueli);printf("职务%s\n",p->zhiwu);printf("地址%s\n",p->address);printf("电话%s\n",p->tel);printf("********************************\n");cout<<endl;n++;}p=p->next;}if(n==0)printf("未找到该职工的信息!\n");}void search(linklist &L){jp_c3:int choose;char ch;system("cls");system("color f0");printf("你想按什么进行查找?\n");printf("1、姓名2、电话3、综合查找\n");printf("请选择:");scanf("%d",&choose);switch(choose){case 1:search_name(L);break;case 2:search_tel(L);break;case 3:search_and(L);break;default: cout<<"输入错误!\n";}cout<<"继续按其他分类查找?Y/N:";cin>>ch;if(ch=='Y'||ch=='y')goto jp_c3;}void xiugai(linklist &L){linklist p,q;p=L->next;char name[10],ch;int i=0,choose;system("cls");system("color f0");printf("请输入要修改的职工的名字:");scanf("%s",name);while(p){if(strcmp(p->name,name)==0){printf("你想修改什么?\n");printf("--------------------------------------------------------------------------------");printf("1、姓名2、性别3、生日4、工日5、学历6、职务7、地址8、电话\n");printf("--------------------------------------------------------------------------------");jp_c4:printf("请选择:");scanf("%d",&choose);printf("\n********************************\n");for(int j=0;;j++){switch(choose){case 1:printf("请输入员工姓名:");scanf("%s",p->name);break;case 2:printf("请输入员工性别:");scanf("%s",p->sex);break;case 3:printf("请输入员工生日:");scanf("%s",p->birthday);break;case 4:printf("请输入员工工日:");scanf("%s",p->workday);break;case 5:printf("请输入员工学历:");scanf("%s",p->xueli);break;case 6:printf("请输入员工职务:");scanf("%s",p->zhiwu);break;case 7:printf("请输入员工地址:");scanf("%s",p->address);break;case 8:printf("请输入员工电话:");scanf("%s",p->tel);break;default: cout<<"输入错误!\n";}cout<<"继续修改?Y/N:";cin>>ch;if(ch=='Y'||ch=='y'){printf("********************************\n\n");goto jp_c4;}else{q=p;break;}}i++;}p=p->next;}if(i){system("cls");system("color f0");cout<<"修改成功!"<<endl<<"修改后该职工的信息为:"<<endl;printf("********************************\n");printf("姓名%s\n",q->name);printf("性别%s\n",q->sex);printf("生日%s\n",q->birthday);printf("工日%s\n",q->workday);printf("学历%s\n",q->xueli);printf("职务%s\n",q->zhiwu);printf("地址%s\n",q->address);printf("电话%s\n",q->tel);printf("********************************\n");cout<<endl;}elsecout<<"不存在职工信息,无法修改!"<<endl;}void rank_name(linklist &L){void Show_all(linklist L);linklist La;linklist p,q,m;La=(linklist)malloc(sizeof(node));La->next =NULL;while(L->next){for(q=L->next,p=L->next;p->next;p=p->next){if((strcmp( p->next->name,q->name ))>0 ){m=p;q=p->next ;}}if(q==L->next){L->next =L->next->next ;}else{m->next =q->next ;}q->next =La->next ;La->next =q ;}L=La;cout<<"按姓名排序后";Show_all(L);}void rank_birthday(linklist &L){void Show_all(linklist L);linklist La;linklist p,q,m;La=(linklist)malloc(sizeof(node));La->next =NULL;while(L->next){for(q=L->next,p=L->next;p->next;p=p->next){if((strcmp( p->next->birthday,q->birthday ))>0 ){m=p;q=p->next ;}}if(q==L->next){L->next =L->next->next ;}else{m->next =q->next ;}q->next =La->next ;La->next =q ;}L=La;cout<<"按生日排序后";Show_all(L);}void rank_workday(linklist &L){void Show_all(linklist L);linklist La;linklist p,q,m;La=(linklist)malloc(sizeof(node));La->next =NULL;while(L->next){for(q=L->next,p=L->next;p->next;p=p->next){if((strcmp( p->next->workday,q->workday ))>0 ){m=p;q=p->next ;}}if(q==L->next){L->next =L->next->next ;}else{m->next =q->next ;}q->next =La->next ;La->next =q ;}L=La;cout<<"按工日排序后";Show_all(L);}void rank(linklist &L){int i;jp_c2:int choose;char ch;system("cls");system("color f0");printf("你想按什么进行排序?\n");printf("1、姓名2、生日3、工日\n");printf("请选择:");scanf("%d",&choose);printf("正在进行排序,请稍候...\n");int k=3;for(i=0;i<350000000*k;i++) //延时3秒{}switch(choose){case 1:rank_name(L);break;case 2:rank_birthday(L);break;case 3:rank_workday(L);break;default: cout<<"输入错误!\n";}cout<<"继续按其他分类排序?Y/N:";cin>>ch;if(ch=='Y'||ch=='y')goto jp_c2;}void Show_all(linklist L){linklist p;p=L->next;system("cls");system("color f0");cout<<"所有职工信息:"<<endl;cout<<"--------------------------------------------------------------------------------";cout<<"姓名性别生日工日学历职务地址电话"<<endl;while(p){printf("%-9s",p->name);printf("%-7s",p->sex);printf("%-13s",p->birthday);printf("%-13s",p->workday);printf("%-8s",p->xueli);printf("%-10s",p->zhiwu);printf("%-9s",p->address);printf("%-11s",p->tel);p=p->next;}cout<<"--------------------------------------------------------------------------------"; }//--------------------------------------------------------------------------------------//主函数//--------------------------------------------------------------------------------------int main(){char ch;int m;linklist L;xinxi Worker;system("title 职工管理系统");system("color f0");menu();readall(L,Worker);for(int i=0;;i++){cout<<"请选择:";cin>>m;if(m==0)break;switch (m){case 1: create();readall(L,Worker);break;case 2: insert();readall(L,Worker);break;case 3: del(L); break;case 4: search(L); break;case 5: xiugai(L); break;case 6: rank(L); break;case 7: Show_all(L); break;default: cout<<"输入错误!\n";}cout<<"continue? Y/N:";cin>>ch;if(ch=='Y'||ch=='y'){system("cls");menu();continue;}elsebreak;}system("cls");system("color 3f");EXIT();printf("\n任意键退出程序!\n");getch();return 0;}。

职工管理系统课程设计报告(C++)

职工管理系统课程设计报告(C++)

题目: 职工信息管理系统一、课程设计的目的1.进一步巩固C++语言理论基础。

2.熟练掌握程序设计的一般技巧和方法。

3.培养解决综合性实际问题的能力。

二、课程设计任务题目:职工信息管理系统题目要求:完成一个职工信息管理系统的设计,设计主要实现以下功能:(1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、参加工作时间和年龄。

(2)使用集成的方法构成三个类(雇员类,教师类个工人类,其中雇员类是虚基类,教师类个工人类是派生类),相应的对象防治10个职工信息。

(3)编写成员函数,用来输出数组内容。

(4)按不同的类别输出职工信息,比如按系输出驾驶信息。

(可选功能)(5)检索(查找)指定信息(如按名字检索)题目职工信息管理系统一、题目分析题目需要构造三个类,对于系统中的每个功能,需要有专门的函数,进行输入和输出!设计雇员类,需要有数据成员char num[20] char name[20] int age char xi[20] 等!由派生类派生出教师类,工人类,将其中的数据成员,成员函数都设计成公有成员函数。

成员函数包括void zhucaidan ,void chaxun ,void xichaxun, void xianshi 等。

对于主函数,需要定义两个对象,teacher t;workers w; 定义两个对象,输出按1管理教师信息,输出2管理工人信息,然后多次使用switch 语句case1 case2------等。

再调用zhucaidan(),实现switch语句的转换。

退出程序时,由exit(0) 函数实现,函数包含在stdlib.h 头文件上。

二、程序代码#include<iostream.h>#include<stdio.h>#include<fstream.h>#include<stdlib.h>#include<string.h>#include<iomanip.h>static int sum=0;static int sum1=0;class employees{public:char birthday[20];char job[20];char num[20];char name[20];char income[20];int age;char sex[10];};class Teacher:virtual public employees{public:char xi[10];public:int zhucaidan();void record();void add();char chaxun();void del();void xichaxun();void xianshi();void namejiansuo();friend ostream&operator<<(ostream&,Teacher&);friend istream&operator<<(istream&,Teacher&);}teacher[100];int Teacher::zhucaidan(){cout<<"\t\t\t--------------------------------------------\n";cout<<"\t\t\t 教师信息管理系统\n";cout<<"\t\t\t--------------------------------------------\n";cout<<"\t\t\t+ [1]---按编号查询教师信息+\n";cout<<"\t\t\t+ [2]---按系查询教师信息+\n";cout<<"\t\t\t+ [3]---按名字查询教师信息+\n";cout<<"\t\t\t+ [4]---显示教师全部信息+\n";cout<<"\t\t\t+ [5]---删去教师信息+\n";cout<<"\t\t\t+ [6]---增加教师信息+\n";cout<<"\t\t\t+ [7]---退出系统+\n";cout<<"\t\t\t+****************************+\n";cout<<"\t\t\t---------------------------------------------\n";cout<<"请输入您的选择:";int choice;cin>>choice;return (choice); }void Teacher::record(){ofstream outfile("教师信息.txt",ios::out);char c;cout<<"请输入教师信息,以@结束:"<<endl;while (c!='@'){cout<<"请输入教师编号:";cin>>teacher[sum].num;outfile<<setw(5)<<teacher[sum].num; cout<<"请输入教师姓名:";cin>>teacher[sum].name;outfile<<setw(5)<<teacher[sum].name; cout<<"请输入教师性别:";cin>>teacher[sum].sex;outfile<<setw(5)<<teacher[sum].sex;cout<<"请输入教师工资:";cin>>teacher[sum].income;outfile<<setw(5)<<teacher[sum].income;cout<<"请输入教师出生日期:";cin>>teacher[sum].birthday;outfile<<setw(5)<<teacher[sum].birthday;cout<<"请输入教师参加工作日期:";cin>>teacher[sum].job;outfile<<setw(5)<<teacher[sum].job;cout<<"请输入教师年龄:";cin>>teacher[sum].age;outfile<<setw(5)<<teacher[sum].age;cout<<"请输入教师系别:";cin>>teacher[sum].xi;outfile<<setw(5)<<teacher[sum].xi;cout<<"如果要继续输入请按g/如果要结束输入请按@:";cin>>c;sum++;cout<<endl;}cout<<"输入信息结束!"<<endl;ifstream infile("教师信息.txt",ios::in);for(int i=0;i<sum;i++){infile>>teacher[sum].num;infile>>teacher[sum].name;infile>>teacher[sum].sex;infile>>teacher[sum].income;infile>>teacher[sum].birthday;infile>>teacher[sum].job;infile>>teacher[sum].age;infile>>teacher[sum].xi;}}void Teacher::add(){cout<<endl<<endl<<endl;cout<<"请输入教师编号:";cin>>teacher[sum].num;cout<<"请输入教师姓名:";cin>>teacher[sum].name;cout<<"请输入教师性别:";cin>>teacher[sum].sex;cout<<"请输入教师工资:";cin>>teacher[sum].income;cout<<"请输入教师出生日期:";cin>>teacher[sum].birthday; cout<<"请输入教师参加工作日期:";cin>>teacher[sum].job; cout<<"请输入教师年龄:";cin>>teacher[sum].age;cout<<"请输入教师系别:";cin>>teacher[sum].xi;sum++;}char Teacher::chaxun(){cout<<endl<<endl<<endl;char num[20];int i=0;cout<<"请输入要查询的教师的编号:"<<endl;cin>>num;for(i=0;i<sum;i++)if(strcmp(teacher[i].num,num)==0){cout<<"您要查询的信息是:"<<endl;cout<<teacher[i];}elsecout<<"您的输入有误,请重新输入:"<<endl;return 0;}void Teacher::del(){cout<<endl<<endl<<endl;char num1[20];int j=0;cout<<"请输入要删去的教师的编号:"<<endl;cin>>num1;for(int i=0;i<sum;i++)if(strcmp(teacher[i].num,num1)==0){j=i;}for(;j<sum;j++){teacher[j]=teacher[j+1];}sum--;cout<<"您要删去的信息已经成功删去!"<<endl;}void Teacher::xichaxun(){cout<<endl<<endl<<endl;char xi[5];int i=0;cout<<"请输入要查询教师的系别:"<<endl;cin>>xi;for(i=0;i<sum;i++){if(strcmp(teacher[i].xi,xi)==0){cout<<"你要查询的信息是:"<<endl;cout<<teacher[i];}elsecout<<"您的输入有误,请重新输入:"<<endl;}}void Teacher::xianshi(){cout<<"---------全部教师信息----------/t/t"<<endl;cout<<"编号"<<'\t'<<"姓名"<<'\t'<<"性别"<<'\t'<<"工资"<<'\t'<<"出生日期"<<'\t'<<"参加工作日期"<<'\t'<<"年龄"<<'\t'<<"系别"<<'\t'<<'\n';for(int i=0;i<sum;i++)cout<<teacher[i].num<<'\t'<<teacher[i].name<<'\t'<<teacher[i].sex<<'\t'<<teacher[i].income<<'\t'< <teacher[i].birthday<<'\t'<<'\t'<<teacher[i].job<<'\t'<<'\t'<<teacher[i].age<<'\t'<<teacher[i].xi<<'\t' <<'\n';}void Teacher::namejiansuo(){char name[10];int i=0;cout<<"请输入要查询教师的名字:"<<endl;cin>>name;for(i=0;i<sum;i++)if(strcmp(teacher[i].name,name)==0){cout<<"你要查询的信息是:"<<endl;cout<<teacher[i];}elsecout<<"您的输入有误,查无此人"<<endl;}istream &operator>>(istream &in,Teacher &t){cout<<"输入教师编号:";cin>>t.num;cout<<"输入教师姓名:";cin>>teacher[sum].name;cout<<"输入教师性别:";cin>>teacher[sum].sex;cout<<"输入教师工资:";cin>>teacher[sum].income;cout<<"输入教师出生日期:";cin>>teacher[sum].birthday;cout<<"输入教师参加工资日期:";cin>>teacher[sum].job;cout<<"输入教师年龄:";cin>>teacher[sum].age;cout<<"输入教师系别:";cin>>teacher[sum].xi;return in;}ostream&operator<<(ostream &out,Teacher &t){cout<<"教师编号:"<<t.num<<endl;cout<<"教师姓名:"<<<<endl;cout<<"教师性别:"<<t.sex<<endl;cout<<"教师工资:"<<t.income<<endl;cout<<"教师出生日期:"<<t.birthday<<endl;cout<<"教师参加工作日期:"<<t.job<<endl;cout<<"教师年龄:"<<t.age<<endl;cout<<"教师系别:"<<t.xi<<endl;cout<<endl;return out;}class Workers:virtual public employees{public:char xi[10];public:int zhucaidan();void record();void add();char chaxun();void del(); void chaxun();void xianshi()void namejiansuo();friend ostream&operator<<(ostream &,Workers &);friend istream&operator>>(istream &,Workers &); }workers[100];int Workers::zhucaidan(){cout<<"\t\t\t+----------------------------------------+\n";cout<<"\t\t\t+ 工人信息管理系统+\n";cout<<"\t\t\t+-----------------------------------------+\n";cout<<"\t\t\t+ [1]---按编号查询工人信息+\n";cout<<"\t\t\t+ [2]---按系查询工人信息+\n";cout<<"\t\t\t+ [3]---按名字查询工人信息+\n";cout<<"\t\t\t+ [4]---显示工人全部信息+\n";cout<<"\t\t\t+ [5]---删去工人信息+\n";cout<<"\t\t\t+ [6]---增加工人信息+\n";cout<<"\t\t\t+ [7]---退出系统+\n";cout<<"\t\t\t+****************************+\n";cout<<"\t\t\t-------------------------------------------\n";cout<<"请输入您的选择:";int choice;cin>>choice;return (choice);}void Workers::record(){ofstream outfile("工人信息.txt",ios::out);char c;cout<<"请输入工人信息,以@结束:"<<endl;while (c!='@'){cout<<"请输入工人编号:";cin>>workers[sum1].num;outfile<<setw(5)<<workers[sum1].num; cout<<"请输入工人姓名:";cin>>workers[sum1].name;outfile<<setw(5)<<workers[sum1].name; cout<<"请输入工人性别:";cin>>workers[sum1].sex;outfile<<setw(5)<<workers[sum1].sex;cout<<"请输入工人工资:";cin>>workers[sum1].income;outfile<<setw(5)<<workers[sum1].income;cout<<"请输入工人出生日期:";cin>>workers[sum1].birthday;outfile<<setw(5)<<workers[sum1].birthday;cout<<"请输入工人参加工作日期:";cin>>workers[sum1].job;outfile<<setw(5)<<workers[sum1].job;cout<<"请输入工人年龄:";cin>>workers[sum1].age;outfile<<setw(5)<<workers[sum1].age; cout<<"请输入工人系别:";cin>>workers[sum1].xi;outfile<<setw(5)<<workers[sum1].xi;cout<<"如果要结束输入请按@或者继续:";cin>>c;sum1++;cout<<endl;}cout<<"输入信息结束!"<<endl;ifstream infile("工人信息.txt",ios::in);for(int i=0;i<sum1;i++){infile>>workers[sum1].num;infile>>workers[sum1].name;infile>>workers[sum1].sex;infile>>workers[sum1].income;infile>>workers[sum1].birthday;infile>>workers[sum1].job;infile>>workers[sum1].age;infile>>workers[sum1].xi;}}void Workers::add(){cout<<"请输入工人编号:";cin>>workers[sum1].num;cout<<"请输入工人姓名:";cin>>workers[sum1].name;cout<<"请输入工人性别:";cin>>workers[sum1].sex;cout<<"请输入工人工资:";cin>>workers[sum1].income;cout<<"请输入工人出生日期:";cin>>workers[sum1].birthday; cout<<"请输入工人参加工作日期:";cin>>workers[sum1].job; cout<<"请输入工人年龄:";cin>>workers[sum1].age;cout<<"请输入工人系别:";cin>>workers[sum1].xi;sum1++;}char Workers::chaxun(){char num[20];int i=0;cout<<"请输入要查询的工人的编号:"<<endl;cin>>num;for(i=0;i<sum1;i++)if(strcmp(workers[i].num,num)==0){cout<<"您要查询的信息是:"<<endl;cout<<workers[i];}elsecout<<"您的输入有误,请重新输入:"<<endl;return 0;}void Workers::del(){cout<<endl<<endl<<endl;char num1[20];int j=0;cout<<"请输入要删去的工人的编号:"<<endl;cin>>num1;for(int i=0;i<sum1;i++)if(strcmp(workers[i].num,num1)==0){j=i;}for(;j<sum1;j++){workers[j]=workers[j+1];}sum1--;cout<<"您要删去的信息已经成功删去!"<<endl;}void Workers::xichaxun(){char xi[10];int i=0;cout<<"请输入要查询工人的系别:"<<endl;cin>>xi;for(i=0;i<sum1;i++){if(strcmp(workers[i].xi,xi)==0){cout<<"你要查询的信息是:"<<endl;cout<<workers[i];}elsecout<<"您的输入有误,请重新输入:"<<endl;}}void Workers::xianshi(){cout<<"*********全部工人信息********/t/t"<<endl;cout<<"编号"<<'\t'<<"姓名"<<'\t'<<"性别"<<'\t'<<"工资"<<'\t'<<"出生日期"<<'\t'<<"参加工作日期"<<'\t'<<"年龄"<<'\t'<<"系别"<<'\t'<<'\n';for(int i=0;i<sum1;i++)cout<<workers[i].num<<'\t'<<workers[i].name<<'\t'<<workers[i].sex<<'\t'<<workers[i].income<<'\t'<<workers[i].birthday<<'\t'<<'\t'<<workers[i].job<<'\t'<<'\t'<<workers[i].age<<'\t'<<workers[i]. xi<<'\t'<<'\n';}void Workers::namejiansuo(){cout<<endl<<endl<<endl;char name[10];int i=0;cout<<"请输入要查询工人的名字:"<<endl;cin>>name;for(i=0;i<sum1;i++)if(strcmp(workers[i].name,name)==0){cout<<"你要查询的信息是:"<<endl;cout<<workers[i];}elsecout<<"您的输入有误,请重新输入:"<<endl;}istream &operator>>(istream &in,Workers &w){cout<<"输入工人编号:";cin>>w.num;cout<<"输入工人姓名:";cin>>workers[sum1].name;cout<<"输入工人性别:";cin>>workers[sum1].sex;cout<<"输入工人工资:";cin>>workers[sum1].income;cout<<"输入工人出生日期:";cin>>workers[sum1].birthday;cout<<"输入工人参加工作日期:";cin>>workers[sum1].job;cout<<"输入工人年龄:";cin>>workers[sum1].age;cout<<"输入工人的系别是:";cin>>workers[sum1].xi;return in;}ostream &operator<<(ostream &out,Workers &w){cout<<"编号:"<<w.num<<endl;cout<<"姓名:"<<<<endl;cout<<"性别:"<<w.sex<<endl;cout<<"工资:"<<w.income<<endl;cout<<"出生日期:"<<w.birthday<<endl;cout<<"参加工作日期:"<<w.job<<endl;cout<<"年龄:"<<w.age<<endl;cout<<"系别:"<<w.xi<<endl;cout<<endl<<endl;return out;}int main(){cout<<"\t\t\t*----------------------------*\n";cout<<"\t\t\t* 欢迎使用职工系统*\n";cout<<"\t\t\t*----------------------------*\n";cout<<"\t\t\t* 进入教师信息系统请按1 *\n";cout<<"\t\t\t* 进入工人信息系统请按2 *\n";cout<<"\t\t\t*----------------------------*\n";int choice;Teacher t;Workers w;cout<<"请输入您的选择:";cin>>choice;switch(choice){case 1:t.record();break;case 2:w.record();break;}int x;while(1){switch(choice){case 1:x=t.zhucaidan();break;case 2:x=w.zhucaidan();break;}if(x==0){cout<<"谢谢使用!"<<endl;break;}elseswitch(x){case 1:switch(choice){case 1:t.chaxun();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;case 2:w.chaxun();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;}break;case 2:switch(choice){case 1:t.xichaxun();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;case 2:w.xichaxun();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;}break;case 3:switch(choice) {case 1:jiansuo();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;case 2:jiansuo();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;}break;case 4:switch(choice){case 1:t.xianshi();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;case 2:w.xianshi();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;} break;case 5:switch(choice){case 1:t.del();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;case 2:w.del();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;}break;case 6:switch(choice){case 1:t.add();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;case 2:w.add();cout<<"请按回车键返回主菜单···"<<endl;getchar();break;}break;case 7:exit(0);break;default :cout<<"输入有误:";break;}}return 0;}三、运行结果四、总结这次实习有很大收获,它不仅让我学习到了C语言的知识,而且认识到C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此;简单总结以下几点:。

职工管理系统课程设计报告c语言

职工管理系统课程设计报告c语言

职工管理系统课程设计报告c语言一、引言职工管理系统是一个针对公司或组织内部职工信息管理的软件系统,主要用于记录职工的基本信息、工作情况、考勤记录等,方便管理人员进行数据统计和分析。

本文将介绍一个基于C语言的职工管理系统的设计与实现。

二、系统设计1. 系统功能职工管理系统主要包括以下功能模块:•添加新职工信息•修改职工信息•删除职工信息•查询职工信息•统计各部门职工人数•统计各职工职务人数2. 数据结构为了有效地存储和管理职工信息,系统采用了以下数据结构:•职工信息结构体•部门信息结构体3. 主要算法系统主要采用以下算法实现各功能模块:•添加职工信息:通过链表添加新结点•修改职工信息:更新结点中的字段信息•删除职工信息:在链表中删除指定结点•查询职工信息:根据输入的关键词在链表中查找•统计职工人数:遍历链表统计人数•统计职务人数:遍历链表统计各职务人数三、系统实现系统采用C语言编写,通过文件读写实现数据的持久化存储。

程序运行时,首先读取保存在文件中的职工信息并加载到内存中,用户可以通过交互式界面选择相应功能进行操作。

操作完成后,系统会将数据写回文件,保证数据的持久性。

四、系统优化与改进为了提高系统的性能和用户体验,可以考虑以下改进方案:•引入数据库存储,提高数据读写效率•添加更多的查询条件,提供更灵活的查询功能•增加权限管理模块,限制不同用户的操作权限•完善异常处理机制,提高系统的稳定性和可靠性五、总结通过本次课程设计,我们深入学习了C语言的应用,掌握了职工管理系统的设计与实现方法。

未来可以基于此系统进行更多功能的扩展和优化,提高系统的实用性和适用性。

以上是本文对职工管理系统课程设计报告的详细介绍,希望能对读者有所帮助。

职工管理系统课程设计报告

职工管理系统课程设计报告

职工管理系统课程设计报告一、项目背景随着信息技术的迅速发展,企业对于职工管理系统的需求日益增长。

职工管理系统作为一种集成化的管理工具,可以帮助企业高效地管理员工信息、薪资福利等相关数据,提升管理效率、节省人力成本。

本课程设计旨在通过开发一个职工管理系统来帮助学生深入理解管理信息系统的基本原理和应用。

二、项目目标本项目旨在设计并实现一个功能完善的职工管理系统,主要包括以下目标: 1. 实现职工信息的录入、修改和查询功能; 2. 实现薪资福利的管理和计算功能; 3. 实现权限管理和安全控制功能; 4. 提升系统的用户友好性和操作性; 5. 实现系统的数据备份和恢复功能。

三、系统需求分析3.1 功能需求1.职工信息管理模块:包括职工信息的录入、修改和查询功能;2.薪资福利管理模块:包括薪资发放、津贴计算等功能;3.权限管理模块:包括用户权限分配和访问控制功能;4.数据备份模块:包括定期数据备份和恢复功能。

3.2 非功能需求1.用户友好性:系统界面简洁明了,操作简单易懂;2.数据安全性:系统应具有良好的数据加密和权限控制机制;3.稳定性:系统应具有一定的容错能力,能够稳定运行。

四、系统设计与实现4.1 系统架构设计本系统采用B/S架构,前端使用HTML、CSS、JavaScript等技术开发,后端采用Java语言搭建,数据库采用MySQL存储数据。

4.2 模块设计1.职工信息管理模块:包括职工信息的增删改查功能;2.薪资福利管理模块:包括薪资发放、津贴计算等功能;3.权限管理模块:包括用户权限分配和访问控制功能;4.数据备份模块:包括数据备份和恢复功能。

4.3 系统界面设计系统界面简洁明了,采用响应式设计,适配不同大小屏幕的设备,提供友好的用户交互体验。

五、系统测试与维护5.1 系统测试系统测试包括单元测试、集成测试、系统测试和用户验收测试,确保系统功能正常、性能稳定。

5.2 系统维护系统上线后需要定期进行数据备份、安全检查和性能优化,确保系统稳定运行。

职工管理系统课程设计

职工管理系统课程设计

职工管理系统课程设计一、课程目标知识目标:1. 学生能理解职工管理系统的基本概念和功能,掌握其基本操作流程。

2. 学生能掌握职工管理系统中的数据录入、查询、更新和删除等基本操作。

3. 学生能了解数据库管理的基本原理,并将其应用于职工管理系统的实际操作中。

技能目标:1. 学生能运用所学知识,独立进行职工管理系统的基本操作,包括录入新员工信息、查询员工数据、更新员工资料和删除离职员工信息。

2. 学生能通过实际操作,培养问题解决能力和团队协作能力,提高在信息化办公环境下的工作效率。

3. 学生能运用数据库管理技能,对职工管理系统进行优化和拓展,满足不同场景下的管理需求。

情感态度价值观目标:1. 学生通过学习职工管理系统,培养对信息技术学科的兴趣和热情,提高信息素养。

2. 学生在学习过程中,培养良好的团队合作意识,尊重他人意见,积极沟通,共同解决问题。

3. 学生通过了解职工管理系统在企业管理中的重要性,认识到信息技术在现代社会中的广泛应用和价值,增强社会责任感。

课程性质分析:本课程为信息技术学科,结合职工管理系统,注重实践操作和实际应用。

课程设计注重培养学生的动手能力和解决实际问题的能力。

学生特点分析:学生为初中年级,具备一定的计算机操作基础,对新鲜事物充满好奇心,喜欢动手实践,但注意力容易分散,需要激发兴趣和引导。

教学要求:1. 教学内容与实际应用紧密结合,注重培养学生的学习兴趣和动手能力。

2. 教学过程中,教师应关注学生个体差异,给予个性化指导,提高学生的学习效果。

3. 教学评价以学生的实际操作能力为主要依据,关注学生在学习过程中的进步和成长。

二、教学内容本课程教学内容紧密结合职工管理系统,依据课程目标,制定以下教学大纲:1. 职工管理系统概述- 了解职工管理系统的基本概念、功能和作用- 学习职工管理系统的发展历程和应用领域2. 职工管理系统操作流程- 学习职工信息录入、查询、更新和删除等基本操作- 掌握职工管理系统中的权限管理和数据备份恢复功能3. 数据库管理原理- 学习数据库的基本概念、分类和结构- 掌握数据库设计原则和SQL语句编写方法4. 实践操作与案例分析- 结合实际案例,进行职工管理系统的操作实践- 分析职工管理系统在实际应用中的优缺点,探讨优化方案5. 信息技术与团队协作- 培养学生在职工管理系统操作中的团队协作能力- 学习如何在信息化办公环境中进行有效沟通与协作教学内容安排与进度:1. 第1-2周:职工管理系统概述、操作流程学习2. 第3-4周:数据库管理原理、SQL语句编写方法3. 第5-6周:实践操作与案例分析、信息技术与团队协作4. 第7-8周:课程总结、学生项目展示与评价教材章节及内容:1. 教材第1章:职工管理系统概述2. 教材第2章:职工管理系统操作流程3. 教材第3章:数据库管理原理4. 教材第4章:实践操作与案例分析5. 教材第5章:信息技术与团队协作三、教学方法本课程根据教学内容和课程目标,选择以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:- 对于职工管理系统概述、数据库管理原理等理论性较强的内容,采用讲授法进行教学。

简单的职工管理系统报告

简单的职工管理系统报告

目录1 课程设计任务与要求 (1)1.1 课程设计目的 (1)1.1.1 问题描述 (1)1.1.2 详细要求 (1)1.2 问题分析 (2)2 概要设计 (2)2.1 总体设计思想 (2)2.2 系统功能设计 (3)2.3 模块函数构造 (4)2.4 系统模块的调用关系图框架 (4)3 详细设计 (5)3.1 抽象数据类型定义 (5)3.2 主函数设计 (5)3.3 查找算法设计 (6)3.4 排序算法设计 (7)4 测试 (8)5 课程设计总结 (13)5.1 该课程设计的特点 (13)5.2 存在的不足 (13)5.3 心得体会 (13)参考文献 (14)附录(源代码)·····················································································································错误!未定义书签。

高校在职职工简单管理设计实验报告

高校在职职工简单管理设计实验报告

高校在职职工简单管理软件设计1 系统功能:软件由主函数(含欢迎界面)+下列6个功能模块组成:(a)减少一个职工(需指定要删除职工的职工号);(b)增加一个职工号(需输入要增加职工号的所有信息);(c)查找一个职工号的信息(需指定职工号或电话号码);(d)统计指定二级单位的职工人数、工资总额;(e)按职工的工资多少对职工排序(f)退出程序的运行。

2 系统总体设计思想1) 功能设计要求:(1)建立文件(2)增加学生记录(3)显示学生记录(4) 文件存储(5) 读取文件(6)删除记录(7) 查询记录(8) 统计记录(9) 排序(10) 退出程序2) 系统详细设计思想a.本程序总共有6个文件:workers.hworkers.cadd_disp.csav_load.cque_remv.csort_tongji.cb.所涉及到的函数如下:(1).菜单处理函数函数原型:void handle_menu(void);//菜单处理功能:处理选择的菜单命令参数:void返回值:void工作方式:根据命令,调用相应函数要求:给出结束信息(2).菜单选择函数函数原型: int menu_select(void);//菜单选择功能:接受用户选择的命令代码参数:void返回值:int工作方式:返回命令代码的整数值要求:只允许选择规定键,如果输入不合要求,则提醒用户重新输入 (3). 删除记录函数函数原型:void removeRecord(void);//删除指定的记录功能:删除内存数组内存数组中的指定记录参数:void返回值:void工作方式:根据给定的关键字,查找符合的记录并删除之。

要求:将后面的记录前移,同时改变名次并给出相关信息(4).增加信息函数函数原型:void addRecord(void);//在表尾追加职工信息功能:增加记录参数:void返回值:void工作方式:从尾部开始逐个追加记录要求:将新的记录追加在记录尾部,并对记录进行计数(5). 显示所有学生信息函数函数原型:void display(void);//显示信息功能:显示内存里的记录信息参数:void返回值:void工作方式:从头部开始逐个显示记录内容要求:报告是否有记录及记录条数和内容(6).查询指定职工信息函数函数原型:void queryInfo(void);//查询指定的职工信息功能:将一个文件的内容追加到另一个文件的尾部参数:void返回值:void工作方式:可以按照职工号或电话号码来查询要求:打印查询到的学生的信息或给出相关信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河北科技大学课程设计报告学生姓名:付建海学号:********* 专业班级:计算机081班课程名称:数据结构设计题目:简单的职工管理系统学年学期:2010-2011学年第一学期指导教师:***2011年6月一、需求分析 (2)二、概要设计 (3)三、详细设计 (4)四、调试分析 (8)五、用户使用说明 (8)六、测试结果 (9)七、附录 (10)一、需求分析职工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以职工管理系统应该能够为用户提供充足的信息和快捷的查询手段。

但一直以来各个公司基本上都是靠传统的人工方式来管理职工信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于信息的查找、更新和维护都带来了不少的困难。

当今社会,信息迅速膨胀,随着各个公司的规模增大,有关信息管理工作所涉及的数据量越来越大,职工信息量也大大增加,利用传统的手工查询、登记、修改等方法的处理速度远远跟不上公司的需求,有的公司不得不靠增加人力、物力来进行信息管理。

随着计算机技术的不断提高,计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识,它已进入人类社会的各个行业和领域并发挥着越来越重要的作用,成为人们工作和生活中不可缺少的一部分。

而作为计算机应用的一部分,使用计算机对职工进行管理,具有手工管理所无法比拟的优点。

例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高职工管理的效率,也是公司的科学化、正规化管理和与世界接轨的重要条件。

职工管理系统作为一种管理软件正在各公司中得到越来越广泛的应用,且已达到了良好效果。

简单的职工管理系统:1、问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。

2、要求职工对象包括姓名(字符串)、性别(字符)、出生年月(数字)、工作年月(数字)、学历(字符串)、职务(字符串)、住址(字符串)、电话(字符串)等信息。

(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。

(2)删除一名职工:从职工管理文件中删除一名职工对象。

(3)查询:从职工管理文件中查询符合某些条件的职工。

(4)修改:检索某个职工对象,对其某些属性进行修改。

(5)排序:按某种需要对职工对象文件进行排序。

3、实现功能(1)由键盘输入职工对象,以文件方式保存。

程序执行时先将文件读入内存。

(2)对职工对象中的“姓名”按字典顺序进行排序。

(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。

二、概要设计1、输入功能的实现:要想实现职工管理系统的输入,必须要建立一个职工信息系统的抽象数据类型,其中职工信息以链表的存储方式实现。

由键盘输入职工对象,以文件方式保存。

程序执行时先将文件读入内存。

2、系统处理功能的实现:系统管理员根据公司的人员流动情况,在提示信息的提示下,选择相应的服务进行操作。

如对职工对象中的"姓名"按字典顺序进行排序;对排序后的职工对象进行增、删、查询、修改、排序等操作。

3、输出的实现:根据选择的操作,输出与之对应的信息。

综上可以绘制出职工管理功能的系统流程图,如图1所示图1 系统流程图4、系统功能结构根据职工管理系统问题的分析和设计要求,可以得到该职工管理系统可以分为五个模块:职工信息添加模块、职工信息修改模块、职工信息删除模块、职工信息查询模块、职工信息排序模块。

其系统功能结构如图2所示。

图2 系统功能结构图5、模块函数构造根据系统功能结构图的描述,可以构造出该系统的抽象数据类型和相对应的函数,其方法名和功能如表1所示。

表1 函数功能表三、详细设计1、抽象数据类型定义1)定义表结点(typedef struct Node)2)定义职工信息(typedef struct Datatype)3)初始化链表(ListInitiate(SLNode **head))2、主函数设计(1)根据详细设计要求,可以得到主函数代码及其对应的程序流程图:在主函数中,实现了友好的界面设计。

系统需要输入职工的基本信息:姓名、性别、出生年月、工作年月、学历、职务、住址、电话等。

这个系统还利用键盘输入提供的主菜单服务,在主菜单中,有七种操作的调用:新增职工信息:SLNode *ListInsert(SLNode *head,DataType x)查询职工信息:Listfind(SLNode head)删除职工信息:ListDelete(SLNode *head)修改职工信息:ListModify(SLNode *head)职工信息排序:Listpaixu(SLNode *head)保存职工信息:put(SLNode *head,FILE *fp)显示职工信息:print(SLNode *head)(2)主函数程序流程图如图3所示:图 3 主函数程序流程图3、查找算法设计在查询算法中,职工管理系统提供了七种查询操作,实现了系统的人性化查询操作。

这些查询操作分别为:对姓名进行查询,对性别进行查询,对出生年月进行查询,对工作年月进行查询,对学历进行查询,对职位进行查询,对住址进行查询,对电话进行查询等一些列操作。

查找算法中,利用链表的指针的移动扫描整个职工信息表,利用strcmp()函数判断字符串是否匹配。

查询算法程序流程图如图4所示:图 4 查询算法程序流程图4、排序算法设计在排序算法中,职工管理系统提供了四种查询操作,实现了系统的基本排序操作。

这些排序操作分别为:对姓名进行排序,对性别进行排序,对出生年月进行排序,对工作年月进行排序,等一些列操作。

排序算法中,利用链表的指针的移动扫描整个职工信息表,利用strcmp()函数判断字符串是否匹配。

排序的核心代码:排序算法流程图如图5所示:图5 排序算法程序流程图四、调试分析测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验是否满足规定的需求或弄清预期结果与实际结果之间的差别。

在调试查询修改功能过程中,查询的总是不正确,查询的结果显示,没有找到职工信息,最后发现查找的结点不正确,查询应该与输入的值和头结点next 比较,而不是头结点。

还有就是查询结点不知道如何循环,最后又看看了记得笔记和书,才知道如何继续查找而不出错误。

修改时总是不能正确的修改,最初时修改总是修改最后输入的数据。

最后终于找到了,又是结点写错了。

排序时注意交换的先后顺序就可以了,删除时注意交换结点的顺序。

经验与体会:本次课程设计是围绕数据结构进行。

根据问题描述可知,需要解决问题并不复杂,整个问题只需要实现一个职工管理系统功能,那就是在这个系统中实现对职工信息的插入、删除、查询、排序、修改以及保存。

但是,为了实现该功能,却需要优秀的算法和数据结构以保证实现的时间和空间效率。

把职工信息存储在一个单链表中,利用指针实现对职工信息的各项基本操作。

虽然设计的程序完成了题目描述所需要实现的功能,但是仍然存在不如人意的地方。

那就是可以排序上面多设计几个算法。

实现多角度排序。

在这个系统中没有职工序号的信息,所以允许职工姓名相同,在很大程度上面,可能是的职工信息重复。

经过这次数据结构课程设计,我们不仅及时巩固的了数据结构、算法、以及软件工程的知识,并明白数据结构和算法对于程序时间和空间性能的影响,及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义。

当我们面对一个实际问题,应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构,每种数据结构适应于不同的算法。

因此应该综合考虑这样的数据结构、算法以及它们的空间和时间效率,然后从中选择一个作为实现程序的基础。

此外,对程序的测试应该要仔细,根据模块的特点和测试阶段,采用各种软件测试方法对程序进行测试,确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题描述中要求的功能。

五、用户使用说明进入职工管理系统,首先看到的就是欢迎界面,然后提示:请输入要录入的职工数,输入完数字后,就提示:按次序依次输入职工的姓名、性别、出生年月、工作年月、学历、职务、电话的信息(注意是依次输入,中间可以用空格,tab,回车做切换输入),输完信息后自动回到主界面,根据提示:0.结束管理系统\ 1.新增职工信息2.删除职工信息3.查询职工信息4.修改职工信息5.职工信息排序,输入相应操作的数字,如0,退出简单职工管理系统;如1,提示依次输入职工信息,录入完毕自动返回主界面;如2,提示输入删除的姓名,成功正确返回,错误有提示无此员工信息;如3,会提示查询方式:0.退出查询系统,回到主菜单1.对姓名进行查询2.对出生年月进行查询3.对学历进行查询4.对工作年月进行查询,输入相应编号进行查询;如4,提示输入修改职工姓名,然后进行依次修改职工所有信息;如5,提示:0.退出排序系统,回到主菜单1.对性别进行排序2.对出生年月进行排序3.对工作年月进行排序4.对姓名进行排序,输入号码进行查询。

六、测试结果1)进入职工管理系统,如图6所示:图6主菜单选择界面2)新增一职工信息并查询全部职工信息,如图7、8所示:图7 新增并查询职工信息界3)修改职工信息并与前面信息对照,如图8所示:图8 修改职工信息界面4)按姓名排序职工信息并显示,如图9所示图9 按姓名排序职工信息并显示5)退出系统,如图10所示:选择0,退出职工管理系统。

图10 退出职工管理系统七、附录参考文献:[1]李云清,杨庆红,揭安全.数据结构(C语言版)[M].北京:人民邮电大学出版社,2004.6[2]潘彦.算法设计与分析基础[M].北京:清华大学出版社,2007.1[3]肖梦强,曲秀清.软件工程——原理、方法与应用[M].北京:中国水利水电出版社,2005.10[4] 吕凤翥.C++语言程序设计(第2版)[M].北京:电子工业出版社,2007.2[5] 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2002.9实验程序:#include <stdio.h>#include <string.h>#include <malloc.h>#include <stdlib.h>#define ALLMAX 100 //总共统计的职工的人数typedef struct Node{long int born_date,work_date,tele_num;charsex,name[ALLMAX],degree[ALLMAX],job[ALLMAX],address[ALLMAX];struct Node *next;}SLNode;typedef struct{long int born_date,work_date,tele_num;charname[ALLMAX],sex,degree[ALLMAX],job[ALLMAX],address[ALLMAX];}DataType;void ListInitiate(SLNode **head)//链表初始化{if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);//动态分配存储空间(*head)->next=NULL;}SLNode *ListInsert(SLNode *head,DataType x)//职工信息的插入姓名并按照升序排列{SLNode *p,*q,*s;p=head->next;if((q=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);//动态分配存储空间q->born_date=x.born_date;q->work_date=x.work_date;q->tele_num=x.tele_num;strcpy(q->name,);q->sex=x.sex;strcpy(q->degree,x.degree);strcpy(q->job,x.job);strcpy(q->address,x.address);if(head->next==NULL){//如果只有链表的头结点,没有其他的结点,直接插入在头结点后面head->next=q;head->next->next=NULL;}else{//链表非空for(;p;p=p->next){if(p->next!=NULL){if(strcmp(p->name,)<0&&strcmp(p->next->name,)>0){//位于两个结点之间s=p->next;p->next=q;q->next=s;break;}//else if(strcmp(p->name,)==0)break; //如果姓名相同则不插入信息}else if(strcmp(p->name,)<0&&p->next==NULL){//链表非空,并且在排序中是最后一个p->next=q;q->next=NULL;break;}if(strcmp(p->name,)>0){//位于链表头结点之后的位置s=head->next;head->next=q;q->next=s;break;}}}return head;}void ListDelete(SLNode *head)//职工信息的删除{SLNode *p,*s;char x[20];s=head;p=head->next;if(head->next==NULL){//链表为空,输出:名单中无职工信息,无须删除!printf("名单中无此职工信息,无须删除!\n");return;}printf("请输入要删除职工的姓名:\n"); //输入要删除的人的姓名scanf("%s",x);for(p;p;p=p->next){//在链表中从头到尾查找输入的人的姓名if(strcmp(p->name,x)==0){ //如果存在,则删除,否则输出:名单中无职工信息,无须删除!s->next=p->next;free(p);printf("删除成功!请继续操作!\n");break;}s=p;}if(p==NULL){//链表本身为空printf("名单中无此职工信息,无须删除!\n");}}void ListModify(SLNode *head)//职工信息的修改{DataType x;SLNode *p;p=head->next;if(p==NULL){//链表本身为空printf("职工名单无职工信息,无须修改!\n");return;}printf("请输入要修改的职工姓名:\n");scanf("%s",);for(;p;p=p->next){if(strcmp(,p->name)==0){//查找到了该职工的信息printf("依次写入该职工的新信息:\n");printf("请输入职工信息:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");scanf("%s %c %d %d %s %s %s %d",p->name,&p->sex,&p->born_date,&p->wo rk_date,p->degree,p->job,p->address,&p->tele_num);printf("修改成功!请继续操作!\n");break;}}if(p==NULL)//如果链表为空printf("此职工不存在,无法修改其信息!\n");}void put(SLNode *head,FILE *fp)//职工信息的保存{SLNode *p;if((fp=fopen("Employee.txt","w"))==NULL){//printf("无法打开'Employee.txt'!\n");exit(0);}for(p=head->next;p;p=p->next){fprintf(fp,"%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->wo rk_date,p->degree,p->job,p->address,p->tele_num);}if(fclose(fp)){printf("无法关闭'Employee.txt'!\n"); exit(0);}}void Listfind(SLNode head)//职工信息的查找{int i,j;SLNode *p;DataType x;if(head.next==NULL){//链表为空printf("名单中无职工信息,查询失败!\n");return;}//返回主菜单printf("\n");printf("\t*********************************\n");printf("\t*职工信息查询操作*\n");printf("\t**\n");printf("\t*0.退出查询系统,回到主菜单\t\t 1.对姓名进行查询\t*\n\t* 2.对出生年月进行查询\t\t 3.对学历进行查询\t*\n\t* 4.对工作年月进行查询\t\t 5.对职务进行查询\t*\n\t* 6.对住址进行查询\t\t 7.对电话进行查询\t*\n");printf("\t*********************************\n");while(1){printf("请输入您要选择的操作:");scanf("%d",&i);if(i==0)//输入0,退出查询系统,回到主菜单break;else if(i==1){//输入1,对姓名进行查询p=head.next;printf("请输入姓名:");scanf("%s",);j=0;for(p;p;p=p->next){if(strcmp(p->name,)==0){//如果存在这个人,那么j自加++j;printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_ date,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中不存在此人!\n");else printf("查询成功!继续操作!\n");}else if(i==2){//输入2,对出生年月进行查询p=head.next;printf("请输入出生年月:");scanf("%d",&x.born_date);j=0;for(p;p;p=p->next){if(p->born_date==x.born_date){//输入的出生年月在链表中存在++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_ date,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这个时间出生的!\n");else printf("查询成功!请继续操作!\n");}else if(i==4){//输入4,对工作年月进行查询p=head.next;printf("请输入工作年月:");scanf("%d",&x.work_date);j=0;for(p;p;p=p->next){if(p->work_date==x.work_date){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_ date,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这个时间工作的!\n");else printf("查询成功!请继续操作!\n");}else if(i==3){//输入3,对学历进行查询p=head.next;printf("请输入学历:");scanf("%s",x.degree);j=0;for(p;p;p=p->next){if(strcmp(p->degree,x.degree)==0){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_ date,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这种学历的!\n");else printf("查询成功!请继续操作!\n");}else if(i==5){//输入5,对职务进行查询p=head.next;printf("请输入职务:");scanf("%s",x.job);j=0;for(p;p;p=p->next){if(strcmp(p->job,x.job)==0){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_ date,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这种职务的!\n");else printf("查询成功!请继续操作!\n");}else if(i==6){//输入6,对住址进行查询p=head.next;printf("请输入住址:");scanf("%s",x.address);j=0;for(p;p;p=p->next){if(strcmp(p->address,x.address)==0){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_ date,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有住这的!\n");else printf("查询成功!请继续操作!\n");}else if(i==7){//输入7,对电话号码进行查询p=head.next;printf("请输入电话:");scanf("%d",&x.tele_num);j=0;for(p;p;p=p->next){if(p->tele_num==x.tele_num){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_ date,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没人用这个号码!\n");else printf("查询成功!请继续操作!\n");}else if(i!=0 && i!=1 && i!=2 && i!=3 && i!=4 && i!=5 && i!=6 && i!=7)//输入任意不是上述数字的,那么久显示输入错误printf("输入出错!请再次输入!\n");printf("\n");printf("\t*********************************\n");printf("\t*职工信息查询系统*\n");printf("\t**\n");printf("\t*0.退出查询系统,回到主菜单\t\t 1.对姓名进行查询\t*\n\t* 2.对出生年月进行查询\t\t 3.对学历进行查询\t*\n\t* 4.对工作年月进行查询\t\t 5.对职务进行查询\t*\n\t* 6.对住址进行查询\t\t 7.对电话进行查询\t*\n");printf("\t*********************************\n");//printf("0.退出查询系统,回到主菜单\n1.对姓名进行查询\n2.对出生年月进行查询\n3.对工作年月进行查询\n4.对学历进行查询\n5.对职务进行查询\n6.对住址进行查询\n7.对电话号码进行查询\n");}}void print(SLNode *head)//职工信息的显示{for(SLNode *p=head->next;p;p=p->next)//输出所有职工的信息printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_ date,p->degree,p->job,p->address,p->tele_num);}void printLink(SLNode *head)//职工信息的显示{printf("职工名单:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");print(head);}void Listpaixu(SLNode *head)//职工信息的排序{int i,n=0,m,flag=1;SLNode *p,*q,*s;if(head->next==NULL){//职工链表为空printf("名单中无职工信息,无法排序!\n\n");return;}// printf("输入出错!请再次输入!\n\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");printf("\t\t~.~ 职工信息排序操作~.~\n");printf("\t\t~.~ ~.~\n");printf("\t\t~.~\t0.退出排序系统,回到主菜单~.~\n\t\t~.~\t1.对性别进行排序~.~\n\t\t~.~\t2.对出生年月进行排序~.~\n\t\t~.~\t3.对工作年月进行排序~.~\n\t\t~.~\t4.对姓名进行排序~.~\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");while(1){printf("请输入您要选择的操作:");scanf("%d",&i);if(i==0)//输入0,退出排序系统,回到主菜单break;else if(i==1){//输入1,对性别进行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)//统计职工人数n++;for(m=1;flag&&m<=n;m++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){if(p->sex>q->sex)//p为当前节点,p的性别>p的后继节点的性别{if(head==p)//p为头结点{head->next=q->next;head=q;q->next=p;//交换节点信息q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);//输出所有节点的信息return;}else if(i==2){//输入2,对出生年月进行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)//统计职工人数n++;for(m=1;flag&&m<=n;n++)//循环{flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){if(p->born_date>q->born_date)//对出生年月进行排序{if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);return;}else if(i==3){//输入3,按工作时间进行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){ if(p->work_date>q->work_date){if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);return;}else if(i==4){n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){ if(p->name[0]>q->name[0]){if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);return;}else if(i!=0&&i!=1&&i!=2&&i!=3&&i!=4)printf("输入出错!请再次输入!\n\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");printf("\t\t~.~ 职工信息排序系统~.~\n");printf("\t\t~.~ ~.~\n");printf("\t\t~.~\t0.退出排序系统,回到主菜单~.~\n\t\t~.~\t1.对性别进行排序~.~\n\t\t~.~\t2.对出生年月进行排序~.~\n\t\t~.~\t3.对工作年月进行排序~.~\n\t\t~.~\t4.显示全部职工信息~.~\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");//printf("0.退出排序系统,回到主菜单\n1.对性别进行排序\n2.对出生年月进行排序\n3.对工作年月进行排序\n");}}void main(){DataType x;SLNode *head;int i,n;FILE *fp;ListInitiate(&head);//初始化链表printf("\n");printf("*******************************************************************************\n");printf("************************ 欢迎使用职工管理系统***************************\n");printf("*********************************************************** ********************\n");printf("请输入要录入的职工人数n:");//输入要录入的职工人数scanf("%d",&n);if(n==0) goto aa;printf("请输入职工信息:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");for(i=0;i<n;i++)//职工信息的输入{scanf("%s %c %d %d %s %s %s %d",,&x.sex,&x.born_date,&x.work_dat e,x.degree,x.job,x.address,&x.tele_num);head=ListInsert(head,x);}if((fp=fopen("Employeetxt","rd"))==NULL){printf("\t无法打开'Employee.txt'!\n");exit(0);}put(head,fp);if(fclose(fp)){printf("\t无法关闭'Employee.txt'!\n"); exit(0);}printLink(head);aa: printf("\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");printf("\t☆* 主菜单* ☆\n");printf("\t★********** ★\n");printf("\t☆☆\n");printf("\t★\t0.结束管理系统\t\t\t1.新增职工信息\t\t★\n\t☆\t2.删除职工信息\t\t\t3.查询职工信息\t\t☆\n\t★\t4.修改职工信息\t\t\t5.职工信息排序\t\t★\n");printf("\t☆☆\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");while(1){printf("请输入您要选择的操作:");scanf("%d",&i);if(i==0)//输入0,结束系统{printf("\t\t您已经成功退出职工管理系统,谢谢使用!\n");break;}else if(i==1){//输入1,新增一名职工printf("请输入职工信息:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");scanf("%s %c %d %d %s %s %s %d",,&x.sex,&x.born_date,&x.work_dat e,x.degree,x.job,x.address,&x.tele_num);head=ListInsert(head,x);printf("新增成功!请继续操作!\n");printLink(head);put(head,fp);//保存在文件中}else if(i==2){//输入2,删除一名职工ListDelete(head);if((fp=fopen("Employee.txt","w"))==NULL){printf("无法打开'职工名单.txt'!\n");exit(0);}put(head,fp);//保存在文件中if(fclose(fp)){printf("无法关闭'Employee.txt'!\n"); exit(0);}}else if(i==3)//输入3,查找一名职工Listfind(*head);else if(i==4){//输入4,修改职工信息ListModify(head);if((fp=fopen("Employee.txt","w"))==NULL){printf("无法打开'Employee.txt'!\n");exit(0);}put(head,fp);//保存在文件中if(fclose(fp)){printf("无法关闭'Employee.txt'!\n"); exit(0);}}else if(i==5){//输入5,对职工信息进行排序SLNode *p=head;Listpaixu(p);}//如果出入的不是上述任何一种情况就输出:输入出错else printf("输入出错!请再次输入!\n");printf("\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");printf("\t☆* 主菜单* ☆\n");printf("\t★********** ★\n");printf("\t☆☆\n");printf("\t★0.结束管理系统\t\t\t\t1.新增职工信息\t★\n\t☆ 2.删除职工信息\t\t\t\t3.查询职工信息\t☆\n\t★ 4.修改职工信息\t\t\t\t5.职工信息排序\t★\n");printf("\t☆☆\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");//printf("0.结束系统\n1.新增一名职工\n2.删除一名职工\n3.查询职工信息\n4.修改职工信息\n5.对职工信息进行排序\n");。

相关文档
最新文档