管理系统)"/>
单链表的实现((教职工管理系统)
单链表的实现((教职工管理系统)
package e_1;import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;/*** 数据结构-实验1* 利用链表实现一个简单的学校教职工信息管理系统:* (1)教职工信息包括工号、姓名、性别、职称、学位、职务、毕业学校和所学专业等;* (2)系统的主要功能包括:教职工信息的创建、输出教职工信息、查询教职工信息、增加教职工信息、删除教职工信息。*/
class Teach {String sno;//工号String name;//姓名String sex;//性别String tit;//职称String deg;//学位String pos;//职务String scho;//毕业学校String pro;//所学专业public Teach(String sno, String name, String sex, String tit, String deg,String pos, String scho, String pro) {super();this.sno = sno;this.name = name;this.sex = sex;this.tit = tit;this.deg = deg;this.pos = pos;this.scho = scho;this.pro = pro;}//为了显示方便,重写toString()方法public String toString(Teach t) {return t.sno + "," + t.name + "," + t.sex + "," + t.tit + ","+ t.deg + "," + t.pos + "," + t.scho + "," + t.pro;}
}/*** 链表节点*/
class Node {Teach tea; //data域Node next; //next域
}class Main {private static void menu() {System.out.println("-------------学校教职工信息管理系统-----------");System.out.println(" 1.查询教职工");System.out.println(" 2.显示所有教职工");System.out.println(" 3.增加教职工");System.out.println(" 4.删除教职工");System.out.println(" 5.修改教职工");System.out.println(" 6.导出教职工信息到文件");System.out.println(" 0.退出");System.out.println("----------------------------------------");}//入口public static void main(String[] args) {Node head = new Node();Node current = head; //现在的Scanner scn = new Scanner(System.in);String cmd = ""; //存放用户输入menu();do {System.out.print("\n-cdm-: 请输入你得选择:(0-6)> ");cmd = scn.nextLine(); //用户输入if (cmd.equals("1")) {System.out.print("> 请输入要查询的学号:");String sno = scn.nextLine();Node tmp = head.next; //从头指针head出发,指向链表的第一个结点付给tmpwhile (tmp != null && //遍历!tmp.tea.sno.equals(sno)) {tmp = tmp.next;}if (tmp != null) {Teach t = tmp.tea;System.out.println(t.toString(t));tmp = tmp.next;} else {System.out.println("error!! 查询失败!");//}} else if (cmd.equals("2")) {Node tmp = head.next;if (tmp == null) System.out.println("链表为空");//head.next == null表示链表为空while (tmp != null) {Teach t = tmp.tea;System.out.println(t.toString(t));tmp = tmp.next;}} else if (cmd.equals("3")) {System.out.print("> 请输入工号: ");String sno = scn.nextLine();System.out.print("> 请输入姓名: ");String name = scn.nextLine();System.out.print("> 请输入性别: ");String sex = scn.nextLine();System.out.print("> 请输入职称: ");String tit = scn.nextLine();System.out.print("> 请输入学位: ");String deg = scn.nextLine();System.out.print("> 请输入职务: ");String pos = scn.nextLine();System.out.print("> 请输入毕业学校: ");String scho = scn.nextLine();System.out.print("> 请输入专业: ");String pro = scn.nextLine();Teach t = new Teach(sno, name, sex, tit, deg, pos, scho, pro);Node node = new Node(); //初始化一个新的链表节点node.tea = t;current.next = node;current = node;System.out.println("添加成功!");} else if (cmd.equals("4")) {System.out.print("> 请输入要删除的工号:");String sno = scn.nextLine();Node pre = head; //头指针(前一个节点)Node tmp = head.next; //第一个节点(后一个节点,两个节点挨着)while (tmp != null &&!tmp.tea.sno.equals(sno)) {pre = tmp;tmp = tmp.next;}if (tmp != null) {pre.next = tmp.next;System.out.println("删除成功!");} else {System.out.println("error!! 删除失败!");//}} else if (cmd.equals("5")) {System.out.print(">> 请输入要修改的学号:");String sno = scn.nextLine();Node tmp = head.next;while (tmp != null &&!tmp.tea.sno.equals(sno)) {tmp = tmp.next;}if (tmp != null) {System.out.print("> 请输入姓名:");String name = scn.nextLine();System.out.print("> 请输入性别:");String sex = scn.nextLine();System.out.print("> 请输入职称:");String tit = scn.nextLine();System.out.print("> 请输入学位:");String deg = scn.nextLine();System.out.print("> 请输入职务:");String pos = scn.nextLine();System.out.print("> 请输入毕业学校:");String scho = scn.nextLine();System.out.print("> 请输入专业:");String pro = scn.nextLine();Teach t = tmp.tea; //初始化此时节点的数据t.name = name;t.sex = sex;t.tit = tit;t.deg = deg;t.pos = pos;t.scho = scho;t.pro = pro;System.out.println("修改成功!");} else {System.out.println(String.format("error: 修改失败!(Tips:找不到学号为:{%s} 的信息)", sno));//}} else if (cmd.equals("6")) {System.out.print("> 请输入保存路径:");String filepath = scn.nextLine();try {FileWriter fw = new FileWriter(filepath);Node tmp = head.next;while (tmp != null) {Teach s = tmp.tea;fw.write(s.sno + "\t" + s.name + "\t" + s.sex + "\t" + s.tit + "\t"+ s.deg + "\t" + s.pos + "\t" + s.scho + "\t" + s.pro + "\n");fw.flush();tmp = tmp.next;}fw.close();System.out.println("导出成功!");} catch (IOException e) {e.printStackTrace();}}} while (!cmd.equals("0"));System.out.println("退出成功!");scn.close();System.exit(0);}
}
更多推荐
单链表的实现((教职工管理系统)
发布评论