數(shù)據(jù)庫課程設(shè)計之學(xué)生信息管理系統(tǒng)_第1頁
數(shù)據(jù)庫課程設(shè)計之學(xué)生信息管理系統(tǒng)_第2頁
數(shù)據(jù)庫課程設(shè)計之學(xué)生信息管理系統(tǒng)_第3頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、數(shù)據(jù)庫原理課程設(shè)計報告題目:學(xué)生信息管理系統(tǒng)學(xué)生姓名:穆嶺(徐清鋒、冉麗華)學(xué)號:0908060070班級:計科092院系:計算機科學(xué)與信息學(xué)院專業(yè)年級:計算機科學(xué)與技術(shù) 2009級2011 年 12月 22 日一、需求分析需包含內(nèi)容為:(1)問題描述:學(xué)生信息的管理是學(xué)校很重要的一項工作,而人工管理學(xué) 生信息的話,無疑是一個很費時費力的事情,而且效率不高,容易出錯,往往是 學(xué)校進(jìn)行學(xué)生工作的一個瓶頸問題,有一個學(xué)生信息管理的系統(tǒng)就能夠幫助學(xué)校 更好完成學(xué)生信息管理的工作,降低管理成本。所以我們組編寫了一個學(xué)生信息 管理系統(tǒng),使其在學(xué)生管理工作中發(fā)揮更大的作用。(2)系統(tǒng)功能描述:本系統(tǒng)是一個

2、學(xué)生信息管理系統(tǒng),主要管理學(xué)生的基本信息,課程信息,以 及學(xué)生選課成績信息等,登錄的模塊有兩種登錄類型,分別是管理員登錄和學(xué)生 登錄,如果是管理員登錄的話,進(jìn)入管理員界面,要求管理員界面中可以信息的 學(xué)生基本信息、課程基本信息和學(xué)生選課成績信息的管理設(shè)置;還有信息查詢, 在這塊兒中可以進(jìn)行學(xué)生基本信息的查詢, 課程信息的查詢,以及選課成績信息 的查詢;除此之外,要求設(shè)一個用戶維護(hù)模塊,在這個模塊中管理員可以添加管 理員用戶或者是學(xué)生用戶,可以修改密碼,并且能夠切換用戶登錄;接著是幫助, 幫助中顯示系統(tǒng)的版本;最后要求有一個推出系統(tǒng)按鈕。如果是學(xué)生登錄,那么 學(xué)生可以進(jìn)行學(xué)生信息的維護(hù),可以進(jìn)行

3、登錄密碼的修改,基本信息的修改,以 及切換用戶登錄;可以進(jìn)行學(xué)生基本信息的查詢,學(xué)生課程學(xué)習(xí)的查詢,學(xué)生選 課成績信息的查詢。接著是幫助,幫助中顯示系統(tǒng)的版本;最后要求有一個推出 系統(tǒng)按鈕。其詳細(xì)的操作框架流程在下面的圖中可以見到。操作流程框圖:曲甦信息_ 產(chǎn)瞬聲7登嘩蘭星榨息I廠、趕 細(xì)貞J翅躺魁罠/a甑縫 i粵礙認(rèn)菅腔翅錄廠I郵崩息、*認(rèn)融 J 存儲的數(shù)據(jù)信息:User表(用戶名,密碼,用戶類型標(biāo)識),用于存儲登錄用戶信息;Student表(學(xué)號,姓名,性別,出生日期,電話, QQ號,專業(yè),班級,家庭地 址),用于存儲學(xué)生基本信息;Course表(課程號,課程名,先行課,學(xué)分,教師姓名),

4、用于存儲課程基本信息; SC表(學(xué)號,課程號,成績,績點),用于存儲學(xué)生選課成績信息。(3)有何安全性與完整性方面的要求。安全性:如果是管理員登錄系統(tǒng):可以進(jìn)行管理設(shè)置,包括(設(shè)置學(xué)生的基 本信息、設(shè)置課程信息、設(shè)置學(xué)生成績信息),設(shè)置各種信息的時候有添加,刪 除和修改等相應(yīng)功能,然后是信息查詢,包括(查詢學(xué)生基本信息,查詢課程信 息、查詢學(xué)生成績信息),用戶的維護(hù),包括(添加用戶,修改用戶密碼,切換 用戶登錄),幫助,退出系統(tǒng)。如果是 學(xué)生登錄系統(tǒng):可以修改自己的基本信息, 修改個人登錄密碼,切換用戶登錄,同樣可進(jìn)行信息查詢,包括(查詢學(xué)生基本 信息,查詢課程信息、查詢學(xué)生成績信息),查看幫

5、助,退出系統(tǒng)。完整性:主要是在刪除學(xué)生信息和課程信息的時候如果在選課信息中存在選 課成績信息的話,那么就不能直接進(jìn)行相應(yīng)信息的刪除, 在開發(fā)中要給出相應(yīng)的 信息提示,在進(jìn)行各種添加、和更新操作之前也有進(jìn)行相應(yīng)的判斷, 如果原來的 信息中已經(jīng)有了所要添加的該條信息, 怎不能添添加,并給出相應(yīng)的提示,如果 不存在所要更新的信息的時候也不能進(jìn)行更新, 并給出相應(yīng)的提示。具體的完整 性約束在編程中具體給出。、概念結(jié)構(gòu)設(shè)計I Cent ifi er l QiSI.0Cpi ) Variabledura iters(20)<!a>sx-aneVar i ablechirazterE(.30)S

6、tKVariaMechiraitftsrEGO)birllttlVu-iaalechurai:t»TE磯Variablechira:ter5sceptVariablechirazterE©)cl u sVar i ahlechil"*.: tersCM)Variablechira.:terECEO)S txdiTlt畫出系統(tǒng)整體的E-R模型;并對模型中所出現(xiàn)的實體及屬性等信息加以說明概念模型Cjio電 cLar機亡t吐占 12DJdjmHie41 1 4.LJL-C 吐皿 鈕 1讓創(chuàng) GO) G)Vwi thl 電 cltflrirtiirs GO) credit

7、FloatV*ri ible ctaracterE (20)物理模型三、邏輯結(jié)構(gòu)設(shè)計(1) 模式設(shè)計:按系統(tǒng)整體 E-R模型,寫出關(guān)系模式;并利用數(shù)據(jù)字典加 以描述。(如每個關(guān)系模式有何屬性、屬性的類型、屬性值的長度、是否可取空 值、是否為主碼、有何約束條件等信息);本系統(tǒng)的設(shè)計中主要涉及到四個表, 分別是User表、Student表,Course表, SC表,在這四個表中,User表用于存儲用戶信息,Stude nt表存儲學(xué)生信息表, Course表存儲課程信息,SC表存儲學(xué)生選課的成績信息。這四個表的結(jié)構(gòu)如下: User 表屬性名存儲代碼類型長度是否可為空主鍵否備注用戶名un ameVAR

8、CHAFI 20否是用戶登錄名密碼用戶類型標(biāo)識upass bsVARCHAFINTI 30否否用戶登錄密碼 用于標(biāo)識是管理員 還是學(xué)生Student 表屬性名存儲代碼類型長度是否可為空主鍵否備注學(xué)號 姓名sno sn ameVARCHAVARCHAIR 20R 20否否是學(xué)生學(xué)號學(xué)生姓名性別 出生日期sex birthVARCHAIDATER 2否性別出生日期電話telVARCHAIR 20聯(lián)系電話QC號 專業(yè)qq sdeptVARCHAIVARCHAR 20R 20否QC號碼 學(xué)生所在專業(yè)班級classVARCHAR 20否所在班級家庭地址addressVARCHAIR 50學(xué)生家庭地址Co

9、urse 表屬性名存儲代碼類型長度是否可為空主鍵否|備注課程號enoVARCHAIR 20否是課程編號課程名 先行課cn ame epnoVARCHAIVARCHAIR 20R 20否課程名 先行課程學(xué)分creditFLOAT否學(xué)分教師姓名tn ameVARCHAIR 20否教師姓名SC表屬性名存儲代碼類型長度是否可為空主鍵否|備注學(xué)號snoVARCHaR 20否是學(xué)號課程號enoVARCHAR 20否是課程編號成績 績點grade poi ntFLOATFLOAT課程成績 課程績點(2) 子模式設(shè)計:即針對自己的設(shè)計模塊的應(yīng)用需定義什么樣的視圖表結(jié)構(gòu);并利用數(shù)據(jù)字典加以描述。由于在查詢學(xué)生成

10、績信息的時候要查詢學(xué)生學(xué)號、姓名、課程號、課程名、 學(xué)分、成績、績點、聯(lián)系電話,這就需要涉及到三個表的連接,為了查詢的方便, 所以在進(jìn)行設(shè)計的時候創(chuàng)建了一個 Stu_Cou_SC視圖表,表結(jié)構(gòu)為Stu_Cou_SC視 圖(學(xué)號,姓名,課程號,課程名,學(xué)分,成績,績點魚系電話)Stu_Cou_SC屬性名存儲代碼類型長度是否可為空主鍵否備注學(xué)號 姓名sno sn ameVARCHAVARCHAR 20R 20否否是學(xué)生學(xué)號學(xué)生姓名課程號cnoVARCHAR 20否是課程編號課程名cn ameVARCHAR 20否課程名學(xué)分creditFLOAT學(xué)分成績 績點grade poi ntFLOATFLO

11、AT成績 績點聯(lián)系電話telVARCHAR 20聯(lián)系電話(3)畫出系統(tǒng)功能模塊圖,并對各功能模塊進(jìn)行簡單介紹在登錄模塊中,設(shè)置了兩種登錄類型,一種是管理員登錄,一種是學(xué)生登錄。,信息維護(hù)信扈查飼,廠一4竽土登錄 用廣登錄幫助尸O退出;O/管理設(shè)置,JW息查詢営理員登錄用戶維護(hù)k鄢助PI退岀這兩種登錄有著不同的使用權(quán)限。管理員登錄系統(tǒng)可以進(jìn)行管理設(shè)置,信息 查詢和用戶維護(hù)等操作,學(xué)生登錄系統(tǒng)可以進(jìn)行信息維護(hù)和信息查詢等。設(shè)貴學(xué)生信息更新尋生星本信息刪祿學(xué)生基本佶惠殊加課程信息、 刪瞎慄程信息話加咸鏡佶息J*"V刪除嵌強信息在管理設(shè)置模塊中,用戶可以進(jìn)行學(xué)生信息的設(shè)置、課程信息設(shè)置、選課

12、成績信息的設(shè)置,在各個信息的設(shè)置中都可以進(jìn)行添加、 更新和刪除操作。信亀査詢:酋洞磴蛭時舄在信息查詢模塊中,用戶可以進(jìn)行學(xué)生基本信息查詢,課程信息查詢以及學(xué)生選課成績信息的查詢。在各個查詢中又設(shè)置有精確查詢和模糊查詢,使其查詢更智能化。茹加管理員由戶用戶維護(hù)藩加寧生用戶/幅改密碼1切換舟戶登錄幫助黃于退出X.-逼岀扇級在用戶維護(hù)模塊中,可以進(jìn)行添加用戶,修改用戶登錄密碼,切換用戶登錄功能。 修改逾碼T腫改個人甚本信息信息維護(hù)切換登錄用戶_?、在學(xué)生登錄后的信息維護(hù)模塊中,學(xué)生統(tǒng)一可以修改登錄密碼,修改個人基本信息,和切換用戶登錄四、數(shù)據(jù)庫的物理設(shè)計在本系統(tǒng)的數(shù)據(jù)庫設(shè)計階段,我們?yōu)槠浣⒘讼旅娴?/p>

13、三個索引字段,分別是基于Stude nt表建立的Stus no以sno為升序索引,基于 Course表建立的Coucno以 eno為升序索引,和基于SCS建立的SCn以sno為升序,以cno為降序的索引。對 應(yīng)的T-SQI語句如下:/ * 創(chuàng)建索引字段 */DROP INDEX Student . Stusno ;CREATE INDEX Stusno ON Student ( sno ASC);DROP INDEX Course . Coucno ;CREATE INDEX Coucno ON Course ( cno ASC);DROP INDEX SC. SCno;CREATE INDE

14、X SCno ON SC( sno ASC, cno DESC);五、數(shù)據(jù)庫設(shè)計實現(xiàn)及運行(1) 數(shù)據(jù)庫的創(chuàng)建T-SQL語句:CREATE DATABASE SIMS;(2) 數(shù)據(jù)表的創(chuàng)建T-SQL語句:/* 用戶表 */DROP TABLE User ;CREATE TABLE User (uname VARCHAR( 20) NOT NULL,upass VARCHAR( 30) NOT NULL,bs INTNOT NULL);/* 學(xué)生表 */DROP TABLE Student ;CREATE TABLE Student (snoVARCHAR( 20)PRIMARY KEY,sna

15、meVARCHAR( 20)NOT NULL,sexVARCHAR( 2)NOT NULL,birthDATE,telVARCHAR( 20),qqVARCHAR( 20),sdeptVARCHAR( 20)NOT NULL,classVARCHAR( 20)NOT NULL,addressVARCHAR( 50);/* 課程表 */DROP TABLE Course ;CREATE TABLE Course (cnoVARCHAR( 20)PRIMARY KEY,cnameVARCHAR( 20)NOT NULL,cpnoVARCHAR( 20),creditFLOAT NOT NULL,t

16、nameVARCHAR( 20)NOT NULL);/* 成績表 */DROP TABLE SC;CREATE TABLE SC(snoVARCHAR( 20),cnoVARCHAR( 20),gradeFLOAT ,pointFLOAT ,PRIMARYKEY( sno , cno ),ForeignKEY ( sno ) REFERENCESStudent( sno ),ForeignKEY ( cno ) REFERENCESCourse( cno );(3) 視圖的創(chuàng)建T-SQL語句:/* 創(chuàng)建 Stu_Cou_SC 視圖 */ DROP VIEW Stu_Cou_SC;CREATE

17、VIEWStu_Cou_SC(sno,sname,cno,cname,credit,grade,point,tel)ASSELECT s.sno,sname,FROMStudent s,CourseWHEREs.sno=sc.snoc .cno,cname,credit,grade,point,tel c,SC scAND c .cno=o;4)各模塊中的功能實現(xiàn)a)功能界面(截圖);管理員登錄模塊功能截圖用戶登錄添加學(xué)生信息更新學(xué)生信息r繹寒學(xué)生信息1確走b;刪除學(xué)生信息信息查詢 查詢學(xué)信息精確查詢模糊查詢用戶維護(hù)添加用戶修改密碼幫助切換用戶登錄彈出登錄窗體選擇學(xué)生登錄學(xué)生登錄功能截圖信息維

18、護(hù)科韻佶息幵發(fā)信息查詢b) 功能界面簡單描述;首先是運行程序,進(jìn)入用戶登錄界面,登錄是要進(jìn)行身份驗證,在這登 錄過程系統(tǒng)會通過數(shù)據(jù)庫中的User表存儲的數(shù)據(jù)進(jìn)行驗證,并判斷用標(biāo)識檢查登錄的類型。當(dāng)?shù)卿浀念愋褪枪芾韱T登錄時,登錄成功后會進(jìn)入管理員操作界面,在 管理員登錄界面中,管理員可以進(jìn)行管理設(shè)置,如:設(shè)置學(xué)生基本信息,設(shè)置 課程信息,設(shè)置成績信息,每個設(shè)置都有相應(yīng)的添加、更新、刪除操作;接 著是信息查詢,在這兒可以查詢學(xué)生的基本信息,查詢課程信息,查詢成績 信息,在每一種查詢中都分別設(shè)置有精確查詢和模糊查詢等操作,模糊查詢 使得查詢在查詢的時候更加方便;還有就是用戶維護(hù)操作,這里面管理員可

19、以添加用戶,修改登錄密碼,切換用戶登錄,最后是幫助中的關(guān)于和系統(tǒng)的 退出。當(dāng)?shù)卿涱愋蜑閷W(xué)生登錄時,登錄成功后會進(jìn)入學(xué)生操作界面,在此界面 中學(xué)生可以在信息維護(hù)下修改登錄密碼,更新個人基本信息,切換用戶登錄; 然后也可以查詢學(xué)生基本信息,查詢課程信息,查詢成績信息,同樣查詢中 也設(shè)置有精確查詢和模糊查詢;最后也有幫助中的關(guān)于和系統(tǒng)的退出。在界面的操作過程中,對一些在操作中可能是操作失誤導(dǎo)致的錯誤進(jìn)行 了相應(yīng)的提示,比如成績的輸入必須是字符型數(shù)字,出生日期是格式應(yīng)為 yyyy-MM-dd格式,如果輸入格式不對,給出相應(yīng)的提示,操作人員在給出 對應(yīng)的正確操作,這使得該系統(tǒng)變得更加智能化。c) T-S

20、QL語句與宿主語言嵌套使用代碼段/*JAVA數(shù)據(jù)庫的連接程序*/private static fin al Stri ng DBDRIVER =com.microsoft.sqlserver.jdbc.SQLServerDriver" ;private static final String DBURL = "jdbc:sqlserver:/localhost:1433;"+ "DatabaseName=SIMS "private static final String DBUSER = "sa"private static

21、 final String DBPASS= ""/ 密碼為空private Connection conn = null ;public DatabaseConnection() try ClassforName (DBDRIVER); catch (ClassNotFoundException e) JOptionPane.showMessageDialog (null , e.getMessage();try conn = DriverManager. getConnection (DBURL, DBUSER, DBPASS; catch (SQLException e

22、) JOptionPane. showMessageDialog (null , e.getMessage();public Connection getConnection() return this .conn ;public void close() if (this .conn != null ) try this .conn.close(); catch (SQLException e) JOptionPane. showMessageDialog (null , e.getMessage();/*添加用戶登錄查詢塊*/dbconn = new DatabaseConnection(

23、); / 初始化連接類conn = dbconn .getConnection(); /獲得連接Stri ng sql = "SELECT un ame,upass,bs FROM User WHERE un ame=? AND bs=?" PreparedStatement pstmt = null ;try pstmt = conn .prepareStatement(sql);pstmt.setStri ng(1, getName();pstmt.set In t(2, user .getBs();ResultSet rs = pstmt.executeQuery()

24、;user .set Un ame (null );user .setUpass(null );user .setBs(2);while (rs.next() user .setUname(rs.getString(1);user .setUpass(rs.getStri ng(2);user .setBs(rs.getl nt(3); catch (SQLException e) JOptionPane.showMessageDialog(this , e.getMessage(); fin ally if (conn != null ) dbconn .close();/*添加登錄用戶信息

25、*/PreparedStatement pstmt = null ;ResultSet rs = null ;String sql1 = "SELECT * FROM User WHERE uname=? AND bs=?" try pstmt = conn .prepareStatement(sqll);pstmt.setStri ng(1, user name);pstmt.set In t(2, user .getBs();rs = pstmt.executeQuery();if (!rs. next()Stri ng sql3 = "INSERT INTO

26、 User(u name,upass,bs) VALUES(?,?,?)" int i=0;pstmt = conn .prepareStateme nt(sql3);pstmt.setStri ng(1, user name);pstmt.setStri ng(2, passl);pstmt.setInt(3, user .getBs();i = pstmt.executeUpdate();if(i>0)JOptionPane.showMessageDialog (this ,"用戶添加成功”); jTextFieldl .setText( null );jPass

27、wordFieldl .setText( null );jPasswordField2 .setText( null );jRadioButton1 .setSelected( false );jRadioButton2 .setSelected( false );this .setVisible( false );else JOptionPane.showMessageDialog (this ,"用戶添加失敗");else /在數(shù)據(jù)表中找到了改用戶請使JOptionPane.showMessageDialog(this ,"對不起,該用戶名已經(jīng)存在, 用其他用

28、戶名!");this .jPasswordFieldl .setText( null );this .jPasswordField2 .setText( null ); catch (SQLException e1) JOptionPane.showMessageDialog(this ,"用戶添加失敗,數(shù)據(jù)庫操作異常: "+e1.getMessage(); fin ally if (conn != null ) dbconn .close();/*修改用戶登錄密碼*/Stri ng sqll = "SELECT * FROM User WHERE un

29、 ame=? AND upass=?”; try pstmt = conn .prepareStatement(sql1);pstmt.setStri ng(1, un ame);pstmt.setStri ng(2, passtr);rs = pstmt.executeQuery();if (!rs. next()JOptionPane.showMessageDialog (this ,"密碼修改失敗,輸入的舊密碼不 正!");else Stri ng sql2 = "Update User SET upass=? WHERE un ame=? AND upas

30、s=? int i=0;pstmt = conn .prepareStateme nt(sql2);pstmt.setStri ng(1, passl);pstmt.setStri ng(2, un ame);pstmt.setStri ng(3, passtr);i = pstmt.executeUpdate();if(i>0)JOptionPane. showMessageDialog (this ,"密碼修改成功"); jPasswordFieldl .setText( null );jPasswordField2 .setText( null );jPassw

31、ordField3 .setText( null );this .setVisible( false );else JOptionPane.showMessageDialog (this ,"密碼修改失敗"); catch (SQLException e1) JOptionPane.showMessageDialog(this ,"密碼修改失敗,數(shù)據(jù)庫操作異常: "+e1.getMessage(); fin ally if (conn != null ) dbconn .close();/*添加學(xué)生基本信息塊*/String sqll = "S

32、ELECT * FROM Student WHERE sno=?" ResultSet rs= null ;try PreparedStatement pstmt = null ;pstmt = conn .prepareStatement(sql1);pstmt.setString(1, stu .getSno();rs = pstmt.executeQuery(); catch (SQLException e) JOptionPane. showMessageDialog (this,"查詢時發(fā)生異常為:” +e.getMessage();try if (rs.next

33、() JOptionPane.showMessageDialog (this ,"該學(xué)號的學(xué)生已經(jīng)存在, 請使用其 他學(xué)號! ”); else Stri ng sql2 = "INSERT INTO Stude nt "+ "(s no,sn ame,sex,birth,tel,qq,sdept,class,address)"+ "VALUES(?,?,?,?,?,?,?,?,?)"pstmt = conn .prepareStateme nt(sql2); pstmt.setStri ng(1, pstmt.setStri

34、 ng(2, pstmt.setStri ng(3, pstmt.setDate(4, pstmt.setStri ng(5, pstmt.setStri ng(6, pstmt.setStri ng(7, pstmt.setStri ng(8, pstmt.setStri ng(9,PreparedStatement pstmt = null ;stu .getS no ();stu .getS name();stu .getSex();new java.sql.Date( stu .getBirth().getTime();stu .getTel();stu.getQq();stu .ge

35、tSdept();stu .getSclass();stu .getAddress();if (pstmt.executeUpdate() > 0) JOptionPane. showMessageDialog (this ,"學(xué)生信息添加成功!");this .setVisible( false ); catch (SQLException e) JOptionPane.showMessageDialog(this,"學(xué)生信息添加失?。〔迦氘惓?"+e.getMessage();/*更新學(xué)生信息*/String sqll = "SEL

36、ECT * FROM Student WHERE sno=?" PreparedStatement pstmt = null ;try pstmt = conn .prepareStatement(sqll);pstmt.setString(1, stu .getSno();ResultSet rs = pstmt.executeQuery();if (!rs. next() JOptionPane.showMessageDialog (this ,"不存在該學(xué)號的學(xué)生!不能進(jìn)行刪除操作! ”); else /該課程的數(shù)據(jù)存在,進(jìn)行刪除操作String sql2 = &qu

37、ot;DELETE FROM Student WHERE sno=?"pstmt = conn .prepareStateme nt(sql2);pstmt.setStri ng(1, stu .getS no ();if (pstmt.executeUpdate() > 0) JOptionPane.showMessageDialog (this , "OK!刪除成功!"); catch (SQLException e) JOptionPane.showMessageDialog(this ,"刪除失?。?"+e.getMessage(

38、);/*刪除學(xué)生信息*/String sqll = "SELECT * FROM Student WHERE sno=?"PreparedStatement pstmt = null ;try pstmt = conn .prepareStatement(sqll);pstmt.setString(1, stu .getSno();ResultSet rs = pstmt.executeQuery();if (!rs. next() JOptionPane.showMessageDialog(this ,"不存在這個學(xué)號的學(xué)生,請重新輸入學(xué)號! ”); else

39、stu.setS name(rs.getStri ng(2);stu .setSex(rs.getStri ng(3);stu .setBirth(rs.getDate (4);stu.setTel(rs.getStri ng(5);stu.setQq(rs.getStri ng(6);stu .setSdept(rs.getStri ng( 7);stu .setSclass(rs.getStri ng(8);stu .setAddress(rs.getStri ng(9);flag = true ; catch (SQLException e) JOptionPane.showMessag

40、eDialog(this , "SQL異常:"+ e.getMessage(),"錯誤提示 ”,JOptionPane.ERROR_MESSAGEString sqll = "SELECT * FROM Student WHERE sno=?"PreparedStatement pstmt =null ;try pstmt = conn .prepareStatement(sql1);pstmt.setString(1, stu .getSno();ResultSet rs = pstmt.executeQuery();all = new Ar

41、rayList<Student>();while (rs.next() stu = new Student();String sno = rs.getString(1);String sname = rs.getString(2);String sex = rs.getString(3);Date birth = null ;try birth = new SimpleDateFormat( "yyyy-MM-DD" ).parse(rs .getStri ng(4); catch (ParseException e) JOptionPane. showMess

42、ageDialog (this ,"查詢得到的日期格式不符合”+ e.getMessage();String tel = rs.getString(5);String qq = rs.getString(6);String sdept = rs.getString(7);String sclass = rs.getString(8);String addr = rs.getString(9);stu.setS no(sno);stu.setS name(s name);stu.setSex(sex);stu.setBirth(birth);stu.setTel(tel);stu.se

43、tQq(qq);stu.setSdept(sdept);stu .setSclass(sclass);stu .setAddress(addr);all .add(stu);if (all .size() = 0) JOptionPane.showMessageDialog (this ,"沒有查詢到相關(guān)的數(shù)據(jù)!n"); else if (all .size() > 0) /*這段是對查詢的結(jié)果進(jìn)行顯示的代碼,這里省略*/ catch (SQLException e) JOptionPane.showMessageDialog(this ,"查詢學(xué)生記錄失敗

44、!查詢異常:"+ e.getMessage(); fin ally if (conn != null ) dbconn .close();/*使用模糊查詢方式查詢學(xué)生基本信息*/Stri ng sql2 = "SELECT * FROM Stude nt WHERE sno LIKE ? OR sn ame LIKE ? OR sdept LIKE ? OR class LIKE ?"PreparedStatement pstmt = null ;try pstmt = conn .prepareStatement(sql2);pstmt.setStri ng(1

45、,pstmt.setStri ng(2,pstmt.setStri ng(3,pstmt.setStri ng(4,"%""%""%""%"+ keyword + + keyword + + keyword + + keyword +"%"); "%");"%");"%");ResultSet rs = pstmt.executeQuery(); all = new ArrayList<Student>();while (r

46、s.next() stu = new Student();/注意這個句子不能放到外面去,每次都必須重新產(chǎn)生一個對象String sno = rs.getString(1);String sname = rs.getString(2);String sex = rs.getString(3);Date birth = null ;try birth = new SimpleDateFormat( "yyyy-MM-DD" ).parse(rs.getStri ng(4); catch (ParseException e) JOptionPane. showMessageDialog (this ,"查詢得到的日期格式不符合”+ e.getMessage();String tel = rs.getString(5);String qq = rs.getString(6);String sdept = rs.getString(7);String sclass = rs.getString(8);String addr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論