(完整版)职工信息管理系统java源代码
Java实现员工信息管理系统

Java实现员⼯信息管理系统在Java SE中,对IO流与集合的操作在应⽤中⽐较重要。
接下来,我以⼀个⼩型项⽬的形式,演⽰IO流、集合等知识点在实践中的运⽤。
该项⽬名称为“员⼯信息管理系统”(或“员⼯收录系统”),主要是通过输⼊员⼯的id、姓名信息,实现简单的增删改查功能。
该项⽬主要在DOS窗⼝的控制台或者Eclipse的控制台上进⾏操作。
操作界⾯如下:该项⽬的⽂件结构如下:Step 1:⼊⼝类SystemMain的代码为:package empsystem;import java.util.Scanner;/*** 主界⾯* ⼀个Scanner录⼊对象* Employ类* ⽂件路径* 查重SearchID* @author 李章勇**/public class SystemMain {private Scanner sc=new Scanner(System.in);public SystemMain() {showWelcome();}public void showWelcome(){System.out.println("----员⼯收录系统");System.out.println("1.增加员⼯功能");System.out.println("2.查看员⼯功能");System.out.println("3.修改员⼯功能");System.out.println("4.删除员⼯功能");System.out.println("5.退出系统");String choice=sc.nextLine();switch(choice){case "1":System.out.println("您选择了增加⽤户功能");//Addnew Add();break;case "2":System.out.println("您选择了查看⽤户功能");//Searchnew ShowEmp();break;case "3":System.out.println("您选择了修改⽤户功能");//Modifynew Modify();break;case "4":System.out.println("您选择了删除⽤户功能");//删除⽤户Deletenew Delete();break;case "5":System.out.println("您选择了退出系统");return;default:System.out.println("⽆此功能");break;}}}Step 2:写⽂件路径FilePath接⼝。
java 职工信息管理系统源代码

源代码package lesson2;import java。
sql。
*;public class employee{public String num;public String name;public String sex;public String age;public String edu;public String sla;public String add;public String tel;public void init(String x1,String x2,String x3,String x4,String x5,String x6,String x7,String x8){num=x1;name=x2;sex=x3;age=x4;edu=x5;sla=x6;add=x7;tel=x8;}public void load(String f){try{Class。
forName(”com.microsoft.sqlserver.jdbc。
SQLServerDriver”);String url=”jdbc:sqlserver://localhost:1433;DatabaseName=employee";String userName=”sa”;String password="xhw";Connection conn=DriverManager.getConnection (url,userName,password);if(conn!=null)System.out。
println(”已成功地与SQL Server 2005数据库建立连接!");Statement stmt=conn.createStatement();stmt.executeUpdate(f);stmt。
close();}catch(Exception e){e。
员工信息管理系统源码

business R(Q);
return Q;
}
admi gyx(admi Q)
{
admi R(Q);
return Q;
}
/////////////////////////////////主体+初始+登录
void fg();void main();void denglu();void began();void amend();void list();
file1<<A[i].name<<" "<<A[i].age<<" "<<A[i].card<<" "<<A[i].home<<
" "<<A[i].id<<" "<<A[i].time<<" "<<A[i].wage<<" "<<A[i].code<<endl;
file2<<B.jieshao<<" "<<B.gonggao<<endl;
int gnum;int snum;int xnum;
num(int gn,int sn,int xn);
num(){gnum=snum=xnum=0;}
};
num::num(int gn,int sn,int xn)
{
gnum=gn;snum=sn;xnum=xn;
}
简单的JAVA员工信息管理系统源码

据库连结 3.查问 4.增、 5 删 6 改 (操作数据库)import .*;public class EmpManageSys implements ActionListener { Connection con;Statement stmt;String sql;ResultSet rs;StringBuffer sb = new StringBuffer();JTextField jtf2 = new JTextField("张飞 ",10); JTextField jtf3 = new JTextField(10);JTextField jtf4 = new JTextField(10);JTextField jtf7 = new JTextField(10);JTextField jtf5 = new JTextField(10);JTextField jtf6 = new JTextField(10);JTextField jtf8 = new JTextField(10);JTextField jtf9 = new JTextField(10);JTextArea jta10 = new JTextArea(50, 40);public void actionPerformed(ActionEvent e) {String str = ();if ("查问 ".equals(str)) {quals(str)) {quals(str)) {quals(str)) {EmpManageSys() {createGUI();connectToDataBase();}public void searchEmp() {("");try {stmt = ();oLowerCase().trim() + "or id="+().toLowerCase().trim() + "or engName="+().toLowerCase().trim() + "or UNIT="+().toLowerCase().trim() + "or TEAM="+().toLowerCase().trim() + "or Phone="+().toLowerCase().trim() + "or region="+().toLowerCase().trim() + "or busStation="+().toLowerCase().trim();(sql);rs = ();ResultSetMetaData meta = ();int cols = ();while ()) {for (int i = 1; i <= cols; i++) {(" " + (i) + " =");(i));}("\n");());}} catch (SQLException e11){ ();}}public void addEmp() {try {stmt = ();sql = "update Mstar values(" + () + ()+()+()+()+()+()+()+")"; inti = ();if (() != null) && () != null)&&() != null) && () != null)){ (sql);("增添记录成功 " + i + "条"); } else {("带 * 号项为增添记录时不可以为空 ");}} catch (SQLException e1) {();}}public void deleteEmp() {searchEmp();try {stmt = ();sql = "delete from Mstar where chineseName=" +().toLowerCase().trim() + "or id="+().toLowerCase().trim() + "or engName="+().toLowerCase().trim() + "or UNIT="+().toLowerCase().trim() + "or TEAM="+().toLowerCase().trim() + "or Phone="+().toLowerCase().trim() + "or region="+().toLowerCase().trim() + "or busStation="+().toLowerCase().trim();(sql);int i = ();("撤掉操作成功 " + i + "条");} catch (SQLException e){ ();}}public void alterEmp(){ searchEmp();sql = "update Mstar set chineseName="+().toLowerCase().trim() + "and id="+().toLowerCase().trim() + "and engName="+().toLowerCase().trim() + "and UNIT="+().toLowerCase().trim() + "and TEAM="+().toLowerCase().trim() + "and Phone="+().toLowerCase().trim() + "and region="+().toLowerCase().trim() + "and busStation="+().toLowerCase().trim();int i = 0;try {(sql);i = ();} catch (SQLException e){ ();}("改正操作成功 " + i + "条");}public void createGUI() {JFrame jf = new JFrame("职工信息管理系统 "); (new GridLayout(2, 1));// (new GridLayout(10,2));JPanel jp00 = new JPanel(new GridLayout(5, 4)); JPanel jp1 = new JPanel();JButton jb11 = new JButton("查问 ");(this);JButton jb12 = new JButton("增添 ");(this);(jb11);(jb12);(jp1);JPanel jp11 = new JPanel();JButton jb111 = new JButton("改正 "); (this);JButton jb112 = new JButton("撤掉 "); (this);(jb111);(jb112);(jp11);JPanel jp2 = new JPanel();JLabel jl2 = new JLabel("中文名 * "); (jl2);(jtf2);(jp2);JPanel jp3 = new JPanel();JLabel jl3 = new JLabel("工号 ");(jl3);(jtf3);(jp3);JPanel jp4 = new JPanel();JLabel jl4 = new JLabel("EngName*"); (jl4);(jtf4);(jp4);JPanel jp5 = new JPanel();JLabel jl5 = new JLabel("UNIT ");(jl5);(jtf5);(jp5);JPanel jp6 = new JPanel();JLabel jl6 = new JLabel("TEAM* "); (jl6);(jtf6);(jp6);JPanel jp7 = new JPanel();JLabel jl7 = new JLabel("Phone* "); (jl7);(jtf7);(jp7);JPanel jp8 = new JPanel();JLabel jl8 = new JLabel("地区 ");(jl8);(jtf8);(jp8);JPanel jp9 = new JPanel();JLabel jl9 = new JLabel("公交站");(jl9);(jtf9);(jp9);(jp00);JPanel jp01 = new JPanel();("--用户使用手册 -- \n1、查问:选择一个字段,如 EngName 在文本框中输入相应内容,点击查问 \n2 、增添:在各个文本框中输入相应内容后,点击增添。
(完整版)职工信息管理系统java源代码

case 6:save(staffOne);break ;
}
}
while (choice!=0);
}
void creat(staffI nfo staffO ne[])
{
InputStreamReader(System. in));
System. out .print("请输入职工信息(以0结束)\n");
for(int j=0;j<100;j++)
staffOne[j]=new staffInfo();
final ways staffTwo= new ways(); staffTwo.caidan(staffOne); staffTwo.creat(staffOne);
staffTwo.output(staffOne); staffTwo.search(staffOne);
staffTwo.delete(staffOne);
}
}
class ways//方法类,主要实现职工信息的建立,显示,查找,删除,信息的保存与读取;这个类是整个程序的操作类。
public int i=0;//i用来存放职工的人数public String filename="Infomation.txt" BufferedReader buf =new
package exercise;
import java.io.*;
class staffInfo//职工类{
public
String
name;
public
String
num;
public
java实现人员信息管理系统

java实现⼈员信息管理系统本⽂实例为⼤家分享了java实现⼈员信息管理系统的具体代码,供⼤家参考,具体内容如下实现增删改查.java⼊门的练⼿⼩程序1.Person类package p1;public class Person {// Person属性private int num;private String name;private String sex;private int salary;public Person(int num, String name, String sex, int salary) {super();this.num = num; = name;this.sex = sex;this.salary = salary;}// 对Perosn操作的⽅法public int getNum() {return num;}public void setNum(int num) {this.num = num;}public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}}2.SysMenu类package p1;public class SysMenu {public static final String[] MENU = { "1.员⼯信息管理", "2.退出" };public static final String[] OPERATION_MENU = { "1.新增", "2.查看", "3.修改", "4.删除", "5.返回" };public static void showMenu(String[] Menu) {for (int i = 0; i < Menu.length; i++)System.out.print(Menu[i] + "\t\t");System.out.println();System.out.println("---------------------------------------");}}3.SysInfo类package p1;import java.util.ArrayList;import java.util.List;public class SysInfo {private static List informationList = new ArrayList();// 获取 informationListpublic static List getList() {return informationList;}}rmationService类package p1;import java.util.List;public class InformationService {private List informationList = SysInfo.getList();// 获取信息列表public List getList() {return informationList;}// 按编号查找信息public Person getPersonByNum(final int num) {if (num < 1) {System.out.println("编号错误");return null;}for (int i = 0; i < informationList.size(); i++) {Person p = (Person) informationList.get(i);if (p.getNum() == num) {System.out.println("查找成功");return p;}}System.out.println("查找失败");return null;}//查看单⼀Person信息public void showAPerson(Person p){System.out.println("编号\t\t姓名\t\t性别\t\t薪⽔");System.out.println(p.getNum()+ "\t\t" + p.getName() + "\t\t" + p.getSex() + "\t\t" + p.getSalary());}//show all Personpublic void showPerson() {System.out.println("编号\t\t姓名\t\t性别\t\t薪⽔");List ps = getList();for (int i = 0; i < ps.size(); i++) {Person p = (Person) ps.get(i);System.out.println(p.getNum() + "\t\t" + p.getName() + "\t\t" + p.getSex() + "\t\t" + p.getSalary()); }}// 按名字查找信息public Person getPersonByName(final String name) {if (name == null)return null;for (int i = 0; i < informationList.size(); i++) {Person p = (Person) informationList.get(i);if (p.getName().equals(name)) {return p;}}return null;}//检查对象是否存在public boolean CheckExitByNum(int num){for(int i=0;i<informationList.size();i++){Person p = (Person)informationList.get(i);if(p.getNum()==num)return true;}return false;}//save Personpublic void savePerson(Person p){p.setNum(getPersonMaxInt()+1);informationList.add(p);}// 查找最⼤编号public int getPersonMaxInt(){int max = 0;for(int i =0;i<informationList.size();i++){Person p =(Person)informationList.get(i);if(max < p.getNum())max = p.getNum();}return max;}}5.SysRun类package p1;import java.util.InputMismatchException;import java.util.List;import java.util.Scanner;public class SysRun {private List informationList = SysInfo.getList();private Scanner s = new Scanner(System.in);private InformationService is = new InformationService(); // 系统运⾏类public static void main(String[] args) {SysRun sys = new SysRun();sys.sysRun();}public void sysRun() {System.out.println("启动系统管理系统");boolean isExit = false;do {System.out.println("----------操作选项-------------");SysMenu.showMenu(SysMenu.MENU);// 获取⽤户输⼊int operNum = getCorrONum(SysMenu.MENU);// 管理操作isExit = doManageNum(operNum);} while (!isExit);System.out.println("系统退出.");}private boolean doManageNum(int operNum) {boolean isExit = false;switch (operNum) {case 1:is.showPerson();System.out.println("----------操作选项-------------");SysMenu.showMenu(SysMenu.OPERATION_MENU); // addPerson();//testSystem.out.println("输⼊功能选择:");int num = getVaildInt();doOperationNum(num);break;case 2:isExit = true;return isExit;}return isExit;}// doOperationNumprivate void doOperationNum(int OperationNum) {// 增,查,修,删,返回switch (OperationNum) {case 1:// addaddPerson();is.showPerson();break;case 2:// 查看viewPerson();break;case 3:updatePerson();break;case 4:deletePerson();is.showPerson();break;case 5:break;}}// 删除Personprivate void deletePerson() {int num;// Person p;boolean isOk = false;System.out.println("请输⼊要删除信息的编号:");do {num = getVaildInt();isOk = is.CheckExitByNum(num);if (isOk == true) {System.out.println("编号信息查找成功。
职工信息管理系统源代码

#include<stdio.h>#include<string.h>#include<stdlib.h>int N=2;struct worker /*定义一个职工信息的结构体*/{int num; /*定义一个职工信息的结构体*/char name[20]; /*定义一个职工信息的结构体*/char sex[10]; //用字符串存放职工的性别数据char birth[20]; //用字符串存放职工的出生年月数据char deta[20]; //用字符串存放职工的工作年月数据char education[20]; //用字符串存放职工的学历数据double salary; //用字符串存放职工的性别数据char work[30]; //用字符串存放职工的职务数据char addr[20]; //用字符串存放职工的地址数据char tel[20]; //用字符串存放职工的数据}worker[100]; //用结构体数组存放职工的所有信息void menu();void input();void save();void read();void display();void add();void search();void search_education();void search_num();void del();void modify();void main(){char s;system("color 3f");printf("\n\n");printf(" \t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf(" \t┃**********************************************************┃\n");printf(" \t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n");printf(" \t┃***┃************************************************┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** 欢迎使用职工信息管理系统****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** 制作人吴青伶****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** 2013.12.28 ****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃************************************************┃***┃\n");printf(" \t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\n"); printf(" \t┃**********************************************************┃\n");printf(" \t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); do{menu();printf("Do you want to continue?(y/n)");s=getchar();}while(s=='Y'||s=='y');}void menu()/*菜单函数*/{int b;printf("\t \n");printf("\t \n");printf("\t \n");printf("\t \n");printf("\t \n");printf("\t 请选择\n");printf("\t ------------------------------ \n");printf("\t || || \n");printf("\t || 1. 职工信息录入|| \n");printf("\t || 2. 职工信息浏览|| \n");printf("\t || 3. 职工信息添加|| \n");printf("\t || 4. 职工信息查询|| \n");printf("\t || 5. 职工信息删除|| \n");printf("\t || 6. 职工信息修改|| \n");printf("\t || 0. 退出|| \n");printf("\t ------------------------------- \n");printf("\n 输入你的选择项(0~6):\n");scanf("%d",&b);switch(b){case 1 : //职工信息录入、保存input();save();getchar();break;case 2 ://读入职工信息并显示read();display();getchar();break;case 3 : //添加职工信息add();getchar();break;case 4 : //查询职工信息search();getchar();break;case 5 : //读入职工信息并实现职工信息删除功能read();del();getchar();break;case 6 : //读入职工信息并修改职工信息read();modify();getchar();break;case 0 : exit(0);//退出default:break;}}void input() //录入职工信息{int i,flag,j;printf("输入职工个数(默认个数为2):");scanf("%d",&N);fflush(stdin);//清除缓存for(i=0;i<N;i++){loop:printf("职工号:");scanf("%d",&worker[i].num); fflush(stdin);flag=1;if(worker[N].num<0)printf("请输入正整数:\n");elsefor(j=0;j<i;j++){if(worker[i].num==worker[j].num){flag=0;printf(" 工号重复,请重新输入!\n");goto loop;}}printf("XX:");scanf("%s",worker[i].name); fflush(stdin);printf("性别:");scanf(" %s",worker[i].sex); fflush(stdin);printf("出生年月:");scanf("%d",&worker[i].birth); fflush(stdin);printf("工作年月:");scanf("%lf",&worker[i].deta); fflush(stdin);printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs):\n");scanf("%s",worker[i].education);fflush(stdin);printf("工资:");scanf("%lf",worker[i].salary); fflush(stdin);printf("职务:");scanf("%s",worker[i].work); fflush(stdin);printf("住址:");scanf("%s",worker[i].addr); fflush(stdin);printf(":");scanf("%s",worker[i].tel); fflush(stdin);}printf("\n创建完毕!\n");}void save() //保存函数{FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL)//以只写方式打开一个二进制文件{printf("\ncannot open file\n");exit(0);}for(i=0;i<N;i++)fwrite(&worker[i],sizeof(struct worker),1,fp);//将存中的职工信息数据输出到磁盘文件中去(二进制)fclose(fp);}void read() //读入函数{FILE *fp;int i=0;if((fp=fopen("worker.txt","rb"))==NULL) //以只读方式为输出打开磁盘文件中的一个二进制文件{printf("\ncannot open file\n");exit(0);}do{fread(&worker[i],sizeof(struct worker),1,fp);//从worker.txt文件向存读入数据(二进制)i++;}while(!feof(fp));fclose(fp);N=i-1;}void display() //信息浏览函数{int i;for(i=0;i<N;i++){printf("职工号:%d\n",worker[i].num);printf("XX:%s\n",worker[i].name);printf("性别:%s\n",worker[i].sex);printf("出生年月:%d\n",worker[i].birth);printf("工作年月:%d\n",worker[i].deta);printf("学历:%s\n",worker[i].education);printf("工资:%lf\n",worker[i].salary);printf("职务:%d\n",worker[i].work);printf("住址:%s\n",worker[i].addr);printf(":%s\n",worker[i].tel);}}void add() //添加函数{FILE *fp;int i;struct worker p;double t;printf("\n请输入新增加职工的信息:\n");printf("请输入职工号:\n");scanf("%d",&p.num);for(i=0;i<N;i++){while(worker[i].num==p.num){printf(" 工号重复,请重新输入!\n");scanf("%d",&p.num);}}printf("请输入XX:\n");scanf("%s",);printf("请输入性别:\n");scanf("%s",p.sex);printf("请输入出生年月:\n");scanf("%d",&p.birth);printf("请输入工作年月:\n");scanf("%d",&p.deta);printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs:):\n");scanf("%s",cation);printf("请输入工资:\n");scanf("%lf",&t);p.salary=t;printf("请输入职务:\n");scanf("%s",p.work);printf("请输入住址:\n");scanf("%s",p.addr);printf("请输入:\n");scanf("%s",p.tel);printf("\n添加完毕!\n");if((fp=fopen("worker.txt","ab"))==NULL)//以追加方式打开一个二进制文件尾部{printf("\ncannot open file\n");exit(0);}fwrite(&p,sizeof(struct worker),1,fp);fclose(fp);}void search() //查询函数{int c;do{puts("\nsearch by=>\n1.学历2.职工号3.取消并返回");printf("Which you needed?:\n");scanf("%d",&c);if(c>3||c<1){puts("\nchoice error!please again!");getchar();//此语句用于接受在执行上一句时最后输出的回车符}}while(c>3||c<1);{switch(c){case 1:search_education();break;case 2:search_num();break;case 3:menu();break;}}}void search_education() //按学历查询函数{int i,flag=0;char s[10];printf("\n请输入你要查询的学历:\n");scanf("%s",s);for(i=0;i<N;i++){if(strcmp(s,worker[i].education)==0){printf("职工号:%d\n",worker[i].num);printf("XX:%s\n",worker[i].name);printf("性别:%s\n",worker[i].sex);printf("出生年月:%d\n",worker[i].birth);printf("工作年月:%d\n",worker[i].deta);printf("学历(中专=zz,大专=dz,本科=bk,研究生=yjs):%s\n",worker[i].education);printf("工资:%lf\n",worker[i].salary);printf("职务:%lf\n",worker[i].work);printf("住址:%s\n",worker[i].addr);printf(":%s\n",worker[i].tel);flag++;}}if(flag==0)printf("\n对不起没有找到!\n");getchar();}void search_num() //按工号查询函数{int i,s,flag=0;printf("\n输入要查询的职工号!:\n");scanf("%d",&s);for(i=0;i<N;i++){if(s==worker[i].num){printf("职工号:%d\n",worker[i].num);printf("XX:%s\n",worker[i].name);printf("性别:%s\n",worker[i].sex);printf("出生年月:%d\n",worker[i].birth);printf("工作年月:%d\n",worker[i].deta);printf("学历(中专=zz,大专=dz,本科=bk,研究生=yjs):%s\n",worker[i].education);printf("工资:%lf\n",worker[i].salary);printf("职务:%lf\n",worker[i].work);printf("住址:%s\n",worker[i].addr);printf(":%s\n",worker[i].tel);flag++;}}if(flag==0)printf("\n对不起没有找到! please");getchar();}void del() //删除函数{int i,j;FILE *fp;char name[20];char c;if((fp=fopen("worker.txt","wb"))==NULL)//以只写方式打开一个二进制文件{printf("\ncannot open file\n");exit(0);}printf("请输入要删除的职工的XX:");scanf("%s",name);for(i=0;i<N;i++){if(strcmp(name,worker[i].name)==0)//判断输入的XX和原来的XX是否相同{printf("找到该职工,是否删除?(y/n) ") ;fflush(stdin);scanf("%c",&c);if(c =='Y'||c=='y'){for(j=i;j<N;j++)worker[j]=worker[j+1];printf("删除成功! \n");//break;}}}if(i>=N){printf("没有找到该职工!\n ");return;}else{N=N-1;for(i=0;i<N;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1){printf("\ncannot save file\n");getchar();}fclose(fp);}}void modify() //修改函数{struct worker p;FILE *fp;int i,n;double t;printf("\n输入要修改的职工号:\n");scanf("%d",&n);for(i=0;i<N;i++){if(n==worker[i].num){printf("找到该职工的信息(任意键继续)!");printf("\n请输入职工的信息!\n");printf("请输入XX:\n");scanf("%s",);printf("请输入性别:\n");scanf("%s",p.sex);printf("请输入:\n");scanf("%d",&p.birth);printf("请输入工作年月:\n");scanf("%lf",&p.deta);printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs):\n");scanf("%s",cation);printf("请输入工资:\n");scanf("%lf",&t);p.salary=t;printf("请输入职务:\n");scanf("%s",p.work);printf("请输入住址:\n");scanf("%s",p.addr);printf("请输入:\n");scanf("%s",p.tel);p.num=n;if((fp=fopen("worker.txt","r+"))==NULL)//以读写的方式将修改的信息写入磁盘文件{printf("\ncannot open file\n");exit(0);}fseek(fp,i*sizeof(struct worker),0);//将位置指针移到i*sizeof(struct worker)个字节处fwrite(&p,sizeof(struct worker),1,fp);fclose(fp);printf("修改成功!\n");break;}}if(i>=N)printf("\n未找到该职工!\n");}- .- . 可修编.。
最终的职工信息管理系统源代码(精)

#include#include#include#includeint saveflag=0;//是否需要存盘的标志变量struct employee{char name[15];char num[10];char sex[4];char pozition[15];long salary;char xueli[20];char address[100];char marriage[10];int age;};typedef struct node{struct employee data;struct node *next;} Node,*Link;void add(Link l;//添加void disp(Link l;//浏览void del(Link l;//删除Node* Locate(Link l,char findmess[],char nameornum[];void Qur(Link l;//查询void Tongji(Link l;//统计void Sort(Link l;//排序void Modify(Link l;//修改void Save(Link l;//保存void printe(Node *p;//打印链表中的节点//工具函数void printstart(;void Wrong(;void Nofind(;void printc(;void menu({system("color 07";printf("\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★\n"; printf("\t\t★★\n";printf("\t\t★欢迎进入职工信息管理系统★\n";printf("\t\t★★\n";printf("\t\t★ [1] 创建职工信息 [2] 删除职工信息★\n";printf("\t\t★ [3] 查询职工信息 [4] 修改职工信息★\n";printf("\t\t★ [5] 追加职工记录 [6] 统计职工信息★\n";printf("\t\t★ [7] 排序职工信息 [8] 保存职工信息★\n";printf("\t\t★ [9] 浏览职工信息 [0] 退出系统★\n";printf("\t\t★★\n";printf("\t\t★创造者:龙丹万莎廖杰红沈冠★\n";printf("\t\t★九天出品必属精品★\n";printf("\t\t★ (^o^ (*^__^* O(∩_∩O (≧▽≦★\n";printf("\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★\n"; }void Disp(Link l{int count=0;Node *p;p=l->next;//l储存的是单链表头节点的指针,头节点无职工信息if(!p// p==NULL NULL在stdlib中定义为0{printf("\n====>提示:没有职工记录可以显示!\n";return ;}printf("\t\t\t\t显示结果\n";printstart(;printc(;printf("\n";while(p//逐条输出链表中储存的职工信息{printe(p;p=p->next;}printstart(;printf("\n";}void printstart({printf("------------------------------------------------------------------------------\n";}void Wrong({printf("\n===>提示:输入错误!\n";}void Nofind({printf("\n===>提示:没有找到该职工!\n";}void printc({printf("工号\t姓名\t性别\t年龄\t学历\t职称\t工资\t地址\t婚否\n";printstart(;}void printe(Node *p{printf("%s\t%s\t%s\t%d\t%s\t%s\t%ld\t%s\t%s\n",p->data.num,p->,p->data.sex,p->data.age,p->data.xueli,p->data.pozition,p->data.salary,p->data.address,p->data.marriage;}Node* Locate(Link l,char findmess[],char zcornum[]//该函数用于定位链表中符合要求的节点,并返回该指针{Node *r;if(strcmp(zcornum,"num"==0//按工号查询{r=l->next;while(r!=NULL{if(strcmp(r->data.num,findmess==0return r;r=r->next;}}else if(strcmp(zcornum,"pozition"==0//按职称查询{r=l->next;while(r!=NULL{if(strcmp(r->data.pozition,findmess==0return r;r=r->next;}}else if(strcmp(zcornum,"name"==0//按姓名查询{r=l->next;while(r!=NULL{if(strcmp(r->,findmess==0return r;r=r->next;}}return 0;//若未找到返回一个空指针}void Add(Link l//次函数中无节点时r指向list头有节点时 r指向list尾{Node *p,*r,*s;//实现添加操作的临时结构体指针变量char num[10];int flag=0;r=l;s=l->next;//链表无节点时 s=NULL 有节点时指向第一个职工节点while(r->next!=NULL//如果存在后继节点时 r指针后移一个r=r->next;//将指针移至链表末尾准备添加记录while(1{printf("请你输入工号(以‘0’返回上一级菜单:)";scanf("%s",num;if(strcmp(num,"0"==0//输0跳出s=l->next;//每次从第一个节点开始找看num是否重复while(s//工号重复时返回主菜单{if(strcmp(s->data.num,num==0{printf("====>提示:工号为%s的职工已经存在,若要修改请选择4!\n",num; flag=1;return ;}s=s->next;}p=(Node *malloc(sizeof(Node;//生成新节点pstrcpy(p->data.num,num;printf("请输入姓名:";scanf("%s",p->;getchar(;printf("请输入性别:";scanf("%s",p->data.sex;getchar(;printf("请输入年龄:";scanf("%d",&p->data.age;getchar(;printf("请输入学历:";scanf("%s",p->data.xueli;printf("请输入职称:";scanf("%s",p->data.pozition;getchar(;printf("请输入工资:";scanf("%ld",&p->data.salary;getchar(;printf("请输入地址:";scanf("%s",p->data.address;getchar(;printf("请输入婚否:";scanf("%s",p->data.marriage;getchar(;p->next=NULL;//表明这是链表的尾部节点r->next=p;//将新建的节点加入链表尾部中r=p;saveflag=1;}}void Del(Link l{int sel;Node *p,*r;//实现删除操作的临时结构体指针变量char findmess[20];if(!l->next//当list无后继节点时提示和返回del({printf("\n====>提示:没有记录可以删除!\n";return ;}printf("\n====>1 按工号删除\n====>2 按姓名删除\n";scanf("%d",&sel;if(sel==1{printf("请您输入要删除的工号:";scanf("%s",findmess;p=Locate(l,findmess,"num";if(p{r=l;while(r->next!=pr=r->next;//从第一个节点找起直到找到待删除的节点跳出循环r->next=p->next;free(p;printf("\n====>提示:该职工已经成功删除!\n";saveflag=1;}else Nofind(;}else if(sel==2{printf("请您输入要删除的姓名:";scanf("%s",findmess;p=Locate(l,findmess,"name";if(p{r=l;while(r->next!=pr=r->next;r->next=p->next;free(p;printf("\n====>提示:该职工已经成功删除!\n"; saveflag=1;}else Nofind(;}else Wrong(;}void Qur(Link l{int sel;char findmess[20];Node *p;//实现查询操作的临时结构体指针变量if(!l->next{printf("\n====>提示:没有资料可查询!\n";return ;}printf("\n====>1按工号查询\n====>2按职称查询\n====>3按姓名查询\n"; scanf("%d",&sel;if(sel==1{printf("请你输入要查找的工号:";scanf("%s",findmess;p=Locate(l,findmess,"num";if(p{printf("\t\t\t\t查找结果\n";printstart(;printc(;printe(p;printstart(;}else Nofind(;}else if(sel==2{printf("请您输入要查找的职称:";scanf("%s",findmess;p=Locate(l,findmess,"pozition";if(pprintf("\t\t\t\t查找结果\n"; printstart(;printc(;printe(p;printstart(;}else Nofind(;}else if(sel==3{printf("请您输入要查找的姓名:"; scanf("%s",findmess;p=Locate(l,findmess,"name";if(p{printf("\t\t\t\t查找结果\n"; printstart(;printc(;printe(p;printstart(;}else Nofind(;}else Wrong(;void Modefy(Link l{Node *p;char findmess[20];if(!l->next{printf("\n====>提示:没有资料可以修改!\n";return ;}printf("请您输入要修改的职工工号:";scanf("%s",findmess;p=Locate(l,findmess,"num";if(p{printf("请您输入新工号(原来是%s):",p->data.num; scanf("%s",p->data.num;printf("请您输入新姓名(原来是%s):",p->; scanf("%s",p->;printf("请您输入新性别(原来是%s):",p->data.sex; scanf("%s",p->data.sex;printf("请您输入新年龄(原来是%d):",p->data.age; scanf("%d",&p->data.age;printf("请您输入学历(原来是%s):",p->data.xueli; scanf("%s",p->data.xueli;printf("请您输入职称(原来是%s):",p->data.pozition;scanf("%s",p->data.pozition;printf("请您输入工资(原来是%ld):",p->data.salary;scanf("%ld",&p->data.salary;printf("请您输入地址(原来是%s):",p->data.address;scanf("%s",p->data.address;printf("请您输入婚否(原来是%s):",p->data.marriage;scanf("%s",p->data.marriage;printf("\n====>提示:资料修改成功!\n";}else Nofind(;}void Insert(Link l//按工号查询到要插入节点的位置然后在该工号之后插入一个新节点{Node *s,*r,*p;//p指向插入位置 p指新插入记录节点char ch,new_num[10],old_num[10];//前一个保存插入点位置之前的工号后一个保存输入的新记录的工号int flag=0;s=l->next;system("cls";Disp(l;while(1{printf("请您输入已存在的工号(以0返回上一级菜单:)";scanf("%s",old_num;if(strcmp(old_num,"0"==0return ;s=l->next;flag=0;while(s//查询该工号是否存在{if(strcmp(s->data.num,old_num==0{flag=1;break;}s=s->next;}if(flag==1//若工号存在则进行插入之前的新记录的输入操作break;else{getchar(;printf("\n====>%s不存在,是否重新再输入?(y/n):",old_num; scanf("%c",&ch;if(ch=='y'||ch=='Y'{continue;}else{return ;}}}//以下记录新节点类似addprintf("请您输入待插入的工号(以0返回上一级菜单:)"; scanf("%s",new_num;if(strcmp(new_num,"0"==0return ;s=l->next;//每次从第一个节点开始找看num是否重复while(s//工号重复时返回主菜单{if(strcmp(s->data.num,new_num==0{printf("====>提示:工号为%s的职工已经存在!\n",new_num; flag=1;return ;}s=s->next;}p=(Node *malloc(sizeof(Node;if(!p{printf("\n allocate memory failure";//申请空间失败return ;}strcpy(p->data.num,new_num;printf("请您输入姓名:";scanf("%s",p->;getchar(;printf("请您输入性别:";scanf("%s",p->data.sex;getchar(;printf("请您输入年龄:";scanf("%d",&p->data.age;getchar(;printf("请您输入学历:";scanf("%s",p->data.xueli;getchar(;printf("请您输入职称:";scanf("%s",p->data.pozition;getchar(;printf("请您输入工资:";scanf("%ld",&p->data.salary;getchar(;printf("请您输入地址:";scanf("%s",p->data.address;getchar(;printf("请您输入婚否:";scanf("%s",p->data.marriage;getchar(;p->next=NULL;//表明这是链表的结尾saveflag=1;//在主函数中有对该全局变量的判断若为1 则进行存盘操作r=l->next;//将指针赋值给r 因为l中的头节点的下一个节点才实际保存着记录while(1{if(strcmp(r->data.num,old_num==0//在链表中插入一个节点{p->next=r->next;r->next=p;break;}r=r->next;}//r作为查询指针从第一个节点找起直到找到后跳出循环Disp(l;printf("\n\n";}void Tongji(Link l{Node *p;int a=0,b=0,c=0;int deal;p=l;printf("请输入您想统计的项目\n";printf("====>1 对各工资段的人数进行统计\n";printf("====>2 对各年龄段的人数进行统计\n";scanf("%d",&deal;if(deal==1{while(1{if(p->data.salary>=5000 a++;else if(p->data.salary>=2000&&p->data.salary<5000 b++;else c++;p=p->next;if(p==NULLbreak;}system("cls";Disp(l;printf("====>工资大于等于5000的人数是:%d\n",a-1;printf("====>工资大于等于2000且小于5000的人数是:%d\n",b; printf("====>工资小于2000的人数是:%d\n",c;}else if(deal==2{while(1{if(p->data.age>=30 a++;else if(p->data.age>=18&&p->data.age<30 b++;else c++;p=p->next;if(p==NULLbreak;}system("cls";Disp(l;printf("====>年龄大于等于30的人数是:%d\n",a-1;printf("====>年龄大于等于18且小于30的人数是:%d\n",b; printf("====>年龄小于18的人数是:%d\n",c;}else Wrong(;}void Sort(Link l{Link ll;Node *p,*rr,*s;int i=0;int select;if(l->next==NULL{system("cls";printf("\n===>没有职工记录!\n";getchar(;return ;}ll=(Node*malloc(sizeof(Node;if(!ll{printf("\n allocate memory failure";return ;}ll->next=NULL;system("cls";Disp(l;p=l->next;printf("请选择排序方法:\n";printf("====>1 按年龄排序\n====>2 按工资排序\n";scanf("%d",&select;while(p{s=(Node*malloc(sizeof(Node;//新建节点用于保存从原链表中取出的节点信息if(!s//s=NULL{printf("\n allocate memory failure";return ;}s->data=p->data;//填数据域s->next=NULL;//指针域为空rr=ll;//rr链表于储存插入单个节点后保存排序的链表 ll是这个链表的头指针每次从头开始查找插入位置if(select==1{while(rr->next!=NULL&&rr->next->data.age>=p->data.age{rr=rr->next;//指针移至年龄比p所指节点的年龄小的节点位置}if(rr->next==NULL//若新链表ll中的所有节点的年龄都比p大则将p插入末尾rr->next=s;else//否则将该节点插入至第一个年龄比他小的前面{s->next=rr->next;rr->next=s;}p=p->next;//原链表的指针下移一个节点}else if(select==2{while(rr->next!=NULL&&rr->next->data.salary>=p->data.salary{rr=rr->next;}if(rr->next==NULLrr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}else Wrong(;}l->next=ll->next;//ll中储存的是已排序的链表的头指针Disp(l;saveflag=1;printf("\n ====>排序完成!\n";}void Save(Link l{FILE*fp;Node *p;int flag=1,count=0;fp=fopen("employee.txt","wb";if(fp==NULL{printf("\n====>提示:重新打开文件时发生错误!\n"; return ;}p=l->next;//指向第一个记录节点while(p{if(fwrite(p,sizeof(Node,1,fp==1//将第一个记录节点值写入文件{p=p->next;//依次写第二个节点的值count++;//文件记录+1}else{flag=0;break;}}if(count>0{printf("\n====>提示:文件保存成功,(有%d条记录已经保存)\n",count; saveflag=0;}else{system("cls";printf("保存文件失败,0条记录被保存!\n";}fclose(fp;}void main({char zhanghao[10],mima[10];char answer1[10]= {"jiutian"},password1[10]= {"20121314"}; char answer2[10]= {"xiaolong"},password2[10]= {"1314520"}; int amg=0;int i,j;printf("请等待";for(i=0; i<15; i++{Sleep(300;printf(".";}printf("\n";while(1{if(amg{break;}printf("请输入用户名:\n";scanf("%s",zhanghao;getchar(;printf("请输入密码:\n";scanf("%s",mima;getchar(;if((strcmp(answer1,zhanghao==0&&strcmp(password1,mima==0||(strcmp(answer2,zhan ghao==0&&strcmp(password2,mima==0{system("cls";Link list;//定义链表FILE *fp;//文件指针int choose;//保存选择结果变量char ch;//保存y/nint count=0;//保存节点个数struct node *p,*r;//定义记录指针变量printf("\t\t\t\t职工信息管理系统\n\t\t\t\t\n";list=(struct node*malloc(sizeof(struct node;if(!list{printf("\n allocate memory failure";//申请空间失败return ;}list->next=NULL;r=list;fp=fopen("employee.txt","rb";if(fp==NULL{printf("\n=====>提示:文件还不存在,是否创建?(y/n)\n"; scanf("%c",&ch;if(ch=='y'||ch=='Y'fp=fopen("employee.txt","ab+";else exit(0;}printf("\n=====>提示:文件已打开,正在导入记录";for(j=0;j<7;j++{Sleep(300;printf(".";}while(!feof(fp//没有到文件尾时循环{p=(struct node*malloc(sizeof(struct node;if(!p{printf("memory malloc failure!\n";exit(0;}if(fread(p,sizeof(struct node,1,fp//读文件的已有内容放入节点中{p->next=NULL;r->next=p;r=p;//将该节点挂入链表中,r指向最后的节点count++;}}fclose(fp;printf("\n=====>提示:记录导入完毕,共导入%d条记录.\n",count; while(1{menu(;printf("\t\t====>请选择:";scanf("%d",&choose;if(choose==0{if(saveflag==1{getchar(;printf("\n====>提示:资料已经改动,是否将改动保存到文件中(y/n?\n"; scanf("%c",&ch;if(ch=='y'||ch=='Y'Save(list;}printf("\n====>提示:你已退出系统,再见!\n";amg=1;break;}switch(choose{case 1:Add(list; break; case 2:Del(list; break; case 3:Qur(list; break; case 4: Modefy(list; break; case 5: Insert(list; break; case 6: Tongji(list; break; case 7: Sort(list; break; case 8: Save(list; break;case 9:system("cls";Disp(list;break;default:Wrong(;getchar(;break;}}}else printf("您的账号或密码错误!请重新输入!\n"; }}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
switch (choice){
case 1:creat(staffOne);break ;
case2:output(staffOne);break;
case3:search(staffOne);break;
case4:delete(staffOne);break;
package exercise;
import java.io.*;
class staffInfo//职工类{
public
String
name;
public
String
num;
public
String
sex;
public
String
age;
public
String
record
public
String
"1
1
Syste m.
);
out
.println(
"1
★★★
1.输入职工信息
★★★
1");
System.
out
.println(
"1
★
★ ★
2
■预览职
工信息
★★★
1);
Syste m.
out
.println(
"1
★
★ ★3.
查找职工信息
★ ★
★
1
);
System.
out
.println(
"1
★
★ ★4.
staffTwo.delete(staffOne);
}
}
class ways//方法类,主要实现职工信息的建立,显示,查找,删除,信息的保存与读取;这个类是整个程序的操作类。
public int i=0;//i用来存放职工的人数public String filename="Infomation.txt" BufferedReader buf =new
System. out .print("姓名:" );
staffOne[ i].name =buf.readLine();//用数组staffOne[i]来暂存职工的相
关信息
while (staffOne[ i].name .compareTo("0" )!=0) //用compareTo方法确定判定是否应该写入新信息
{
for(int j=0;j< i ;j++)
删除职工信息
★ ★
★
1");
System.
out
.println(
"1
★★★
5.读取已存数据
★★★
1");
System.
out
.println(
"1
★
★ ★
6
•安全退
出系统
★★★
1);
Syste m.
i
out
.println(
"1
System.
);
out
.print("
请输入您需要的功能代号
(1--6):" );
InputStreamReader(System. in));
void caidan(staffInfo staffOne[])
{
final BufferedReader
InputStreamReader(System. in));
throws IOException
buf= new BufferedReader(
{
System. out .print("工号:" );
staffOne[ i].num=buf.readLine();
System. out .print("性别:" );
staffOne[ i].sex =buf.readLine();
System. out .print("年龄:" );
staffOne[ i].age =buf.readLine();
case 5:read(staffOne);break ;
case 6:save(staffOne);break ;
}
}
while (choice!=0);
}
void creat(staffI nfo staffO ne[])
{
InputStreamReader(System. in));
System. out .print("请输入职工信息(以0结束)\n");
position
public
String
wanges
public
String
tel;
public
String
addr;
public class StaffInfomation//实现部分
{
public static void main( final String[] args){
staffInfo staffOne[]= new staffInfo[100];
i++;
System. out .println("请输入下一个职工信息:" );
staffOne[ i].name =buf.readLine();
}}
void output(staffInfo staffOne[]) throws IOException//这里是实现“输出(预览)职工信息”output的模块
for(int j=0;j<100;j++)
staffOne[j]=new staffInfo();
final ways staffTwo= new ways(); staffTwo.caidan(staffOne); staffTwo.creat(staffOne);
staffTwo.output(staffOne); staffTwo.search(staffOne);
//此处是JAVA语言中输入数据的基本格式,
能有如C中的scanf函数
int choice;
do{
System. out .println(
1 ");
.
out
.println(
"!★★★
★ ★★
★
★职工管理系统主菜单界
面^★ ★★ ★
★★
★1");
Syste m.
1
out
.println(
System. out .print("学历:" );
staffOne[ i].record =buf.readLine();
System. out .print("职位:" );
staffOne[ i].position =buf.readLine();
System. out .print("工资:" );
staffOne[ i].wanges =buf.readLine();
System. out .print("电话:" );
staffOne[ i].tel =buf.readLine();
System. out .print("住址:" );
staffOne[ i].addr =buf.readLine();