职工信息管理(几年后看看自己的代码会不会笑出声)
来源:互联网 发布:飞龙大数据平台 编辑:程序博客网 时间:2024/05/01 03:24
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.IO;
namespace MyTest
{
class Employee
{
//职员编号
public string EmployeeNum;
//姓名
public string Name;
//性别
public string Sex;
//工资
public int Wages;
//出生时间
public int BornTime;
//工作时间
public int WorkTime;
//年龄
public int Age;
//部门
public string Sort;
//定义一个动态数组存储职员信息
public static ArrayList moreEmployee = new ArrayList();
//默认构造函数
public Employee()
{
}
//自定义构造函数,初始化器
public Employee(string employeeNum, string name, string sex, int wages, int bornTime, int workTime, string sort)
{
EmployeeNum = employeeNum;
Name = name;
Sex = sex;
Wages = wages;
BornTime = bornTime;
WorkTime = workTime;
Age = CountAge();
Sort = sort;
}
//虚拟增加职员方法,在Work,Teacher中重写
public virtual void AddEmployee()
{
}
//计算职员年龄
public int CountAge()
{
if (WorkTime <= BornTime)//判断工作时间与出生时间是否合理
{
Console.WriteLine("输入的工作时间和出生时间不合理:");
return -1;
}
else
{
return WorkTime - BornTime;//合理则返回相减得到的年龄
}
}
//显示数据的虚方法,输出职员姓名、年龄简表
public virtual void DisPlay()
{
Console.WriteLine("职员信息简表如下:\n姓名,年龄");
//用for循环数组,输出所有职员姓名、年龄
for (int i = 0; i < moreEmployee.Count; i++)
{
Console.WriteLine("{0},{1}", (moreEmployee[i] as Employee).Name, (moreEmployee[i] as Employee).CountAge());
}
}
//遍历数组并输出
public void ShowEmployee(int i)
{
Console.WriteLine("{0} {1} {2} {3} {4} {5} {6} {7}", (moreEmployee[i] as Employee).EmployeeNum,
(moreEmployee[i] as Employee).Name.PadRight(3), (moreEmployee[i] as Employee).Sex, (moreEmployee[i] as Employee).Wages,
(moreEmployee[i] as Employee).BornTime, (moreEmployee[i] as Employee).WorkTime, (moreEmployee[i] as Employee).CountAge(),
(moreEmployee[i] as Employee).Sort);
}
//处理键盘输入的职员信息,参数用于选择添加老师、工人以及可选择的系
public void GetInput(string job, string dempartment)
{
Employee e = new Employee();
string InputString = "";//存储输入的string
string emploNum = "XX";//在编号前加上XX
int InputInt = 0;//存储输入的int
bool IsEmployeeNumRight = false;//判断输入的编号是否合法
bool IsSexRight = false;//判断输入的性别是否合法
bool IsWagesRight = false;//判断输入的工资是否合法
bool IsBornTimeRight = false;//判断输入的出生时间是否合法
bool IsWorkTimeRight = false;//判断输入的工作时间是否合法
Console.WriteLine("请输入要添加的{0}各项信息,输完按回车", job);
Console.WriteLine("请输入编号(1-999):");
do
{
try
{
InputInt = Convert.ToInt32(Console.ReadLine());
if (InputInt > 0 && InputInt < 1000)//判断编号
{
InputString = InputInt.ToString("000");//将int型转化为字符串
emploNum += InputString;//在编号前加上统一字符XX
for (int i = 0; i < moreEmployee.Count; i++)
{
if ((moreEmployee[i] as Employee).EmployeeNum == emploNum)
{
Console.WriteLine("已存在该编号,请重新输入");
emploNum = "XX";
break;
}
//当遍历到最后一个没有编号相同的则编号可以使用
else if (i == moreEmployee.Count - 1 && (moreEmployee[i] as Employee).EmployeeNum != emploNum)
{
e.EmployeeNum = emploNum;
IsEmployeeNumRight = true;
}
}
}
}
catch
{
Console.WriteLine("输入有误,请输入数字");
}
}
while (!IsEmployeeNumRight);
//InputString = Convert.ToString(Console.ReadLine());
//emploNum += InputString;
//e.EmployeeNum = emploNum;
Console.WriteLine("请输入名字:");
e.Name = Convert.ToString(Console.ReadLine());//输入姓名
Console.WriteLine("请输入性别(男、女):");
//性别循环输入,直到合法
do
{
InputString = Console.ReadLine();
if (InputString == "女" || InputString == "男")//判断性别
{
e.Sex = InputString;
IsSexRight = true;
}
else
{
Console.WriteLine("输入的性别有误,请重新输入(男、女)");
}
}
while (!IsSexRight);
//工资循环输入,直到合法
Console.WriteLine("请输入工资(不可为负):");
do
{
try
{
InputInt = Convert.ToInt32(Console.ReadLine());
if (InputInt >= 0)//判断工资
{
e.Wages = InputInt;
IsWagesRight = true;
}
else
{
Console.WriteLine("输入的工资有误,请重新输入(工资要大于0)");
}
}
catch
{
Console.WriteLine("输入有误,请输入数字");
}
}
while (!IsWagesRight);
//工作时间循环输入,直到合法
Console.WriteLine("请输入参加工作的年份(1980-2016):");
do
{
try
{
InputInt = Convert.ToInt32(Console.ReadLine());
if (InputInt < 2017 && InputInt > 1956)//判断工作时间
{
e.WorkTime = InputInt;
IsWorkTimeRight = true;
}
else
{
Console.WriteLine("输入的工作年份有误,请重新输入(1980-2016)");
}
}
catch
{
Console.WriteLine("输入有误,请重新数字!");
}
}
while (!IsWorkTimeRight);
//出生时间循环输入,直到合法
Console.WriteLine("请输入出生时间(不能比工作时间早(1956-{0})):", e.WorkTime);
do
{
try
{
InputInt = Convert.ToInt32(Console.ReadLine());
if (InputInt < e.WorkTime && InputInt > 1956)//判断出生时间
{
e.BornTime = InputInt;
IsBornTimeRight = true;
}
else
{
Console.WriteLine("输入的出生年份有误,请重新输入(1956-{0})", e.WorkTime);
}
}
catch
{
Console.WriteLine("输入有误,请重新输入数字!");
}
}
while (!IsBornTimeRight);
Console.WriteLine("请输入所属系或部门,可选择({0}),可添加新系、部门:", dempartment);
e.Sort = Convert.ToString(Console.ReadLine());//存储部门、系信息
//当所有信息正确时,确认可以添加该职员
if (IsBornTimeRight && IsWorkTimeRight && IsWagesRight && IsSexRight)
{
moreEmployee.Add(e);
}
}
//删除职员的虚方法,在子类中重写
public virtual void DeleteEmployee()
{
}
//给出11个职员的全部信息,存储在动态数组中
public void EmployeeDate()
{
moreEmployee.Add(new Employee(
EmployeeNum = "XX001",
Name = "张三",
Sex = "男",
Wages = 6000,
BornTime = 1986,
WorkTime = 2016,
Sort = "化学"
));
moreEmployee.Add(new Employee(
EmployeeNum = "XX002",
Name = "李四",
Sex = "男",
Wages = 8000,
BornTime = 1991,
WorkTime = 2016,
Sort = "数学"
));
moreEmployee.Add(new Employee(
EmployeeNum = "XX003",
Name = "王老五",
Sex = "男",
Wages = 10000,
BornTime = 1981,
WorkTime = 2016,
Sort = "化学"
));
moreEmployee.Add(new Employee(
EmployeeNum = "XX005",
Name = "王老吉",
Sex = "男",
Wages = 8300,
BornTime = 1996,
WorkTime = 2016,
Sort = "数学"
));
moreEmployee.Add(new Employee(
EmployeeNum = "XX007",
Name = "加多宝",
Sex = "女",
Wages = 12000,
BornTime = 1996,
WorkTime = 2016,
Sort = "采购"
));
moreEmployee.Add(new Employee(
EmployeeNum = "XX015",
Name = "王二小",
Sex = "男",
Wages = 7800,
BornTime = 1987,
WorkTime = 2015,
Sort = "英语"
));
moreEmployee.Add(new Employee(
EmployeeNum = "XX019",
Name = "隔老王",
Sex = "男",
Wages = 4500,
BornTime = 1979,
WorkTime = 2016,
Sort = "数学"
));
moreEmployee.Add(new Employee(
EmployeeNum = "XX120",
Name = "王大锤",
Sex = "男",
Wages = 12400,
BornTime = 1994,
WorkTime = 2016,
Sort = "英语"
));
moreEmployee.Add(new Employee(
EmployeeNum = "XX220",
Name = "末班车",
Sex = "女",
Wages = 18000,
BornTime = 1998,
WorkTime = 2016,
Sort = "语文"
));
moreEmployee.Add(new Employee(
EmployeeNum = "XX319",
Name = "老街",
Sex = "男",
Wages = 13000,
BornTime = 1976,
WorkTime = 2016,
Sort = "售后"
));
moreEmployee.Add(new Employee(
EmployeeNum = "XX340",
Name = "模特",
Sex = "女",
Wages = 23605,
BornTime = 1999,
WorkTime = 2016,
Sort = "销售"
));
}
}
//继承Employee类
class Teacher : Employee
{
//重载Employee的DisPlay方法
public override void DisPlay()
{
Console.WriteLine("所有职员信息如下:\n编号 姓名 性别 工资 工作时间 出生年份 年龄 部门");
for (int i = 0; i < moreEmployee.Count; i++)
{
ShowEmployee(i);
}
}
//重写基类的方法,用于增加一个老师信息
public override void AddEmployee()
{
GetInput("教师", "化学,语文,数学");
Console.WriteLine("输入的职员信息为:");
Console.WriteLine("编号 姓名 性别 工资 工作时间 出生年份 年龄 部门");
ShowEmployee(moreEmployee.Count - 1);
}
//重写基类的方法,用于删除一个教师信息
public override void DeleteEmployee()
{
bool IsDelete = true; //判断是否删除了一个教师
//遍历职员信息数组
for (int i = 0; i < moreEmployee.Count; i++)
{
//判断是否是一个老师以及是否删除过
if (((moreEmployee[i] as Employee).Sort == "化学" || (moreEmployee[i] as Employee).Sort == "数学" ||
(moreEmployee[i] as Employee).Sort == "英语") && IsDelete)
{
Console.WriteLine("编号 姓名 性别 工资 工作时间 出生年份 年龄 部门");
ShowEmployee(i);//显示删除该教师的信息
Employee.moreEmployee.Remove(moreEmployee[i]);//删除找到的第一个教师
Console.WriteLine("已删除该教师");
IsDelete = false;
}
}
}
}
//继承Employee类
class Work : Employee
{
//重载Employee的DisPlay方法
public override void DisPlay()
{
}
//重写基类方法,用于增加一个工人
public override void AddEmployee()
{
GetInput("工人", "采购,销售,售后");//获取键盘输入的信息
Console.WriteLine("输入的职员信息为:");
Console.WriteLine("编号 姓名 性别 工资 工作时间 出生年份 年龄 部门");
ShowEmployee(moreEmployee.Count - 1);//显示增加的工人信息
}
//重写基类删除职员方法,用于删除一个工人
public override void DeleteEmployee()
{
bool IsDelete = true;//判断是否删除过一个工人
//遍历职员数组
for (int i = 0; i < moreEmployee.Count; i++)
{
//找到第一个工人
if (((moreEmployee[i] as Employee).Sort == "采购" || (moreEmployee[i] as Employee).Sort == "售后" || (moreEmployee[i] as Employee).Sort == "销售") && IsDelete)
{
Console.WriteLine("编号 姓名 性别 工资 工作时间 出生年份 年龄 部门");
ShowEmployee(i);//显示删除该工人的信息
Employee.moreEmployee.Remove(moreEmployee[i]);//删除找到的第一工人
Console.WriteLine("已删除该工人");
IsDelete = false;
}
}
}
}
//继承了Employee,并实现了Icomparer接口
class ShowData : Employee, IComparer
{
//输出主界面操作说明
public void ShowMianPage()
{
Console.WriteLine("************************************************************");
Console.WriteLine("职工信息管理(按相应数字进行操作)");
Console.WriteLine("************************************************************");
Console.WriteLine("(0)重新显示此操作提示");
Console.WriteLine("(1)增加一位教师记录");
Console.WriteLine("(2)增加一位工人记录");
Console.WriteLine("(3)显示全部职工记录");
Console.WriteLine("(4)删除一个教师");
Console.WriteLine("(5)删除一个工人");
Console.WriteLine("(6)按系输出职员信息");
Console.WriteLine("(7)按姓名检索所有信息");
Console.WriteLine("(8)显示职工只含姓名,年龄的简表");
Console.WriteLine("(9)退出");
}
//实例化一个静态的ICompare接口
public static IComparer Default = new ShowData();
//重写IComparer的Compare(obj,obj)方法
public int Compare(object departmentA, object departmentB)
{
//判断相比较的是否为同一类型
if (departmentA is Employee && departmentB is Employee)
{
return Comparer.Default.Compare(((Employee)departmentA).Sort, ((Employee)departmentB).Sort);
}
else
{
throw new ArgumentException("无法按系输出!");
}
}
//按系输出教师信息
public void ShowByDempartment()
{
moreEmployee.Sort(Default); //用动态数组的Sort()方法进行比较,参数为Default
Console.WriteLine("编号 姓名 性别 工资 工作时间 出生年份 年龄 部门");
//遍历职员数组
for (int i = 0; i < moreEmployee.Count; i++)
{
//判断是否是一个教师
// if ((moreEmployee[i] as Employee).Sort == "化学" || (moreEmployee[i] as Employee).Sort == "数学" || (moreEmployee[i] as Employee).Sort == "英语")
// {
ShowEmployee(i);
// }
}
}
//输入名字查找该职员信息
public void ShowByName()
{
bool IsChecked = false;//判断是否找到该职员
Console.WriteLine("请输入您要查找职员的姓名");
string Name = Convert.ToString(Console.ReadLine());//将输入的姓名存储在临时变量Name中
//遍历职员数组
for (int i = 0; i < moreEmployee.Count; i++)
{
//判断输入的名字在数组中是否存在
if (Name == ((moreEmployee[i] as Employee).Name) && !IsChecked)
{
ShowEmployee(i);
IsChecked = true;
}
//遍历到最后一个元素没有找到该人信息
else if (i == moreEmployee.Count - 1 && !IsChecked)
{
Console.WriteLine("没有找到该人信息,请核对姓名!");
}
}
}
}
class Program
{
static void Main(string[] args)
{
var Number = 0;//定义一个推理变量,存储用户输入
Employee employee = new Employee();//实例化一个Employee对象
Teacher teacher = new Teacher();//实例化一个Teacher对象
Work work = new Work();//实例化一个Work对象
ShowData showData = new ShowData();//实例化一个ShowData对象
showData.ShowMianPage();//显示主界面操作介绍
employee.EmployeeDate();//存储11个职员信息到数组中
do
{
bool IsLegal = true;//判断输入是否为数字
//当输入不是数字(0-9)时产生异常
try
{
Number = Convert.ToInt32(Console.ReadLine());
}
//不是int类型则需重新输入,无法操作
catch
{
IsLegal = false;
}
//当输入合法时(是int类型)
if (IsLegal)
{
switch (Number)
{
case 0:
showData.ShowMianPage();//显示操作介绍
break;
case 1:
teacher.AddEmployee();//增加一个老师
break;
case 2:
work.AddEmployee();//增加一个工人
break;
case 3:
teacher.DisPlay();//实现所有职员信息
break;
case 4:
teacher.DeleteEmployee();//删除一个老师
break;
case 5:
work.DeleteEmployee();//删除一个工人
break;
case 6:
showData.ShowByDempartment();//将职员按系、部门输出信息
break;
case 7:
showData.ShowByName();//通过名字搜索职员信息
break;
case 8:
employee.DisPlay();//显示只有职员姓名和年龄的简表
break;
case 9://退出程序
break;
default://输入的数字不在0-9
Console.WriteLine("输入的数字错误,请重新输入(0-9)!");
break;
}
}
//输入的不是int
else
{
Console.WriteLine("输入的信息错误,请重新输入数字(0-9)!");
}
} while (Number != 9); //退出程序
}
}
}
- 职工信息管理(几年后看看自己的代码会不会笑出声)
- 写点东西放在草稿夹里面,几年后看看几年前的自己,哈哈
- 几年后回来看看
- 职工信息管理系统(未完成)
- 职工信息管理系统(课程设计)
- 转给10几年后的自己看
- 职工信息管理
- C++课程设计(职工信息管理系统)
- 职工信息管理模块实现(c语言)
- 分享一段C代码——职工信息管理系统
- 职工信息管理系统
- 职工信息管理系统
- 职工信息管理系统实验设计
- 职工信息管理系统
- 职工信息管理系统:
- 职工信息管理系统
- 职工信息管理系统
- 心中的几年后
- ios开发中怎么判断各类设备
- 中英文切换
- Java中泛型小结
- 使用git将代码存入远程仓库github和从github上克隆代码到本地
- Java学习笔记(25)Binary Search Trees
- 职工信息管理(几年后看看自己的代码会不会笑出声)
- Ftp上传文件
- 每个单词的首字母转成大写
- Django笔记---用户注册和登录验证(1)--Post请求
- javascript 引用类型 - 内置对象(Math对象)
- Android移动开发者必须知道的Deep Linking技术
- NYOJ_448 寻找最大数
- CodeForces 690C2 Brain Network (树上最大距离)
- 进程与线程的区别(转)