版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> JAVA程序設(shè)計(jì) 課程設(shè)計(jì)報(bào)告</p><p> 課 題: 學(xué)生信息管理系統(tǒng) &l
2、t;/p><p> 姓 名:
3、; </p><p> 學(xué) 號(hào): <
4、;/p><p> 同組姓名: </p><p> 專(zhuān)業(yè)班級(jí): &
5、#160; </p><p> 指導(dǎo)教師:
6、 </p><p> 設(shè)計(jì)時(shí)間: 2014.6.
7、23至2014.6.27 </p><p><b> 目 錄</b></p><p> 1.系統(tǒng)描述.....................................3</p><p> 1.1 需要實(shí)現(xiàn)的功能............................3</p><p>
8、1.2 設(shè)計(jì)的目的................................3</p><p> 2.分析與設(shè)計(jì)....................................4</p><p> 2.1 功能模塊劃分..............................4</p><p> 2.2 數(shù)據(jù)庫(kù)結(jié)構(gòu)描述.............
9、...............5</p><p> 2.3 系統(tǒng)詳細(xì)設(shè)計(jì)文檔..........................8</p><p> 2.4 各模塊的實(shí)現(xiàn)方法描述.....................10</p><p> 2.5 測(cè)試數(shù)據(jù)及期望結(jié)果.......................11</p><p>
10、 3.系統(tǒng)測(cè)試.....................................17</p><p> 4.總結(jié)或心得體會(huì)...............................23</p><p> 5.參考文獻(xiàn).....................................23</p><p> 6.附錄.............
11、............................24</p><p><b> 1.系統(tǒng)描述</b></p><p> 1.1需要實(shí)現(xiàn)的功能</p><p> (1)錄入學(xué)生基本信息的功能</p><p> 學(xué)生基本信息主要包括:學(xué)號(hào)、姓名、性別、年齡、出生地、專(zhuān)業(yè)、班級(jí)、總學(xué)分,在插入時(shí),如果數(shù)據(jù)庫(kù)則已
12、經(jīng)存在該學(xué)號(hào),則不能再插入該學(xué)號(hào)。</p><p> (2)修改學(xué)生基本信息的功能</p><p> 在管理員模式下,只要在表格中選中某個(gè)學(xué)生,就可以對(duì)該學(xué)生信息進(jìn)行修改。</p><p> (3)查詢(xún)學(xué)生基本信息的功能</p><p> 可使用 “姓名”對(duì)已存有的學(xué)生資料進(jìn)行查詢(xún)。</p><p> (4)
13、刪除學(xué)生基本信息的功能 </p><p> 在管理員模式下,只要選擇表格中的某個(gè)學(xué)生,就可以刪除該學(xué)生。</p><p><b> (5)用戶(hù)登陸</b></p><p> 用不同的登錄權(quán)限可以進(jìn)入不同的后臺(tái)界面,從而實(shí)現(xiàn)權(quán)限操作。</p><p> (6)用戶(hù)登陸信息設(shè)置</p><p>
14、; 可以修改用戶(hù)登陸密碼</p><p><b> 1.2 設(shè)計(jì)的目的</b></p><p> 學(xué)生信息管理系統(tǒng)是一個(gè)教育單位不可缺少的部分。一個(gè)功能齊全,簡(jiǎn)單易用的信息管理系統(tǒng)不但能減輕學(xué)校相關(guān)人員的工作負(fù)擔(dān),它的內(nèi)容對(duì)于學(xué)校的決策者和管理者來(lái)說(shuō)都是至關(guān)重要的。所以學(xué)生管理系統(tǒng)應(yīng)該能讓你為用戶(hù)提供充足的信息和快捷的查詢(xún)手段。讓我們?cè)O(shè)計(jì)這個(gè)學(xué)生信息管理系統(tǒng),是
15、讓我們學(xué)生了解學(xué)生管理系統(tǒng)的重要性和它的作用。使用Java語(yǔ)言進(jìn)行面向?qū)ο笤O(shè)計(jì)的基本思路和方法;加強(qiáng)學(xué)生研發(fā)、調(diào)試程序的能力;培養(yǎng)學(xué)生分析、解決問(wèn)題的能力;提高學(xué)生的科技論文寫(xiě)作能力。</p><p><b> 2.分析與設(shè)計(jì): </b></p><p><b> 2.1功能模塊劃分</b></p><p><b
16、> 圖1 功能模塊圖</b></p><p> 2.2數(shù)據(jù)庫(kù)結(jié)構(gòu)描述</p><p> ?。?)數(shù)據(jù)庫(kù)E-R模型</p><p> 圖2 學(xué)生局部E-R圖</p><p> 圖3 登陸用戶(hù)局部E-R圖</p><p> ?。?)數(shù)據(jù)庫(kù)關(guān)系模型——二維</p><p>
17、; 表1 學(xué)生表(student)</p><p> 表2 登陸權(quán)限表(login)</p><p><b> ?。?)數(shù)據(jù)流圖</b></p><p><b> 圖4 數(shù)據(jù)流圖</b></p><p> 2.3系統(tǒng)詳細(xì)設(shè)計(jì)文檔</p><p> 表3 包及其所包
18、含的類(lèi)</p><p> 表4 ManageView類(lèi)</p><p> 表5 StuMainView類(lèi)</p><p> 表6 LoginModel類(lèi)</p><p> 2.4 各模塊實(shí)現(xiàn)方法的描述</p><p> Loginmodel 模塊是驗(yàn)證登陸用戶(hù)是否合法。SqlConn sqlconn是用于自定
19、義鏈接數(shù)據(jù)庫(kù)的對(duì)象,ResultSet rs 是用于定義一個(gè)用于接收數(shù)據(jù)庫(kù)返回的記錄表,String sql.position.pwd是定義三個(gè)字符串變量,存取查詢(xún)語(yǔ)句,職位和密碼,int flag 定義一個(gè)判斷變量,根據(jù)不同的用戶(hù)職位,設(shè)置不同的值,public int checkUser(String userId,String password) 當(dāng)用戶(hù)與密碼正確時(shí),返回一個(gè)值,該值表示該用戶(hù)的職位,根據(jù)該職位進(jìn)入不同的后臺(tái)界面。
20、</p><p> ManageView模塊是管理員登陸成功后的界面,采用的是菜單管理制。JMenuBar jmb是用于定義一個(gè)菜單條,用JMenu jm1,jm2,jm3定義三個(gè)菜單, 采用JMenuItem jm1_1,jm2_1,jm2_2,jm2_3,jm2_4,jm2_5,jm2_6定義六個(gè)二級(jí)菜單項(xiàng), JTable jtb適用于定義一個(gè)表格,用于顯示學(xué)生信息, JScrollPane jsp定義一個(gè)
21、滾動(dòng)面板,用于存放表格, int width,height定義設(shè)置窗口初始位置的變量, TableModel tm自定義一個(gè)表格模型,用于更新表數(shù)據(jù), PurViewModel pvm自定義一個(gè)登陸權(quán)限模型,用于判斷登陸用戶(hù)是否合法public void menuInit把菜單封裝成一個(gè)函數(shù),使用時(shí)在構(gòu)造方法內(nèi)調(diào)用即可初始話(huà), public StumainView()構(gòu)造函數(shù),初始化管理員后臺(tái)界面的相關(guān)組件public void act
22、ionPerformed(ActionEvent arg0) 事件響應(yīng)方法,實(shí)現(xiàn)各個(gè)功能的響應(yīng)。</p><p> StuMainview模塊是學(xué)生登錄成功后的界面,實(shí)現(xiàn)方法與ManageView模塊相同。在學(xué)生登錄后的界面與管理員登錄成功后的界面一致,只是學(xué)生登錄成功后的界面有些功能學(xué)生不能實(shí)現(xiàn),學(xué)生能實(shí)現(xiàn)的功能是現(xiàn)實(shí)學(xué)生信息和查詢(xún)學(xué)生的信息,不能增加,刪除和修改。</p><p>
23、 purViewModel模塊是一個(gè)登陸權(quán)限表模型,用于更新數(shù)據(jù),rowData,row,column是定義表格所需要的集合,是定義一個(gè)記錄集,Resulset rs用于接收從數(shù)據(jù)庫(kù)返回來(lái)的記錄集,設(shè)置的是賬號(hào),密碼和職位的表,用來(lái)記錄需要登錄的管理員和學(xué)生的信息。</p><p> 2.3測(cè)試數(shù)據(jù)及期望結(jié)果</p><p> (1)測(cè)試查詢(xún)金葉珍的信息</p><
24、p> 期望能顯示金葉珍的所有信息</p><p> 圖5 測(cè)試查詢(xún)金葉珍</p><p> (2)測(cè)試添加學(xué)號(hào)為88888,姓名為李靜,性別為女,年齡為20歲,出生地為湖南省長(zhǎng)沙市,專(zhuān)業(yè)為信息管理與信息系統(tǒng),班級(jí)為12101,總學(xué)分為200.</p><p> 期望能添加此學(xué)生的信息。</p><p> 圖6 添加學(xué)生李靜的信
25、息</p><p> 圖7 李靜信息添加成功</p><p><b> 測(cè)試刪除李靜的信息</b></p><p><b> 期望能刪除成功</b></p><p> 圖8 選中要?jiǎng)h除的學(xué)生李靜的信息</p><p> 圖9 成功刪除學(xué)生李靜信息</p>
26、<p> 測(cè)試將琉璃的姓名改為瀟瀟</p><p><b> 期望修改成功</b></p><p> 圖10 修改琉璃的信息</p><p> 圖11 將琉璃的姓名改成瀟瀟</p><p> 圖12 成功修改了琉璃的信息</p><p> 測(cè)試更換管理員的密碼</p
27、><p> 期望管理員的密碼更改成功</p><p><b> 圖13 登陸權(quán)限表</b></p><p> 圖14 修改賬號(hào)為admin管理員的密碼</p><p> 圖14 將admin管理員的密碼修改成mima</p><p> 圖15 admin管理員的密碼修改成功</p>
28、;<p><b> 3.系統(tǒng)測(cè)試</b></p><p> 圖16 系統(tǒng)啟動(dòng)界面</p><p><b> 圖17用戶(hù)登陸界面</b></p><p> 圖18 班委(管理員)界面,即具有完全權(quán)限的用戶(hù)后臺(tái)界面</p><p> 圖19普通用戶(hù)(學(xué)生)界面子菜單項(xiàng)顯示<
29、/p><p> 圖20學(xué)生信息查詢(xún)界面</p><p> 圖21學(xué)生信息查詢(xún)結(jié)果顯示</p><p> 圖22 添加學(xué)生信息界面</p><p> 圖23修改學(xué)生信息界面</p><p> 圖24 顯示所有學(xué)生信息</p><p> 圖25 當(dāng)沒(méi)有選中一行的時(shí)候,不能修改和刪除,并彈出提
30、示警告框</p><p> 圖26刪除文件時(shí)的確認(rèn)對(duì)話(huà)框(當(dāng)點(diǎn)擊確認(rèn)時(shí)才會(huì)刪除,點(diǎn)擊取消,則返回主界面)</p><p> 圖27顯示所有登陸用戶(hù)信息</p><p> 圖28 修改用戶(hù)登陸密碼,選中某個(gè)用戶(hù)進(jìn)行修改</p><p> 圖29關(guān)閉用戶(hù)記錄,即不顯示所有用戶(hù)信息</p><p><b>
31、 圖30關(guān)閉學(xué)生記錄</b></p><p> 圖31退出系統(tǒng)確認(rèn)對(duì)話(huà)框,只有確認(rèn)時(shí)才會(huì)退出系統(tǒng),否則返加主界面</p><p> 圖32 普通學(xué)生登陸后的界面(即不能對(duì)學(xué)生信息進(jìn)行添加,修改和刪除以及用戶(hù)密碼修改,對(duì)應(yīng)的這幾項(xiàng)灰色顯示,不可點(diǎn)擊)</p><p><b> 總結(jié)或心得體會(huì)</b></p>&l
32、t;p> 這次課程設(shè)計(jì)我做的是學(xué)生信息管理系統(tǒng)。學(xué)生信息管理系主要對(duì)在校學(xué)生的個(gè)人基本信息以及成績(jī)信息進(jìn)行管理,對(duì)教師用戶(hù)提供查詢(xún)信息、增添信息、刪除信息等操作功能;對(duì)學(xué)生用戶(hù)提供成績(jī)查詢(xún)功能。我們的目標(biāo)就是為該系統(tǒng)提供后臺(tái)連接數(shù)據(jù)庫(kù)程序設(shè)計(jì)以及前臺(tái)用戶(hù)界面設(shè)計(jì)。</p><p> 雖然系統(tǒng)的基本功能都已實(shí)現(xiàn),但還是存在系統(tǒng)不穩(wěn)定等多個(gè)問(wèn)題尚待解決。我在做系統(tǒng)的過(guò)程中遇到了很多問(wèn)題,有的是知識(shí)存儲(chǔ)不足,
33、有的是考慮不夠周全,之所以能夠順利實(shí)現(xiàn)基本功功能,離不開(kāi)老師和同學(xué)的大力相助。事實(shí)證明,只靠自己是不能順利完成一套功能完整的系統(tǒng)的,必須充分利用團(tuán)隊(duì)的力量。 </p><p> 開(kāi)發(fā)一套系統(tǒng),最重要的是細(xì)心,并不是一定要做到面面俱到,但也要充分考慮到客戶(hù)的需求和現(xiàn)實(shí)意義,不管什么系統(tǒng),只用運(yùn)用到實(shí)際應(yīng)用中,才具有現(xiàn)實(shí)意義。所以在準(zhǔn)備工作中要正確分析用戶(hù)需求,了解現(xiàn)實(shí)應(yīng)用,畫(huà)出流程圖,把大體框架做好,然
34、后再逐一細(xì)化。我們不可能做到面面俱到,但一定要做到步步扎實(shí),作為一個(gè)程序編程人員,要保持清醒的頭腦,以現(xiàn)實(shí)為依據(jù),讓自己的每一行代碼都能實(shí)現(xiàn)自己的意義。 </p><p> 通過(guò)這次課程設(shè)計(jì),我收獲的不僅僅是課程上的知識(shí)得到實(shí)際應(yīng)用,還有編程的基本習(xí)慣和開(kāi)發(fā)系統(tǒng)時(shí)應(yīng)注意的流程。</p><p><b> 五.參考文獻(xiàn)</b></p><
35、;p> (1)趙海廷.Java語(yǔ)言程序設(shè)計(jì)教程.北京:清華大學(xué)出版社.2012(2)孫印杰,劉斌,孫玉強(qiáng).Java編程案例精解.北京:電子工業(yè)出版 社.2005(3)何梅.java編程實(shí)例系列叢書(shū).北京:清華大學(xué)出版社,2002(4)楊昭.編著二級(jí)Java語(yǔ)言程序設(shè)計(jì)教程.北京:中國(guó)水利水電出版社,2006(5)趙文靖編著.Java程序設(shè)計(jì)基礎(chǔ)與上機(jī)指導(dǎo).北京:清華大學(xué)出版社,2006</p><
36、p><b> 六、附錄</b></p><p> 登陸用戶(hù)驗(yàn)證是否合法</p><p> package com.View;</p><p> import java.sql.ResultSet;</p><p> import javax.swing.JOptionPane;</p>&l
37、t;p> import com.SqlConnection.SqlConn;</p><p> public class LoginModel {</p><p> //定義連接數(shù)據(jù)庫(kù)需要的組</p><p> SqlConn sqlconn;</p><p> ResultSet rs;</p><p&g
38、t; String sql,position,pwd;</p><p><b> int flag;</b></p><p> public int checkUser(String userId,String password)</p><p><b> {</b></p><p><
39、;b> flag=0;</b></p><p> sql="select * from login where userId='"+userId+"'";</p><p> sqlconn=new SqlConn();</p><p> rs=sqlconn.sqlQuery(sql)
40、;//返回一個(gè)記錄集</p><p><b> try {</b></p><p> while(rs.next())</p><p><b> {</b></p><p> pwd=rs.getString(2);</p><p> position=rs.get
41、String(3);</p><p> System.out.println("test1="+position);</p><p><b> }</b></p><p> if(password.equals(pwd))</p><p><b> {</b></p
42、><p> if(position.equals("班委"))</p><p><b> {</b></p><p><b> flag=0;</b></p><p><b> }</b></p><p> else if(po
43、sition.equals("普通學(xué)生"))</p><p><b> {</b></p><p><b> flag=1;</b></p><p><b> }</b></p><p><b> }</b></p>
44、<p><b> else </b></p><p><b> {</b></p><p><b> flag=2;</b></p><p><b> }</b></p><p> } catch (Exception e) {&l
45、t;/p><p> e.printStackTrace();</p><p> // TODO: handle exception</p><p><b> }</b></p><p><b> finally</b></p><p><b> {</b
46、></p><p> sqlconn.closeSqlConn();</p><p><b> }</b></p><p> return flag;</p><p><b> }</b></p><p><b> }</b></p
47、><p> 管理員登陸成功后的界面,采用菜單管理制</p><p> package com.View;</p><p> import com.SqlConnection.SqlConn;</p><p> import com.Tools.*;//引入自定義的工具包(字體)</p><p> import j
48、ava.awt.*;</p><p> import java.awt.event.ActionEvent;</p><p> import java.awt.event.ActionListener;</p><p> import javax.swing.*;</p><p> public class ManageView ex
49、tends JFrame implements ActionListener{</p><p> //定義菜單需要要的組件</p><p> JMenuBar jmb;</p><p> JMenu jm1,jm2,jm3;</p><p> JMenuItem jm1_1,jm2_1,jm2_2,jm2_3,jm2_4,jm2_5,
50、jm2_6;</p><p> JMenuItem jm3_1,jm3_2,jm3_3;</p><p> //定義一個(gè)表格,用于顯示學(xué)生信息</p><p> JTable jtb;</p><p> //定義一個(gè)滾動(dòng)面板,用于存放表格</p><p> JScrollPane jsp;</p>
51、<p> //定義設(shè)置窗口初始位置的變量</p><p> int width,height;</p><p> //定義一個(gè)表格模型,用于更新表數(shù)據(jù)</p><p> TableModel tm;</p><p> PurViewModel pvm;</p><p> //把菜單封裝成一個(gè)函
52、數(shù)</p><p> public void menuInit()</p><p><b> {</b></p><p> jm1=new JMenu("系統(tǒng)");</p><p> jm1.setFont(MyFont.f1);</p><p> jm1_1=new
53、 JMenuItem("<-退出系統(tǒng)->");</p><p> jm1_1.addActionListener(this);</p><p> jm1_1.setFont(MyFont.f2);</p><p> jm1.add(jm1_1);</p><p> jm2=new JMenu("
54、;學(xué)生管理");</p><p> jm2.setFont(MyFont.f1);</p><p> jm2_1=new JMenuItem("<-查詢(xún)記錄->");</p><p> jm2_1.addActionListener(this);</p><p> jm2_1.setFont(
55、MyFont.f2);</p><p> jm2_2=new JMenuItem("<-添加記錄->");</p><p> jm2_2.addActionListener(this);</p><p> jm2_2.setFont(MyFont.f2);</p><p> jm2_3=new JMen
56、uItem("<-修改記錄->");</p><p> jm2_3.addActionListener(this);</p><p> jm2_3.setFont(MyFont.f2);</p><p> jm2_4=new JMenuItem("<-刪除記錄->");</p>&l
57、t;p> jm2_4.addActionListener(this);</p><p> jm2_4.setFont(MyFont.f2);</p><p> jm2_5=new JMenuItem("<-顯示記錄->");</p><p> jm2_5.addActionListener(this);</p>
58、;<p> jm2_5.setFont(MyFont.f2);</p><p> jm2_6=new JMenuItem("<-關(guān)閉記錄->");</p><p> jm2_6.addActionListener(this);</p><p> jm2_6.setFont(MyFont.f2);</p>
59、;<p> jm2.add(jm2_5);//把顯示學(xué)生記錄放在最前面</p><p> jm2.add(jm2_1);</p><p> jm2.add(jm2_2);</p><p> jm2.add(jm2_3);</p><p> jm2.add(jm2_4);</p><p> jm
60、2.add(jm2_6);</p><p> jm3=new JMenu("系統(tǒng)設(shè)置");</p><p> jm3.setFont(MyFont.f1);</p><p> jm3_1=new JMenuItem("<-顯示用戶(hù)信息->");</p><p> jm3_1.setF
61、ont(MyFont.f2);</p><p> jm3_1.addActionListener(this);</p><p> jm3_2=new JMenuItem("<-修改用戶(hù)密碼->");</p><p> jm3_2.setFont(MyFont.f2);</p><p> jm3_2.ad
62、dActionListener(this);</p><p> jm3_3=new JMenuItem("<-關(guān)閉用戶(hù)信息->");</p><p> jm3_3.setFont(MyFont.f2);</p><p> jm3_3.addActionListener(this);</p><p> j
63、m3.add(jm3_1);</p><p> jm3.add(jm3_2);</p><p> jm3.add(jm3_3);</p><p><b> //設(shè)置菜單條</b></p><p> jmb=new JMenuBar();</p><p> //把菜單添加到菜單條</
64、p><p> jmb.add(jm1);</p><p> jmb.add(jm2);</p><p> jmb.add(jm3);</p><p> //把菜單條添加到窗體</p><p> this.setJMenuBar(jmb);</p><p><b> }</
65、b></p><p> public static void main(String[] args) {</p><p> // TODO Auto-generated method stub</p><p> ManageView manageview=new ManageView();</p><p><b> }
66、</b></p><p> public ManageView()</p><p><b> {</b></p><p><b> //調(diào)用菜單函數(shù)</b></p><p> this.menuInit();</p><p> //當(dāng)?shù)顷戇M(jìn)入界面時(shí),最初
67、顯示的界面</p><p> jtb=new JTable();</p><p> //在剛登陸進(jìn)去的時(shí)候不讓數(shù)據(jù)顯示出來(lái),如果即時(shí)顯示,當(dāng)數(shù)據(jù)量大時(shí),影響速度,也不太符合常規(guī) ,因此在這里不用更新數(shù)據(jù)模型</p><p> jsp=new JScrollPane(jtb);</p><p> this.add(jsp,"C
68、enter");</p><p><b> //設(shè)置窗體屬性</b></p><p> this.setSize(600,400);</p><p> this.setTitle("學(xué)生信息管理系統(tǒng)-->管理員");</p><p> //設(shè)置窗口的初始位置</p>
69、<p> width=Toolkit.getDefaultToolkit().getScreenSize().width;</p><p> height=Toolkit.getDefaultToolkit().getScreenSize().height;</p><p> this.setLocation(width/2-280, height/2-250);<
70、;/p><p> this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p> this.setVisible(true);</p><p><b> }</b></p><p> //***************事件響應(yīng)****************
71、****//</p><p><b> @Override</b></p><p> public void actionPerformed(ActionEvent arg0) {</p><p> // TODO Auto-generated method stub</p><p><b> //退出
72、系統(tǒng)</b></p><p> if(arg0.getSource()==jm1_1)</p><p><b> {</b></p><p> Object[] options = {"確定","取消"}; </p><p> int respose=JOpti
73、onPane.showOptionDialog(this, "你確認(rèn)要退出系統(tǒng)嗎?","退出系統(tǒng)確認(rèn)對(duì)話(huà)框",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null, options, options[0]); </p><p> if(respose==0)</p><p><
74、b> {</b></p><p> System.out.println("你按下了確認(rèn)按鈕!");</p><p> System.exit(0);//退出系統(tǒng)</p><p><b> }</b></p><p> else if(respose==1)</p&g
75、t;<p><b> {</b></p><p> System.out.println("你按下了取消按鈕!");</p><p><b> return;</b></p><p><b> }</b></p><p><b&g
76、t; }</b></p><p> //*****************查詢(xún)記錄*********************//</p><p> else if(arg0.getSource()==jm2_1)</p><p><b> {</b></p><p> System.out.prin
77、tln("查詢(xún)被點(diǎn)擊了");</p><p> StuQuery sq=new StuQuery(this, "學(xué)生信息查詢(xún)", true);</p><p><b> }</b></p><p> //***************添加記錄******************//</p>
78、;<p> else if(arg0.getSource()==jm2_2)</p><p><b> {</b></p><p> System.out.println("添加被點(diǎn)擊了");</p><p> AddStu addstu=new AddStu(this, "添加學(xué)生信息&qu
79、ot;, true);</p><p> if(addstu.falg()==1)</p><p><b> {</b></p><p> //更新當(dāng)前窗口的學(xué)生信息,以便添加學(xué)生信息后就能看到新信息</p><p> tm=new TableModel(null);</p><p>
80、 jtb.setModel(tm);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> //不更新數(shù)據(jù)</b></p><p>
81、<b> }</b></p><p><b> }</b></p><p> //*************************修改記錄********************//</p><p> else if(arg0.getSource()==jm2_3)</p><p><
82、;b> {</b></p><p> //先判斷是否選擇了一行,沒(méi)有選中,則返回-1,如果選中,則返回選中的那一行的序號(hào),也就是第幾行</p><p> int rowNo=jtb.getSelectedRow();</p><p> if(rowNo==-1)</p><p><b> {</b&
83、gt;</p><p> //沒(méi)有選中,提示信息</p><p> JOptionPane.showMessageDialog(this, "你沒(méi)有選中一行!");</p><p><b> return;</b></p><p><b> }</b></p>
84、<p><b> else </b></p><p><b> {</b></p><p> //得到選擇的那一行的學(xué)號(hào)</p><p> //String stuId=(String)tm.getValueAt(rowNo, 0);//學(xué)號(hào)是字符串,因些得轉(zhuǎn)型</p><p>
85、; //需要把當(dāng)前的這個(gè)數(shù)據(jù)模型和所選擇的那一行的序號(hào)傳過(guò)去</p><p> UpdateStu updateStu=new UpdateStu(this, "修改學(xué)生信息", tm, rowNo, true);</p><p> //更新當(dāng)前窗口的學(xué)生信息,以便更新學(xué)生信息后就能看到新信息</p><p> tm=new TableM
86、odel(null);</p><p> jtb.setModel(tm);</p><p><b> }</b></p><p><b> }</b></p><p> //*********************刪除記錄*******************//</p&g
87、t;<p> else if(arg0.getSource()==jm2_4)</p><p><b> {</b></p><p> System.out.println("你點(diǎn)擊了刪除按鈕");</p><p> //到得某一行,即選擇的那一行</p><p> int r
88、owNo=jtb.getSelectedRow();</p><p> //判斷是否已經(jīng)選擇一行,如果沒(méi)有選擇,則彈出一個(gè)對(duì)話(huà)框,當(dāng)?shù)扔?1時(shí),表示沒(méi)有選擇</p><p> if(rowNo==-1)</p><p><b> {</b></p><p> JOptionPane.showMessageDial
89、og(this,"你沒(méi)有選擇一行!");</p><p><b> return;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>
90、;<p> //得到選擇的那一行的學(xué)號(hào)</p><p> String stuId=(String)tm.getValueAt(rowNo, 0);//某一行的第0列就是學(xué)號(hào),因?yàn)榈玫降膶W(xué)號(hào)是字符串,所以得轉(zhuǎn)型</p><p> System.out.println("stuId="+stuId);</p><p> Str
91、ing sql="delete * from student where stuId='"+stuId+"'";</p><p> Object[] options = {"確定","取消"}; </p><p> int respose=JOptionPane.showOptionDial
92、og(this, "你確認(rèn)要?jiǎng)h除該學(xué)生嗎?","刪除信息確認(rèn)對(duì)話(huà)框",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null, options, options[0]); </p><p> if(respose==0)</p><p><b> {</b>&l
93、t;/p><p> System.out.println("你按下了確認(rèn)按鈕!");</p><p><b> //連接數(shù)據(jù)庫(kù)</b></p><p> SqlConn sqlconn=new SqlConn();</p><p> sqlconn.sqlDelete(sql);</p>
94、;<p> //注意:********這在里必須調(diào)用關(guān)閉數(shù)據(jù)庫(kù)連接的方法,在這里,如果沒(méi)有關(guān)閉資源,則表模型無(wú)法更新成功,切記?。。。?!</p><p> sqlconn.closeSqlConn();</p><p> tm=new TableModel(null);</p><p> jtb.setModel(tm);</p>
95、<p><b> }</b></p><p> else if(respose==1)</p><p><b> {</b></p><p> System.out.println("你按下了取消按鈕!");</p><p><b> return
96、;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> //****************顯示記錄*******************//</p>&l
97、t;p> else if(arg0.getSource()==jm2_5)</p><p><b> {</b></p><p> tm=new TableModel(null);</p><p> jtb.setModel(tm);</p><p> //讓表格顯示學(xué)生信息</p><
98、;p> jtb.setVisible(true);</p><p><b> }</b></p><p> //*****************關(guān)閉記錄*******************//</p><p> else if(arg0.getSource()==jm2_6)</p><p><b
99、> {</b></p><p> System.out.println("jm2_6,關(guān)閉記錄被點(diǎn)擊了!");</p><p><b> //不顯示學(xué)生信息</b></p><p> jtb.setVisible(false);</p><p><b> }<
100、;/b></p><p> //***********************************************************//</p><p> //*****************這是用戶(hù)管理**************//</p><p> //*******顯示所有賬戶(hù)********//</p><
101、;p> else if(arg0.getSource()==jm3_1)</p><p><b> {</b></p><p> pvm=new PurViewModel(null);</p><p> jtb.setModel(pvm);</p><p> //讓表格顯示學(xué)生信息</p>
102、<p> jtb.setVisible(true);</p><p><b> }</b></p><p> //*********修改密碼**********//</p><p> else if(arg0.getSource()==jm3_2)</p><p><b> {</b&
103、gt;</p><p> System.out.println("修改密碼按鈕被點(diǎn)擊了");</p><p> //先判斷是否選擇了一行,沒(méi)有選中,則返回-1,如果選中,則返回選中的那一行的序號(hào),也就是第幾行</p><p> int rowNo=jtb.getSelectedRow();</p><p> if(
104、rowNo==-1)</p><p><b> {</b></p><p> //沒(méi)有選中,提示信息</p><p> JOptionPane.showMessageDialog(this, "你沒(méi)有選中用戶(hù)!");</p><p><b> return;</b><
105、;/p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> //得到選擇的那一行的賬號(hào)</p><p> //String userId=(String)tm.getV
106、alueAt(rowNo, 0);//學(xué)號(hào)是字符串,因些得轉(zhuǎn)型</p><p> //需要把當(dāng)前的這個(gè)數(shù)據(jù)模型和所選擇的那一行的序號(hào)傳過(guò)去</p><p> UpdateLogin updateLogin=new UpdateLogin(this, "修改密碼信息", pvm, rowNo, true);</p><p> //更新當(dāng)前窗口
107、的學(xué)生信息,以便更新學(xué)生信息后就能看到新信息</p><p> pvm=new PurViewModel(null);</p><p> jtb.setModel(pvm);</p><p><b> }</b></p><p><b> }</b></p><p&g
108、t; //**************關(guān)閉表格數(shù)據(jù)***************//</p><p> else if(arg0.getSource()==jm3_3)</p><p><b> {</b></p><p> System.out.println("jm3_3關(guān)閉表格數(shù)據(jù)被點(diǎn)擊了");</p&g
109、t;<p> //不讓表數(shù)據(jù)顯示出來(lái)</p><p> jtb.setVisible(false);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p>
110、; 一個(gè)管理員表模型,用于更新數(shù)據(jù)</p><p> package com.View;</p><p> import com.SqlConnection.*;//引入數(shù)據(jù)庫(kù)連接的包</p><p> import java.sql.*;</p><p> import java.util.*;</p><p&
111、gt; import javax.swing.table.AbstractTableModel;</p><p> import com.SqlConnection.SqlConn;</p><p> public class PurViewModel extends AbstractTableModel {</p><p> //定義表格所需要的集合<
112、;/p><p> Vector rowData,row,column;</p><p> //定義一個(gè)記錄集,用于接收從數(shù)據(jù)庫(kù)返回來(lái)的記錄集</p><p> ResultSet rs;</p><p> SqlConn conn;</p><p> public PurViewModel(String sql)
113、</p><p><b> {</b></p><p> if(sql==null)</p><p><b> {</b></p><p> sql="select * from login";</p><p><b> }</b
114、></p><p><b> //設(shè)置表格的列名</b></p><p> column=new Vector();</p><p> column.add("賬號(hào)");</p><p> column.add("密碼");</p><p>
115、 column.add("職位");</p><p><b> //創(chuàng)建表的記錄集</b></p><p> rowData=new Vector();</p><p><b> //調(diào)用數(shù)據(jù)庫(kù)連接</b></p><p> conn=new SqlConn();<
116、/p><p> rs=conn.sqlQuery(sql);</p><p><b> try {</b></p><p> while(rs.next())</p><p><b> {</b></p><p> row=new Vector();</p>
117、<p> row.add(rs.getString(1));</p><p> row.add(rs.getString(2));</p><p> row.add(rs.getString(3));</p><p> rowData.add(row);</p><p><b> }</b><
118、;/p><p> } catch (Exception e) {</p><p> e.printStackTrace();</p><p> // TODO: handle exception</p><p><b> }</b></p><p><b> }</b>
119、</p><p><b> @Override</b></p><p> public String getColumnName(int column) {</p><p> // TODO Auto-generated method stub</p><p> return (String)this.colum
120、n.get(column);</p><p><b> }</b></p><p><b> @Override</b></p><p><b> //得到的列數(shù)</b></p><p> public int getColumnCount() {</p>
121、<p> // TODO Auto-generated method stub</p><p> return this.column.size();</p><p><b> }</b></p><p><b> //得到的行數(shù)</b></p><p><b> @
122、Override</b></p><p> public int getRowCount() {</p><p> // TODO Auto-generated method stub</p><p> return this.rowData.size();</p><p><b> }</b><
123、;/p><p><b> @Override</b></p><p> //得到某行某列的值</p><p> public Object getValueAt(int arg0, int arg1) {</p><p> // TODO Auto-generated method stub</p>&
124、lt;p> return ((Vector)this.rowData.get(arg0)).get(arg1);</p><p><b> }</b></p><p><b> }</b></p><p> 管理員登陸成功后的界面(學(xué)生管理),采用菜單管理制</p><p> pac
125、kage com.View;</p><p> import com.SqlConnection.SqlConn;</p><p> import com.Tools.*;//引入自定義的工具包(字體)</p><p> import java.awt.*;</p><p> import java.awt.event.ActionE
126、vent;</p><p> import java.awt.event.ActionListener;</p><p> import javax.swing.*;</p><p> public class StuMainView extends JFrame implements ActionListener{</p><p>
127、 //定義菜單需要要的組件</p><p> JMenuBar jmb;</p><p> JMenu jm1,jm2,jm3;</p><p> JMenuItem jm1_1,jm2_1,jm2_2,jm2_3,jm2_4,jm2_5,jm2_6;</p><p> JMenuItem jm3_1,jm3_2,jm3_3;<
128、/p><p> //定義一個(gè)表格,用于顯示學(xué)生信息</p><p> JTable jtb;</p><p> //定義一個(gè)滾動(dòng)面板,用于存放表格</p><p> JScrollPane jsp;</p><p> //定義設(shè)置窗口初始位置的變量</p><p> int width,
129、height;</p><p> //定義一個(gè)表格模型,用于更新表數(shù)據(jù)</p><p> TableModel tm;</p><p> //把菜單封裝成一個(gè)函數(shù)</p><p> public void menuInit()</p><p><b> {</b></p>
130、<p> jm1=new JMenu("系統(tǒng)");</p><p> jm1.setFont(MyFont.f1);</p><p> jm1_1=new JMenuItem("<-退出系統(tǒng)->");</p><p> jm1_1.addActionListener(this);</p>
131、;<p> jm1_1.setFont(MyFont.f2);</p><p> jm1.add(jm1_1);</p><p> jm2=new JMenu("學(xué)生管理");</p><p> jm2.setFont(MyFont.f1);</p><p> jm2_1=new JMenuItem
132、("<-查詢(xún)記錄->");</p><p> jm2_1.addActionListener(this);</p><p> jm2_1.setFont(MyFont.f2);</p><p> jm2_2=new JMenuItem("<-添加記錄->");</p><p&g
133、t; jm2_2.addActionListener(this);</p><p> jm2_2.setEnabled(false);</p><p> jm2_2.setFont(MyFont.f2);</p><p> jm2_3=new JMenuItem("<-修改記錄->");</p><p>
134、; jm2_3.addActionListener(this);</p><p> jm2_3.setEnabled(false);</p><p> jm2_3.setFont(MyFont.f2);</p><p> jm2_4=new JMenuItem("<-刪除記錄->");</p><p>
135、 jm2_4.addActionListener(this);</p><p> jm2_4.setEnabled(false);</p><p> jm2_4.setFont(MyFont.f2);</p><p> jm2_5=new JMenuItem("<-顯示記錄->");</p><p>
136、 jm2_5.addActionListener(this);</p><p> jm2_5.setFont(MyFont.f2);</p><p> jm2_6=new JMenuItem("<-關(guān)閉記錄->");</p><p> jm2_6.addActionListener(this);</p><p
137、> jm2_6.setFont(MyFont.f2);</p><p> jm2.add(jm2_5);</p><p> jm2.add(jm2_1);</p><p> jm2.add(jm2_2);</p><p> jm2.add(jm2_3);</p><p> jm2.add(jm2_4)
138、;</p><p> jm2.add(jm2_6);</p><p> jm3=new JMenu("系統(tǒng)設(shè)置");</p><p> jm3.setFont(MyFont.f1);</p><p> jm3_1=new JMenuItem("<-顯示用戶(hù)->");</p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)報(bào)告--學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告 (2)
- 學(xué)生選課信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- vb課程設(shè)計(jì)報(bào)告-- 學(xué)生信息管理系統(tǒng)
- java課程設(shè)計(jì)報(bào)告--學(xué)生信息管理系統(tǒng)
- java課程設(shè)計(jì)報(bào)告---學(xué)生信息管理系統(tǒng)
- vb課程設(shè)計(jì)報(bào)告--學(xué)生信息管理系統(tǒng)
- c課程設(shè)計(jì)報(bào)告(學(xué)生信息管理系統(tǒng))
- c++課程設(shè)計(jì)——學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)----學(xué)生信息管理系統(tǒng)
- 課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- 課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論