版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《UNIX系統(tǒng)與軟件開發(fā)》課程設計說明書</p><p> 設計題目: 學生管理系統(tǒng) </p><p> 專 業(yè): 計算機科學與技術 </p><p> 指導教師: </p><p> 班 級: </p>&
2、lt;p> 學 號: </p><p> 姓 名: </p><p> 同 組 人: </p><p> 計算機科學與工程學院</p><p> 2013 年 06月 26 日<
3、;/p><p><b> 前言</b></p><p> 本系統(tǒng)是使用java語言編寫的一個簡單的c/s結構的學生管理系統(tǒng),服務端運行在linux系統(tǒng),通過mysql數(shù)據(jù)庫來存儲數(shù)據(jù),客服端運行在windows系統(tǒng),通過socket發(fā)送請求給服務端,服務端分析處理后返回結果給客服端。在客戶端,客戶端的每一次操作都會生成日志文件,在服務端,服務端對客服端每次發(fā)送的請求生
4、成日志文件。由于技術以及相關知識的欠缺,本系統(tǒng)只實現(xiàn)了簡單的增刪改查的功能,其面向的是學生管理員,有增加學生,刪除學生等高級權限,因為服務端要同時接受多個客戶端的請求,所以服務端做成多線程模式,但也只是簡單實現(xiàn)同時能連多個客服端,當多個客戶端對同一個數(shù)據(jù)進行處理時,不會進行線程同步,本人將會在以后的學習中加強相關知識的獲取,不斷的完善系統(tǒng)現(xiàn)有功能以及增加一些實用的功能。</p><p><b> 目錄
5、</b></p><p><b> 前言1</b></p><p><b> 一、系統(tǒng)環(huán)境1</b></p><p> (一)、硬件環(huán)境1</p><p> (二)、軟件環(huán)境1</p><p><b> 二、設計目的1</b&g
6、t;</p><p><b> 三、總體設計1</b></p><p> (一)、功能分析1</p><p> (二)、數(shù)據(jù)庫設計1</p><p> (三)、系統(tǒng)結構圖2</p><p> (四)、程序流程圖3</p><p><b> (
7、五)、類圖4</b></p><p><b> 四、詳細設計5</b></p><p> (一)、登錄模塊5</p><p> (二)、客戶端操作界面模塊5</p><p> (三)、服務端模塊6</p><p><b> 五、調試與測試6</b&
8、gt;</p><p> (一)、登錄界面測試6</p><p> (二)、操作界面的的測試:7</p><p> (三)、服務端模塊的測試11</p><p> (四)、測試結果的分析:12</p><p> (五)、測試中遇到的問題及處理方式12</p><p> 六、
9、設計中遇到的問題及解決方法12</p><p> (一)、遇到的問題12</p><p> (二)、解決方法13</p><p> 七、源程序清單和執(zhí)行結果及分析13</p><p> (一)、客戶端源程序清單13</p><p> (二)、服務端源程序清單22</p><p&
10、gt; (三)、執(zhí)行結果29</p><p> (四)、執(zhí)行結果分析:31</p><p> 八、課程設計心得31</p><p><b> 參考文獻34</b></p><p><b> 一、系統(tǒng)環(huán)境</b></p><p><b> (一)、
11、硬件環(huán)境</b></p><p> 家用計算機,內存2G,硬盤80G以上。</p><p><b> (二)、軟件環(huán)境</b></p><p> 本系統(tǒng)是基于java JDK1.6在window7系統(tǒng)下用eclipse以及在fedora9系統(tǒng)下用fedora eclipse開發(fā),因為使用的開發(fā)語言是java,故系統(tǒng)必須安裝有j
12、ava虛擬機。數(shù)據(jù)庫使用linux下的mysql數(shù)據(jù)庫。</p><p><b> 二、設計目的</b></p><p> 當今計算機技術飛速發(fā)展,數(shù)據(jù)庫技術作為數(shù)據(jù)管理的一個有效的手段,在各行各業(yè)中得到越來越廣泛的應用,然而并不是每個人都會直接操作數(shù)據(jù)庫,面對大量的數(shù)據(jù),必須提供一個簡單的形象的,可視化的操作界面給數(shù)據(jù)的管理員,例如,當今各高校的的規(guī)模越來越大,
13、學生人數(shù)也將增加,而隨著人數(shù)的增加,也給學校帶來了大量數(shù)據(jù)的增加,這給學校的學籍管理人員在資料的整理,資料的查詢,數(shù)據(jù)的處理上帶來很大的不便。開發(fā)本系統(tǒng)的目標就是為了減少管理員的工作強度,使得對學生信息的查詢和數(shù)據(jù)處理的速度得到很大程度的提高,從而提高學籍管理員的的工作效率,使管理員的工作系統(tǒng)化,規(guī)范化,自動化。同時對這個學期學過的知識通過這次的設計進行實際檢測。</p><p><b> 三、總體設
14、計</b></p><p><b> (一)、功能分析</b></p><p> 學生管理系統(tǒng)的主要功能是管理學生的基本信息。由于本人水平有限本系統(tǒng)將只提供五個功能。</p><p> 查詢所有學生信息:管理員登錄成功后可以查詢所有的學生信息。</p><p> 條件查詢:按管理員的條件進行查詢。&l
15、t;/p><p> 增加信息:管理員登錄成功后可以添加新學生信息。</p><p> 刪除信息:只提供了按學號刪除。</p><p> 更新信息:分別提供了更新姓名,更新學號,更新電話。</p><p><b> (二)、數(shù)據(jù)庫設計</b></p><p> 因為本系統(tǒng)較為簡單,數(shù)據(jù)庫只建了
16、兩張表,一張學生信息表(stuinfo),一張用戶表(userinfo),都存在studentdb數(shù)據(jù)庫下。學生信息表存儲學生基本信息,包含四個字段:學號(stuID),姓名(stuname),性別(sex),電話(tel);用戶表存儲學籍管理員用于登錄的用戶名和密碼,只包含兩個字段:用戶名(name),密碼(passwd)。以下是兩張表的內容:</p><p> 表 1 userinfo表的內容</p&
17、gt;<p> 表2 stuinfo 表的內容</p><p><b> (三)、系統(tǒng)結構圖</b></p><p><b> 圖1</b></p><p><b> (四)、程序流程圖</b></p><p><b> 圖2</b>
18、;</p><p><b> (五)、類圖</b></p><p><b> 1、系統(tǒng)類概述:</b></p><p> 系統(tǒng)包含9個類,客戶端包含五個類,服務端包含4個類,各類中包含的方法以及說明如下:</p><p> Client類: stuS
19、erver類:</p><p> 圖 3 圖4</p><p> Clien工具類: stuServer線程類以及操作類:</p><p> 圖5 圖6</p><p> 客戶端類:Client類是界面的實現(xiàn)以及發(fā)
20、送信息的主類,Student類是實體類,Input是獲取鍵盤輸入類,stuClient類是連接服務器類,logFile類是生成日志文件類。</p><p> 服務器類:stuServer類是主服務器類,ServerTread類是服務器線程類,connStu類是連接數(shù)據(jù)庫以及執(zhí)行sql語句類,StudentBiz類是生成sql語句類;</p><p> sLogFile類是生成日志文件類
21、。</p><p> 2、類的調用關系 :</p><p> 客戶端:首先啟動登錄類Client類,其調用輸入類Input獲取從鍵盤輸入的用戶名和密碼,然后調用連接服務器類stuClient連接服務器,在服務器校驗用戶名密碼正確后調用Client類顯示操作界面,在操作界面操作時Clien類調用Input獲取輸入的信息然后調用stuClient類通過Socket連接服務器發(fā)送信息。每一步
22、操作都將調用logFlie類生成日志文件。</p><p> 服務器:啟動stuServer ,當有用戶連接時調用ServerTread類接受連接以獲取客戶端發(fā)來的信息,對信息校驗是否能處理,能處理則調用SudentBiz類生成相關sql語句,StudentBiz類生成sql語句后調用connStu類的連接數(shù)據(jù)庫方法和執(zhí)行sql語句的方法,獲取結果返回給Server,Server再通過Socket發(fā)給客戶端。客
23、服端的每一次請求都會調用sLogFile類生成日志文件,調用關系如下:</p><p><b> 圖7 調用關系圖</b></p><p><b> 四、詳細設計</b></p><p><b> (一)、登錄模塊</b></p><p> 登錄界面有兩個功能選項,一是
24、登錄,二是退出,這里只寫一個初始化函數(shù),實現(xiàn)的功能是給用戶提供登錄界面,若不想登錄則按退出,若登錄,則輸入用戶名密碼,正確后調用客戶端操作界面。</p><p> (二)、客戶端操作界面模塊</p><p> 該模塊給用戶提供系統(tǒng)功能的操作界面,有5個功能,分別是增加學生信息,查詢學生信息,刪除學生信息,更新學生信息和退出系統(tǒng)。</p><p> 其中查詢學生
25、信息分為按學號和按姓名查找和全部查找,更新學生信息分為更新姓名,更新學號和更新電話。對每個功能都分別寫出對應的方法,個功能對應的方法如下:</p><p> 查詢學生信息:queryStu();queByName();queByID();queAll();</p><p> 增加學生信息:addStu();</p><p> 刪除學生信息:delStu();&
26、lt;/p><p> 更新學生信息:updStu();updByNa();updByID();updByTel();</p><p><b> (三)、服務端模塊</b></p><p> 該模塊主要給客戶端提供各種服務,用一個服務器線程類循環(huán)監(jiān)聽是否有客戶端的請求,因為要對數(shù)據(jù)庫進行操作,所以創(chuàng)建了兩個工具類,一個是根據(jù)客戶端發(fā)來的請求而生
27、成sql語句的StudentBiz類一個是連接數(shù)據(jù)庫和執(zhí)行StudentBiz類生成的sql語句的connStu類。其中StudentBiz類的方法是根據(jù)客服端具有的功能而建立的方法;</p><p> 服務端模塊工具類的方法如下:</p><p> StudentBiz類:</p><p> public boolean checkUser(String n
28、ame,String passwd)檢查用戶;</p><p> public ResultSet readAll()從數(shù)據(jù)庫中讀取所有記錄;</p><p> public ResultSet readByName(String name)按姓名從數(shù)據(jù)庫中讀取記錄;</p><p> public ResultSet readByID(String ID)按
29、學號從數(shù)據(jù)庫中讀取記錄;</p><p> public boolean insertData(String name,String id,String sex,String tel)向數(shù)據(jù)庫中插入一條記錄。</p><p> public boolean delData(String ID)按學號刪除數(shù)據(jù)庫中一條記錄;</p><p> public boo
30、lean updDataByName(Stirng name)更新數(shù)據(jù)庫中某記錄的姓名</p><p> public boolean updDataByTel(String newTel,String tel) 更新數(shù)據(jù)庫中某記錄的電話</p><p><b> connStu類:</b></p><p> connStu();連接數(shù)據(jù)
31、庫</p><p> public ResultSet queryStu(String sql)執(zhí)行查詢語句;</p><p> public boolean updateStu(String sql)執(zhí)行insert,delete,update語句;</p><p> public void conClose()關閉數(shù)據(jù)庫連接;</p><
32、;p><b> 五、調試與測試</b></p><p> (一)、登錄界面測試</p><p> 登錄界面測試提供了以下幾組測試方式:</p><p> 1、輸入的用戶名或密碼為空的情況:</p><p> 2、輸入的用戶名或密碼錯誤的情況:</p><p> 3、輸入的用戶名和
33、密碼正確的情況:</p><p> (二)、操作界面的的測試:</p><p> 操作界面主要測試當輸入正確的信息后相應的功能頁面是否能正確顯示和輸入錯誤的信息后能否正常處理:</p><p> 增加學生信息功能頁面的測試:</p><p> (1)輸入正確信息:</p><p> (2)輸入錯誤信息:<
34、;/p><p> 2、查詢功能頁面的測試:</p><p> (1)輸入正確信息:</p><p> (2)輸入錯誤信息:</p><p> 3、刪除功能頁面的測試:</p><p> 4、更新學生信息頁面的測試:</p><p> (1)輸入正確的信息:</p><
35、p> (三)、服務端模塊的測試</p><p> 服務端主要測試是否能正常啟動和接受客戶端的請求而建立連接。</p><p><b> 1、啟動服務端:</b></p><p> 2、與客服端建立連接:</p><p> 3、建立完成后主線程繼續(xù)監(jiān)聽是否有客戶端連接:</p><p&g
36、t; (四)、測試結果的分析:</p><p> 綜合測試下來,系統(tǒng)具有的相關功能頁面在輸入正確和錯誤信息都都能給用戶做出正確顯示和提示,由于測試數(shù)據(jù)少,可能還有些bug沒有檢測到,只好等到實際應用出現(xiàn)時再修復。</p><p> (五)、測試中遇到的問題及處理方式</p><p><b> 1、遇到的問題:</b></p>
37、<p> 在測試客戶端登錄界面時遇到了兩個問題,一是沒有對當輸入的用戶名和密碼為空時的處理,二是當服務端沒有開啟,客服端登錄時拋出的ConnectException:異常。三是在機房實際應用測試時配置calsspath變量錯誤導致程序運行中斷。</p><p><b> 2、解決方法:</b></p><p> 第一個問題好解決,在client類中
38、增加檢測用戶名和密碼為空時返回登錄界面的代碼。第二個問題開始我認為是沒有catch住這個ConnectException:異常,可是當我在catch中增加這個異常時編譯不能通過。只能這樣做:要使用客戶端之前必須先開啟服務端。第三個問題在指導老師邵國金老師的幫助下正確配置了classpath變量,具體為:</p><p> # export CLASSPATH=usr/share/java/mysql-conne
39、ctor-java.jar。</p><p> 六、設計中遇到的問題及解決方法</p><p><b> (一)、遇到的問題</b></p><p> 在設計中遇到了很多問題,在這里提一下主要的:</p><p> ●客戶端一次發(fā)送多個數(shù)據(jù)的問題,因為socket的getOutputStream和getInput
40、Sream方法都只能用一次,不能多次調用該方法,這就造成如果</p><p> 戶端一次需要發(fā)送多個數(shù)據(jù)比如用戶名和密碼,增加學生信息時,學生的四個屬性值,怎么才能一次發(fā)送過去而能讓服務端理解你所需要的是什么服務。</p><p> ●服務端查詢結果后一次返回學生所有信息的問題,比如查詢到某學生的信息后要把這些信息返回給客戶端且要讓客戶端知道那個數(shù)據(jù)代表什么信息。</p>
41、<p> ●數(shù)據(jù)庫返回結果后用什么變量或者容器去接收。</p><p> ●客戶端到底是要做成連一次后就可以進行各種操作直到斷開,還是每操作一次連一次。</p><p><b> (二)、解決方法</b></p><p> 1、一次發(fā)送多個數(shù)據(jù)問題可以和服務端建立一個協(xié)議,把發(fā)送的多個數(shù)據(jù)間用“,”隔開,并在數(shù)據(jù)的開頭增加操
42、作的標識。在打包發(fā)給服務器,服務器在根據(jù)協(xié)議對數(shù)據(jù)進行遇到“,”就拆分。</p><p> 2、原理如(1)客戶端和服務端先商定協(xié)議,規(guī)定發(fā)送的數(shù)據(jù)順序按照姓名,學號,性別,電話的順序進行打包。</p><p> 3、開始時想用list集合去裝,可是由于對list的使用不是很熟悉,還是用resultSet去裝。然后服務端循環(huán)每拆封一個就往客戶端發(fā)一次。</p><p
43、> 4、為了降低服務器的處理壓力和節(jié)約資源,設計成需要操作的時候再連接,操作完就斷開,在操作時才又一次連接。</p><p> 七、源程序清單和執(zhí)行結果及分析</p><p> (一)、客戶端源程序清單</p><p> 1、Client類:</p><p> import java.io.*;</p><
44、p> import java.net.*;</p><p> public class Client {</p><p> //private BufferedReader bf;</p><p> stuClient sc=new stuClient();</p><p> Input in=new Input();<
45、;/p><p> Student stu=new Student();</p><p> private String recInfo;//用來接收服務端返回的數(shù)據(jù);</p><p> private String choNum;//選擇子菜單的數(shù)字</p><p> public void menue(){</p><
46、;p> System.out.println("==============================================");</p><p> System.out.println(" 歡迎使用本系統(tǒng),請按數(shù)字鍵選擇相應功能");</p><p> System.out.println("
47、 1-增加學生信息");</p><p> System.out.println(" 2-查詢學生信息");</p><p> System.out.println(" 3-刪除學生信息");</p><p> System.out.println(
48、" 4-修改學生信息");</p><p> System.out.println(" 5-查詢所有學生信息");</p><p> System.out.println(" 6-退出系統(tǒng)");</p><p> System.o
49、ut.println("=============================================");</p><p> choNum=in.getString();</p><p> if("1".equals(choNum)){</p><p><b> addStu();</b&g
50、t;</p><p><b> }</b></p><p> else if("2".equals(choNum)){</p><p> queryStu();</p><p><b> }</b></p><p> else if("
51、3".equals(choNum)){</p><p><b> delStu();</b></p><p><b> }</b></p><p> else if("4".equals(choNum)){</p><p><b> updStu();
52、</b></p><p><b> }</b></p><p> else if("5".equals(choNum)){</p><p><b> queAll();</b></p><p><b> }</b></p>
53、<p> else if("6".equals(choNum)){</p><p> System.out.println("退出本系統(tǒng)");</p><p> System.out.println("歡迎下次繼續(xù)使用本系統(tǒng)");</p><p> System.exit(0);</
54、p><p><b> }</b></p><p><b> else{</b></p><p> System.out.println("沒有與"+choNum+"對應的功能,請繼續(xù)關注我們的產(chǎn)品," +</p><p> "現(xiàn)在將返回主界面&q
55、uot;);</p><p><b> menue();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> //查詢方式</b></p><p> public
56、void queryStu(){</p><p> System.out.println("==============================================");</p><p> System.out.println(" 請選擇查詢方式");</p><p> Syste
57、m.out.println(" 1-按姓名查找");</p><p> System.out.println(" 2-按學號查找");</p><p> System.out.println(" 3-返回上一層");</p><p>
58、System.out.println("==============================================");</p><p><b> try{</b></p><p> choNum=in.getString();</p><p> if("1".equals(cho
59、Num)){</p><p> queByName();</p><p><b> }</b></p><p> else if("2".equals(choNum)){</p><p> queByID();</p><p><b> }</b>
60、;</p><p> else if("3".equals(choNum)){</p><p><b> menue();</b></p><p><b> }</b></p><p><b> else{</b></p><p&
61、gt; System.out.println("沒有與"+choNum+"對應的功能,請繼續(xù)關注我們的產(chǎn)品" +</p><p><b> "現(xiàn)在將返回");</b></p><p> queryStu();</p><p><b> }</b></
62、p><p><b> }</b></p><p> catch(Exception e){</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> finally{</b><
63、/p><p> sc.closeSocket();</p><p><b> }</b></p><p><b> }</b></p><p><b> //按姓名查找</b></p><p> public void queByName(){&l
64、t;/p><p> System.out.println("==============================================");</p><p> System.out.println(" 查詢學生信息頁面");</p><p> System.out.println(&qu
65、ot;==============================================");</p><p> System.out.println(" 請輸入你要查找學生的姓名:");</p><p><b> try{</b></p><p> stu.name=in.getStri
66、ng();</p><p> sc.initSocket();</p><p> sc.pwOut.println("queryNa"+","+stu.name);</p><p> recInfo=sc.bufIn.readLine();</p><p> System.out.println
67、(recInfo);</p><p> if("false".equals(recInfo)){</p><p> System.out.println("你要查找的姓名為"+stu.name+"的學生不存在");</p><p> queryStu();</p><p>&l
68、t;b> }</b></p><p><b> else{</b></p><p> String [] ary =recInfo.split(",");</p><p> System.out.println("你所查詢的結果為:");</p><p>
69、 stu.fromatPrint(ary[0],ary[1],ary[2],ary[3]);//調用Student類的格式化輸出方法</p><p> queryStu();</p><p><b> }</b></p><p><b> }</b></p><p> catch(Exce
70、ption e){</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> finally{</b></p><p> sc.closeSocket();</p><p><b> }&l
71、t;/b></p><p><b> }</b></p><p><b> //按學號查找</b></p><p> public void queByID(){</p><p> System.out.println("===========================
72、===================");</p><p> System.out.println(" 查詢學生信息頁面");</p><p> System.out.println("==============================================");</p><
73、p> System.out.println(" 請輸入你要查找學生的學號:");</p><p><b> try{</b></p><p> stu.id=in.getString();</p><p> sc.initSocket();</p><p> sc.pwOut
74、.println("queryID"+","+stu.id);</p><p> recInfo=sc.bufIn.readLine();</p><p> if("false".equals(recInfo)){</p><p> System.out.println("你要查找的學號為&
75、quot;+stu.id+"的學生不存在");</p><p> queryStu();</p><p><b> }</b></p><p><b> else{</b></p><p> System.out.println(recInfo);</p>
76、<p> String [] ary =recInfo.split(",");</p><p> System.out.println("你所查詢的結果為:");</p><p> stu.fromatPrint(ary[0],ary[1],ary[2],ary[3]);//調用Student類的格式化輸出方法</p>
77、<p> queryStu();</p><p><b> }</b></p><p><b> }</b></p><p> catch(Exception e){</p><p> e.printStackTrace();</p><p><b&
78、gt; }</b></p><p><b> finally{</b></p><p> sc.closeSocket();</p><p><b> }</b></p><p><b> }</b></p><p><b&g
79、t; //查詢所有</b></p><p> public void queAll(){</p><p><b> try{</b></p><p> sc.initSocket();</p><p> sc.pwOut.println("queryAll");</p>
80、;<p> recInfo=sc.bufIn.readLine();</p><p> System.out.println(recInfo);</p><p><b> menue();</b></p><p><b> }</b></p><p> catch(Excep
81、tion e){</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> finally{</b></p><p> sc.closeSocket();</p><p><b> }<
82、;/b></p><p><b> }</b></p><p><b> //增加信息</b></p><p> public void addStu(){</p><p> System.out.println("==============================
83、================");</p><p> System.out.println(" 增加學生信息頁面");</p><p> System.out.println(" 增加學生信息");</p><p> System.out.println("
84、 請按如下格式來輸入信息");</p><p> System.out.println(" 姓名,學號,性別,電話");</p><p> System.out.println("==============================================");</p>
85、<p> System.out.println(" 請輸入新增學生信息:按e返回上一層");</p><p><b> try{</b></p><p> //獲取鍵盤錄入的學生信息,用于發(fā)送給服務器</p><p> String sendInfo=in.getString();&l
86、t;/p><p> if("e".equals(sendInfo))</p><p><b> menue();</b></p><p><b> else{</b></p><p> String [] check=sendInfo.split(",")
87、;//用于檢查輸入的信息是等于4來判斷輸入是否有效</p><p> // 如果輸入有效則發(fā)往服務器</p><p> if(check.length==4){</p><p> sc.initSocket();</p><p> sc.pwOut.println("add"+",&q
88、uot;+sendInfo);</p><p> recInfo=sc.bufIn.readLine();</p><p> if("false".equals(recInfo)){</p><p> System.out.println("插入失敗,用戶已存在或者插入的數(shù)據(jù)類型不匹配");</p><
89、;p><b> }</b></p><p><b> else{</b></p><p> System.out.println(recInfo);</p><p><b> }</b></p><p><b> menue();</b>&
90、lt;/p><p><b> }</b></p><p><b> else{</b></p><p> System.out.println("你輸入的格式錯誤請查看輸入格式后,重新輸入!");</p><p><b> addStu();</b>&l
91、t;/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> catch(Exception e){</p><p> e.printStackTrace();</p&g
92、t;<p><b> }</b></p><p><b> finally{</b></p><p> sc.closeSocket();</p><p><b> }</b></p><p><b> }</b></p>
93、;<p><b> //刪除信息</b></p><p> public void delStu(){</p><p> System.out.println("==============================================");</p><p> System.out.p
94、rintln(" 刪除學生信息頁面");</p><p> System.out.println("==============================================");</p><p> System.out.println(" 請輸入要刪除的學生學號:");<
95、/p><p><b> try{</b></p><p> stu.id=in.getString();</p><p> sc.initSocket();</p><p> sc.pwOut.println("delete"+","+stu.id);</p>&
96、lt;p> recInfo=sc.bufIn.readLine();</p><p> System.out.println(recInfo);</p><p><b> menue();</b></p><p> }catch(Exception e){</p><p> e.printStackTra
97、ce();</p><p><b> }</b></p><p><b> finally{</b></p><p><b> }</b></p><p><b> }</b></p><p><b> //更行
98、操作</b></p><p> public void updStu(){</p><p> System.out.println("==============================================");</p><p> System.out.println(" 請選擇更
99、新的內容");</p><p> System.out.println(" 1-更新姓名");</p><p> System.out.println(" 2-更新學號");</p><p> System.out.println("
100、3-更新電話");</p><p> System.out.println(" 4-返回上一層");</p><p> System.out.println("==============================================");</p><p> System
101、.out.println(" 請輸入要更新的的選項:");</p><p> String cho=in.getString();//選擇功能選項</p><p> if("1".equals(cho)){</p><p> updByNa();</p><p> }else if(&
102、quot;2".equals(cho)){</p><p> updByID();</p><p><b> }</b></p><p> else if("3".equals(cho)){</p><p> updByTel();</p><p><b
103、> }</b></p><p> else if("4".equals(cho)){</p><p><b> menue();</b></p><p><b> }</b></p><p><b> else{</b></
104、p><p> System.out.println("你輸入的格式錯誤請查看輸入格式后,重新輸入!");</p><p><b> updStu();</b></p><p><b> }</b></p><p><b> } </b></p&g
105、t;<p><b> //更新姓名</b></p><p> public void updByNa(){</p><p> System.out.println("==============================================");</p><p> System.out
106、.println(" 更新頁面");</p><p> System.out.println(" 按e退出");</p><p> System.out.println("==============================================");</p>
107、;<p> System.out.println(" 更新格式:新內容,舊內容");</p><p> System.out.println(" 請輸入你要更新學生的姓名:");</p><p><b> try{</b></p><p> stu.name=in
108、.getString();</p><p> if("e".equals(stu.name))</p><p><b> updStu();</b></p><p><b> else{</b></p><p> String [] check=stu.name.spli
109、t(",");</p><p> if(check.length==2){</p><p> sc.initSocket();</p><p> sc.pwOut.println("uptateNa"+","+stu.name);</p><p> recInfo=sc.bu
110、fIn.readLine();</p><p> System.out.println(recInfo);</p><p><b> menue();</b></p><p><b> }</b></p><p><b> else{</b></p>&l
111、t;p> System.out.println("你輸入的格式錯誤請查看輸入格式后,重新輸入!");</p><p> updByNa();</p><p><b> }</b></p><p><b> }</b></p><p> }catch(Excepti
112、on e){</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> finally{</b></p><p><b> }</b></p><p><b> }&l
113、t;/b></p><p><b> //更新ID</b></p><p> public void updByID(){</p><p> System.out.println("==============================================");</p><p
114、> System.out.println(" 更新頁面");</p><p> System.out.println(" 按e退出");</p><p> System.out.println("=============================================="
115、;);</p><p> System.out.println(" 更新格式:新內容,舊內容");</p><p> System.out.println(" 請輸入你要更新學生的學號:");</p><p><b> try{</b></p><p>
116、 stu.id=in.getString();</p><p> if("e".equals(stu.id))</p><p><b> updStu();</b></p><p><b> else{</b></p><p> String [] check=stu.i
117、d.split(",");</p><p> if(check.length==2){</p><p> sc.initSocket();</p><p> sc.pwOut.println("uptateID"+","+stu.id);</p><p> recInfo=s
118、c.bufIn.readLine();</p><p> System.out.println(recInfo);</p><p><b> menue();</b></p><p><b> }</b></p><p><b> else{</b></p>
119、<p> System.out.println("你輸入的格式錯誤請查看輸入格式后,重新輸入!");</p><p> updByID();</p><p><b> }</b></p><p><b> }</b></p><p> }catch(Exc
120、eption e){</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> finally{</b></p><p><b> }</b></p><p><b>
121、 }</b></p><p><b> //更新電話</b></p><p> public void updByTel(){</p><p> System.out.println("==============================================");</p>
122、<p> System.out.println(" 更新頁面");</p><p> System.out.println("==============================================");</p><p> System.out.println(" 更新格式
123、:新內容,舊內容");</p><p> System.out.println("請輸入你要更新學生的電話:");</p><p><b> try{</b></p><p> stu.tel=in.getString();</p><p> if("e".equ
124、als(stu.tel))</p><p><b> updStu();</b></p><p><b> else{</b></p><p> String [] check=stu.tel.split(",");</p><p> //檢查輸入的字符串長度是否為2來判
125、斷數(shù)據(jù)是否有效</p><p> if(check.length==2){</p><p> sc.initSocket();</p><p> sc.pwOut.println("uptateTel"+","+stu.tel);</p><p> recInfo=sc.bufIn.readLi
126、ne();</p><p> System.out.println(recInfo);</p><p><b> menue();</b></p><p><b> }</b></p><p><b> else{</b></p><p> S
127、ystem.out.println("你輸入的格式錯誤請查看輸入格式后,重新輸入!");</p><p> updByTel();</p><p><b> }</b></p><p><b> }</b></p><p> }catch(Exception e){<
128、;/p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> finally{</b></p><p><b> }</b></p><p><b> }</b>&
129、lt;/p><p> /*public static void main(String[] ags){</p><p> new Client().menue();</p><p><b> }*/</b></p><p><b> }</b></p><p> 2、
130、stuClien類:</p><p> import java.io.*;</p><p> import java.net.*;</p><p> public class stuClient {</p><p> Socket socket=null;</p><p> BufferedReader bu
131、fIn=null;</p><p> PrintWriter pwOut=null;</p><p> public void initSocket(){</p><p> //實例化Socket相關對象</p><p> String hosthome="127.120.55.1";</p>&l
132、t;p> int port=10001;</p><p><b> try {</b></p><p> Socket socket=new Socket(hosthome,port);</p><p> bufIn=new BufferedReader(new InputStreamReader(socket.getInputS
133、tream()));</p><p> pwOut=new PrintWriter(socket.getOutputStream(),true);</p><p> }catch (UnknownHostException e) {</p><p> System.out.println("未知主機,請檢查主機名或ip地址是否正確");&l
134、t;/p><p> // TODO Auto-generated catch block</p><p> //e.printStackTrace();</p><p> } catch (IOException e) {</p><p> // TODO Auto-generated catch block</p><
135、;p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b></p><p> public void closeSocket(){</p><p> //關閉Socket相關對象</p><p&g
136、t;<b> try {</b></p><p> bufIn.close();</p><p> pwOut.close();</p><p> socket.close();</p><p> } catch (IOException e) {</p><p> // TODO A
137、uto-generated catch block</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java學生管理系統(tǒng)課程設計
- 學生管理系統(tǒng)課程設計(java)
- 學生管理系統(tǒng)-java課程設計
- 學生管理系統(tǒng)課程設計(java)
- java課程設計報告學生管理系統(tǒng)
- java課程設計---學生學籍管理系統(tǒng)
- java學生管理系統(tǒng)課程設計報告
- java課程設計--學生成績管理系統(tǒng)
- java課程設計--學生黨員管理系統(tǒng)
- java課程設計--學生信息管理系統(tǒng)
- 學生信息管理系統(tǒng)java課程設計
- java課程設計--學生成績管理系統(tǒng)
- java課程設計---學生信息管理系統(tǒng)
- java課程設計----學生成績管理系統(tǒng)
- 學生成績管理系統(tǒng)java課程設計
- java課程設計--學生信息管理系統(tǒng)
- java課程設計-學生信息管理系統(tǒng)
- java課程設計---學生信息管理系統(tǒng)
- java學生成績管理系統(tǒng) 課程設計
- java學生成績管理系統(tǒng)課程設計
評論
0/150
提交評論