Java課程設(shè)計報告學生管理系統(tǒng).doc
《Java課程設(shè)計報告學生管理系統(tǒng).doc》由會員分享,可在線閱讀,更多相關(guān)《Java課程設(shè)計報告學生管理系統(tǒng).doc(41頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 JAVA程序設(shè)計 課程設(shè)計報告課 題: 學生信息管理系統(tǒng) 姓 名: 學 號: 201217020113 設(shè)計時間:2014.6.232014.6.27評閱意見:評定成績:指導老師簽名: 年 月 日 目 錄1.系統(tǒng)描述.3 1.1需要實現(xiàn)的功能.3 1.2 設(shè)計的目的.32.分析與設(shè)計.4 2.1功能模塊劃分.4 2.2 數(shù)據(jù)庫結(jié)構(gòu)描述.4 2.3系統(tǒng)詳細設(shè)計文檔.5 2.4 各個模塊實現(xiàn)方法描述.9 2.5 測試數(shù)據(jù)及期望結(jié)果.93.系統(tǒng)測試.124.總結(jié)或心得體會.185.參考文獻.196.附錄.191.系統(tǒng)描述1.1需要實現(xiàn)的功能(1)錄入學生基本信息的功能 學生基本信息主要包括:學號、
2、姓名、性別、年齡、出生地、專業(yè)、班級、總學分,在插入時,如果數(shù)據(jù)庫則已經(jīng)存在該學號,則不能再插入該學號。(2)修改學生基本信息的功能在管理員模式下,只要在表格中選中某個學生,就可以對該學生信息進行修改。(3)查詢學生基本信息的功能可使用 “姓名”對已存有的學生資料進行查詢。(4)刪除學生基本信息的功能 在管理員模式下,只要選擇表格中的某個學生,就可以刪除該學生。(5)用戶登陸用不同的登錄權(quán)限可以進入不同的后臺界面,從而實現(xiàn)權(quán)限操作。(6)用戶登陸信息設(shè)置可以修改用戶登陸密碼1.2 設(shè)計的目的本程序用于用戶對少量學生信息進行簡單的管理,本程序針對于對安全系數(shù)要求不高,操作不是很復雜的小型客戶開發(fā)
3、。本程序的管理員可以實現(xiàn)對學生信息的錄入、查詢、修改、刪除等操作,同時支持查看所有學生信息,學生只能查詢自己的信息。程序功能完善,界面簡潔美觀,布局合理,操作簡便,簡單易用,任何人可輕松操作。同時,本程序?qū)ο到y(tǒng)要求配置較低,運行速度快,而卻對數(shù)據(jù)庫管理要求較低。本程序數(shù)據(jù)庫采用office2007版本的access數(shù)據(jù)庫(.accdb)進行數(shù)據(jù)存儲,該數(shù)據(jù)庫可實現(xiàn)關(guān)系較為簡單的數(shù)據(jù)管理。2.分析與設(shè)計: 2.1功能模塊劃分學生信息管理系統(tǒng)瀏覽學生信息查詢學生信息添加學生信息修改學生信息刪除學生信息普通學生(用戶)模塊班委(管理員)模塊瀏覽學生信息查詢學生信息學生管理登陸管理修改登陸密碼顯示登陸
4、用戶 圖1 功能模塊圖2.2數(shù)據(jù)庫結(jié)構(gòu)描述 (1)數(shù)據(jù)庫E-R模型 圖2 學生局部E-R圖 圖3 登陸用戶局部E-R圖(2)數(shù)據(jù)庫關(guān)系模型二維 表1 學生表(student)字段數(shù)據(jù)類型說明stuIdnvarchar(30)學號stuNamenvarchar(30)姓名stuSexnvarchar(30)性別stuAgeint年齡stuJgnvarchar(30)籍貫stuZynvarchar(30)專業(yè)classIdnvarchar(30)班號stuSoursenumeric(5,2)總學分 表2 登陸權(quán)限表(login)字段數(shù)據(jù)類型說明userIdnvarchar(30)用戶名(賬號),即
5、登陸Idpasswordnvarchar(30)登陸密碼positionnvarchar(30)職位,如班委,普通學生 (3)數(shù)據(jù)流圖進度條(閃屏)用戶登陸登陸驗證falsetrue班委(管理員)界面普通學生界面查詢添加修改刪除查詢顯示班委(管理員員 )普通學生(用戶)退出退出系統(tǒng)結(jié)束結(jié)束退出系統(tǒng)truefalsefalsetrue修改用戶登陸密碼顯示登陸用戶信息 圖4 數(shù)據(jù)流圖2.3系統(tǒng)詳細設(shè)計文檔 表3 包以及包所包含的類包名(package)所包含的類說明com.sqlConnectionSqlConn.java用于連接數(shù)據(jù)庫com.ToolsMyFont.java用于設(shè)置窗體各組件的字
6、體com.ViewIndex.java使用進度條與線程結(jié)合實現(xiàn)閃屏,初始化進入登陸界面Login.java登陸界面,管理員與用戶登陸ManageView.java管理員界面,可進行所有操作StuMainView.java普通學生(用戶)界面,只能進行部分操作StuQuery.java學生信息查詢模塊AddStu.java添加學生信息模塊UpdateStu.java更新學生信息模塊TableModel.java表數(shù)據(jù)更新模型,學于更新并通過表來顯示信息LoginModel.java用戶登陸驗證模型PurViewModel.java用戶權(quán)限設(shè)置界面UpdateLogin.java用戶賬戶修改界面
7、表4 SqlConn類類名類的成員屬性與方法說明SqlConn.javaConnection ct得到與數(shù)據(jù)庫的連接PreparedStatement ps實現(xiàn)發(fā)送SQL語句給數(shù)據(jù)庫ResultSet rs獲得數(shù)據(jù)庫返回的記錄集public ResultSet sqlQuery(String sql)實現(xiàn)查詢功能的方法public void sqlUpdate(String sql)實現(xiàn)添加,修改功能 的方法public void sqlDelete(String sql)實現(xiàn)刪除學生記錄的方法public void closeSqlConn()實現(xiàn)關(guān)閉數(shù)據(jù)庫連接的功能 表5 Index類類名
8、類的成員屬性與方法說明Index.javaJProgressBar jpb定義進度條JLabel jl1用于在窗體的北部放一張圖片,南部是進度條int width,height用于獲取顯示屏分辨率大小,以便設(shè)置窗口的默認位置public Index()初始化窗口的相關(guān)組件public void run()進度條線程的run方法,用于設(shè)置線程的屬性int progressValue定義一個數(shù)組,存放進度條顯示時需要的數(shù)據(jù) 表6 Login類 類名類的成員屬性與方法說明Login.javaJLabel jl1,jl2,jl3定義三個標簽組件JTextField jtf1定義一個用戶輸入賬號的文本框
9、JPasswordField jpf1密碼輸入框JButton jb1,jb2提交和清除按鈕int width,height用于設(shè)置窗口初始位置的變量,即獲取顯示器的大小ResultSet rs用于接收從數(shù)據(jù)庫返回來的記錄集LoginModel loginModel自定義一個模型,把值到登陸驗證模型public Login()構(gòu)造方法,用于初始化登陸窗口的相關(guān)組件class BackImage extends JPanel創(chuàng)建一個內(nèi)部類,并繼承JPanle,用于畫背景圖片 2.4各個模塊實現(xiàn)方法描述 sqlConnection是連接數(shù)據(jù)庫??蓪崿F(xiàn)發(fā)送SQL語句給數(shù)據(jù)庫,獲得數(shù)據(jù)庫返回的記錄集,
10、實現(xiàn)查詢、添加、修改、刪除學生記錄,關(guān)閉數(shù)據(jù)庫連接等功能。Myfont是設(shè)置窗體各組件的字體。Index是使用進度條與線程結(jié)合實現(xiàn)閃屏,初始化進入登陸界面。Login是登陸界面,管理員與用戶登陸,可以分別登入管理員和用戶,管理員與用戶的登錄進去后可分別按自己的權(quán)限操作。2.5 測試數(shù)據(jù)及期望結(jié)果在登入窗口可以分別登入管理員和用戶的賬號及密碼,會進入權(quán)限不同的頁面,管理員可以實現(xiàn)查詢、添加、修改、刪除學生記錄,還可以查詢,修改、刪除管理員表格。而學生只能查詢學生記錄。例如: 圖1登入管理員 圖2查詢?nèi)啃畔?圖3查詢個人信息 圖4添加學生信息 圖5修改學生信息 圖6修改學生信息 圖7查詢肖林衛(wèi)婕
11、的成績3. 系統(tǒng)測試 圖8系統(tǒng)啟動界面圖9 用戶登陸界面 圖10 班委(管理員)界面,即具有完全權(quán)限的用戶后臺界面 圖11 班委(管理員)界面子菜單項顯示 圖12 普通用戶(學生)界面子菜單項顯示圖13學生信息查詢結(jié)果顯示圖14 添加學生信息界面圖15 修改學生信息界面 圖16 顯示所有學生信息 圖17當沒有選中一行的時候,不能修改和刪除,并彈出提示警告框 圖18 刪除文件時的確認對話框(當點擊確認時才會刪除,點擊取消,則返回主界面) 圖19 顯示所有登陸用戶信息 圖20 修改用戶登陸密碼,選中某個用戶進行修改 圖21 關(guān)閉用戶記錄,即不顯示所有用戶信息 圖22 關(guān)閉學生記錄 圖23 退出系統(tǒng)
12、確認對話框,只有確認時才會退出系統(tǒng),否則返加主界面 圖24 普通學生登陸后的界面(即不能對學生信息進行添加,修改和刪除以及用戶密碼修改,對應的這幾項灰色顯示,不可點擊)四、總結(jié)或心得體會1)在寫代碼之前,在大腦里一定要把思路理清楚,不能模模糊糊,一定要把功能圖和流程圖畫出來,然后根據(jù)它去實現(xiàn)每一個功能塊,要多分析,培養(yǎng)一種良好的邏輯思維能力。2)在寫代碼的過程中,一定要采取就近原則,同一個功能,或者對同一個組件的設(shè)置一般要寫在一塊,這樣寫的程序比較清晰,不容易出錯,也便于查找。3)要養(yǎng)成良好的注釋習慣,一是有利于別人閱讀你的程序,同時也有利于自己以后再看,就能很快的讀懂程序,提高效率。4)把功
13、能模塊化,即把實現(xiàn)相同功能的代碼段封裝成一到一個類或者一個方法中,實現(xiàn)的時候調(diào)用即可,這樣能提高代碼的可讀性5)養(yǎng)成創(chuàng)建包來存放不同功能的類,使系統(tǒng)的結(jié)構(gòu)更加模塊化和規(guī)范化。6)在編寫代碼的時候,一定要邊寫邊調(diào)試,要適時的設(shè)置斷點,或者把某些變量的值輸出到控制臺,通過觀察和分析變量的值,便于判斷問題所在,同時,需要捕獲異常的一定要把異常信息打印出來,便于分析問題。在老師悉心的指導下,我順利地完成了本次課程設(shè)計,并取得了很大的收獲,對以后的軟件開發(fā)奠定了一定的基礎(chǔ)!5、 參考文獻(1)趙海廷.Java語言程序設(shè)計教程.北京:清華大學出版社.2012(2)孫印杰,劉斌,孫玉強.Java編程案例精解
14、.北京:電子工業(yè)出版 社.2005(3)何梅.java編程實例系列叢書.北京:清華大學出版社,2002(4)楊昭.編著二級Java語言程序設(shè)計教程.北京:中國水利水電出版社,2006(5)趙文靖編著.Java程序設(shè)計基礎(chǔ)與上機指導.北京:清華大學出版社,2006六、附錄(1)功能:連接數(shù)據(jù)庫package com.SqlConnection;import java.sql.*;import com.View.AddStu;public class SqlConn Connection ct=null;PreparedStatement ps=null;ResultSet rs=null;Str
15、ing driver=sun.jdbc.odbc.JdbcOdbcDriver;String dburl=jdbc:odbc:stuSystem;String userName=;String password=;/實現(xiàn)查詢功能的方法public ResultSet sqlQuery(String sql)try /加載驅(qū)動Class.forName(driver);ct=DriverManager.getConnection(dburl,userName,password);ps=ct.prepareStatement(sql);rs=ps.executeQuery(); catch (Ex
16、ception e) e.printStackTrace();/ TODO: handle exceptionreturn rs;/實現(xiàn)添加,修改功能 的方法public void sqlUpdate(String sql)try /加載驅(qū)動Class.forName(driver);ct=DriverManager.getConnection(dburl,userName,password);ps=ct.prepareStatement(sql);/執(zhí)行添加,更新操作int i=ps.executeUpdate();/返回一個值,如果為1則表示添加成功。if(i=1)System.out.p
17、rintln(數(shù)據(jù)添加/修改成功!);elseSystem.out.println(數(shù)據(jù)添加/修改失敗!); catch (Exception e) e.printStackTrace();/ TODO: handle exception/實現(xiàn)刪除學生記錄的方法public void sqlDelete(String sql)try /加載驅(qū)動System.out.println(ok);Class.forName(driver);ct=DriverManager.getConnection(dburl,userName,password);ps=ct.prepareStatement(sql
18、);System.out.println(ok1);/執(zhí)行添加,更新操作int i=ps.executeUpdate();/返回一個值,如果為1則表示刪除成功。if(i=1)System.out.println(數(shù)據(jù)刪除成功!);elseSystem.out.println(數(shù)據(jù)刪除失??!); catch (Exception e) e.printStackTrace();/ TODO: handle exception/實現(xiàn)關(guān)閉數(shù)據(jù)庫連接的功能public void closeSqlConn()try if(rs!=null)rs.close();if(ps!=null)ps.close()
19、;if(ct!=null)ct.close(); catch (Exception e) e.printStackTrace();/ TODO: handle exception(2)功能:這是一個字體包,用于美化窗口的字體package com.Tools;import java.awt.Font;public class MyFont public static Font f1=new Font(宋體,Font.PLAIN,15);public static Font f2=new Font(宋體,Font.PLAIN,13);(3) 功能:這是添加學生的界面,通過模式對話(即繼承JDia
20、log對話框)來實現(xiàn) package com.View;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.ResultSet;import javax.swing.*;import com.SqlConnection.SqlConn;import com.Tools.MyFont;public class AddStu extends JDialog implements ActionListener /定義添加學生信息的相關(guān)組件JLa
21、bel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8;JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7,jtf8;JButton jb1,jb2,jb3;ResultSet rs;SqlConn sqlconn;String No;int stuAge=0;Double stuSourse=0.0;int i=0;/用于判斷到底點擊了添加還是取消,來決定是否執(zhí)行數(shù)據(jù)更新操作public int falg()return i;/這是添加學生界面的函數(shù)封裝public void addView()jl1=new JLabel(學 號:);
22、jl1.setBounds(20, 20, 60, 25);jl1.setFont(MyFont.f1);jl2=new JLabel(姓 名:);jl2.setFont(MyFont.f1);jl2.setBounds(250, 20, 60, 25);jl3=new JLabel(性 別:);jl3.setFont(MyFont.f1);jl3.setBounds(20, 60, 60, 25);jl4=new JLabel(年 齡:);jl4.setFont(MyFont.f1);jl4.setBounds(250, 60, 60, 25);jl5=new JLabel(出生地:);jl
23、5.setFont(MyFont.f1);jl5.setBounds(14, 100, 60, 25);jl6=new JLabel(專 業(yè):);jl6.setFont(MyFont.f1);jl6.setBounds(20, 140, 60, 25);jl7=new JLabel(班 級:);jl7.setFont(MyFont.f1);jl7.setBounds(20, 180, 60, 25);jl8=new JLabel(總學分:);jl8.setFont(MyFont.f1);jl8.setBounds(240, 180, 60, 25);jtf1=new JTextField(20
24、);jtf1.setBounds(70, 20, 130, 25);jtf1.setBorder(BorderFactory.createLoweredBevelBorder();jtf2=new JTextField(20);jtf2.setBounds(300, 20, 130, 25);jtf2.setBorder(BorderFactory.createLoweredBevelBorder();jtf3=new JTextField(10);jtf3.setBounds(70, 60, 60, 25);jtf3.setBorder(BorderFactory.createLowered
25、BevelBorder();jtf4=new JTextField(10);jtf4.setBounds(300, 60, 60, 25);jtf4.setBorder(BorderFactory.createLoweredBevelBorder();jtf5=new JTextField(30);jtf5.setBounds(70, 100, 360, 25);jtf5.setBorder(BorderFactory.createLoweredBevelBorder();jtf6=new JTextField(20);jtf6.setBounds(70, 140, 290, 25);jtf6
26、.setBorder(BorderFactory.createLoweredBevelBorder();jtf7=new JTextField(20);jtf7.setBounds(70, 180, 130, 25);jtf7.setBorder(BorderFactory.createLoweredBevelBorder();jtf8=new JTextField(20);jtf8.setBounds(300, 180, 130, 25);jtf8.setBorder(BorderFactory.createLoweredBevelBorder();jb1=new JButton(添 加);
27、jb1.setFont(MyFont.f1);jb1.setBounds(100, 220, 80, 25);jb1.addActionListener(this);jb2=new JButton(取 消);jb2.setFont(MyFont.f1);jb2.setBounds(280, 220, 80, 25);jb2.addActionListener(this);jb3=new JButton(清 除);jb3.setFont(MyFont.f1);jb3.setBounds(190,220,80,25);jb3.addActionListener(this);this.setLayo
28、ut(null);/把組件添加到窗體this.add(jl1);this.add(jtf1);this.add(jl2);this.add(jtf2);this.add(jl3);this.add(jtf3);this.add(jl4);this.add(jtf4);this.add(jl5);this.add(jtf5);this.add(jl6);this.add(jtf6);this.add(jl7);this.add(jtf7);this.add(jl8);this.add(jtf8);this.add(jb1);this.add(jb2);this.add(jb3);public A
29、ddStu(Frame Main,String title,boolean model)/調(diào)用父類的構(gòu)造方法,實現(xiàn)模式對話super(Main,title,model);/調(diào)用添加學生信息界面的的方法this.addView();/設(shè)置窗體的屬性this.setSize(465,300);this.getContentPane().setBackground(Color.LIGHT_GRAY);/設(shè)置背景必須是在顯示窗口前面,否則不能顯示出來this.setVisible(true);this.setResizable(false);Overridepublic void actionPerf
30、ormed(ActionEvent e) / TODO Auto-generated method stub/用于判斷輸入的學號是否存在時,如果存在則返回該學號,否則返回null,因此在這里,定義一個用于接收該返回的學號/并設(shè)置該No的初始值為空,否則報錯。String No = null ;/當點擊了添加按鈕if(e.getSource()=jb1)/*/獲取文本框的信息 String stuId=jtf1.getText().trim();/判斷,不能讓文本輸入框的值為空if(stuId.equals()JOptionPane.showMessageDialog(this, 請輸入學號!)
31、;return;/返回到輸入界面,如果沒有return語句,則會回到主界面String stuName=jtf2.getText().trim();if(stuName.equals()JOptionPane.showMessageDialog(this, 請輸入姓名!);return;/返回到輸入界面,如果沒有return語句,則會回到主界面String stuSex=jtf3.getText().trim();if(stuSex.equals()JOptionPane.showMessageDialog(this, 請輸入性別!);return;/返回到輸入界面,如果沒有return語句,
32、則會回到主界面/對于年齡,則需要進行兩個判斷,一個是不能為空,另一個必須是int型,下面用異常來判斷輸入的學生年齡是否是整型數(shù)/*/try stuAge=Integer.parseInt(jtf4.getText().trim();/把從文本框取得的字符串轉(zhuǎn)換成整型,如果拋異常,則輸入的不是整形數(shù) if(stuAge1) JOptionPane.showMessageDialog(this, 年齡必須大于或等于1!); return; catch (Exception e2) /提示輸入的不是整數(shù)JOptionPane.showMessageDialog(this, 請輸入一個整數(shù)的年齡!);
33、/如果拋異常,則返回到添加窗口,后面終止執(zhí)行*/return;/ TODO: handle exception/*/String stuJg=jtf5.getText().trim();if(stuJg.equals()JOptionPane.showMessageDialog(this, 請輸入出生地!);return;/返回到輸入界面,如果沒有return語句,則會回到主界面String stuZy=jtf6.getText().trim();if(stuZy.equals()JOptionPane.showMessageDialog(this, 請輸入專業(yè)!);return;/返回到輸入
34、界面,如果沒有return語句,則會回到主界面String classId=jtf7.getText().trim();if(classId.equals()JOptionPane.showMessageDialog(this, 請輸入班號!);return;/返回到輸入界面,如果沒有return語句,則會回到主界面/*/try stuSourse=Double.parseDouble(jtf8.getText().trim();if(stuSourse=0.0)JOptionPane.showMessageDialog(this, 請輸入總學分!);return;/返回到輸入界面,如果沒有r
35、eturn語句,則會回到主界面 catch (Exception e2) JOptionPane.showMessageDialog(this, 請輸入一個整數(shù)或小數(shù)的總學分!);return;/ TODO: handle exception/*/首先先判斷該主鍵是否在數(shù)據(jù)庫中是否存在,其次分別判斷性別是否為“男”或者“女”,年齡是否為數(shù)字,總學分是否為浮點型或雙精度型String sql=select * from student where stuId=+stuId+;SqlConn sqlconn=new SqlConn();rs=sqlconn.sqlQuery(sql);try wh
36、ile(rs.next()No=rs.getString(1);/看到底是否存在該學生的學號,如果存在,則返回該學號,不存在,則為空。 catch (Exception e2) e2.printStackTrace();/ TODO: handle exceptionif(No=null)if(stuSex.equals(男)|stuSex.equals(女)/調(diào)用數(shù)據(jù)庫連接 sql=insert into student values(+stuId+,+stuName+,+stuSex+,+stuAge+,+stuJg+,+stuZy+,+classId+,+stuSourse+);sqlc
37、onn=new SqlConn();sqlconn.sqlUpdate(sql);this.i=1;/關(guān)閉數(shù)據(jù)庫連接sqlconn.closeSqlConn();this.dispose();else JOptionPane.showMessageDialog(this, 性別應該是男或女!);else JOptionPane.showMessageDialog(this, 該學號已經(jīng)存在,請輸入新的學號!);/如果點擊了取消按鈕,則關(guān)閉模式對話框else if(e.getSource()=jb2)this.dispose();else if(e.getSource()=jb3)jtf1.se
38、tText();jtf2.setText();jtf3.setText();jtf4.setText();jtf5.setText();jtf6.setText();jtf7.setText();jtf8.setText();(4)功能:實現(xiàn)閃屏界面package com.View;import java.awt.*;import javax.swing.*;public class Index extends JWindow implements Runnable/定義與進度條相關(guān)的組件JProgressBar jpb;/定義進度條JLabel jl1;/用于在窗體的北部放一張圖片,南部是進
39、度條int width,height;/用于獲取顯示屏分辨率大小public static void main(String args)Index index=new Index();/創(chuàng)建index線程Thread t=new Thread(index);/啟動線程t.start();/構(gòu)造函數(shù)public Index()/創(chuàng)建標簽,并在標簽上放置一張圖片jl1=new JLabel(new ImageIcon(image/index1.gif);/創(chuàng)建進度條jpb=new JProgressBar();/設(shè)置進度條屬性jpb.setStringPainted(true);/顯示當前進度值信
40、息jpb.setIndeterminate(false);/確定進度條執(zhí)行完成后不來回滾動jpb.setBorderPainted(false);/設(shè)置進度條邊框不顯示jpb.setBackground(Color.darkGray);/設(shè)置進度條的背景色/添加組件this.add(jl1,BorderLayout.NORTH);this.add(jpb,BorderLayout.SOUTH);/設(shè)置窗體屬性this.setSize(625,359);/設(shè)置窗體顯示的位置width=Toolkit.getDefaultToolkit().getScreenSize().width;height
41、=Toolkit.getDefaultToolkit().getScreenSize().height;this.setLocation(width/2-200,height/2-150);/設(shè)置窗口顯示this.setVisible(true);/進度條線程的run方法,用于設(shè)置線程的屬性public void run() /定義一個數(shù)組,存放進度條顯示時需要的數(shù)據(jù)int progressValue=0,8,35,43,49,56,70,99,100;for(int i=0;iprogressValue.length;i+)try /休眠1秒,再執(zhí)行Thread.sleep(1000); c
42、atch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();jpb.setValue(progressValuei);/取得數(shù)組中的進度值/當進度完成后,執(zhí)行相應的操作,如切換到其他的窗口,同時關(guān)閉進度條窗口等new Login();/關(guān)閉進度條窗口this.dispose();(5) 功能:這是學生/管理員登陸的窗口,根據(jù)權(quán)限不同進入不同的后臺界面package com.View;import com.SqlConnection.SqlConn;import com.Tools.*;im
43、port java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.sql.ResultSet;import javax.imageio.ImageIO;import javax.swing.*;import javax.swing.border.Border;import javax.swing.text.Position;public class Login extends JFrame implements Action
44、Listener/定義登陸窗口需要的組件JLabel jl1,jl2,jl3;JTextField jtf1;JPasswordField jpf1;JButton jb1,jb2;int width,height;/定義用于連接數(shù)據(jù)庫的組件,也就是com.SqlConnection類下的SqlConn方法SqlConn sqlconn;/定義用于傳送SQL語句的變量String sql;/定義一個用于接收登陸驗證返回來的記錄集ResultSet rs;/聲明用于驗證登陸用戶的模型LoginModel loginModel;int flag;public static void main(St
45、ring args)Login login=new Login();public Login()/創(chuàng)建登陸所需的組件jl1=new JLabel(賬 號:);jl1.setFont(MyFont.f1);jl1.setBounds(50,50,60,25);jl2=new JLabel(密 碼:);jl2.setFont(MyFont.f1);jl2.setBounds(50,90,60,25);jtf1=new JTextField(20);jtf1.setBounds(110,50,150,25);/設(shè)置文本框下凹,三維效果jtf1.setBorder(BorderFactory.crea
46、teLoweredBevelBorder();jpf1=new JPasswordField(20);jpf1.setBorder(BorderFactory.createLoweredBevelBorder();jpf1.setBounds(110,90,150,25);jb1=new JButton(登 陸);jb1.setFont(MyFont.f1);jb1.addActionListener(this);jb1.setBounds(95,130,75,25);jb2=new JButton(取消);jb2.setFont(MyFont.f1);jb2.addActionListene
47、r(this);jb2.setBounds(185,130,75,25);/添加到窗體/先設(shè)置窗體的空布局this.setLayout(null);this.add(jl1);this.add(jtf1);this.add(jl2);this.add(jpf1);this.add(jb1);this.add(jb2);/創(chuàng)建一個BackImage對象BackImage bi=new BackImage();/設(shè)定圖片的位置bi.setBounds(0,0,350,250);this.add(bi);this.setSize(350,250);this.setTitle();/設(shè)置窗口在屏幕的初
48、始位置width=Toolkit.getDefaultToolkit().getScreenSize().width;height=Toolkit.getDefaultToolkit().getScreenSize().height;this.setLocation(width/2-180, height/2-180);/設(shè)置窗口不可改變大小this.setResizable(false);/注意:*設(shè)置窗口的背景顏色,由于是繼承Swing包,所以必須先得到窗口的一個面板,然后再通過這個面板去設(shè)置背景色,否則設(shè)置不顯示出來/this.getContentPane().setBackground
49、(Color.gray);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);/創(chuàng)建一個內(nèi)部類,并繼承JPanle,用于畫背景圖片class BackImage extends JPanelImage im;public BackImage()tryim=ImageIO.read(new File(Image/login.gif);catch(Exception e)e.printStackTrace();/要把圖片畫到JPanle,需要重寫一個Paint方法public void paint(Graphics g) /此處的paint中的p是小寫,/如果是大寫,則就是重寫paint方法了,而是一個新的方法了,那么后面的圖片是不會輸出的g.drawImage(im,0,0,350,250,this);
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。