第一篇:人員信息管理系統(tǒng) java課程設(shè)計(jì)
大學(xué)人員信息管理系統(tǒng) / 29
目錄
目錄.......................................................................................................................................1 設(shè)計(jì)任務(wù)書...............................................................................................................................2 課程設(shè)計(jì)任務(wù)...........................................................................................................................2 程序功能實(shí)現(xiàn):.......................................................................................................................3 1.程序主體............................................................................................................................3 2.流程圖:............................................................................................................................4 3.模塊說明............................................................................................................................4 3.1、主菜單四個(gè)選項(xiàng)......................................................................................................4 3.2、教師功能菜單..........................................................................................................5 3.3、學(xué)生功能菜單..........................................................................................................5 3.4、查找菜單..................................................................................................................6 4.源代碼及說明.................................................................................................................6 4.1、listStuTea 類............................................................................................................6 4.2、Menu 類................................................................................................................10 4.3、StudnTeach 類.......................................................................................................16 4.4、Student 類.............................................................................................................19 4.5、Teacher 類.............................................................................................................19 4.6、Person 類...............................................................................................................20 4.7、lkExecption類........................................................................................................21 4.8、MainStuTea類........................................................................................................23 5.操作方法和測(cè)試結(jié)果......................................................................................................24 5.1.1、教師信息顯示.....................................................................................................24 5.1.2、教師信息添加.....................................................................................................24 5.1.3、教師信息刪除.....................................................................................................25 5.1.4、教師信息查找.....................................................................................................26 5.2、學(xué)生菜單實(shí)現(xiàn)........................................................................................................28 6.設(shè)計(jì)體會(huì)..........................................................................................................................28
Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29
設(shè)計(jì)任務(wù)書
問題描述:
編寫程序?qū)Υ髮W(xué)里的人員進(jìn)行管理。大學(xué)里的人員主要由學(xué)生、教師和在職進(jìn)修教師(既是學(xué)生又是教師)組成,各類人員均有姓名、電話和住址等信息,學(xué)生另有所屬專業(yè)信息,教師另有所在系部、授課信息及工資信息,在職進(jìn)修教師具備以上各類人員的信息。
要求:
1、設(shè)計(jì)Person類,保存各類人員均有的姓名、電話和住址等信息。
2、設(shè)計(jì)Student類或接口,繼承Person類,并添加所屬專業(yè)班級(jí)信息。
3、設(shè)計(jì)Teacher類接口,繼承Person類,并添加所在系部信息,授課信息及工資信息。
4、設(shè)計(jì)StudenTeacher類,繼承Student類接口和Teache類接口。其具備以上各類人員信息。
5、把創(chuàng)建的所有StudenTeacher對(duì)象按照其所屬系部依次組織在一個(gè)文件中方便查詢、修改、刪除及添加等操作。
6、對(duì)各類的對(duì)象進(jìn)行信息輸入操作,輸入信息包括該類對(duì)象的所有信息。
7、對(duì)各類的對(duì)象進(jìn)行輸出操作,顯示輸出該類對(duì)象的所有信息
課程設(shè)計(jì)任務(wù)及設(shè)計(jì)人
設(shè)計(jì)任務(wù):
大學(xué)人員信息管理系統(tǒng) 課程目的:
1、復(fù)習(xí)、鞏固Java語言的基礎(chǔ)知識(shí),進(jìn)一步加深對(duì)Java語言的理解和掌握;
2、課程設(shè)計(jì)為學(xué)生提供了一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐的機(jī)會(huì),將課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來,鍛煉學(xué)生的分析解決實(shí)際問題的能力。提高學(xué)生適應(yīng)實(shí)際,實(shí)踐編程的能力;
Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29
3、培養(yǎng)學(xué)生在項(xiàng)目開發(fā)中團(tuán)隊(duì)合作精神、創(chuàng)新意識(shí)及能力。
課程要求:
1、對(duì)系統(tǒng)進(jìn)行功能模塊分析、控制模塊分析正確,符合課題要求,實(shí)現(xiàn)相應(yīng)功能;可以加以其他功能或修飾,使程序更加完善、合理;
2、系統(tǒng)設(shè)計(jì)要實(shí)用,編程簡(jiǎn)練,可用,功能全面
3、說明書、流程圖要清楚
4、記錄設(shè)計(jì)情況(備查,也為編寫設(shè)計(jì)說明書作好準(zhǔn)備);
5、要求采用模塊化程序設(shè)計(jì)方法,及鋸齒型書寫格式,要求上機(jī)調(diào)試通過和按設(shè)計(jì)報(bào)告格式。
6、本設(shè)計(jì)需要實(shí)現(xiàn)Java的面向?qū)ο箝_發(fā)運(yùn)用到的有Java的接口,Java的繼承,Java的異常處理,Java類的封裝。能夠在異常輸入的情況下,能正確處理。最后得到正確結(jié)果。
程序功能實(shí)現(xiàn):一、二、三、四、五、六、按照課程的要求實(shí)現(xiàn)學(xué)生和教師的基本信息的錄入。把輸入的教師和學(xué)生信息顯示出來。
有姓名和專業(yè)兩種查找方式去分別把老師和學(xué)生的信息查找并且顯示出來。刪除選項(xiàng)可以刪除相應(yīng)學(xué)生和老師信息。
用switch語句實(shí)現(xiàn)菜單功能,字符界面做到簡(jiǎn)潔清晰
異常處理處理錯(cuò)誤的輸入并且返回錯(cuò)誤的提示,更正后填入正確數(shù)據(jù)。
1.程序主體
1、設(shè)計(jì)分析:
1.1、實(shí)體是實(shí)現(xiàn)程序思想的主要方式,首先應(yīng)該分為學(xué)生和老師2個(gè)入口,分別做查詢和信息添加、顯示、刪除和查找的功能。
1.2、學(xué)生和老師的信息輸入考慮要求多名信息考慮用對(duì)象數(shù)組去實(shí)現(xiàn)。但是對(duì)象數(shù)組的刪除不是本學(xué)期的內(nèi)容。且排序麻煩。考慮用其他方式實(shí)現(xiàn)信息錄入,查閱相關(guān)信息發(fā)現(xiàn)可以使用list對(duì)象實(shí)現(xiàn)信息錄入和刪除。
1.3、菜單使用switch語句實(shí)現(xiàn)菜單功能,菜單的相互調(diào)用實(shí)現(xiàn)功能的循環(huán)。
Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29
2.流程圖:
3.模塊說明
3.1、主菜單四個(gè)選項(xiàng)
學(xué)生入口:
Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29
這個(gè)模塊與學(xué)生功能模塊相連。
教師入口:
這個(gè)模塊與教師功能模塊相連
顯示全部信息:
這個(gè)模塊顯示所有的老師和學(xué)生信息
3.2、教師功能菜單
顯示教師信息:
這個(gè)模塊顯示輸入的教師信息,如果不存在提示輸入信息
添加教師信息:
這個(gè)模塊添加教師基本信息
刪除教師信息:
這個(gè)模塊按照序號(hào)刪除教師信息,如果不存在提示信息輸入
查找教師信息:
按照姓名和專業(yè)查找教師信息
返回上一級(jí)菜單: 返回主菜單
3.3、學(xué)生功能菜單
顯示學(xué)生信息:
這個(gè)模塊顯示輸入的教師信息,如果不存在提示輸入信息
添加學(xué)生信息:
這個(gè)模塊添加教師基本信息
刪除學(xué)生信息:
這個(gè)模塊按照序號(hào)刪除教師信息,如果不存在提示信息輸入
查找學(xué)生信息:
按照姓名和專業(yè)查找學(xué)生信息
返回上一級(jí)菜單: 返回主菜單
Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29
3.4、查找菜單
按照姓名查找:
查找模塊,按照姓名查找,如果不存在則提示輸入信息。按照專業(yè)查找:
查找模塊,按照專業(yè)查找,如果不存在則提示輸入信息。
返回上一級(jí)菜單: 返回主菜單
4.源代碼及說明
4.1、listStuTea 類
用來實(shí)現(xiàn)學(xué)生和教師數(shù)據(jù)添加、刪除、查找的方法
import java.util.*;import lkExecption.LKExecption;public class listStuTea extends StudnTeach{
final int SIZE = 50;//最大學(xué)生和教師人數(shù)
listStuTea[] st = new listStuTea[SIZE];//學(xué)生和老師對(duì)象數(shù)組 Scanner into = new Scanner(System.in);List
} public void FindStuName(){
} public void FindTeaName(){
String tpname;boolean zy = true;StudnTeach point;System.out.println(“請(qǐng)輸入教師姓名:”);tpname = into.nextLine();for(int i = 0;i } point =list1.get(i);if(tpname.equals(point.name)){ } //break;System.out.println(“要查找的姓名存在”);{ showTea(i,point);zy = false;//標(biāo)志位 } String tpname;boolean zy = true;StudnTeach point;System.out.println(“請(qǐng)輸入學(xué)生姓名:”);tpname = into.nextLine();for(int i = 0;i } if(zy)System.out.println(“沒有該學(xué)生”);if(getStuNumber()==0)System.out.println(“警告!!學(xué)生數(shù)據(jù)為空請(qǐng)?zhí)砑訑?shù)據(jù)”);point =list2.get(i);if(tpname.equals(point.name)){ } System.out.println(“要查找的姓名存在”);showStu(i,point);zy = false;Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 if(zy)System.out.println(“沒有該老師”);if(getTeaNumber()==0)System.out.println(“警告!!老師數(shù)據(jù)為空請(qǐng)?zhí)砑訑?shù)據(jù)”); } { public void FindteaSpec()String tpSpec;boolean zy = true;StudnTeach point;System.out.println(“請(qǐng)輸入教師專業(yè):”);tpSpec = into.nextLine();for(int i = 0;i } if(zy)System.out.println(“沒有該專業(yè)的老師”);if(getTeaNumber()==0)System.out.println(“警告!!老師數(shù)據(jù)為空請(qǐng)?zhí)砑訑?shù)據(jù)”);point =list1.get(i);if(tpSpec.equals(point.getteaSpeciality())){ showTea(i,point);zy = false;//標(biāo)志位 } } { public void FindstuSpec()String tpStu;boolean zy = true;StudnTeach point;System.out.println(“請(qǐng)輸入學(xué)生專業(yè):”);tpStu = into.nextLine();for(int i = 0;i } if(zy)System.out.println(“沒有選修該專業(yè)的學(xué)生”);point =list2.get(i);if(tpStu.equals(point.getstuSpeciality())){ showStu(i,point);zy = false;//標(biāo)志位 } Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 if(getStuNumber()==0)System.out.println(“警告!!學(xué)生數(shù)據(jù)為空請(qǐng)?zhí)砑訑?shù)據(jù)”);} public void showStu(int n,StudnTeach point){ point=list2.get(n);System.out.println(“學(xué)生編號(hào):”+n); System.out.println(“姓名:”+point.name+“ 性別:”+point.sex+“ 年齡:”+point.age); System.out.println(“電話:”+point.phone);System.out.println(“地址:”+point.address);System.out.println(“專業(yè):”+point.getstuSpeciality());System.out.println(“班級(jí):”+point.getClassname());} public void showTea(int n,StudnTeach point){ point=list1.get(n);System.out.println(“教師編號(hào):”+n); System.out.println(“姓名:”+point.name+“ 性別:”+point.sex+“ 年齡:”+point.age); System.out.println(“電話:”+point.phone);System.out.println(“地址:”+point.address);System.out.println(“專業(yè):”+point.getteaSpeciality());System.out.println(“工資:”+point.getPay());} public void addstu(int n)throws LKExecption { st[n] = new listStuTea();st[n].add();st[n].setClassname();st[n].setstuSpeciality();list2.add(st[n]);if(list2.size()!=0)System.out.println(“添加學(xué)生成功”); } public void addtea(int n)throws LKExecption { st[n] = new listStuTea();st[n].add();st[n].setteaSpeciality();Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 } st[n].setPay();list1.add(st[n]);if(list1.size()!=0)System.out.println(“添加教師成功”); } public void delTea(){ } public void delStu(){ } System.out.println(“請(qǐng)輸入被刪的學(xué)生編號(hào)”);int k =into.nextInt();if(list2.size()<=k||k<0)System.out.println(“刪除失敗!編號(hào)不存在請(qǐng)重新輸入!”);else { list2.remove(k);System.out.println(“刪除成功”);} System.out.println(“請(qǐng)輸入被刪的教師編號(hào)”);int k =into.nextInt();if(list1.size()<=k||k<0)System.out.println(“刪除失敗!編號(hào)不存在請(qǐng)重新輸入!”);else { list1.remove(k);System.out.println(“刪除成功”);} 4.2、Menu 類 字符菜單的實(shí)現(xiàn) import java.util.*;import lkExecption.LKExecption;public class Menu { Scanner into = new Scanner(System.in);int num = 0;List list=new ArrayList / 29 StudnTeach point = new listStuTea();//遍歷指針 public Menu()throws LKExecption{ } public int setIn(){ } void MainMenu()throws LKExecption//主菜單 { System.out.println(“================”);System.out.println(“1.教師入口”);System.out.println(“2.學(xué)生入口”);System.out.println(“3.顯示全部信息”);System.out.println(“4.退出管理”);switchMainMenu();} void FindMenu()//查找菜單 { } void MenuTea1_1()throws LKExecption//老師菜單 { System.out.println(“----------------”);System.out.println(“1.顯示教師信息”);System.out.println(“2.添加教師信息”);System.out.println(“3.刪除教師信息”);System.out.println(“4.查找教師信息”);System.out.println(“5.返回上一級(jí)菜單”);System.out.println(“----------------”);System.out.println(“1.按照姓名查找”);System.out.println(“2.按照專業(yè)查找”);System.out.println(“3.返回上一級(jí)菜單”);//switchMainMenu();int t;String tpNum = null;try{ } catch(NumberFormatException e){ } return t;t = new LKExecption().Num1Execption(tpNum);System.out.println(“請(qǐng)輸入選項(xiàng)”);tpNum = into.nextLine();t = Integer.parseInt(tpNum);MainMenu();Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 } switchMenuTea1_1();void MenuStu1_1()throws LKExecption//學(xué)生菜單 { } void switchFindStuMenu()throws LKExecption//查找學(xué)生菜單 { } void switchFindTeaMenu()throws LKExecption//查找教師菜單 { int t;t = setIn();switch(t){ case 1: int t;t = setIn();switch(t){ case 1: } point.FindStuName();FindMenu();switchFindStuMenu();break;point.FindstuSpec();FindMenu();switchFindStuMenu();break;MenuStu1_1();switchMenuStu1_1();break;System.out.println(“輸入錯(cuò)誤請(qǐng)重新輸入”);switchFindStuMenu();System.out.println(“----------------”);System.out.println(“1.顯示學(xué)生信息”);System.out.println(“2.添加學(xué)生信息”);System.out.println(“3.刪除學(xué)生信息”);System.out.println(“4.查找學(xué)生信息”);System.out.println(“5.返回上一級(jí)菜單”);switchMenuStu1_1();case 2: case 3: default: Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 } void switchMainMenu()throws LKExecption//主菜單 { int t;t = setIn();switch(t){ case 1: MenuTea1_1();//老師顯示菜單 break;MenuStu1_1();//學(xué)生顯示菜單 break;if(point.getNumber()==0)System.out.println(“警告!!數(shù)據(jù)為空請(qǐng)?zhí)砑訑?shù)據(jù)”);else{ } for(int i = 0;i point.showTea(i,point);point.showStu(i,point);for(int i = 0;i } point.FindteaSpec();FindMenu();switchFindTeaMenu();break;MenuTea1_1();switchMenuTea1_1();break;System.out.println(“輸入錯(cuò)誤請(qǐng)重新輸入”);switchFindTeaMenu(); point.FindTeaName();FindMenu();switchFindTeaMenu();break;case 2: case 3: default: case 2: case 3: Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 } } MainMenu();break;System.out.println(“歡迎再次光臨!大學(xué)人員信息管理系統(tǒng)!”);break;System.out.println(“輸入錯(cuò)誤請(qǐng)重新輸入”);switchMainMenu();case 4: default: void switchMenuTea1_1()throws LKExecption { System.out.println(“----------------”);int t;t = setIn();switch(t){ case 1: if(point.getTeaNumber()==0)System.out.println(“警告!!教師數(shù)據(jù)為空請(qǐng)?zhí)砑訑?shù)據(jù)”);for(int i = 0;i FindMenu();switchFindTeaMenu();break;MainMenu();break;case 2: case 3: case 4: case 5: Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 } } default: } System.out.println(“輸入錯(cuò)誤請(qǐng)重新輸入”);switchMenuTea1_1();void switchMenuStu1_1()throws LKExecption { } System.out.println(“----------------”);int t;t = setIn();switch(t){ case 1: } if(point.getStuNumber()==0)System.out.println(“警告!!學(xué)生數(shù)據(jù)為空請(qǐng)?zhí)砑訑?shù)據(jù)”);for(int i = 0;i Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 4.3、StudnTeach 類 繼承于教師和學(xué)生接口實(shí)現(xiàn)它們抽象方法,且繼承人類屬性。 import java.util.*; import lkExecption.LKExecption;class StudnTeach extends Person implements Student,Teacher{ Scanner into = new Scanner(System.in);float pay = 0;//工資 String classname = null;//班級(jí) String stuSpec = null;//老師專業(yè) String teaSpec = null;//學(xué)生專業(yè) void add()throws LKExecption { } public void addstu(int n)throws LKExecption{ } public void addtea(int n)throws LKExecption{ } public void setPay(){ String tpNum = null;try{ //add(); //setteaSpeciality();//setPay();//add(); //setClassname();//setstuSpeciality();setName();setSex();setAge();setPhone();System.out.println(“請(qǐng)輸入地址”);address = into.nextLine(); Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 } } System.out.println(“請(qǐng)輸入工資:”);tpNum = into.nextLine();pay = Integer.parseInt(tpNum);catch(NumberFormatException e){ } pay = new LKExecption().Num1Execption(tpNum);public float getPay(){ } public void setClassname(){ } public String getClassname(){ } public void setstuSpeciality(){ } public String getstuSpeciality(){ } return stuSpec; System.out.println(“請(qǐng)輸入專業(yè):”);stuSpec = into.nextLine(); return classname; System.out.println(“請(qǐng)輸入班級(jí):”);classname = into.nextLine(); return pay;Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) public void setteaSpeciality(){ System.out.println(“請(qǐng)輸入專業(yè):”); teaSpec = into.nextLine(); } public String getteaSpeciality(){ return teaSpec;} public void show(boolean b, int num, StudnTeach point){ } public void showStu(int num, StudnTeach point){ } public void showTea(int num, StudnTeach point){ } public int getStuNumber(){ return 0;} public int getTeaNumber(){ return 0;} public int getNumber(){ return 0;} public void delStu(){ } Java程序設(shè)計(jì) / 29 大學(xué)人員信息管理系統(tǒng) / 29 } public void FindteaSpec(){ } public void FindTeaName(){ } public void FindstuSpec(){ } public void FindStuName(){ } public void delTea(){ } 4.4、Student 類 接口、學(xué)生的抽象方法 public interface Student { } abstract void setstuSpeciality();abstract String getstuSpeciality();abstract void setClassname();abstract String getClassname(); 4.5、Teacher 類 接口、教師的抽象方法 public interface Teacher { Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 } abstract void setteaSpeciality();abstract String getteaSpeciality();abstract void setPay();abstract float getPay(); 4.6、Person 類 定義人類的基本屬性 import java.util.*;import lkExecption.LKExecption;public class Person { Scanner into = new Scanner(System.in);String name;int phone;String address;String sex;int age;public void setName(){ } public void setSex()throws LKExecption { } public void setAge(){ String tpAge = null;try{ System.out.println(“請(qǐng)輸入性別:”);sex = into.nextLine();if(sex.equals(“man”)||sex.equals(“woman”)){} else } catch(LKExecption lk){ } sex = new LKExecption().sexExecption(sex);throw new LKExecption();System.out.println(“請(qǐng)輸入姓名:”);name = into.nextLine();Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 } } try{ } catch(NumberFormatException e){ } age = new LKExecption().NumExecption(tpAge);System.out.println(“請(qǐng)輸入年齡:”);tpAge = into.nextLine();age = Integer.parseInt(tpAge);public void setPhone(){ } String tpNum = null;try{ } catch(NumberFormatException e){ } phone = new LKExecption().Num1Execption(tpNum);System.out.println(“請(qǐng)輸入電話號(hào)碼:”);tpNum = into.nextLine();phone = Integer.parseInt(tpNum); 4.7、lkExecption類 自定義異常類 package lkExecption;import java.util.Scanner;public class LKExecption extends Exception { Scanner into = new Scanner(System.in);public String sexExecption(String mg){ String str;boolean pd = true;do{ System.out.println(mg+“ 不是正確的性別,正確的性別為 man 或者 woman”);str = into.next();Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 } //System.out.println(mg+“ 驗(yàn)證”); if(str.equals(“man”)||str.equals(“woman”)){ } }while(pd);return str;pd = false;public int NumExecption(String mg){ String num = null;int tpNum = 0;boolean pd = true;System.out.println(mg+“ 請(qǐng)正確的數(shù)字或者不在范圍內(nèi)!請(qǐng)重新輸入!”);do{ try{ } catch(NumberFormatException e){ System.out.println(num+“ 請(qǐng)正確的數(shù)字或者不在范圍內(nèi)!請(qǐng)重新輸num = into.nextLine();tpNum = Integer.parseInt(num);if(tpNum>120||tpNum<0)//范圍判斷 throw new NumberFormatException();else pd = false;入!”); } } public String charExecption(String mg){ final String[] str={“null”};//這里指定 規(guī)定字段 boolean pd = true;do{ System.out.println(mg+“ 不是正確字段,請(qǐng)輸入指定的字段”);mg = into.next();for(int i =0;i / 29 } } } }while(pd);return mg;public int Num1Execption(String mg){ } String num;int tpNum = 0;System.out.println(mg+“ 不是數(shù)字!請(qǐng)輸入數(shù)字!”);do{ try{ } catch(NumberFormatException e){ System.out.println(mg+“ 不是數(shù)字!請(qǐng)輸入數(shù)字!”);} num = into.nextLine();tpNum = Integer.parseInt(num);break;}while(true);return tpNum;4.8、MainStuTea類 主函數(shù)調(diào)用 import lkExecption.LKExecption;public class MainStuTea { } public static void main(String[] args)throws LKExecption { Menu lk = new Menu();} Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 5.操作方法和測(cè)試結(jié)果 5.1.1、教師信息顯示 選擇一進(jìn)入教師信息入口 選擇一進(jìn)入教師信息查看 因?yàn)槲覀儧]有添加教師信息,所以他要求我們添加教師信息 5.1.2、教師信息添加 選擇二進(jìn)入教師信息添加 Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 教師信息添加成功,如果不是指定字段輸入,出現(xiàn)異常則重新輸入 如下為添加的信息輸入顯示 5.1.3、教師信息刪除 Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 5.1.4、教師信息查找 專業(yè)查找 現(xiàn)在添加三個(gè)教師信息,如下顯示 首先使用專業(yè)查找,我們查找computer專業(yè)的 Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 查找其他math專業(yè) 查找不存在的專業(yè) 姓名查找 再添加一個(gè)同名的教師 查找lisi Java程序設(shè)計(jì) 大學(xué)人員信息管理系統(tǒng) / 29 5.2、學(xué)生菜單實(shí)現(xiàn) 學(xué)生信息采取同樣測(cè)試 6.設(shè)計(jì)體會(huì) 這個(gè)課程設(shè)計(jì)可以的設(shè)計(jì)心得,可謂十分波折。全部的源代碼都出自自己,其中的list排列我們還沒有學(xué)習(xí)。在這里要感謝google感謝baidu。沒有他們就沒有今天的代碼。當(dāng)然網(wǎng)上只有相似的課題沒有相同的代碼,list排列經(jīng)過自己一小時(shí)的摸索可以了解了部分的運(yùn)用,首先寫了一個(gè)test類來測(cè)試這個(gè)用法 import java.util.ArrayList;import java.util.LinkedList;import java.util.Iterator;import java.util.List;import java.util.Scanner; public class test { public static void main(String[] args){ System.out.println(“開始:”);String a = “A”, b = “B”, c = “C”, d = “D”, e = “E”;List / 29 list.set(1, b);// 將索引位置為1的對(duì)象e修改為對(duì)象b list.add(2, c);// 將對(duì)象c添加到索引位置為2的位置 list.add(e);list.remove(1);Iterator System.out.println(“結(jié)束!”);} } 再想了一下把它添加進(jìn)了listStuTea對(duì)象,全都的代碼完成用了一天的時(shí)間,在原來想起寫500多行的代碼幾乎是不可能的,但是在這個(gè)課程設(shè)計(jì)中實(shí)現(xiàn)了。這個(gè)課程設(shè)計(jì)真的使自己學(xué)到了很多的東西。在接口的使用還不是很好的和實(shí)際模型很多的結(jié)合起來,這是鍛煉較少的原因,前期的分析也幼稚的表現(xiàn)了自己在這方面的不足,在層次結(jié)構(gòu)上浪費(fèi)了較多的時(shí)間。總之在這方面的鍛煉還是比較少,我想不管是在以后布置下來的課程設(shè)計(jì)才去編寫代碼,這是不可行的,得在平時(shí)多多鍛煉。 Java程序設(shè)計(jì) JAVA員工管理系統(tǒng) 實(shí)驗(yàn)報(bào)告 姓名:張旭冉 學(xué)號(hào):10105010117 班級(jí):信10-1 北方工業(yè)大學(xué)理學(xué)院信息與計(jì)算科學(xué)系 2013年 12月 17日 員工管理系統(tǒng)一、實(shí)驗(yàn)?zāi)康?/p> 通過該課程設(shè)計(jì),使同學(xué)們進(jìn)一步理解概JAVA的基本概念、理論和方法,初步掌握J(rèn)DK、Eclipse的調(diào)試和應(yīng)用,以及程序中錯(cuò)誤的解決方法,明確JAVA在實(shí)際程序設(shè)計(jì)中的應(yīng)用。使課堂中學(xué)習(xí)到理論得到應(yīng)用,練習(xí)文件形式在JAVA程序設(shè)計(jì)中的應(yīng)用。 二、實(shí)驗(yàn)內(nèi)容 A.設(shè)計(jì)題目:?jiǎn)T工管理系統(tǒng) 設(shè)計(jì)要求:(1)完成員工信息的添加、刪除、查詢、修改功能 (2)使用用戶界面操作 (3)使用文件形式完成 設(shè)計(jì)思路:首先設(shè)計(jì)界面進(jìn)入面板,在面板中添加菜單選項(xiàng),并將要實(shí)現(xiàn)的功能選項(xiàng)添加其中,然后對(duì)這些選項(xiàng)實(shí)施監(jiān)聽,實(shí)現(xiàn)其功能。通過文件類型知識(shí)的應(yīng)用,實(shí)現(xiàn)對(duì)員工信息的管理。B.概要設(shè)計(jì) 面板設(shè)計(jì):首先設(shè)計(jì)一個(gè)容器,然后再容器中添加菜單,在菜單中添加選項(xiàng),并在容器中加入面板,面板布局設(shè)置為CardLayout,最后將面板添加進(jìn)容器。 功能實(shí)現(xiàn):在錄入、查詢、修改和刪除界面中使用JButton、JLabel、ButtonGroup、JRadioButton、JTextField、Choice為界面中加入相應(yīng)的組件,并對(duì)其進(jìn)行監(jiān)聽,同時(shí)附加了文件流的處理。C.詳細(xì)設(shè)計(jì) 1、定義員工類: public class Employee implements java.io.Serializable { String number,name,discipling,grade,borth,sex;public Employee(){ } public void setNumber(String number){ this.number=number;} public String getNumber(){ return number; } public void setName(String name){ this.name=name;} public String getName(){ return name;} public void setDiscipling(String discipling){ this.discipling=discipling;} public String getDisciping(){ return discipling;} public void setGrade(String grade){ this.grade=grade;} public String getGrade(){ return grade;} public void setBorth(String borth){ this.borth=borth;} public String getBorth(){ return borth;} public void setSex(String sex){ this.sex=sex;} public String getSex(){ return sex;}} 2、主程序: import java.awt.*; import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.Hashtable;public class EmployeeManager extends JFrame implements ActionListener { EmployeeSituation 基本信息錄入=null;ModifySituation 基本信息修改=null;Inquest 基本信息查詢=null;Delete 基本信息刪除=null;JMenuBar bar;JMenu fileMenu;JMenuItem 錄入,修改,查詢,刪除;Container con=null;Hashtable 基本信息=null;File file=null;CardLayout card=null;JLabel label=null;JPanel pCenter;public EmployeeManager(){ 錄入=new JMenuItem(“錄入員工基本信息”);修改=new JMenuItem(“修改員工基本信息”);查詢=new JMenuItem(“查詢員工基本信息”);刪除=new JMenuItem(“刪除員工基本信息”);bar=new JMenuBar();fileMenu=new JMenu(“菜單選項(xiàng)”);fileMenu.add(錄入);fileMenu.add(修改);fileMenu.add(查詢);fileMenu.add(刪除);bar.add(fileMenu);setJMenuBar(bar);label=new JLabel(“歡迎進(jìn)入員工信息管理系統(tǒng)”,JLabel.CENTER);label.setFont(new Font(“SansSerif”,Font.BOLD+Font.ITALIC,25));label.setForeground(Color.red);基本信息=new Hashtable();錄入.addActionListener(this);修改.addActionListener(this);查詢.addActionListener(this);刪除.addActionListener(this);card=new CardLayout();con=getContentPane();pCenter=new JPanel(); pCenter.setLayout(card);pCenter.setBackground(Color.yellow);file=new File(“基本信息.txt”);if(!file.exists()){ try { FileOutputStream out=new FileOutputStream(file);ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(基本信息); objectOut.close(); out.close(); } catch(IOException e) { } } 基本信息錄入=new EmployeeSituation(file);基本信息修改=new ModifySituation(file);基本信息查詢=new Inquest(this,file);基本信息刪除=new Delete(file);pCenter.add(“歡迎語界面”,label);pCenter.add(“錄入界面”,基本信息錄入);pCenter.add(“修改界面”,基本信息修改);pCenter.add(“刪除界面”,基本信息刪除);con.add(pCenter,BorderLayout.CENTER);con.validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});setVisible(true);setBounds(100,50,420,380);validate();} public void actionPerformed(ActionEvent e){ if(e.getSource()==錄入){ card.show(pCenter,“錄入界面”);} else if(e.getSource()==修改) { card.show(pCenter,“修改界面”);} else if(e.getSource()==查詢){ 基本信息查詢.setVisible(true);} else if(e.getSource()==刪除){ card.show(pCenter,“刪除界面”);} } public static void main(String args[]){ new EmployeeManager();}} 3、實(shí)現(xiàn)員工信息的錄入: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class EmployeeSituation extends JPanel implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號(hào),姓名,工資;Choice 部門;JRadioButton 男,女;Employee 員工=null;ButtonGroup group=null;JButton 錄入,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public EmployeeSituation(File file){ this.file=file; 員工號(hào)=new JTextField(10); 姓名=new JTextField(10); 部門=new Choice();部門.add(“請(qǐng)選擇”);部門.add(“研發(fā)部”);部門.add(“銷售部”);部門.add(“人事部”);部門.add(“安全部”);工資=new JTextField(10);group=new ButtonGroup();男=new JRadioButton(“男”,true);女=new JRadioButton(“女”,false);group.add(男);group.add(女);錄入=new JButton(“錄入”);重置=new JButton(“重置”);錄入.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(new JLabel(“員工號(hào):”,JLabel.CENTER));box1.add(員工號(hào));Box box2=Box.createHorizontalBox();box2.add(new JLabel(“姓名:”,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(“性別:”,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(“部門:”,JLabel.CENTER));box4.add(部門);Box box6=Box.createHorizontalBox();box6.add(new JLabel(“ ”,JLabel.CENTER));Box box5=Box.createHorizontalBox();box5.add(new JLabel(“工資:”,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH); pCenter.setBackground(Color.yellow); setLayout(new BorderLayout()); add(pCenter,BorderLayout.CENTER); JPanel pSouth=new JPanel(); pSouth.add(錄入); pSouth.add(重置); pSouth.setBackground(Color.yellow); add(pSouth,BorderLayout.SOUTH); validate(); } public void actionPerformed(ActionEvent e){ if(e.getSource()==錄入){ String number=“";number=員工號(hào).getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ String warning=”該員工基本信息已存在,請(qǐng)到修改頁面修改!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);} else { String m=”基本信息將被錄入!“;int ok=JOptionPane.showConfirmDialog(this,m,”確認(rèn)“,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ String name=姓名.getText(); String discipling=部門.getSelectedItem();String grade=工資.getText();String sex=null;if(男.isSelected()){ sex=男.getText();} else { sex=女.getText();} 員工=new Employee();員工.setNumber(number);員工.setName(name);員工.setDiscipling(discipling);員工.setGrade(grade);員工.setSex(sex);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne); 基本信息表.put(number,員工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close(); 員工號(hào).setText(null); 姓名.setText(null); 工資.setText(null);} catch(Exception ee){ System.out.println(ee);}}}} else { String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}} if(e.getSource()==重置) { 員工號(hào).setText(null); 姓名.setText(null); 部門.remove(部門.getSelectedIndex()); 工資.setText(null);}}} 4、實(shí)現(xiàn)員工信息的修改: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class ModifySituation extends JPanel implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號(hào),姓名,工資;Choice 部門;JRadioButton 男,女;ButtonGroup group=null;JButton 開始修改,錄入修改,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public ModifySituation(File file) { this.file=file;員工號(hào)=new JTextField(10);姓名=new JTextField(10);部門=new Choice();部門.add(”請(qǐng)選擇“);部門.add(”研發(fā)部“);部門.add(”銷售部“);部門.add(”人事部“);部門.add(”安全部“);工資=new JTextField(10);group=new ButtonGroup();男=new JRadioButton(”男“,true);女=new JRadioButton(”女“,false);group.add(男);group.add(女);開始修改=new JButton(”開始修改“);錄入修改=new JButton(”錄入修改“);錄入修改.setEnabled(false);重置=new JButton(”重置“);員工號(hào).addActionListener(this);開始修改.addActionListener(this);錄入修改.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(new JLabel(”輸入要修改信息的員工號(hào):“,JLabel.CENTER));box1.add(員工號(hào));box1.add(開始修改);Box box2=Box.createHorizontalBox();box2.add(new JLabel(”姓名:“,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(”性別:“,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(”部門:“,JLabel.CENTER));box4.add(部門);Box box6=Box.createHorizontalBox();box6.add(new JLabel(” “,JLabel.CENTER));Box box5=Box.createHorizontalBox();box5.add(new JLabel(”工資:“,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox(); boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.yellow);setLayout(new BorderLayout());add(pCenter,BorderLayout.CENTER);JPanel pSouth=new JPanel();pSouth.add(錄入修改);pSouth.add(重置);pSouth.setBackground(Color.yellow);add(pSouth,BorderLayout.SOUTH);validate(); } public void actionPerformed(ActionEvent e){ if(e.getSource()==開始修改||e.getSource()==員工號(hào)) { String number=”“; number=員工號(hào).getText(); if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ 錄入修改.setEnabled(true);Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName());部門.getSelectedItem();工資.setText(stu.getGrade()); if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} } else { 錄入修改.setEnabled(false);String warning=”該員工號(hào)不存在!“;JOptionPane.showMessageDialog(this,warning,”警告 “,JOptionPane.WARNING_MESSAGE);員工號(hào).setText(null);姓名.setText(null);部門.remove(部門.getSelectedItem());工資.setText(null); } } else { 錄入修改.setEnabled(false);String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);員工號(hào).setText(null);姓名.setText(null);部門.remove(部門.getSelectedItem());工資.setText(null);} } else if(e.getSource()==錄入修改) { String number=”“; number=員工號(hào).getText(); if(number.length()>0) { try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close(); inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ String question=”該員工基本信息已存在,您想修改他(她)的基本信息嗎?“;JOptionPane.showMessageDialog(this,question,”警告“,JOptionPane.QUESTION_MESSAGE);String m=”基本信息將被修改!“;int ok=JOptionPane.showConfirmDialog(this,m,”確認(rèn)“,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ String name=姓名.getText();String discipling=部門.getSelectedItem();String grade=工資.getText();String sex=null;if(男.isSelected()){ sex=男.getText();} else { sex=女.getText();} Employee 員工=new Employee(); 員工.setNumber(number); 員工.setName(name); 員工.setDiscipling(discipling); 員工.setGrade(grade); 員工.setSex(sex);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);基本信息表.put(number,員工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close(); 員工號(hào).setText(null);姓名.setText(null);部門.remove(部門.getSelectedItem());工資.setText(null);} catch(Exception ee){ System.out.println(ee);} 錄入修改.setEnabled(false);} else if(ok==JOptionPane.NO_OPTION){ 錄入修改.setEnabled(true);} } else { String warning=”該員工號(hào)沒有基本信息,不能修改!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);錄入修改.setEnabled(false); } } else { String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告 “,JOptionPane.WARNING_MESSAGE); 錄入修改.setEnabled(false); } } if(e.getSource()==重置) { 員工號(hào).setText(null); 姓名.setText(null); 部門.remove(部門.getSelectedItem()); 工資.setText(null);}}} 5、實(shí)現(xiàn)員工信息的查詢: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Inquest extends JDialog implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號(hào),姓名,部門,工資;JRadioButton 男,女;JButton 查詢;ButtonGroup group=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;File file=null;public Inquest(JFrame f,File file){ super(f,”查詢對(duì)話框“,false); this.file=file; 員工號(hào)=new JTextField(10); 查詢=new JButton(”查詢“); 員工號(hào).addActionListener(this); 查詢.addActionListener(this);姓名=new JTextField(10);姓名.setEditable(false);部門=new JTextField(10);部門.setEditable(false);工資=new JTextField(10);工資.setEditable(false);男=new JRadioButton(”男“,false);女=new JRadioButton(”女“,false);group=new ButtonGroup();group.add(男);group.add(女);Box box1=Box.createHorizontalBox();box1.add(new JLabel(”輸入要查詢的員工號(hào):“,JLabel.CENTER));box1.add(員工號(hào));box1.add(查詢);Box box2=Box.createHorizontalBox();box2.add(new JLabel(”姓名:“,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(”性別:“,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(”部門:“,JLabel.CENTER));box4.add(部門);Box box5=Box.createHorizontalBox();box5.add(new JLabel(”工資:“,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.green);Container con=getContentPane();con.add(pCenter,BorderLayout.CENTER);con.validate();setVisible(false);setBounds(100,200,360,270); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ setVisible(false);} });} public void actionPerformed(ActionEvent e){ 姓名.setText(null);部門.setText(null);工資.setText(null);if(e.getSource()==查詢||e.getSource()==員工號(hào)){ String number=”“;number=員工號(hào).getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName());部門.setText(stu.getDisciping());工資.setText(stu.getGrade());if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} } else { String warning=”該員工號(hào)不存在!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}} else { String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}}}} 6、實(shí)現(xiàn)員工信息的刪除: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Delete extends JPanel implements ActionListener { Hashtable 基本信息表=null; JTextField 員工號(hào),姓名,部門,工資; JRadioButton 男,女; JButton 刪除; ButtonGroup group=null; FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File file=null; public Delete(File file) { this.file=file; 員工號(hào)=new JTextField(10); 刪除=new JButton(”刪除“); 員工號(hào).addActionListener(this); 刪除.addActionListener(this); 姓名=new JTextField(10); 姓名.setEditable(false); 部門=new JTextField(10); 部門.setEditable(false); 工資=new JTextField(10); 工資.setEditable(false); 男=new JRadioButton(”男“,false); 女=new JRadioButton(”女“,false); group=new ButtonGroup(); group.add(男); group.add(女); Box box1=Box.createHorizontalBox(); box1.add(new JLabel(”輸入要?jiǎng)h除的學(xué)號(hào):“,JLabel.CENTER)); box1.add(員工號(hào)); box1.add(刪除); Box box2=Box.createHorizontalBox(); box2.add(new JLabel(”姓名:“,JLabel.CENTER)); box2.add(姓名); Box box3=Box.createHorizontalBox(); box3.add(new JLabel(”性別:“,JLabel.CENTER)); box3.add(男); box3.add(女); Box box4=Box.createHorizontalBox(); box4.add(new JLabel(”部門:“,JLabel.CENTER)); box4.add(部門); Box box6=Box.createHorizontalBox(); box6.add(new JLabel(” “,JLabel.CENTER)); Box box5=Box.createHorizontalBox(); box5.add(new JLabel(”工資:“,JLabel.CENTER)); box5.add(工資); Box boxH=Box.createVerticalBox(); boxH.add(box1); boxH.add(box2); boxH.add(box3); boxH.add(box5); boxH.add(box6); boxH.add(box4); boxH.add(Box.createVerticalGlue()); JPanel pCenter=new JPanel(); pCenter.add(boxH); pCenter.setBackground(Color.yellow); setLayout(new BorderLayout()); add(pCenter,BorderLayout.CENTER); validate(); } public void actionPerformed(ActionEvent e) { if(e.getSource()==刪除||e.getSource()==員工號(hào)) { String number=”“; number=員工號(hào).getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ Employee stu=(Employee)基本信息表.get(number); 姓名.setText(stu.getName()); 部門.setText(stu.getDisciping()); 工資.setText(stu.getGrade());if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} String m=”確定要?jiǎng)h除該員工號(hào)及全部信息嗎?“;int ok=JOptionPane.showConfirmDialog(this,m,”確認(rèn) “,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ 基本信息表.remove(number);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();員工號(hào).setText(null);姓名.setText(null);部門.setText(null);工資.setText(null);} catch(Exception ee){ System.out.println(ee);} } else if(ok==JOptionPane.NO_OPTION){ 員工號(hào).setText(null);姓名.setText(null);部門.setText(null); 工資.setText(null);} } else { String warning=”該員工號(hào)不存在!“;JOptionPane.showMessageDialog(this,warning,”警告 “,JOptionPane.WARNING_MESSAGE);} } else { String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告",JOptionPane.WARNING_MESSAGE);}}}} 三、實(shí)驗(yàn)結(jié)果體會(huì) 本次JAVA課程設(shè)計(jì)我所編寫的程序是員工信息管理系統(tǒng),程序中實(shí)現(xiàn)了對(duì)員工信息的添加、查詢、修改、刪除的功能,我是應(yīng)用文件的形式完成的,其中還應(yīng)用到了圖形用戶界面。我設(shè)計(jì)的程序簡(jiǎn)單易懂,操作簡(jiǎn)單,且 適用于不同的單位使用,只需按照自己的需要將所要錄入的信息名稱做添加或修改就可以實(shí)現(xiàn)。通過這次JAVA的程序設(shè)計(jì),使我對(duì)JAVA有了更加深入的了解,鞏固了我對(duì)JAVA基礎(chǔ)知識(shí)的掌握。 沈陽理工大學(xué)課程設(shè)計(jì) 沈陽理工大學(xué)課程設(shè)計(jì) 摘要 Java語言是當(dāng)前最為流行的程序設(shè)計(jì)語言之一,諸多優(yōu)秀的的特性使其成為被業(yè)界廣泛認(rèn)可和采用的工具。本設(shè)計(jì)可以幫助同學(xué)掌握和應(yīng)運(yùn)所學(xué)的面向?qū)ο蟪绦蛟O(shè)計(jì)學(xué)生學(xué)籍信息管理系統(tǒng)的編程內(nèi)容,培養(yǎng)同學(xué)們建立對(duì)象模型,處理對(duì)象和對(duì)象集關(guān)系和對(duì)圖形用回界面設(shè)計(jì)編程以及文件和流的編程問題的能力,訓(xùn)練同學(xué)為解決實(shí)際問題而創(chuàng)建較完整的簡(jiǎn)單面向?qū)ο蠛凸芾硐到y(tǒng)編程應(yīng)運(yùn)程序的獨(dú)立編程能力.本設(shè)計(jì)是一個(gè)常見的學(xué)生學(xué)籍管理系統(tǒng)應(yīng)運(yùn)程序.系統(tǒng)實(shí)現(xiàn)的功能: 界面操作實(shí)現(xiàn)學(xué)生學(xué)籍信息的添加、刪除、查詢、修改功能,在文本文件中的的信息的動(dòng)態(tài)處理。 關(guān)鍵詞: 學(xué)生學(xué)籍管理系統(tǒng);圖形用戶界面設(shè)計(jì);文件和流;java I 沈陽理工大學(xué)課程設(shè)計(jì) 目 錄 一、課程設(shè)計(jì)的目的與意義..........................................................................................1 1.目的..........................................................1 2.意義..........................................................1 二、需求分析..........................................................................................................................1 1.學(xué)生學(xué)籍管理系統(tǒng)主界面模塊................................1 2.錄入學(xué)生基本信息模塊......................................1 3.修改學(xué)生基本信息模板......................................1 3.查詢學(xué)生基本信息模板......................................1 4.刪除學(xué)生基本信息模板......................................1 三、分案設(shè)計(jì)..........................................................................................................................3 1.定義四個(gè)Panel面板......................................3 四、方案的實(shí)施......................................................................................................3 五、心得體會(huì).........................................................................................................15 六、參考文獻(xiàn).........................................................................................................16 II 沈陽理工大學(xué)課程設(shè)計(jì) 一、課程設(shè)計(jì)的目的與意義 目的:深入理解java語言的語法規(guī)則及其優(yōu)勢(shì),掌握類與方法的構(gòu)造方法,掌 握基于java的各種操作的實(shí)現(xiàn)方法,訓(xùn)練對(duì)基礎(chǔ)知識(shí)和基本方法的綜合運(yùn)用能力,增強(qiáng)對(duì)算法的理解能力,提高軟件設(shè)計(jì)能力。在實(shí)踐中培養(yǎng)獨(dú)立分析問題和解決問題的作風(fēng)和能力。 意義:熟練運(yùn)用java語言、基本構(gòu)造方法和算法的基礎(chǔ)知識(shí),獨(dú)立編制一個(gè)具有中等難度的、解決實(shí)際應(yīng)用問題的應(yīng)用程序。通過題意分析、選擇類結(jié)構(gòu)、算法設(shè)計(jì)、編制程序、調(diào)試程序、軟件測(cè)試、結(jié)果分析、撰寫課程設(shè)計(jì)報(bào)告等環(huán)節(jié)完成軟件設(shè)計(jì)的全過程,不斷地完善程序以提高程序的性能。 二、需求分析 該學(xué)生學(xué)籍管理系統(tǒng)的所有功能均在一個(gè)Frame窗體中實(shí)現(xiàn)。1.學(xué)生學(xué)籍管理系統(tǒng)主界面模塊: 采用Frame窗體來設(shè)置歡迎界面包括背景圖片及字幕(可以設(shè)計(jì)成滾動(dòng)字幕效果),左上方的菜單條設(shè)計(jì)成下拉式。包括“錄入學(xué)生基本信息”、“修改學(xué)生基本信息”、“刪除學(xué)生基本信息”、“查詢學(xué)生基本信息”和“退出系統(tǒng)”五項(xiàng)菜單項(xiàng)。2.錄入學(xué)生基本信息模塊: 采用Panel面板來設(shè)置該部分內(nèi)容信息并采用方位布局(邊緣布局)和Box輕量級(jí)組件來設(shè)置“學(xué)號(hào)”、“姓名”、“性別”、“專業(yè)”、“年級(jí)”、“出生”,并在該面板中添加了“錄入”和“重置”兩個(gè)按鈕進(jìn)行監(jiān)聽,最后將該面板加入到Frame窗體中去。3.修改學(xué)生基本信息模板: 采用Panel面板來設(shè)置該部分內(nèi)容信息,同樣是采用方位布局及Box組件來設(shè)置相關(guān)信息,并在學(xué)號(hào)旁設(shè)置了“開始修改”按鈕。在面板南部方位添加了“確定修改”和“重置”兩按鈕進(jìn)行監(jiān)聽。4.查詢學(xué)生基本信息模板: 采用Panel面板來設(shè)置該部分內(nèi)容信息,并將該面板加入到主窗體中去,采用邊緣布局進(jìn)行方位設(shè)置,在上方加入“查詢”按鈕進(jìn)行監(jiān)聽。 5.刪除學(xué)生基本信息模板: 也是采用Panel面板進(jìn)行設(shè)置相關(guān)內(nèi)容,并用邊緣布局進(jìn)行布局,并在上方添加“確定”按鈕,在下方添加“確定刪除”按鈕實(shí)現(xiàn)監(jiān)聽。 三、模塊設(shè)計(jì) 定義四個(gè)Panel面板 1.定義Reg(錄入學(xué)生基本信息)面板 采用BorderLayout(構(gòu)造一個(gè)組件之間沒有間距的新邊界布)和Box輕量級(jí)組件進(jìn)行布局,在面板的Nother方位添加一個(gè)“錄入學(xué)生基本信息”的標(biāo)簽,并更改字體,顏色等。接著用JTextField輕量級(jí)組件來設(shè)置單行文本編輯,并將其加入到用 沈陽理工大學(xué)課程設(shè)計(jì) createHorizontalBox()方法創(chuàng)建具有一個(gè)從左到右顯示其組件的Box和用createHorizontalStrut()創(chuàng)建一個(gè)不可見的、固定寬度的組件,使其在一個(gè)橫向 box 中,通常使用此方法強(qiáng)行使兩個(gè)組件之間具有某一空間量。然后Box與Box之間用createVerticalBox()創(chuàng)建一個(gè)從上到下顯示其組件的 Box,并用createVerticalStrut()方法創(chuàng)建一個(gè)不可見的、固定高度的組件,使其在一個(gè)縱向 box 中,通常使用此方法強(qiáng)行使兩個(gè)組件之間具有某一空間量。然后在面板的South方位設(shè)置“錄入”與“重置”兩按鈕。最后實(shí)現(xiàn)與數(shù)據(jù)庫的橋接,能夠?qū)奈谋究颢@得的信息存儲(chǔ)到數(shù)據(jù)庫中去。 2.定義Search(查詢學(xué)生基本信息)面板 該部分同樣采用BorderLayout(構(gòu)造一個(gè)組件之間沒有間距的新邊界布)和Box輕量級(jí)組件進(jìn)行布局,在面板的Nother方位添加一個(gè)“查詢學(xué)生基本信息”的標(biāo)簽,并更改字體,顏色等。接著用JTextField輕量級(jí)組件來設(shè)置單行文本編輯,在學(xué)號(hào)這一文本框后再添加一個(gè)“查詢”按鈕。并將其加入到用createHorizontalBox()方法創(chuàng)建具有一個(gè)從左到右顯示其組件的Box和用createHorizontalStrut()創(chuàng)建一個(gè)不可見的、固定寬度的組件,使其在一個(gè)橫向 box 中,通常使用此方法強(qiáng)行使兩個(gè)組件之間具有某一空間量。然后Box與Box之間用createVerticalBox()創(chuàng)建一個(gè)從上到下顯示其組件的 Box,并用createVerticalStrut()方法創(chuàng)建一個(gè)不可見的、固定高度的組件,使其在一個(gè)縱向 box 中,通常使用此方法強(qiáng)行使兩個(gè)組件之間具有某一空間量。最后實(shí)現(xiàn)與數(shù)據(jù)庫的橋接,能夠?qū)臄?shù)據(jù)庫中獲取信息并顯示到文本框中去。 3.定義Modify(修改學(xué)生基本信息)面板 該部分同樣也是采用BorderLayout(構(gòu)造一個(gè)組件之間沒有間距的新邊界布)和Box輕量級(jí)組件進(jìn)行布局,在面板的Nother方位添加一個(gè)“修改學(xué)生基本信息”的標(biāo)簽,并更改字體,顏色等。接著用JTextField輕量級(jí)組件來設(shè)置單行文本編輯,并將其加入到用createHorizontalBox()方法創(chuàng)建具有一個(gè)從左到右顯示其組件的Box和用createHorizontalStrut()創(chuàng)建一個(gè)不可見的、固定寬度的組件,使其在一個(gè)橫向 box 中,通常使用此方法強(qiáng)行使兩個(gè)組件之間具有某一空間量。并在 “學(xué)號(hào)”該文本框后添加一個(gè)“開始修改”按鈕用來監(jiān)聽。然后Box與Box之間用createVerticalBox()創(chuàng)建一個(gè)從上到下顯示其組件的 Box,并用createVerticalStrut()方法創(chuàng)建一個(gè)不可見的、固定高度的組件,使其在一個(gè)縱向 box 中,通常使用此方法強(qiáng)行使兩個(gè)組件之間具有某一空間量。最后實(shí)現(xiàn)與數(shù)據(jù)庫的橋接,能夠?qū)臄?shù)據(jù)庫中獲取信息并顯示到文本框中去,并將修改后的信息存儲(chǔ)到數(shù)據(jù)庫中去。 4.定義Delete(刪除學(xué)生基本信息)面板 該部分還是采用BorderLayout(構(gòu)造一個(gè)組件之間沒有間距的新邊界布)和Box輕量級(jí)組件進(jìn)行布局,在面板的Nother方位添加一個(gè)“修改學(xué)生基本信息”的標(biāo)簽,并更改字體,顏色等。接著用JTextField輕量級(jí)組件來設(shè)置單行文本編輯,在學(xué)號(hào)這一文本框后再添加一“確定”按鈕實(shí)現(xiàn)監(jiān)聽。并將其所有文本框和標(biāo)簽加入到用createHorizontalBox()方法創(chuàng)建具有一個(gè)從左到右顯示其組件的Box和用createHorizontalStrut()創(chuàng)建一個(gè)不可見的、固定寬度的組件,使其在一個(gè)橫向 box 中,通常使用此方法強(qiáng)行使兩個(gè)組件之間 沈陽理工大學(xué)課程設(shè)計(jì) 具有某一空間量。并在 “學(xué)號(hào)”該文本框后添加一個(gè)“開始修改”按鈕用來監(jiān)聽。然后Box與Box之間用createVerticalBox()創(chuàng)建一個(gè)從上到下顯示其組件的 Box,并用createVerticalStrut()方法創(chuàng)建一個(gè)不可見的、固定高度的組件,使其在一個(gè)縱向 box 中,通常使用此方法強(qiáng)行使兩個(gè)組件之間具有某一空間量,還在本面板的South方位添加“確定刪除”按鈕。最后實(shí)現(xiàn)與數(shù)據(jù)庫的橋接,能夠?qū)臄?shù)據(jù)庫中獲取信息并顯示到文本框中去,刪除后同時(shí)在數(shù)據(jù)庫中也刪除該信息并保存該操作。 四、方案的實(shí)施 1、學(xué)生信息管理系統(tǒng)的登錄 學(xué)生信息管理系統(tǒng)可由管理員和學(xué)生兩種身份的人使用。管理員和學(xué)生身份登錄所能操作的功能有很大的區(qū)別。系統(tǒng)初始化一個(gè)系統(tǒng)管理員,登錄名:admin 密碼:admin 學(xué)生登錄系統(tǒng)的登錄名為學(xué)號(hào),密碼也為學(xué)號(hào)(如:10001),登錄后可以修改密碼。 登錄界面 登錄系統(tǒng)后的界面 沈陽理工大學(xué)課程設(shè)計(jì) 注冊(cè)學(xué)生信息界面 沈陽理工大學(xué)課程設(shè)計(jì) 修改學(xué)生信息界面 查詢學(xué)生信息界面 沈陽理工大學(xué)課程設(shè)計(jì) 刪除學(xué)生信息界面 沈陽理工大學(xué)課程設(shè)計(jì) 程序類的設(shè)計(jì) DeleteListener.java:刪除監(jiān)聽 JTMouseListener.java:樹狀視圖 LoginListener.java:登陸監(jiān)聽 ResetListener.java:重置監(jiān)聽 SaveListener.java:保存監(jiān)聽 SearchAllListener.java:搜索所有學(xué)生信息 SearchDListener.java:搜索一個(gè)學(xué)生信息 SearchListener.java:搜索一個(gè)學(xué)生信息 SearchRListener.java:搜索一個(gè)學(xué)生信息 SubmitListener.java:提交信息監(jiān)聽 系統(tǒng)的使用說明及環(huán)境配置 學(xué)生信息管理系統(tǒng)提供了管理員和學(xué)生這兩個(gè)角色登錄系統(tǒng),管理員通過用戶名:admin 密碼:admin 登錄系統(tǒng)后可以進(jìn)行相應(yīng)的操作。學(xué)生通過以自己的學(xué)號(hào)(如10001)作為用戶名和密碼登錄系統(tǒng)后進(jìn)行相應(yīng)的學(xué)生權(quán)限范圍內(nèi)的操作。數(shù)據(jù)庫:Mysql 連接數(shù)據(jù)庫的登錄名:root 密碼:zfz 代碼: DeleteListener.java:刪除監(jiān)聽 package manager.ui.listener; import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton;import javax.swing.JOptionPane; import manager.dao.JdbcIcpCURD;import manager.ui.conponent.DeletePanel; public class DeleteListener implements ActionListener { public void actionPerformed(ActionEvent e){ JButton jb=(JButton)e.getSource(); DeletePanel dp=(DeletePanel)jb.getParent(); String xuehao=dp.xuehaoFd.getText(); String msg= “你確定要?jiǎng)h除學(xué)號(hào)為”+xuehao+“的學(xué)生信息么?”; int i=JOptionPane.showConfirmDialog(dp,msg,“提”,JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE); if(i==0){ JdbcIcpCURD curd=new JdbcIcpCURD(); boolean b=curd.deleteByXuehao(Integer.parseInt(xuehao)); if(b){ dp.errorLb.setText(“刪除成功”); } else{ dp.errorLb.setText(“刪除失敗”); } } return;} 示信息 沈陽理工大學(xué)課程設(shè)計(jì) } JTMouseListener.java:樹狀視圖 package manager.ui.listener; import java.awt.CardLayout;import java.awt.Component;import java.awt.event.MouseEvent;import java.awt.event.MouseListener; import javax.swing.JTree;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.TreeNode;import javax.swing.tree.TreePath; import manager.ui.conponent.MainFrame;import manager.ui.conponent.PLeft; public class JTMouseListener implements MouseListener { @Override public void mouseClicked(MouseEvent e){ // TODO Auto-generated method stub JTree jt=(JTree)e.getSource();PLeft p=(PLeft)jt.getParent();MainFrame f=(MainFrame)p.getParent().getParent().getParent().getParent();TreePath path = jt.getPathForLocation(e.getX(), e.getY());if(path==null){ return;} DefaultMutableTreeNode node =(DefaultMutableTreeNode)path.getLastPathComponent();String s=node.toString();CardLayout cl=f.getPright().getLayout();if(s.equals(“注冊(cè)學(xué)生”)){ cl.show(f.getPright(), “register”);} if(s.equals(“修改學(xué)生信息”)){ cl.show(f.getPright(), “modify”);} if(s.equals(“查詢學(xué)生信息”)){ cl.show(f.getPright(), “search”);} if(s.equals(“刪除學(xué)生信息”)){ cl.show(f.getPright(), “delete”);} if(s.equals(“學(xué)生信息管理”)){ cl.show(f.getPright(), “welcom”);} } @Override public void mouseEntered(MouseEvent e){ 沈陽理工大學(xué)課程設(shè)計(jì) } } @Override public void mouseExited(MouseEvent e){ // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e){ // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e){ // TODO Auto-generated method stub } // TODO Auto-generated method stub LoginListener.java:登陸監(jiān)聽 package manager.ui.listener; import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton;import javax.swing.JOptionPane; import manager.ui.conponent.Login;import manager.ui.conponent.MainFrame; public class LoginListener implements ActionListener { @Override public void actionPerformed(ActionEvent e){ JButton bt=(JButton)e.getSource(); Login frame=(Login)bt.getParent().getParent().getParent().getParent(); String username=frame.usernameTa.getText().trim(); String password=frame.passwordTa.getText().trim(); if(username!=null||password!=null){ if(“admin”.equals(username)&&“123”.equals(password)){ new MainFrame().setVisible(true); frame.dispose(); } else{ frame.messageLb.setText(“用戶名或密碼錯(cuò)誤”); } } 沈陽理工大學(xué)課程設(shè)計(jì) else{ frame.messageLb.setText(“用戶名或密碼錯(cuò)誤”); } } } ResetListener.java:重置監(jiān)聽 package manager.ui.listener; import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton; import manager.ui.conponent.RegPanel; public class ResetListener implements ActionListener { @Override public void actionPerformed(ActionEvent e){ JButton jb=(JButton)e.getSource();RegPanel jp=(RegPanel)jb.getParent();jp.xuehaoFd.setText(“");jp.nameFd.setText(”“);jp.addressFd.setText(”“);} } SaveListener.java:保存監(jiān)聽 package manager.ui.listener; import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton; import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.ModifyPanel; public class SaveListener implements ActionListener { @Override public void actionPerformed(ActionEvent e){ JButton jb=(JButton)e.getSource(); ModifyPanel mp=(ModifyPanel)jb.getParent(); String xuehao=mp.xuehaoTf.getText().trim(); String name=mp.nameTf.getText().trim(); String gender=mp.genderTf.getText().trim(); String address=mp.addressTf.getText().trim(); String oldXuehao=mp.xuehaoFd.getText().trim(); if(oldXuehao==null||xuehao.equals(”“)){ 沈陽理工大學(xué)課程設(shè)計(jì) } } oldXuehao=xuehao;} if(xuehao==null||xuehao.equals(”“)){ mp.errorLb.setText(”請(qǐng)輸入修改后的學(xué)號(hào)...“);return;} if(name==null||name.equals(”“)){ mp.errorLb.setText(”請(qǐng)輸入修改后的姓名...“);return;} if(gender==null||gender.equals(”“)){ mp.errorLb.setText(”請(qǐng)輸入修改后的性別...“);return;} if(address==null||address.equals(”“)){ mp.errorLb.setText(”請(qǐng)輸入修改后的地址...“);return;} Student stu=new Student();stu.setXuehao(Integer.parseInt(xuehao));stu.setName(name);stu.setGender(gender);stu.setAddress(address);int old=Integer.parseInt(oldXuehao);JdbcIcpCURD curd=new JdbcIcpCURD();if(curd.modify(stu, old)){ mp.errorLb.setText(”修改成功...“);} SearchAllListener.java:搜索所有學(xué)生信息 package manager.ui.listener; import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Vector; import javax.swing.JButton;import javax.swing.JTextArea; import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.SearchPanel; public class SearchAllListener implements ActionListener { @Override public void actionPerformed(ActionEvent e){ JButton jb=(JButton)e.getSource(); SearchPanel sp=(SearchPanel)jb.getParent(); 沈陽理工大學(xué)課程設(shè)計(jì) } } JTextArea jt=sp.resultTa;JdbcIcpCURD curd=new JdbcIcpCURD();Vector import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton; import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.DeletePanel;import manager.ui.conponent.ModifyPanel;import manager.ui.conponent.SearchPanel; public class SearchDListener implements ActionListener { @Override public void actionPerformed(ActionEvent e){ JButton jb=(JButton)e.getSource(); DeletePanel dp=(DeletePanel)jb.getParent(); JdbcIcpCURD curd=new JdbcIcpCURD(); String s=dp.xuehaoFd.getText().trim(); Student stu=curd.searchByXuehao(Integer.parseInt(s)); if(stu==null){ dp.errorLb.setText(”沒有查詢到此學(xué)生“); return; } dp.xuehaoTf.setText(new Integer(stu.getXuehao()).toString()); dp.nameTf.setText(stu.getName()); dp.genderTf.setText(stu.getGender()); dp.addressTf.setText(stu.getAddress()); 沈陽理工大學(xué)課程設(shè)計(jì) } } SearchListener.java:搜索一個(gè)學(xué)生信息 package manager.ui.listener; import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton; import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.ModifyPanel; public class SearchListener implements ActionListener { @Override public void actionPerformed(ActionEvent e){ JButton jb=(JButton)e.getSource(); ModifyPanel mp=(ModifyPanel)jb.getParent(); String s=mp.xuehaoFd.getText().trim(); if(s==null||s.equals(”“)){ mp.errorLb.setText(”請(qǐng)輸入學(xué)號(hào)..“); return; } JdbcIcpCURD curd=new JdbcIcpCURD(); Student stu=curd.searchByXuehao(Integer.parseInt(s)); mp.xuehaoTf.setText(new Integer(stu.getXuehao()).toString()); mp.nameTf.setText(stu.getName()); mp.genderTf.setText(stu.getGender()); mp.addressTf.setText(stu.getAddress());} } SearchRListener.java:搜索一個(gè)學(xué)生信息 package manager.ui.listener; import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton; import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.ModifyPanel;import manager.ui.conponent.SearchPanel; public class SearchRListener implements ActionListener { @Override public void actionPerformed(ActionEvent e){ 沈陽理工大學(xué)課程設(shè)計(jì) } } JButton jb=(JButton)e.getSource();SearchPanel sp=(SearchPanel)jb.getParent();JdbcIcpCURD curd=new JdbcIcpCURD();String s=sp.xuehaoTf.getText().trim();Student stu=curd.searchByXuehao(Integer.parseInt(s));if(stu==null){ return;} StringBuilder sb=new StringBuilder();sb.append(” “);sb.append(stu.getXuehao());sb.append(”t“);sb.append(stu.getName());sb.append(”t“);sb.append(stu.getGender());sb.append(”t“);sb.append(stu.getAddress());sb.append(”t“);sb.append(stu.getRegTime().toString());sb.append(”n“);sp.resultTa.setText(sb.toString()); SubmitListener.java:提交信息監(jiān)聽 package manager.ui.listener; import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Date; import javax.swing.JButton;import javax.swing.JLabel; import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.RegPanel; public class SubmitListener implements ActionListener { @Override public void actionPerformed(ActionEvent e){ JButton jb=(JButton)e.getSource();RegPanel jp=(RegPanel)jb.getParent();String xuehao=jp.xuehaoFd.getText();String name=jp.nameFd.getText();String address=jp.addressFd.getText();String gender=”“;boolean b1=jp.maleRB.isSelected();boolean b2=jp.femaleRB.isSelected(); 沈陽理工大學(xué)課程設(shè)計(jì) if(b1){ } JLabel errorLabel=jp.errorLabel;if(xuehao==null||xuehao.trim().equals(”“)){ errorLabel.setText(”沒有填寫學(xué)號(hào)..“);return;} if(name==null||name.trim().equals(”“)){ errorLabel.setText(”沒有填寫姓名..“);return;} if(address==null|address.trim().equals(”“)){ errorLabel.setText(”沒有填寫地址..“);return;} if(!(b1||b2)){ errorLabel.setText(”請(qǐng)選擇性別...“);return;} if(b1){ gender=”男“;} if(b2){ gender=”女“;} Student stu=new Student(Integer.parseInt(xuehao),name,gender,new Date(System.currentTimeMillis()),address);JdbcIcpCURD curd=new JdbcIcpCURD();boolean b=curd.insert(stu);if(b){ errorLabel.setText(”注冊(cè)成功!“);jp.xuehaoFd.setText(”“);jp.nameFd.setText(”“);jp.addressFd.setText(”");} } } 五、心得體會(huì) 我們剛學(xué)習(xí)java這門課程,對(duì)專業(yè)的java編程知識(shí)并未有深入的學(xué)習(xí)和探索。但是當(dāng)我們查找過一些書籍資料后,在不斷努力下我們還是把課程設(shè)計(jì)題目順利的完成了。通過此次學(xué)生學(xué)籍管理系統(tǒng)的設(shè)計(jì),使我們對(duì)java編程語言有了更深層次的了解。不過在編寫的過程中也存在一些問題,例如在選擇適宜的方法實(shí)現(xiàn)修改和刪除功能的時(shí)候,由于對(duì) 沈陽理工大學(xué)課程設(shè)計(jì) 數(shù)組的理解還不能滿足當(dāng)前的編程需要,并未選擇更加簡(jiǎn)單的數(shù)組來處理數(shù)據(jù),以至于當(dāng)刪除指定內(nèi)容后在文本文件中留有空行,從而導(dǎo)致了在接下來的查詢異常和再次修改和刪除功能無法正常實(shí)現(xiàn),還需人工刪除掉文本文件中的空行以保證程序的正常運(yùn)行。我們也可以選用其他的更加方便的處理方法使得程序更加優(yōu)化和簡(jiǎn)潔。 “書山有路勤為徑,學(xué)海無涯苦作舟”,我們現(xiàn)今所學(xué)的知識(shí)還遠(yuǎn)遠(yuǎn)不夠,在今后的學(xué)習(xí)過程中我們要進(jìn)一步學(xué)習(xí)java的更多的知識(shí),此次課程設(shè)計(jì)不僅鍛煉了我們獨(dú)立思考和團(tuán)隊(duì)合作的能力,而且提高了我們動(dòng)手的能力,我會(huì)繼續(xù)努力學(xué)習(xí)此課程的。 六、參考文獻(xiàn) 鄭阿奇 編著《Java實(shí)用教程(第二版)》電子工業(yè)出版社 2 良葛格 編著《Java學(xué)習(xí)筆記》清華大學(xué)出版 摘要 眾所周知,當(dāng)今社會(huì)是信息社會(huì),因此,要想加強(qiáng)人事管理,單純依靠以前的手工管理,不僅會(huì)浪費(fèi)大量的人力,物力,財(cái)力,而且效率不高,而且很難達(dá)到預(yù)期的目的。所以人事管理信息系統(tǒng)能夠提供準(zhǔn)確的人員信息,以便領(lǐng)導(dǎo)者了解企業(yè)各個(gè)部門的人員構(gòu)成,安排好工作計(jì)劃,使企業(yè)變的更高效。 該系統(tǒng)能夠?qū)δ硢挝坏穆毠みM(jìn)行管理,主要功能如下是: 一、人事資料輸入:輸入員工信息,如姓名、身份證號(hào)、地址、電話、部門、工資、參加工作時(shí)間、專業(yè)、職務(wù)、備注等。 二、信息查詢:可根據(jù)職工編號(hào)、職工名稱、出生年月范圍、工資范圍、參加工作時(shí)間范圍等條件查詢。 三、登陸檢測(cè)、用戶管理、密碼修改、權(quán)限設(shè)置。 四、系統(tǒng)初始化:包括操作員信息初始化和職工信息初始化。 五、用戶信息修改:擁有權(quán)限的操作員可以修改、凍結(jié)、刪除普通用戶。 關(guān)鍵詞:人事信息、java、用戶界面 目 錄 一、設(shè)計(jì)目的................................................................................................................1 二、設(shè)計(jì)問題................................................................................................................1 三、概要設(shè)計(jì)................................................................................................................1 四、詳細(xì)設(shè)計(jì)................................................................................................................2 1、定義員工類:.....................................................................................................................3 2、主程序:.............................................................................................................................4 3、實(shí)現(xiàn)員工信息的錄入:.....................................................................................................7 4、實(shí)現(xiàn)員工信息的修改:...................................................................................................12 5、實(shí)現(xiàn)員工信息的查詢:...................................................................................................19 6、實(shí)現(xiàn)員工信息的刪除:...................................................................................................23 五、設(shè)計(jì)總結(jié)..............................................................................................................27 參考文獻(xiàn)......................................................................................................................28 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) 人事管理系統(tǒng)一、設(shè)計(jì)目的 通過該課程設(shè)計(jì),使同學(xué)們進(jìn)一步理解概JAVA的基本概念、理論和方法,初步掌握J(rèn)DK、Eclipse的調(diào)試和應(yīng)用,以及程序中錯(cuò)誤的解決方法,明確JAVA在實(shí)際程序設(shè)計(jì)中的應(yīng)用。使課堂中學(xué)習(xí)到理論得到應(yīng)用,練習(xí)文件形式在JAVA程序設(shè)計(jì)中的應(yīng)用。 二、設(shè)計(jì)問題 設(shè)計(jì)題目:?jiǎn)T工管理系統(tǒng) 設(shè)計(jì)要求:(1)完成員工信息的添加、刪除、查詢、修改功能 (2)使用用戶界面操作(3)使用文件形式完成 設(shè)計(jì)思路:首先設(shè)計(jì)界面進(jìn)入面板,在面板中添加菜單選項(xiàng),并將要實(shí)現(xiàn)的功能選項(xiàng)添加其中,然后對(duì)這些選項(xiàng)實(shí)施監(jiān)聽,實(shí)現(xiàn)其功能。通過文件類型知識(shí)的應(yīng)用,實(shí)現(xiàn)對(duì)員工信息的管理。 三、概要設(shè)計(jì) 1、從管理員角度講,實(shí)現(xiàn)的功能是:(1)對(duì)員工有關(guān)數(shù)據(jù)的輸入功能 a)實(shí)現(xiàn)對(duì)員工基本信息的輸入 b)實(shí)現(xiàn)對(duì)員工獎(jiǎng)懲信息的輸入(2)對(duì)員工有關(guān)數(shù)據(jù)的更新功能 由管理員進(jìn)行檔案收集,經(jīng)過對(duì)檔案資料的處理,更新員工檔案管理系統(tǒng)中的獎(jiǎng)懲相關(guān)信息(包括員工基本信息和員工業(yè)績(jī)信息)。(3)對(duì)員工檔案信息的查詢功能 管理員可以通過自己的用戶名和密碼在因特網(wǎng)上對(duì)所有員工的信息(包括員工的檔案信息、員工的業(yè)績(jī)信息)進(jìn)行查詢。 (4)對(duì)員工、部門和部門領(lǐng)導(dǎo)信息的簡(jiǎn)單管理(5)對(duì)用戶密碼的管理 2、從普通用戶(員工)的角度講,實(shí)現(xiàn)的功能是: 人事管理系統(tǒng) (1)在單位員工可以通過自己的編號(hào)和密碼在因特網(wǎng)上對(duì)自己的個(gè)人信息(包括個(gè)人的檔案信息、業(yè)績(jī)信息)進(jìn)行查詢。(2)對(duì)用戶密碼的管理 面板設(shè)計(jì):首先設(shè)計(jì)一個(gè)容器,然后再容器中添加菜單,在菜單中添加選項(xiàng),并在容器中加入面板,面板布局設(shè)置為CardLayout,最后將面板添加進(jìn)容器。 功能實(shí)現(xiàn):在錄入、查詢、修改和刪除界面中使用JButton、JLabel、ButtonGroup、JRadioButton、JTextField、Choice為界面中加入相應(yīng)的組件,并對(duì)其進(jìn)行監(jiān)聽,同時(shí)附加了文件流的處理。 員工信息管理系統(tǒng)的系統(tǒng)運(yùn)行流程圖 四、詳細(xì)設(shè)計(jì) 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) 1、定義員工類: public class Employee implements java.io.Serializable { String number,name,discipling,grade,borth,sex;public Employee(){ } public void setNumber(String number){ this.number=number;} public String getNumber(){ return number;} public void setName(String name){ this.name=name;} public String getName(){ return name;} public void setDiscipling(String discipling){ this.discipling=discipling;} public String getDisciping(){ return discipling;} public void setGrade(String grade){ this.grade=grade;} public String getGrade(){ return grade;} public void setBorth(String borth){ this.borth=borth;} public String getBorth()3 人事管理系統(tǒng) { return borth;} public void setSex(String sex){ this.sex=sex;} public String getSex(){ return sex;}} 2、主程序: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.Hashtable;public class EmployeeManager extends JFrame implements ActionListener { EmployeeSituation 基本信息錄入=null;ModifySituation 基本信息修改=null;Inquest 基本信息查詢=null;Delete 基本信息刪除=null;JMenuBar bar;JMenu fileMenu;JMenuItem 錄入,修改,查詢,刪除;Container con=null;Hashtable 基本信息=null;File file=null;CardLayout card=null;JLabel label=null;JPanel pCenter;public EmployeeManager(){ 錄入=new JMenuItem(“錄入員工基本信息”);修改=new JMenuItem(“修改員工基本信息”);查詢=new JMenuItem(“查詢員工基本信息”);刪除=new JMenuItem(“刪除員工基本信息”);bar=new JMenuBar();fileMenu=new JMenu(“菜單選項(xiàng)”);fileMenu.add(錄入);fileMenu.add(修改);fileMenu.add(查詢);4 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) fileMenu.add(刪除);bar.add(fileMenu);setJMenuBar(bar);label=new JLabel(“歡迎進(jìn)入員工信息管理系統(tǒng)”,JLabel.CENTER);label.setFont(new Font(“SansSerif”,Font.BOLD+Font.ITALIC,25));label.setForeground(Color.red);基本信息=new Hashtable();錄入.addActionListener(this);修改.addActionListener(this);查詢.addActionListener(this);刪除.addActionListener(this);card=new CardLayout();con=getContentPane();pCenter=new JPanel();pCenter.setLayout(card);pCenter.setBackground(Color.yellow);file=new File(“基本信息.txt”);if(!file.exists()){ try { FileOutputStream out=new FileOutputStream(file);ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(基本信息); objectOut.close(); out.close(); } catch(IOException e) { } } 基本信息錄入=new EmployeeSituation(file);基本信息修改=new ModifySituation(file);基本信息查詢=new Inquest(this,file);基本信息刪除=new Delete(file);pCenter.add(“歡迎語界面”,label);pCenter.add(“錄入界面”,基本信息錄入);pCenter.add(“修改界面”,基本信息修改);pCenter.add(“刪除界面”,基本信息刪除);con.add(pCenter,BorderLayout.CENTER);con.validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e)5 人事管理系統(tǒng) { System.exit(0);}});setVisible(true);setBounds(100,50,420,380);validate();} public void actionPerformed(ActionEvent e){ if(e.getSource()==錄入){ card.show(pCenter,“錄入界面”);} else if(e.getSource()==修改){ card.show(pCenter,“修改界面”);} else if(e.getSource()==查詢){ 基本信息查詢.setVisible(true);} else if(e.getSource()==刪除){ card.show(pCenter,“刪除界面”);} } public static void main(String args[]){ new EmployeeManager();}} 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) 3、實(shí)現(xiàn)員工信息的錄入: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class EmployeeSituation extends JPanel implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號(hào),姓名,工資;Choice 部門;JRadioButton 男,女;Employee 員工=null;ButtonGroup group=null;JButton 錄入,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public EmployeeSituation(File file){ this.file=file; 員工號(hào)=new JTextField(10); 姓名=new JTextField(10); 部門=new Choice(); 部門.add(“請(qǐng)選擇”); 部門.add(“研發(fā)部”); 部門.add(“銷售部”); 部門.add(“人事部”);7 人事管理系統(tǒng) 部門.add(“安全部”);工資=new JTextField(10);group=new ButtonGroup();男=new JRadioButton(“男”,true);女=new JRadioButton(“女”,false);group.add(男);group.add(女);錄入=new JButton(“錄入”);重置=new JButton(“重置”);錄入.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(new JLabel(“員工號(hào):”,JLabel.CENTER));box1.add(員工號(hào));Box box2=Box.createHorizontalBox();box2.add(new JLabel(“姓名:”,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(“性別:”,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(“部門:”,JLabel.CENTER));box4.add(部門);Box box6=Box.createHorizontalBox();box6.add(new JLabel(“ ”,JLabel.CENTER));Box box5=Box.createHorizontalBox();box5.add(new JLabel(“工資:”,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.yellow);setLayout(new BorderLayout());add(pCenter,BorderLayout.CENTER);JPanel pSouth=new JPanel();pSouth.add(錄入);8 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) pSouth.add(重置); pSouth.setBackground(Color.yellow); add(pSouth,BorderLayout.SOUTH); validate(); } public void actionPerformed(ActionEvent e){ if(e.getSource()==錄入){ String number=“";number=員工號(hào).getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ String warning=”該員工基本信息已存在,請(qǐng)到修改頁面修改!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);} else { String m=”基本信息將被錄入!“;int ok=JOptionPane.showConfirmDialog(this,m,”確認(rèn)“,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ String name=姓名.getText();String discipling=部門.getSelectedItem();String grade=工資.getText();String sex=null;if(男.isSelected()){ 9 人事管理系統(tǒng) sex=男.getText();} else { sex=女.getText();} 員工=new Employee();員工.setNumber(number);員工.setName(name);員工.setDiscipling(discipling);員工.setGrade(grade);員工.setSex(sex);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne); 基本信息表.put(number,員工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close(); 員工號(hào).setText(null); 姓名.setText(null); 工資.setText(null);} catch(Exception ee){ System.out.println(ee);}}}} else { String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}} if(e.getSource()==重置) { 員工號(hào).setText(null); 姓名.setText(null); 部門.remove(部門.getSelectedIndex()); 工資.setText(null); }}} 10 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) 人事管理系統(tǒng) 4、實(shí)現(xiàn)員工信息的修改: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class ModifySituation extends JPanel implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號(hào),姓名,工資;Choice 部門;JRadioButton 男,女;ButtonGroup group=null;JButton 開始修改,錄入修改,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public ModifySituation(File file){ this.file=file;12 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) 員工號(hào)=new JTextField(10);姓名=new JTextField(10);部門=new Choice();部門.add(”請(qǐng)選擇“);部門.add(”研發(fā)部“);部門.add(”銷售部“);部門.add(”人事部“);部門.add(”安全部“);工資=new JTextField(10);group=new ButtonGroup();男=new JRadioButton(”男“,true);女=new JRadioButton(”女“,false);group.add(男);group.add(女);開始修改=new JButton(”開始修改“);錄入修改=new JButton(”錄入修改“);錄入修改.setEnabled(false);重置=new JButton(”重置“);員工號(hào).addActionListener(this);開始修改.addActionListener(this);錄入修改.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(new JLabel(”輸入要修改信息的員工號(hào):“,JLabel.CENTER));box1.add(員工號(hào));box1.add(開始修改);Box box2=Box.createHorizontalBox();box2.add(new JLabel(”姓名:“,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(”性別:“,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(”部門:“,JLabel.CENTER));box4.add(部門);Box box6=Box.createHorizontalBox();box6.add(new JLabel(” “,JLabel.CENTER));Box box5=Box.createHorizontalBox();box5.add(new JLabel(”工資:“,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);13 人事管理系統(tǒng) boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.yellow);setLayout(new BorderLayout());add(pCenter,BorderLayout.CENTER);JPanel pSouth=new JPanel();pSouth.add(錄入修改);pSouth.add(重置);pSouth.setBackground(Color.yellow);add(pSouth,BorderLayout.SOUTH);validate(); } public void actionPerformed(ActionEvent e){ if(e.getSource()==開始修改||e.getSource()==員工號(hào)) { String number=”“; number=員工號(hào).getText(); if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ 錄入修改.setEnabled(true);Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName());部門.getSelectedItem();工資.setText(stu.getGrade());if(stu.getSex().equals(”男“)){ 14 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) 男.setSelected(true);} else { 女.setSelected(true);} } else { 錄入修改.setEnabled(false);String warning=”該員工號(hào)不存在!“;JOptionPane.showMessageDialog(this,warning,”警告 “,JOptionPane.WARNING_MESSAGE);員工號(hào).setText(null);姓名.setText(null);部門.remove(部門.getSelectedItem());工資.setText(null); } } else { 錄入修改.setEnabled(false);String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);員工號(hào).setText(null);姓名.setText(null);部門.remove(部門.getSelectedItem());工資.setText(null);} } else if(e.getSource()==錄入修改) { String number=”“; number=員工號(hào).getText(); if(number.length()>0) { try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} 15 人事管理系統(tǒng) catch(Exception ee){ } if(基本信息表.containsKey(number)){ String question=”該員工基本信息已存在,您想修改他(她)的基本信息嗎?“;JOptionPane.showMessageDialog(this,question,”警告“,JOptionPane.QUESTION_MESSAGE);String m=”基本信息將被修改!“;int ok=JOptionPane.showConfirmDialog(this,m,”確認(rèn)“,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ String name=姓名.getText();String discipling=部門.getSelectedItem();String grade=工資.getText();String sex=null;if(男.isSelected()){ sex=男.getText();} else { sex=女.getText();} Employee 員工=new Employee(); 員工.setNumber(number); 員工.setName(name); 員工.setDiscipling(discipling); 員工.setGrade(grade); 員工.setSex(sex);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);基本信息表.put(number,員工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close(); 員工號(hào).setText(null);姓名.setText(null);16 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) 部門.remove(部門.getSelectedItem());工資.setText(null);} catch(Exception ee){ System.out.println(ee);} 錄入修改.setEnabled(false);} else if(ok==JOptionPane.NO_OPTION){ 錄入修改.setEnabled(true);} } else { String warning=”該員工號(hào)沒有基本信息,不能修改!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);錄入修改.setEnabled(false); } } else { String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告 “,JOptionPane.WARNING_MESSAGE); 錄入修改.setEnabled(false); } } if(e.getSource()==重置) { 員工號(hào).setText(null); 姓名.setText(null); 部門.remove(部門.getSelectedItem()); 工資.setText(null);}}} 17 人事管理系統(tǒng) 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) 5、實(shí)現(xiàn)員工信息的查詢: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Inquest extends JDialog implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號(hào),姓名,部門,工資;JRadioButton 男,女;JButton 查詢;ButtonGroup group=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;File file=null;public Inquest(JFrame f,File file){ super(f,”查詢對(duì)話框“,false); this.file=file; 員工號(hào)=new JTextField(10); 查詢=new JButton(”查詢“); 員工號(hào).addActionListener(this);19 人事管理系統(tǒng) 查詢.addActionListener(this);姓名=new JTextField(10);姓名.setEditable(false);部門=new JTextField(10);部門.setEditable(false);工資=new JTextField(10);工資.setEditable(false);男=new JRadioButton(”男“,false);女=new JRadioButton(”女“,false);group=new ButtonGroup();group.add(男);group.add(女);Box box1=Box.createHorizontalBox();box1.add(new JLabel(”輸入要查詢的員工號(hào):“,JLabel.CENTER));box1.add(員工號(hào));box1.add(查詢);Box box2=Box.createHorizontalBox();box2.add(new JLabel(”姓名:“,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(”性別:“,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(”部門:“,JLabel.CENTER));box4.add(部門);Box box5=Box.createHorizontalBox();box5.add(new JLabel(”工資:“,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.green);Container con=getContentPane();con.add(pCenter,BorderLayout.CENTER);con.validate();setVisible(false);setBounds(100,200,360,270);20 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ setVisible(false);} });} public void actionPerformed(ActionEvent e){ 姓名.setText(null);部門.setText(null);工資.setText(null);if(e.getSource()==查詢||e.getSource()==員工號(hào)){ String number=”“;number=員工號(hào).getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName());部門.setText(stu.getDisciping());工資.setText(stu.getGrade());if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} } else { 21 人事管理系統(tǒng) String warning=”該員工號(hào)不存在!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}} else { String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}}}} 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) 6、實(shí)現(xiàn)員工信息的刪除: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Delete extends JPanel implements ActionListener { Hashtable 基本信息表=null; JTextField 員工號(hào),姓名,部門,工資; JRadioButton 男,女; JButton 刪除; ButtonGroup group=null; FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File file=null; public Delete(File file) { this.file=file; 員工號(hào)=new JTextField(10); 刪除=new JButton(”刪除“); 員工號(hào).addActionListener(this); 刪除.addActionListener(this); 姓名=new JTextField(10); 姓名.setEditable(false); 部門=new JTextField(10); 部門.setEditable(false); 工資=new JTextField(10); 工資.setEditable(false); 男=new JRadioButton(”男“,false); 女=new JRadioButton(”女“,false); group=new ButtonGroup(); group.add(男); group.add(女); Box box1=Box.createHorizontalBox(); box1.add(new JLabel(”輸入要?jiǎng)h除的學(xué)號(hào):“,JLabel.CENTER)); box1.add(員工號(hào)); box1.add(刪除); Box box2=Box.createHorizontalBox(); box2.add(new JLabel(”姓名:“,JLabel.CENTER)); box2.add(姓名); Box box3=Box.createHorizontalBox();23 人事管理系統(tǒng) box3.add(new JLabel(”性別:“,JLabel.CENTER)); box3.add(男); box3.add(女); Box box4=Box.createHorizontalBox(); box4.add(new JLabel(”部門:“,JLabel.CENTER)); box4.add(部門); Box box6=Box.createHorizontalBox(); box6.add(new JLabel(” “,JLabel.CENTER)); Box box5=Box.createHorizontalBox(); box5.add(new JLabel(”工資:“,JLabel.CENTER)); box5.add(工資); Box boxH=Box.createVerticalBox(); boxH.add(box1); boxH.add(box2); boxH.add(box3); boxH.add(box5); boxH.add(box6); boxH.add(box4); boxH.add(Box.createVerticalGlue()); JPanel pCenter=new JPanel(); pCenter.add(boxH); pCenter.setBackground(Color.yellow); setLayout(new BorderLayout()); add(pCenter,BorderLayout.CENTER); validate(); } public void actionPerformed(ActionEvent e) { if(e.getSource()==刪除||e.getSource()==員工號(hào)) { String number=”“; number=員工號(hào).getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ 24 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) } if(基本信息表.containsKey(number)){ Employee stu=(Employee)基本信息表.get(number); 姓名.setText(stu.getName()); 部門.setText(stu.getDisciping()); 工資.setText(stu.getGrade());if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} String m=”確定要?jiǎng)h除該員工號(hào)及全部信息嗎?“;int ok=JOptionPane.showConfirmDialog(this,m,”確認(rèn) “,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ 基本信息表.remove(number);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();員工號(hào).setText(null);姓名.setText(null);部門.setText(null);工資.setText(null);} catch(Exception ee){ System.out.println(ee);} } else if(ok==JOptionPane.NO_OPTION){ 員工號(hào).setText(null);姓名.setText(null);部門.setText(null);25 人事管理系統(tǒng) 工資.setText(null);} } else { String warning=”該員工號(hào)不存在!“;JOptionPane.showMessageDialog(this,warning,”警告 “,JOptionPane.WARNING_MESSAGE);} } else { String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告",JOptionPane.WARNING_MESSAGE);}}}} 26 信息專業(yè)java語言程序設(shè)計(jì)課程設(shè)計(jì) 五、設(shè)計(jì)總結(jié) 通過本次課程設(shè)計(jì),我對(duì)軟件開發(fā)設(shè)計(jì)分析過程有了深刻了解,不僅提高了編程思路,而且充分認(rèn)識(shí)到分工合作在軟件開發(fā)部署過程中的重要性。通過查詢資料,參考叢書,受益匪淺。然后對(duì)這些遇到的問題進(jìn)行處理,在解決問題的能力思路上活躍起來,對(duì)于以后開發(fā)高質(zhì)量的軟件有很大的提高。 本次JAVA課程設(shè)計(jì)我所選擇的程題目是人事信息管理系統(tǒng),程序中實(shí)現(xiàn)了對(duì)員工信息的添加、查詢、修改、刪除等一系列功能,在設(shè)計(jì)的過程中,我查閱了大量的資料,請(qǐng)教了一些老師,也獲得了同學(xué)們的幫助,我設(shè)計(jì)的程序簡(jiǎn)單易懂,操作簡(jiǎn)單,適用于不同的單位使用,只需按照自己的需要將所要錄入的信息名稱做添加或修改就可以實(shí)現(xiàn)。通過這次JAVA的程序設(shè)計(jì),使我對(duì)JAVA有了更加深入的了解,鞏固了我對(duì)JAVA基礎(chǔ)知識(shí)的掌握,并且能夠更加熟練的應(yīng)用JDK與Eclipse進(jìn)行JAVA程序的編寫。可以說理論聯(lián)系實(shí)際,這使我的知識(shí)和能力都更上一層樓。 人事管理系統(tǒng) 參考文獻(xiàn) [1] 張桂元,賈燕楓.Eclipse開發(fā)入門與項(xiàng)目實(shí)踐[M].北京:人民郵電出版社,2006 [2] 趙強(qiáng).基于開源軟件的J2EE企業(yè)級(jí)應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,2005 [3](美)John Hunt,Chris Loftus著.精通J2EE——Java企業(yè)級(jí)應(yīng)用[M].周立斌,楊飛等譯.北京:清華大學(xué)出版社.2004 [4] 曹廣鑫,王謝華,王建鳳等.Struts數(shù)據(jù)庫項(xiàng)目開發(fā)寶典[M].北京:電子工業(yè)出版社,2006 [5] 施伯樂、丁寶康.數(shù)據(jù)庫系統(tǒng)教程,高等教育出版社,2008年7月; [6] 邵麗萍.軟件開發(fā)技術(shù)[M].北京:清華大學(xué)出版社,2005 [7] 謝星星,沈懿卓.UML基礎(chǔ)與ROSE建模實(shí)用教程.北京:清華大學(xué)出版社,2009 [8] 邵麗萍.軟件開發(fā)技術(shù)[M].北京:清華大學(xué)出版社,2005 [9] 郭興成.PowerBuilder9.0實(shí)用教程[M].北京:清華大學(xué)出版社,2003 題目:職工信息系統(tǒng) 功能包括: ? 建立職工信息數(shù)據(jù)(職工編號(hào),姓名,性別,年齡,電話,職務(wù),工資和家庭成員信息)和信息簡(jiǎn)表(編號(hào),姓名,電話)? 根據(jù)職工編號(hào)查詢職工信息(查詢時(shí)需要身份確認(rèn)。單位領(lǐng)導(dǎo)和人事秘書可以看到職工所有信息;財(cái)務(wù)處人員可以看到職工編號(hào),姓名,性別,年齡,電話,工資;一般職工僅能查到信息簡(jiǎn)表)? 增加新職工信息(由人事秘書完成,需要身份確認(rèn))? 刪除職工信息(由人事秘書完成,需要身份確認(rèn))? 修改職工工資(由財(cái)務(wù)處人員完成,需要身份確認(rèn))? 要求所有信息能夠存儲(chǔ)在文件中,并具有良好的用戶界面 #include //ct用來儲(chǔ)存文件中數(shù)據(jù)組數(shù),Admin用來儲(chǔ)存登陸后該用戶的權(quán)限,//na用來儲(chǔ)存登錄所輸?shù)木幪?hào),方便主菜單內(nèi)使用其顯示當(dāng)前用戶 void hline(int);inline void eatline(){while(cin.get()!='n')continue;} class staff {/*職工編號(hào),姓名,性別,年齡,職務(wù),電話,工資和家庭成員信息*/ public: };void staff::printf() //輸出的選擇,判斷其職務(wù),選擇調(diào)用哪個(gè)輸出 { if(Admin==1||Admin==2)printf1();else int num;char name[LIM],sex[3];int age;char job[10],phone[15];double wages;char home[20];int admin;void printf();void printf1();void printf2();void printf3(); } if(Admin==3)printf2();else printf3();void staff::printf1() //領(lǐng)導(dǎo)及人事秘書能見的輸出 { } void staff::printf2() //財(cái)務(wù)人員能見的輸出 { } void staff::printf3() //普通員工能見的輸出 { cout< switch(n){ case 1:{cout< < };break;case 2:{cout< };break;case 3:{cout< } } < };break;void menu() //主菜單 { cout<<“t╔╤╤╤╤╤╤職工編號(hào): ”< //二級(jí)菜單 { cout<<“t╔╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤┐”< //登陸的實(shí)現(xiàn)部分 { cout<<“t┏┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┓”< int w=0;while(!(cin>>na)){ cin.clear();while(cin.get()!='n')continue;cout<<“輸入有誤,編號(hào)為一串?dāng)?shù)字,請(qǐng)重新輸入:n”; for(int i=1;i<=ct;i++)} fstream find;find.open(file,ios_base::in|ios_base::out|ios_base::binary);eatline();staff stu; { streampos place =(i-1)* sizeof stu;find.seekp(place);if(find.fail()){ cerr << “■查找出錯(cuò)!程序?qū)⑼顺觯 鰊”;system(“pause”); exit(EXIT_FAILURE); } find.read((char *)&stu, sizeof stu);if(stu.num==na){ } w=1;Admin=stu.admin;} if(w==0){cout<<“t┣╋**登錄失敗!未找到相應(yīng)的信息!程序?qū)⑼顺?*╋┫”< } int stu_num() //計(jì)算數(shù)據(jù)組數(shù) { } staff stu;ifstream stunum;stunum.open(file,ios_base::in|ios_base::binary);if(stunum.is_open()){ } stunum.close();return ct;stunum.seekg(0);while(stunum.read((char *)&stu,sizeof stu))ct++;system(“pause”);system(“cls”);void setadmin(staff &stu,char jobs[10]) //增加職工時(shí)根據(jù)職務(wù)設(shè)置權(quán)限 { char job1[10]=“總經(jīng)理”;char job2[10]=“副總經(jīng)理”;char job3[10]=“人事秘書”;char job4[10]=“財(cái)務(wù)人員”; } void add() // 輸入數(shù)據(jù)的函數(shù),增加職工 { if(Admin==2){ staff stu;if((!strcmp(stu.job,job1))||(!strcmp(stu.job,job2)))stu.admin=1;else if(!strcmp(stu.job,job3))stu.admin=2;else if(!strcmp(stu.job,job4))stu.admin=3; ofstream fout(file, ios_base::out | ios_base::app | ios_base::binary); if(!fout.is_open()) { cerr << “不能打開 ” << file << “ 文件:n”; exit(EXIT_FAILURE); } cout << “★增加職員信息★請(qǐng)輸入職工姓名:(按Enter鍵退出輸入!):n”;eatline(); cin.get(stu.name, LIM); while(stu.name[0]!= '
主站蜘蛛池模板:
久久久久99精品成人片三人毛片|
国产精品人妻熟女男人的天堂|
国产日韩av在线播放|
日韩精品无码人妻一区二区三区|
国产成人无码av片在线观看不卡|
天干天干啦夜天干天天爽|
国产精品刮毛|
成人精品视频在线观看不卡|
日本不卡一区|
高清不卡一区二区三区|
精品黑人一区二区三区久久|
国产乱码二卡3卡四卡|
特级黄www欧美水蜜桃视频|
久久不见久久见中文字幕免费|
中文无码日韩欧|
亚洲日韩乱码中文无码蜜桃臀|
青青爽无码视频在线观看|
少妇激情一区二区三区视频小说|
成片免费观看视频大全|
国产黄大片在线观看|
日产无码中文字幕av|
开心五月激情综合婷婷色|
亚洲国产精品人人做人人爱|
秋霞午夜无码鲁丝片午夜精品|
最新亚洲中文av在线不卡|
国产精品久久久久久亚洲影视|
亚洲综合憿情五月丁香五月网|
无码av一区二区大桥久未|
国产精品日韩欧美一区二区三区|
国产精品99久久精品爆乳|
亚洲韩欧美第25集完整版|
亚洲综合图色40p|
少妇高潮流白浆在线观看|
日韩久久无码精品不卡一区二区电影|
亚洲a成人片在线观看|
中文字幕av无码人妻|
一本色道久久88—综合亚洲精品|
国产福利姬喷水福利在线观看|
国产精品视频全国免费观看|
精品福利视频一区二区三区|
欧美性色黄大片www喷水|
第二篇:JAVA課程設(shè)計(jì)員工信息管理系統(tǒng)
第三篇:大學(xué)JAVA課程設(shè)計(jì)——學(xué)生信息管理系統(tǒng)
第四篇:JAVA課程設(shè)計(jì)--員工信息管理系統(tǒng)(徐如飛)
第五篇:【課程設(shè)計(jì)】職工信息管理系統(tǒng)