java課程設(shè)計(jì)報(bào)告學(xué)生管理系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)         </p>&

2、lt;p>  姓    名:                               

3、       </p><p>  學(xué)    號(hào):                    </p&g

4、t;<p>  設(shè)計(jì)時(shí)間:        2014.6.23—2014.6.27       </p><p><b>  目 錄</b></p><p>  1.系統(tǒng)描述.................

5、....................3</p><p>  1.1需要實(shí)現(xiàn)的功能............................3</p><p>  1.2 設(shè)計(jì)的目的...............................3</p><p>  2.分析與設(shè)計(jì)...................................4</p&

6、gt;<p>  2.1 功能模塊劃分............................4</p><p>  2.2 數(shù)據(jù)庫(kù)結(jié)構(gòu)描述..........................4</p><p>  2.3    系統(tǒng)詳細(xì)設(shè)計(jì)文檔........................5</p><

7、;p>  2.4 各個(gè)模塊實(shí)現(xiàn)方法描述....................9</p><p>  2.5 測(cè)試數(shù)據(jù)及期望結(jié)果......................9</p><p>  3.系統(tǒng)測(cè)試.....................................12</p><p>  4.總結(jié)或心得體會(huì)................

8、...............18</p><p>  5.參考文獻(xiàn).....................................19</p><p>  6.附錄.........................................19</p><p><b>  1.系統(tǒng)描述</b></p><p

9、>  1.1需要實(shí)現(xiàn)的功能</p><p>  (1)錄入學(xué)生基本信息的功能</p><p>  學(xué)生基本信息主要包括:學(xué)號(hào)、姓名、性別、年齡、出生地、專業(yè)、班級(jí)、總學(xué)分,在插入時(shí),如果數(shù)據(jù)庫(kù)則已經(jīng)存在該學(xué)號(hào),則不能再插入該學(xué)號(hào)。</p><p>  (2)修改學(xué)生基本信息的功能</p><p>  在管理員模式下,只要在表格中選中某個(gè)

10、學(xué)生,就可以對(duì)該學(xué)生信息進(jìn)行修改。</p><p>  (3)查詢學(xué)生基本信息的功能</p><p>  可使用 “姓名”對(duì)已存有的學(xué)生資料進(jìn)行查詢。</p><p>  (4)刪除學(xué)生基本信息的功能 </p><p>  在管理員模式下,只要選擇表格中的某個(gè)學(xué)生,就可以刪除該學(xué)生。</p><p><b>

11、  (5)用戶登陸</b></p><p>  用不同的登錄權(quán)限可以進(jìn)入不同的后臺(tái)界面,從而實(shí)現(xiàn)權(quán)限操作。</p><p>  (6)用戶登陸信息設(shè)置</p><p>  可以修改用戶登陸密碼</p><p><b>  1.2 設(shè)計(jì)的目的</b></p><p>  本程序用于用戶對(duì)

12、少量學(xué)生信息進(jìn)行簡(jiǎn)單的管理,本程序針對(duì)于對(duì)安全系數(shù)要求不高,操作不是很復(fù)雜的小型客戶開(kāi)發(fā)。本程序的管理員可以實(shí)現(xiàn)對(duì)學(xué)生信息的錄入、查詢、修改、刪除等操作,同時(shí)支持查看所有學(xué)生信息,學(xué)生只能查詢自己的信息。程序功能完善,界面簡(jiǎn)潔美觀,布局合理,操作簡(jiǎn)便,簡(jiǎn)單易用,任何人可輕松操作。</p><p>  同時(shí),本程序?qū)ο到y(tǒng)要求配置較低,運(yùn)行速度快,而卻對(duì)數(shù)據(jù)庫(kù)管理要求較低。本程序數(shù)據(jù)庫(kù)采用office2007版本的a

13、ccess數(shù)據(jù)庫(kù)(.accdb)進(jìn)行數(shù)據(jù)存儲(chǔ),該數(shù)據(jù)庫(kù)可實(shí)現(xiàn)關(guān)系較為簡(jiǎn)單的數(shù)據(jù)管理。</p><p><b>  2.分析與設(shè)計(jì): </b></p><p><b>  2.1功能模塊劃分</b></p><p><b>  圖1 功能模塊圖</b></p><p>  2.2

14、數(shù)據(jù)庫(kù)結(jié)構(gòu)描述</p><p> ?。?)數(shù)據(jù)庫(kù)E-R模型</p><p>  圖2 學(xué)生局部E-R圖</p><p>  圖3 登陸用戶局部E-R圖</p><p>  (2)數(shù)據(jù)庫(kù)關(guān)系模型——二維</p><p>  表1 學(xué)生表(student)</p><p>  表2 登陸權(quán)限表

15、(login)</p><p><b>  (3)數(shù)據(jù)流圖</b></p><p><b>  圖4 數(shù)據(jù)流圖</b></p><p>  2.3系統(tǒng)詳細(xì)設(shè)計(jì)文檔</p><p>  表3 包以及包所包含的類</p><p>  表4 SqlConn類</p>

16、<p><b>  表5 Index類</b></p><p>  表6 Login類 </p><p>  2.4各個(gè)模塊實(shí)現(xiàn)方法描述</p><p>  sqlConnection是連接數(shù)據(jù)庫(kù)??蓪?shí)現(xiàn)發(fā)送SQL語(yǔ)句給數(shù)據(jù)庫(kù),獲得數(shù)據(jù)庫(kù)返回的記錄集,實(shí)現(xiàn)查詢、添加、修改、刪除學(xué)生記錄,關(guān)閉數(shù)據(jù)庫(kù)連接等功能。Myfont是設(shè)置窗體各

17、組件的字體。Index是使用進(jìn)度條與線程結(jié)合實(shí)現(xiàn)閃屏,初始化進(jìn)入登陸界面。Login是登陸界面,管理員與用戶登陸,可以分別登入管理員和用戶,管理員與用戶的登錄進(jìn)去后可分別按自己的權(quán)限操作。</p><p>  2.5 測(cè)試數(shù)據(jù)及期望結(jié)果</p><p>  在登入窗口可以分別登入管理員和用戶的賬號(hào)及密碼,會(huì)進(jìn)入權(quán)限不同的頁(yè)面,管理員可以實(shí)現(xiàn)查詢、添加、修改、刪除學(xué)生記錄,還可以查詢,修改

18、、刪除管理員表格。而學(xué)生只能查詢學(xué)生記錄。例如: </p><p><b>  圖1登入管理員</b></p><p><b>  圖2查詢?nèi)啃畔?</b></p><p><b>  圖3查詢個(gè)人信息</b><

19、;/p><p><b>  圖4添加學(xué)生信息</b></p><p><b>  圖5修改學(xué)生信息</b></p><p><b>  圖6修改學(xué)生信息</b></p><p>  圖7查詢肖林衛(wèi)婕的成績(jī)</p><p><b>  系統(tǒng)測(cè)試<

20、;/b></p><p><b>  圖8系統(tǒng)啟動(dòng)界面</b></p><p>  圖9 用戶登陸界面</p><p>  圖10 班委(管理員)界面,即具有完全權(quán)限的用戶后臺(tái)界面</p><p>  圖11 班委(管理員)界面子菜單項(xiàng)顯示</p><p>  圖12 普通用戶(學(xué)生)界面

21、子菜單項(xiàng)顯示</p><p>  圖13學(xué)生信息查詢結(jié)果顯示</p><p>  圖14 添加學(xué)生信息界面</p><p>  圖15 修改學(xué)生信息界面</p><p>  圖16 顯示所有學(xué)生信息</p><p>  圖17當(dāng)沒(méi)有選中一行的時(shí)候,不能修改和刪除,并彈出提示警告框</p><p&g

22、t;  圖18 刪除文件時(shí)的確認(rèn)對(duì)話框(當(dāng)點(diǎn)擊確認(rèn)時(shí)才會(huì)刪除,點(diǎn)擊取消,則返回主界面)</p><p>  圖19 顯示所有登陸用戶信息</p><p>  圖20 修改用戶登陸密碼,選中某個(gè)用戶進(jìn)行修改</p><p>  圖21 關(guān)閉用戶記錄,即不顯示所有用戶信息</p><p>  圖22 關(guān)閉學(xué)生記錄</p><p

23、>  圖23 退出系統(tǒng)確認(rèn)對(duì)話框,只有確認(rèn)時(shí)才會(huì)退出系統(tǒng),否則返加主界面</p><p>  圖24 普通學(xué)生登陸后的界面(即不能對(duì)學(xué)生信息進(jìn)行添加,修改和刪除以及用戶密碼修改,對(duì)應(yīng)的這幾項(xiàng)灰色顯示,不可點(diǎn)擊)</p><p><b>  四、總結(jié)或心得體會(huì)</b></p><p>  1)在寫代碼之前,在大腦里一定要把思路理清楚,不能

24、模模糊糊,一定要把功能圖和流程圖畫出來(lái),然后根據(jù)它去實(shí)現(xiàn)每一個(gè)功能塊,要多分析,培養(yǎng)一種良好的邏輯思維能力。</p><p>  2)在寫代碼的過(guò)程中,一定要采取就近原則,同一個(gè)功能,或者對(duì)同一個(gè)組件的設(shè)置一般要寫在一塊,這樣寫的程序比較清晰,不容易出錯(cuò),也便于查找。</p><p>  3)要養(yǎng)成良好的注釋習(xí)慣,一是有利于別人閱讀你的程序,同時(shí)也有利于自己以后再看,就能很快的讀懂程序,提

25、高效率。</p><p>  4)把功能模塊化,即把實(shí)現(xiàn)相同功能的代碼段封裝成一到一個(gè)類或者一個(gè)方法中,實(shí)現(xiàn)的時(shí)候調(diào)用即可,這樣能提高代碼的可讀性</p><p>  5)養(yǎng)成創(chuàng)建包來(lái)存放不同功能的類,使系統(tǒng)的結(jié)構(gòu)更加模塊化和規(guī)范化。</p><p>  6)在編寫代碼的時(shí)候,一定要邊寫邊調(diào)試,要適時(shí)的設(shè)置斷點(diǎn),或者把某些變量的值輸出到控制臺(tái),通過(guò)觀察和分析變量的值

26、,便于判斷問(wèn)題所在,同時(shí),需要捕獲異常的一定要把異常信息打印出來(lái),便于分析問(wèn)題。</p><p>  在老師悉心的指導(dǎo)下,我順利地完成了本次課程設(shè)計(jì),并取得了很大的收獲,對(duì)以后的軟件開(kāi)發(fā)奠定了一定的基礎(chǔ)!</p><p><b>  參考文獻(xiàn)</b></p><p> ?。?)趙海廷.Java語(yǔ)言程序設(shè)計(jì)教程.北京:清華大學(xué)出版社.2012&l

27、t;/p><p> ?。?)孫印杰,劉斌,孫玉強(qiáng).Java編程案例精解.北京:電子工業(yè)出版 社.2005</p><p> ?。?)何梅.java編程實(shí)例系列叢書.北京:清華大學(xué)出版社,2002</p><p> ?。?)楊昭.編著二級(jí)Java語(yǔ)言程序設(shè)計(jì)教程.北京:中國(guó)水利水電出版社,2006</p><p> ?。?)趙文靖編著.Java

28、程序設(shè)計(jì)基礎(chǔ)與上機(jī)指導(dǎo).北京:清華大學(xué)出版社,2006</p><p><b>  六、附錄</b></p><p>  (1)功能:連接數(shù)據(jù)庫(kù)</p><p>  package com.SqlConnection;</p><p>  import java.sql.*;</p><p>  

29、import com.View.AddStu;</p><p>  public class SqlConn {</p><p>  Connection ct=null;</p><p>  PreparedStatement ps=null;</p><p>  ResultSet rs=null;</p><p>

30、;  String driver="sun.jdbc.odbc.JdbcOdbcDriver";</p><p>  String dburl="jdbc:odbc:stuSystem";</p><p>  String userName="";</p><p>  String password=&qu

31、ot;";</p><p>  //實(shí)現(xiàn)查詢功能的方法</p><p>  public ResultSet sqlQuery(String sql)</p><p><b>  {</b></p><p><b>  try {</b></p><p><b

32、>  //加載驅(qū)動(dòng)</b></p><p>  Class.forName(driver);</p><p>  ct=DriverManager.getConnection(dburl,userName,password);</p><p>  ps=ct.prepareStatement(sql);</p><p>  

33、rs=ps.executeQuery();</p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p>  // TODO: handle exception</p><p><b>  }</b></p><p&g

34、t;  return rs;</p><p><b>  }</b></p><p>  //實(shí)現(xiàn)添加,修改功能 的方法</p><p>  public void sqlUpdate(String sql)</p><p><b>  {</b></p><p><b

35、>  try {</b></p><p><b>  //加載驅(qū)動(dòng)</b></p><p>  Class.forName(driver);</p><p>  ct=DriverManager.getConnection(dburl,userName,password);</p><p>  ps=c

36、t.prepareStatement(sql);</p><p>  //執(zhí)行添加,更新操作</p><p>  int i=ps.executeUpdate();//返回一個(gè)值,如果為1則表示添加成功。</p><p><b>  if(i==1)</b></p><p><b>  {</b>&

37、lt;/p><p>  System.out.println("數(shù)據(jù)添加/修改成功!");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  

38、System.out.println("數(shù)據(jù)添加/修改失??!");</p><p><b>  }</b></p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p>  // TODO: handle except

39、ion</p><p><b>  }</b></p><p><b>  }</b></p><p>  //實(shí)現(xiàn)刪除學(xué)生記錄的方法</p><p>  public void sqlDelete(String sql)</p><p><b>  {</b

40、></p><p><b>  try {</b></p><p><b>  //加載驅(qū)動(dòng)</b></p><p>  System.out.println("ok");</p><p>  Class.forName(driver);</p><p&

41、gt;  ct=DriverManager.getConnection(dburl,userName,password);</p><p>  ps=ct.prepareStatement(sql);</p><p>  System.out.println("ok1");</p><p>  //執(zhí)行添加,更新操作</p><

42、;p>  int i=ps.executeUpdate();//返回一個(gè)值,如果為1則表示刪除成功。</p><p><b>  if(i==1)</b></p><p><b>  {</b></p><p>  System.out.println("數(shù)據(jù)刪除成功!");</p>

43、<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  System.out.println("數(shù)據(jù)刪除失??!");</p><p><b>  }<

44、;/b></p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p>  // TODO: handle exception</p><p><b>  }</b></p><p><b>  }

45、</b></p><p>  //實(shí)現(xiàn)關(guān)閉數(shù)據(jù)庫(kù)連接的功能</p><p>  public void closeSqlConn()</p><p><b>  {</b></p><p><b>  try {</b></p><p>  if(rs!=null

46、)rs.close();</p><p>  if(ps!=null)ps.close();</p><p>  if(ct!=null)ct.close();</p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p>  // T

47、ODO: handle exception</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p> ?。?)功能:這是一個(gè)字體包,用于美化窗口的字體</p><p>  p

48、ackage com.Tools;</p><p>  import java.awt.Font;</p><p>  public class MyFont {</p><p>  public static Font f1=new Font("宋體",Font.PLAIN,15);</p><p>  public s

49、tatic Font f2=new Font("宋體",Font.PLAIN,13);</p><p><b>  }</b></p><p> ?。?) 功能:這是添加學(xué)生的界面,通過(guò)模式對(duì)話(即繼承JDialog對(duì)話框)來(lái)實(shí)現(xiàn) </p><p>  package com.View;</p><p&g

50、t;  import java.awt.*;</p><p>  import java.awt.event.ActionEvent;</p><p>  import java.awt.event.ActionListener;</p><p>  import java.sql.ResultSet;</p><p>  import ja

51、vax.swing.*;</p><p>  import com.SqlConnection.SqlConn;</p><p>  import com.Tools.MyFont;</p><p>  public class AddStu extends JDialog implements ActionListener {</p><p&g

52、t;  //定義添加學(xué)生信息的相關(guān)組件</p><p>  JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8;</p><p>  JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7,jtf8;</p><p>  JButton jb1,jb2,jb3;</p><p> 

53、 ResultSet rs;</p><p>  SqlConn sqlconn;</p><p>  String No;</p><p>  int stuAge=0;</p><p>  Double stuSourse=0.0;</p><p>  int i=0;//用于判斷到底點(diǎn)擊了添加還是取消,來(lái)決定是否

54、執(zhí)行數(shù)據(jù)更新操作</p><p>  public int falg()</p><p><b>  {</b></p><p><b>  return i;</b></p><p><b>  }</b></p><p>  //這是添加學(xué)生界面的函

55、數(shù)封裝</p><p>  public void addView()</p><p><b>  {</b></p><p>  jl1=new JLabel("學(xué) 號(hào):");</p><p>  jl1.setBounds(20, 20, 60, 25);</p><p>

56、  jl1.setFont(MyFont.f1);</p><p>  jl2=new JLabel("姓 名:");</p><p>  jl2.setFont(MyFont.f1);</p><p>  jl2.setBounds(250, 20, 60, 25);</p><p>  jl3=new JLabel(&

57、quot;性 別:");</p><p>  jl3.setFont(MyFont.f1);</p><p>  jl3.setBounds(20, 60, 60, 25);</p><p>  jl4=new JLabel("年 齡:");</p><p>  jl4.setFont(MyFont.f1);&l

58、t;/p><p>  jl4.setBounds(250, 60, 60, 25);</p><p>  jl5=new JLabel("出生地:");</p><p>  jl5.setFont(MyFont.f1);</p><p>  jl5.setBounds(14, 100, 60, 25);</p>

59、<p>  jl6=new JLabel("專 業(yè):");</p><p>  jl6.setFont(MyFont.f1);</p><p>  jl6.setBounds(20, 140, 60, 25);</p><p>  jl7=new JLabel("班 級(jí):");</p><p>

60、;  jl7.setFont(MyFont.f1);</p><p>  jl7.setBounds(20, 180, 60, 25);</p><p>  jl8=new JLabel("總學(xué)分:");</p><p>  jl8.setFont(MyFont.f1);</p><p>  jl8.setBounds(2

61、40, 180, 60, 25);</p><p>  jtf1=new JTextField(20);</p><p>  jtf1.setBounds(70, 20, 130, 25);</p><p>  jtf1.setBorder(BorderFactory.createLoweredBevelBorder());</p><p>

62、  jtf2=new JTextField(20);</p><p>  jtf2.setBounds(300, 20, 130, 25);</p><p>  jtf2.setBorder(BorderFactory.createLoweredBevelBorder());</p><p>  jtf3=new JTextField(10);</p>

63、<p>  jtf3.setBounds(70, 60, 60, 25);</p><p>  jtf3.setBorder(BorderFactory.createLoweredBevelBorder());</p><p>  jtf4=new JTextField(10);</p><p>  jtf4.setBounds(300, 60, 60,

64、 25);</p><p>  jtf4.setBorder(BorderFactory.createLoweredBevelBorder());</p><p>  jtf5=new JTextField(30);</p><p>  jtf5.setBounds(70, 100, 360, 25);</p><p>  jtf5.setB

65、order(BorderFactory.createLoweredBevelBorder());</p><p>  jtf6=new JTextField(20);</p><p>  jtf6.setBounds(70, 140, 290, 25);</p><p>  jtf6.setBorder(BorderFactory.createLoweredBeve

66、lBorder());</p><p>  jtf7=new JTextField(20);</p><p>  jtf7.setBounds(70, 180, 130, 25);</p><p>  jtf7.setBorder(BorderFactory.createLoweredBevelBorder());</p><p>  jtf

67、8=new JTextField(20);</p><p>  jtf8.setBounds(300, 180, 130, 25);</p><p>  jtf8.setBorder(BorderFactory.createLoweredBevelBorder());</p><p>  jb1=new JButton("添 加");</p

68、><p>  jb1.setFont(MyFont.f1);</p><p>  jb1.setBounds(100, 220, 80, 25);</p><p>  jb1.addActionListener(this);</p><p>  jb2=new JButton("取 消");</p><p&

69、gt;  jb2.setFont(MyFont.f1);</p><p>  jb2.setBounds(280, 220, 80, 25);</p><p>  jb2.addActionListener(this);</p><p>  jb3=new JButton("清 除");</p><p>  jb3.set

70、Font(MyFont.f1);</p><p>  jb3.setBounds(190,220,80,25);</p><p>  jb3.addActionListener(this);</p><p>  this.setLayout(null);</p><p>  //把組件添加到窗體</p><p>  t

71、his.add(jl1);</p><p>  this.add(jtf1);</p><p>  this.add(jl2);</p><p>  this.add(jtf2);</p><p>  this.add(jl3);</p><p>  this.add(jtf3);</p><p&g

72、t;  this.add(jl4);</p><p>  this.add(jtf4);</p><p>  this.add(jl5);</p><p>  this.add(jtf5);</p><p>  this.add(jl6);</p><p>  this.add(jtf6);</p>&l

73、t;p>  this.add(jl7);</p><p>  this.add(jtf7);</p><p>  this.add(jl8);</p><p>  this.add(jtf8);</p><p>  this.add(jb1);</p><p>  this.add(jb2);</p>

74、<p>  this.add(jb3);</p><p><b>  }</b></p><p>  public AddStu(Frame Main,String title,boolean model)</p><p><b>  {</b></p><p>  //調(diào)用父類的構(gòu)造

75、方法,實(shí)現(xiàn)模式對(duì)話</p><p>  super(Main,title,model);</p><p>  //調(diào)用添加學(xué)生信息界面的的方法</p><p>  this.addView();</p><p><b>  //設(shè)置窗體的屬性</b></p><p>  this.setSize(

76、465,300);</p><p>  this.getContentPane().setBackground(Color.LIGHT_GRAY);//設(shè)置背景必須是在顯示窗口前面,否則不能顯示出來(lái)</p><p>  this.setVisible(true);</p><p>  this.setResizable(false);</p><

77、p><b>  }</b></p><p><b>  @Override</b></p><p>  public void actionPerformed(ActionEvent e) {</p><p>  // TODO Auto-generated method stub</p><p&

78、gt;  //用于判斷輸入的學(xué)號(hào)是否存在時(shí),如果存在則返回該學(xué)號(hào),否則返回null,因此在這里,定義一個(gè)用于接收該返回的學(xué)號(hào)</p><p>  //并設(shè)置該No的初始值為空,否則報(bào)錯(cuò)。</p><p>  String No = null ;</p><p>  //當(dāng)點(diǎn)擊了添加按鈕</p><p>  if(e.getSource()==

79、jb1)</p><p><b>  {</b></p><p>  //***********************************//</p><p>  //獲取文本框的信息</p><p>  String stuId=jtf1.getText().trim();</p><p&g

80、t;  //判斷,不能讓文本輸入框的值為空</p><p>  if(stuId.equals(""))</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(this, "請(qǐng)輸入學(xué)號(hào)!");</p><p>  r

81、eturn;//返回到輸入界面,如果沒(méi)有return語(yǔ)句,則會(huì)回到主界面</p><p><b>  }</b></p><p>  String stuName=jtf2.getText().trim();</p><p>  if(stuName.equals(""))</p><p><b

82、>  {</b></p><p>  JOptionPane.showMessageDialog(this, "請(qǐng)輸入姓名!");</p><p>  return;//返回到輸入界面,如果沒(méi)有return語(yǔ)句,則會(huì)回到主界面</p><p><b>  }</b></p><p>

83、  String stuSex=jtf3.getText().trim();</p><p>  if(stuSex.equals(""))</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(this, "請(qǐng)輸入性別!");</p

84、><p>  return;//返回到輸入界面,如果沒(méi)有return語(yǔ)句,則會(huì)回到主界面</p><p><b>  }</b></p><p>  ////對(duì)于年齡,則需要進(jìn)行兩個(gè)判斷,一個(gè)是不能為空,另一個(gè)必須是int型,下面用異常來(lái)判斷輸入的學(xué)生年齡是否是整型數(shù)</p><p>  //****************

85、**************************//</p><p><b>  try {</b></p><p>  stuAge=Integer.parseInt(jtf4.getText().trim());//把從文本框取得的字符串轉(zhuǎn)換成整型,如果拋異常,則輸入的不是整形數(shù)</p><p>  if(stuAge<1)<

86、;/p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(this, "年齡必須大于或等于1!");</p><p><b>  return;</b></p><p><b>  }</b><

87、/p><p>  } catch (Exception e2) {</p><p>  //提示輸入的不是整數(shù)</p><p>  JOptionPane.showMessageDialog(this, "請(qǐng)輸入一個(gè)整數(shù)的年齡!");</p><p>  //如果拋異常,則返回到添加窗口,后面終止執(zhí)行*************

88、*****************//</p><p><b>  return;</b></p><p>  // TODO: handle exception</p><p><b>  }</b></p><p>  //************************************

89、*******************************//</p><p>  String stuJg=jtf5.getText().trim();</p><p>  if(stuJg.equals(""))</p><p><b>  {</b></p><p>  JOptionPan

90、e.showMessageDialog(this, "請(qǐng)輸入出生地!");</p><p>  return;//返回到輸入界面,如果沒(méi)有return語(yǔ)句,則會(huì)回到主界面</p><p><b>  }</b></p><p>  String stuZy=jtf6.getText().trim();</p>

91、<p>  if(stuZy.equals(""))</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(this, "請(qǐng)輸入專業(yè)!");</p><p>  return;//返回到輸入界面,如果沒(méi)有return語(yǔ)句,則會(huì)回到

92、主界面</p><p><b>  }</b></p><p>  String classId=jtf7.getText().trim();</p><p>  if(classId.equals(""))</p><p><b>  {</b></p><

93、p>  JOptionPane.showMessageDialog(this, "請(qǐng)輸入班號(hào)!");</p><p>  return;//返回到輸入界面,如果沒(méi)有return語(yǔ)句,則會(huì)回到主界面</p><p><b>  }</b></p><p>  //*****************************

94、**************//</p><p><b>  try {</b></p><p>  stuSourse=Double.parseDouble(jtf8.getText().trim());</p><p>  if(stuSourse==0.0)</p><p><b>  {</b&g

95、t;</p><p>  JOptionPane.showMessageDialog(this, "請(qǐng)輸入總學(xué)分!");</p><p>  return;//返回到輸入界面,如果沒(méi)有return語(yǔ)句,則會(huì)回到主界面</p><p><b>  }</b></p><p>  } catch (Exc

96、eption e2) {</p><p>  JOptionPane.showMessageDialog(this, "請(qǐng)輸入一個(gè)整數(shù)或小數(shù)的總學(xué)分!");</p><p><b>  return;</b></p><p>  // TODO: handle exception</p><p>&l

97、t;b>  }</b></p><p>  //**********************************************//</p><p>  //首先先判斷該主鍵是否在數(shù)據(jù)庫(kù)中是否存在,其次分別判斷性別是否為“男”或者“女”,年齡是否為數(shù)字,總學(xué)分是否為浮點(diǎn)型或雙精度型</p><p>  String sql="

98、select * from student where stuId='"+stuId+"'";</p><p>  SqlConn sqlconn=new SqlConn();</p><p>  rs=sqlconn.sqlQuery(sql);</p><p><b>  try {</b>&l

99、t;/p><p>  while(rs.next())</p><p><b>  {</b></p><p>  No=rs.getString(1);//看到底是否存在該學(xué)生的學(xué)號(hào),如果存在,則返回該學(xué)號(hào),不存在,則為空。</p><p><b>  }</b></p><p&g

100、t;  } catch (Exception e2) {</p><p>  e2.printStackTrace();</p><p>  // TODO: handle exception</p><p><b>  }</b></p><p>  if(No==null)</p><p>&

101、lt;b>  {</b></p><p>  if((stuSex.equals("男")||stuSex.equals("女")))</p><p><b>  {</b></p><p><b>  //調(diào)用數(shù)據(jù)庫(kù)連接</b></p><p&

102、gt;  sql="insert into student values('"+stuId+"','"+stuName+"','"+stuSex+"','"+stuAge+"','"+stuJg+"','"+stuZy+"

103、','"+classId+"','"+stuSourse+"')";</p><p>  sqlconn=new SqlConn();</p><p>  sqlconn.sqlUpdate(sql);</p><p><b>  this.i=1;</b>

104、;</p><p><b>  //關(guān)閉數(shù)據(jù)庫(kù)連接</b></p><p>  sqlconn.closeSqlConn();</p><p>  this.dispose();</p><p><b>  }</b></p><p><b>  else <

105、/b></p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(this, "性別應(yīng)該是男或女!");</p><p><b>  }</b></p><p><b>  }</b><

106、;/p><p><b>  else </b></p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(this, "該學(xué)號(hào)已經(jīng)存在,請(qǐng)輸入新的學(xué)號(hào)!");</p><p><b>  }</b>&

107、lt;/p><p><b>  }</b></p><p>  //如果點(diǎn)擊了取消按鈕,則關(guān)閉模式對(duì)話框</p><p>  else if(e.getSource()==jb2)</p><p><b>  {</b></p><p>  this.dispose();<

108、/p><p><b>  }</b></p><p>  else if(e.getSource()==jb3)</p><p><b>  {</b></p><p>  jtf1.setText("");</p><p>  jtf2.setText(&q

109、uot;");</p><p>  jtf3.setText("");</p><p>  jtf4.setText("");</p><p>  jtf5.setText("");</p><p>  jtf6.setText("");</p&g

110、t;<p>  jtf7.setText("");</p><p>  jtf8.setText("");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>

111、;</p><p> ?。?)功能:實(shí)現(xiàn)閃屏界面</p><p>  package com.View;</p><p>  import java.awt.*;</p><p>  import javax.swing.*;</p><p>  public class Index extends JWindow i

112、mplements Runnable{</p><p>  //定義與進(jìn)度條相關(guān)的組件</p><p>  JProgressBar jpb;//定義進(jìn)度條</p><p>  JLabel jl1;//用于在窗體的北部放一張圖片,南部是進(jìn)度條</p><p>  int width,height;//用于獲取顯示屏分辨率大小</p&g

113、t;<p>  public static void main(String []args){</p><p>  Index index=new Index();</p><p>  //創(chuàng)建index線程</p><p>  Thread t=new Thread(index);</p><p><b>  //啟

114、動(dòng)線程</b></p><p>  t.start();</p><p><b>  }</b></p><p><b>  //構(gòu)造函數(shù)</b></p><p>  public Index()</p><p><b>  {</b>&l

115、t;/p><p>  //創(chuàng)建標(biāo)簽,并在標(biāo)簽上放置一張圖片</p><p>  jl1=new JLabel(new ImageIcon("image/index1.gif"));</p><p><b>  //創(chuàng)建進(jìn)度條</b></p><p>  jpb=new JProgressBar();<

116、;/p><p><b>  //設(shè)置進(jìn)度條屬性</b></p><p>  jpb.setStringPainted(true);//顯示當(dāng)前進(jìn)度值信息</p><p>  jpb.setIndeterminate(false);//確定進(jìn)度條執(zhí)行完成后不來(lái)回滾動(dòng)</p><p>  jpb.setBorderPainted

117、(false);//設(shè)置進(jìn)度條邊框不顯示</p><p>  jpb.setBackground(Color.darkGray);//設(shè)置進(jìn)度條的背景色</p><p><b>  //添加組件</b></p><p>  this.add(jl1,BorderLayout.NORTH);</p><p>  this.

118、add(jpb,BorderLayout.SOUTH);</p><p><b>  //設(shè)置窗體屬性</b></p><p>  this.setSize(625,359);</p><p>  //設(shè)置窗體顯示的位置</p><p>  width=Toolkit.getDefaultToolkit().getScr

119、eenSize().width;</p><p>  height=Toolkit.getDefaultToolkit().getScreenSize().height;</p><p>  this.setLocation(width/2-200,height/2-150);</p><p><b>  //設(shè)置窗口顯示</b></p&

120、gt;<p>  this.setVisible(true);</p><p><b>  }</b></p><p>  //進(jìn)度條線程的run方法,用于設(shè)置線程的屬性</p><p>  public void run() {</p><p>  //定義一個(gè)數(shù)組,存放進(jìn)度條顯示時(shí)需要的數(shù)據(jù)</p

121、><p>  int []progressValue={0,8,35,43,49,56,70,99,100};</p><p>  for(int i=0;i<progressValue.length;i++)</p><p><b>  {</b></p><p><b>  try {</b>

122、</p><p>  //休眠1秒,再執(zhí)行</p><p>  Thread.sleep(1000);</p><p>  } catch (InterruptedException e) {</p><p>  // TODO Auto-generated catch block</p><p>  e.printS

123、tackTrace();</p><p><b>  }</b></p><p>  jpb.setValue(progressValue[i]);//取得數(shù)組中的進(jìn)度值</p><p><b>  }</b></p><p>  //當(dāng)進(jìn)度完成后,執(zhí)行相應(yīng)的操作,如切換到其他的窗口,同時(shí)關(guān)閉進(jìn)度條

124、窗口等</p><p>  new Login();</p><p><b>  //關(guān)閉進(jìn)度條窗口</b></p><p>  this.dispose();</p><p><b>  }</b></p><p><b>  }</b></p&

125、gt;<p> ?。?) 功能:這是學(xué)生/管理員登陸的窗口,根據(jù)權(quán)限不同進(jìn)入不同的后臺(tái)界面</p><p>  package com.View;</p><p>  import com.SqlConnection.SqlConn;</p><p>  import com.Tools.*;</p><p>  import

126、java.awt.*;</p><p>  import java.awt.event.ActionEvent;</p><p>  import java.awt.event.ActionListener;</p><p>  import java.io.File;</p><p>  import java.sql.ResultSet;

127、</p><p>  import javax.imageio.ImageIO;</p><p>  import javax.swing.*;</p><p>  import javax.swing.border.Border;</p><p>  import javax.swing.text.Position;</p>

128、<p>  public class Login extends JFrame implements ActionListener{</p><p>  //定義登陸窗口需要的組件</p><p>  JLabel jl1,jl2,jl3;</p><p>  JTextField jtf1;</p><p>  JPassword

129、Field jpf1;</p><p>  JButton jb1,jb2;</p><p>  int width,height;</p><p>  //定義用于連接數(shù)據(jù)庫(kù)的組件,也就是com.SqlConnection類下的SqlConn方法</p><p>  SqlConn sqlconn;</p><p>

130、  //定義用于傳送SQL語(yǔ)句的變量</p><p>  String sql;</p><p>  //定義一個(gè)用于接收登陸驗(yàn)證返回來(lái)的記錄集</p><p>  ResultSet rs;</p><p>  //聲明用于驗(yàn)證登陸用戶的模型</p><p>  LoginModel loginModel;</

131、p><p><b>  int flag;</b></p><p>  public static void main(String []args)</p><p><b>  {</b></p><p>  Login login=new Login();</p><p>&l

132、t;b>  }</b></p><p>  public Login()</p><p><b>  {</b></p><p>  //創(chuàng)建登陸所需的組件</p><p>  jl1=new JLabel("賬 號(hào):");</p><p>  jl1.set

133、Font(MyFont.f1);</p><p>  jl1.setBounds(50,50,60,25);</p><p>  jl2=new JLabel("密 碼:");</p><p>  jl2.setFont(MyFont.f1);</p><p>  jl2.setBounds(50,90,60,25);&l

134、t;/p><p>  jtf1=new JTextField(20);</p><p>  jtf1.setBounds(110,50,150,25);</p><p>  //設(shè)置文本框下凹,三維效果</p><p>  jtf1.setBorder(BorderFactory.createLoweredBevelBorder());</

135、p><p>  jpf1=new JPasswordField(20);</p><p>  jpf1.setBorder(BorderFactory.createLoweredBevelBorder());</p><p>  jpf1.setBounds(110,90,150,25);</p><p>  jb1=new JButton(&q

136、uot;登 陸");</p><p>  jb1.setFont(MyFont.f1);</p><p>  jb1.addActionListener(this);</p><p>  jb1.setBounds(95,130,75,25);</p><p>  jb2=new JButton("取消");&l

137、t;/p><p>  jb2.setFont(MyFont.f1);</p><p>  jb2.addActionListener(this);</p><p>  jb2.setBounds(185,130,75,25);</p><p><b>  //添加到窗體</b></p><p>  /

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論