2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩29頁(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>  《數(shù)據(jù)庫(kù)原理及應(yīng)用》</p><p><b>  課</b></p><p><b>  程</b></p><p><b>  設(shè)</b></p><p><b>  計(jì)</b></p><p><b&

2、gt;  報(bào)</b></p><p><b>  告</b></p><p><b>  一、設(shè)計(jì)目的 </b></p><p>  《數(shù)據(jù)庫(kù)原理及應(yīng)用》是一門實(shí)踐性很強(qiáng)的課程,為了學(xué)好這門課程,必須在掌握理論知識(shí)的同時(shí),加強(qiáng)上機(jī)實(shí)踐。本課程設(shè)計(jì)的主要目的在于:</p><p>  1、

3、加深對(duì)數(shù)據(jù)庫(kù)基礎(chǔ)理論和基本知識(shí)的理解,培養(yǎng)學(xué)生運(yùn)用所學(xué)理論知識(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行組織、管理和使用的能力。 </p><p>  2、掌握數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的整個(gè)設(shè)計(jì)過(guò)程(包括需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)與物理設(shè)計(jì)與實(shí)施),提高運(yùn)用數(shù)據(jù)庫(kù)解決實(shí)際問題的能力。 </p><p><b>  二、設(shè)計(jì)要求</b></p><p>  1、要求學(xué)生熟練掌

4、握相關(guān)數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí),獨(dú)立完成設(shè)計(jì)任務(wù),并完成課程設(shè)計(jì)報(bào)告。</p><p>  2、學(xué)生必須仔細(xì)研讀數(shù)據(jù)庫(kù)課程設(shè)計(jì)任務(wù)書,課程設(shè)計(jì)以學(xué)生自學(xué)為主、指導(dǎo)教師指導(dǎo)為輔。</p><p>  3、本次課程設(shè)計(jì)按照教學(xué)要求需要在一周半時(shí)間內(nèi)獨(dú)立完成,學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,充分利用時(shí)間,安排好課設(shè)的時(shí)間計(jì)劃,并在課設(shè)過(guò)程中不斷檢測(cè)自己的計(jì)劃完成情況,及時(shí)地向指導(dǎo)教師匯報(bào)。</p>

5、<p>  4、使用工具不限,可以使用.net C#、Delphi、PB、VB等。</p><p>  5、可以做成C/S或者B/S。</p><p>  6、使用軟件工程的思想和方法進(jìn)行工程設(shè)計(jì)。</p><p><b>  三、設(shè)計(jì)任務(wù)</b></p><p><b>  學(xué)生成績(jī)管理系統(tǒng)&l

6、t;/b></p><p>  該系統(tǒng)至少應(yīng)包含如下功能:</p><p><b>  1、身份驗(yàn)證模塊</b></p><p>  進(jìn)入系統(tǒng)時(shí)首先進(jìn)行身份驗(yàn)證。只有用戶名和密碼正確才能進(jìn)入系統(tǒng)。若身</p><p>  份驗(yàn)證時(shí)間超過(guò)20秒則停止身份驗(yàn)證。</p><p><b>

7、;  2、用戶管理</b></p><p>  對(duì)使用本系統(tǒng)的用戶進(jìn)行添加、查詢、修改密碼、刪除等操作。</p><p><b>  3、學(xué)生信息錄入</b></p><p>  本系統(tǒng)能夠錄入學(xué)生的學(xué)號(hào)、姓名、性別、班級(jí)等信息,并且能夠判斷是否有不符合信息項(xiàng),如有不符合的則給出提示。</p><p><

8、;b>  4、學(xué)生成績(jī)查詢</b></p><p>  可以根據(jù)學(xué)號(hào)、姓名、班級(jí)、學(xué)期等信息項(xiàng)中的一項(xiàng)或多項(xiàng)的組合,進(jìn)行模糊查詢和精確查詢,從而高效地找到您想要的信息。</p><p><b>  5、學(xué)生成績(jī)更新</b></p><p>  可以根據(jù)學(xué)號(hào)、姓名等信息項(xiàng)中的一項(xiàng),進(jìn)行模糊查詢和精確查詢,找到要修改的學(xué)生記錄,最

9、后是對(duì)單個(gè)記錄進(jìn)行逐個(gè)的修改。也可以把錄錯(cuò)或不再有用的信息刪除掉。</p><p><b>  6、學(xué)生成績(jī)排序</b></p><p>  可以按照學(xué)號(hào)、姓名、性別、班級(jí)、成績(jī)的升序/降序(包括各科成績(jī)、總分、平均分)來(lái)進(jìn)行排序。</p><p><b>  7、統(tǒng)計(jì)  </b></p><

10、p>  可以按照課程、班級(jí)、專業(yè)等進(jìn)行統(tǒng)計(jì),形成報(bào)表。 </p><p><b>  學(xué)生自選課題</b></p><p>  學(xué)生原則上可以結(jié)合個(gè)人愛好自選課題,要求自選課題必須覆蓋數(shù)據(jù)庫(kù)的主要內(nèi)容,有一定的深度與難度,。學(xué)生自選課題需提前報(bào)課程設(shè)計(jì)指導(dǎo)教師批準(zhǔn)方可生效。</p><p><b>  四、成績(jī)考核<

11、/b></p><p>  根據(jù)完成任務(wù)的情況(必須進(jìn)行系統(tǒng)驗(yàn)收 + 答辯)、課程設(shè)計(jì)報(bào)告書的質(zhì)量和課程設(shè)計(jì)過(guò)程中的工作態(tài)度等按照50%、30%、20%加權(quán)綜合打分。成績(jī)?cè)u(píng)定實(shí)行優(yōu)秀、良好、中等、及格和不及格五個(gè)等級(jí)。</p><p><b>  五、設(shè)計(jì)報(bào)告</b></p><p>  1、主要內(nèi)容及裝訂順序:封面(封面用學(xué)校的統(tǒng)一封面

12、)、目錄、正文、參考文獻(xiàn)、附錄等。</p><p>  2、正文部分應(yīng)該包括:需求分析、總體設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)(含概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì),設(shè)計(jì)報(bào)告要有ER圖。)、程序模塊設(shè)計(jì)(含功能需求、用戶界面設(shè)計(jì)、程序代碼設(shè)計(jì)與分析、運(yùn)行結(jié)果)等。</p><p>  3、不交設(shè)計(jì)報(bào)告或抄襲者,按不及格論。</p><p><b>  六、指導(dǎo)教師</b&g

13、t;</p><p>  計(jì)05: 杜獻(xiàn)峰 高艷霞</p><p>  計(jì)06: 杜獻(xiàn)峰 徐飛</p><p><b>  正文 </b></p><p><b>  需求分析:</b></p><p><b>  身份驗(yàn)證模塊</b></

14、p><p>  此程序要求允許不同級(jí)別的用戶登錄,級(jí)別不同,擁有的權(quán)限不同,可以進(jìn)行的操作亦不同。進(jìn)入系統(tǒng)時(shí)首先進(jìn)行身份驗(yàn)證。只有用戶名和密碼正確才能進(jìn)入系統(tǒng)。若身份驗(yàn)證時(shí)間超過(guò)20秒則停止身份驗(yàn)證。</p><p><b>  2、用戶管理</b></p><p>  對(duì)使用本系統(tǒng)的用戶進(jìn)行添加、查詢、修改密碼、刪除等操作。其中,管理員權(quán)限的可以

15、執(zhí)行全部操作,普通用戶登錄時(shí)不允許查詢用戶,用戶添加時(shí)通過(guò)程序只能添加普通類型的用戶。</p><p><b>  3、學(xué)生信息錄入</b></p><p>  本系統(tǒng)能夠錄入學(xué)生的學(xué)號(hào)、姓名、性別、班級(jí)等信息,并且能夠判斷是否有不符合信息項(xiàng),如有不符合的則給出提示。</p><p><b>  4、學(xué)生成績(jī)查詢</b>&

16、lt;/p><p>  可以根據(jù)學(xué)號(hào)、姓名、班級(jí)、學(xué)期等信息項(xiàng)中的一項(xiàng)或多項(xiàng)的組合,進(jìn)行模糊查詢和精確查詢,從而高效地找到您想要的信息。</p><p><b>  5、學(xué)生成績(jī)更新</b></p><p>  可以根據(jù)學(xué)號(hào)、姓名等信息項(xiàng)中的一項(xiàng),進(jìn)行模糊查詢和精確查詢,找到要修改的學(xué)生記錄,最后是對(duì)單個(gè)記錄進(jìn)行逐個(gè)的修改。也可以把錄錯(cuò)或不再有用的

17、信息刪除掉。</p><p><b>  6、學(xué)生成績(jī)排序</b></p><p>  可以按照學(xué)號(hào)、姓名、性別、班級(jí)、成績(jī)的升序/降序(包括各科成績(jī)、總分、平均分)來(lái)進(jìn)行排序。</p><p><b>  7、統(tǒng)計(jì)  </b></p><p>  可以按照課程、班級(jí)、專業(yè)等進(jìn)行統(tǒng)計(jì),形成

18、報(bào)表。</p><p><b>  總體設(shè)計(jì):</b></p><p>  系統(tǒng)總體框架采用Frame框架,將主frame用分隔符分成左右兩部分,左半部分設(shè)置一導(dǎo)航(用Tree控件實(shí)現(xiàn)),右半部分使用Panel卡片布局,右半部分共設(shè)置了9個(gè)Panel,分別實(shí)現(xiàn)用戶登錄后的歡迎界面,用戶添加界面,用戶查詢界面,用戶修改界面,學(xué)生信息添加界面,分?jǐn)?shù)查詢界面,分?jǐn)?shù)排序界面,

19、分?jǐn)?shù)修改添加刪除界面,信息統(tǒng)計(jì)界面。點(diǎn)擊左側(cè)的葉子節(jié)點(diǎn),在右側(cè)顯示相對(duì)應(yīng)的Panel。程序另外單獨(dú)添加一個(gè)OracleSQL類,在此類定義所有的需要操作數(shù)據(jù)庫(kù)的函數(shù),各個(gè)頁(yè)面需要調(diào)用數(shù)據(jù)庫(kù)時(shí),只需要調(diào)用此類中的函數(shù)就可以了,這樣就將界面和數(shù)據(jù)處理分開在不同的類中,是代碼更易可讀和修改,增加或者修改功能時(shí)只需修改SQL語(yǔ)句就可以了。</p><p><b>  數(shù)據(jù)庫(kù)設(shè)計(jì):</b></p

20、><p>  此程序按照要求使用的是Oracle數(shù)據(jù)庫(kù)。程序共設(shè)計(jì)了4張表,分別是用戶表,學(xué)生信息表,課程信息表,學(xué)生成績(jī)表。</p><p><b>  ER圖設(shè)計(jì)</b></p><p><b>  m</b></p><p>  n

21、 </p><p>  由ER圖轉(zhuǎn)化為關(guān)系:</p><p>  USERMANAGER(username,password,type)</p><p>  STUDENT(cno,sn

22、ame,ssex,sage,sdept,sclass,sspec)</p><p>  SC(cno,cname,grade,term)</p><p>  在數(shù)據(jù)庫(kù)中創(chuàng)建的表實(shí)際如下:</p><p><b>  四:程序模塊設(shè)計(jì)、</b></p><p><b>  登錄模塊設(shè)計(jì):</b><

23、;/p><p>  登錄窗體使用Frame,在Frame里添加兩個(gè)JTable用于提示輸入信息,兩個(gè)編輯框用于輸入用戶名和密碼,兩個(gè)單選按鈕用于選擇用戶登錄類型,兩個(gè)按鈕用于確認(rèn)和取消,一個(gè)JTable用于顯示限制用戶登錄時(shí)間,效果圖如下:</p><p>  其中設(shè)計(jì)倒計(jì)時(shí)模塊代碼:</p><p>  在UserLogin類中定義兩個(gè)Timer類型的變量</p

24、><p>  Timer secondTime2 = new Timer(1000,this);/*將定時(shí)器設(shè)定為每秒執(zhí)行一次actionPerformed的方法*/ </p><p>  Timer secondTime = new Timer(20000,this);/*將定時(shí)器設(shè)定為每秒執(zhí)行一次actionPerformed的方法*/</p><p>  在

25、UserLogin類的構(gòu)造函數(shù)中啟動(dòng)這兩個(gè)定時(shí)器變量</p><p>  secondTime.start();/*定時(shí)器啟動(dòng)*/ secondTime2.start();/*定時(shí)器啟動(dòng)*/</p><p><b>  在監(jiān)聽其中進(jìn)行監(jiān)聽</b></p><p>  if(e.getSource()==secondTime){</

26、p><p>  System.exit(0);</p><p><b>  }</b></p><p>  else if(e.getSource()==secondTime2){ </p><p>  label1.setText("登錄倒數(shù)計(jì)時(shí) : "+n--+" s");

27、</p><p><b>  }</b></p><p><b>  用戶登錄驗(yàn)證模塊:</b></p><p>  首先連接數(shù)據(jù)庫(kù),連接上數(shù)據(jù)庫(kù)后查詢Usermanager表,若能查到,返回true,允許登錄,調(diào)用主頁(yè)面,同時(shí)計(jì)時(shí)器停止,將登錄窗口隱藏。</p><p>  OracleSQL o

28、racle = new OracleSQL();</p><p>  if(oracle.ConnectSQL(name, pwd, type)){</p><p>  StudentSystem studentSystem = new StudentSystem(type);</p><p>  secondTime.stop();</p><

29、p>  secondTime2.stop();</p><p>  this.setVisible(false);</p><p><b>  主系統(tǒng)頁(yè)面設(shè)計(jì):</b></p><p>  主頁(yè)面分左右兩塊,左面為樹控件,左邊為各功能顯示頁(yè)面,效果圖如下:</p><p><b>  樹控件模塊設(shè)計(jì):&l

30、t;/b></p><p>  在StudentSystem類中定義葉子節(jié)點(diǎn)</p><p>  private DefaultMutableTreeNode stRoot =</p><p>  new DefaultMutableTreeNode(new MyNode("操作選項(xiàng)","0"));</p>

31、<p>  private DefaultMutableTreeNode st1 =</p><p>  new DefaultMutableTreeNode(new MyNode("用戶管理","1"));</p><p>  private DefaultMutableTreeNode st2 =</p><p&g

32、t;  new DefaultMutableTreeNode(new MyNode("學(xué)生信息管理","2"));</p><p>  private DefaultMutableTreeNode st3 =</p><p>  new DefaultMutableTreeNode(new MyNode("學(xué)生成績(jī)查詢",&quo

33、t;3"));</p><p>  private DefaultMutableTreeNode st4 =</p><p>  new DefaultMutableTreeNode(new MyNode("更新","4"));</p><p>  private DefaultMutableTreeNode st5

34、 =</p><p>  new DefaultMutableTreeNode(new MyNode("學(xué)生成績(jī)排序","5"));</p><p>  private DefaultMutableTreeNode st6 =</p><p>  new DefaultMutableTreeNode(new MyNode(&q

35、uot;統(tǒng)計(jì)","6"));</p><p>  private DefaultMutableTreeNode st11 =</p><p>  new DefaultMutableTreeNode(new MyNode("用戶添加","11"));</p><p>  private Defau

36、ltMutableTreeNode st12 =</p><p>  new DefaultMutableTreeNode(new MyNode("用戶查詢","12"));</p><p>  private DefaultMutableTreeNode st13 =</p><p>  new DefaultMutable

37、TreeNode(new MyNode("修改密碼","13"));</p><p>  private DefaultMutableTreeNode st21 =</p><p>  new DefaultMutableTreeNode(new MyNode("學(xué)生信息錄入","21"));</p>

38、;<p>  private DefaultMutableTreeNode st31 =</p><p>  new DefaultMutableTreeNode(new MyNode("查詢成績(jī)","31"));</p><p>  private DefaultMutableTreeNode st32 =</p>&l

39、t;p>  new DefaultMutableTreeNode(new MyNode("按學(xué)號(hào)+班級(jí)查詢","32"));</p><p>  private DefaultMutableTreeNode st41 =</p><p>  new DefaultMutableTreeNode(new MyNode("學(xué)生成績(jī)更新&q

40、uot;,"41"));</p><p>  private DefaultMutableTreeNode st51 =</p><p>  new DefaultMutableTreeNode(new MyNode("升序","51"));</p><p>  private DefaultMutable

41、TreeNode st52 =</p><p>  new DefaultMutableTreeNode(new MyNode("降序","52"));</p><p>  其中MyNode是定義的一個(gè)內(nèi)部類,其構(gòu)造函數(shù)public MyNode(String values,String id){</p><p>  this

42、.values=values;</p><p>  this.id=id;</p><p><b>  }</b></p><p>  通過(guò)id值可以確定單擊的是哪一個(gè)節(jié)點(diǎn)。</p><p>  構(gòu)造樹的時(shí)候根據(jù)登錄用戶的類型的不同為樹添加不同的葉子節(jié)點(diǎn)。以此來(lái)實(shí)現(xiàn)不同的用戶擁有不同的功能。</p><

43、;p><b>  構(gòu)造樹的函數(shù):</b></p><p>  public void initialTree(int login_id){</p><p>  if(login_id==0){</p><p>  st1.add(st12);</p><p><b>  }</b></p

44、><p>  stRoot.add(st1);</p><p>  stRoot.add(st2);</p><p>  stRoot.add(st3);</p><p>  stRoot.add(st4);</p><p>  stRoot.add(st5);</p><p>  stRoot.a

45、dd(st6);</p><p>  st1.add(st11);</p><p>  st1.add(st13);</p><p>  st2.add(st21);</p><p>  st3.add(st31);</p><p>  st3.add(st32);</p><p>  st4.

46、add(st41);</p><p>  st5.add(st51);</p><p>  st5.add(st52);</p><p><b>  }</b></p><p>  定義各個(gè)功能模版類的對(duì)象</p><p>  public void initialPanel(){</p&g

47、t;<p>  welcome = new Welcome();</p><p>  useradd = new UserAdd();</p><p>  userchangePwd = new UserChangePwd();</p><p>  userquery= new UserQuery();</p><p>  ne

48、wstudentadd= new NewStudentAdd();</p><p>  gradequery= new GradeQuery();</p><p>  graderank = new GradeRank();</p><p>  gradeupdate= new GradeUpdate();</p><p>  statist

49、ical= new Statistical();</p><p><b>  }</b></p><p><b>  初始化右半邊的模版</b></p><p>  public void initialJpy(){</p><p>  jpy.setLayout(new CardLayout())

50、;</p><p>  cl = (CardLayout)jpy.getLayout();</p><p>  jpy.add(welcome,"welcome");</p><p>  jpy.add(useradd,"useradd");</p><p>  jpy.add(userchangePw

51、d,"userchangePwd");</p><p>  jpy.add(userquery,"userquery");</p><p>  jpy.add(newstudentadd,"newstudentadd");</p><p>  jpy.add(gradequery,"gradequ

52、ery");</p><p>  jpy.add(graderank,"graderank");</p><p>  jpy.add(gradeupdate,"gradeupdate");</p><p>  jpy.add(statistical,"statistical");</p&g

53、t;<p><b>  }</b></p><p>  在監(jiān)聽函數(shù)中根據(jù)不同的節(jié)點(diǎn)響應(yīng)對(duì)應(yīng)的面板</p><p>  public void addListener(){</p><p>  jt.addMouseListener(</p><p>  new MouseAdapter(){</p&g

54、t;<p>  public void mouseClicked(MouseEvent e){</p><p>  DefaultMutableTreeNode dmtntemp= </p><p>  (DefaultMutableTreeNode)jt.getLastSelectedPathComponent();</p><p>  MyNode

55、 mynode = (MyNode)dmtntemp.getUserObject();</p><p>  String id = mynode.getId();</p><p>  if(id.equals("0")){</p><p>  cl.show(jpy, "welcome");</p><p&

56、gt;  System.out.println("歡迎頁(yè)面");</p><p><b>  }</b></p><p>  else if(id.equals("11")){</p><p>  cl.show(jpy, "useradd");</p><p>

57、;<b>  }</b></p><p>  else if(id.equals("12")){</p><p>  cl.show(jpy, "userquery");</p><p>  //userquery.setVisible(true);</p><p><b&g

58、t;  }</b></p><p>  else if(id.equals("13")){</p><p>  cl.show(jpy, "userchangePwd");</p><p>  //userchangePwd.setVisible(true);</p><p>  userc

59、hangePwd.setFocus();</p><p><b>  }</b></p><p>  else if(id.equals("21")){</p><p>  cl.show(jpy, "newstudentadd");</p><p><b>  }<

60、;/b></p><p>  else if(id.equals("31")){</p><p>  //gradequery.setVisible(true);</p><p>  cl.show(jpy, "gradequery");</p><p><b>  }</b>

61、;</p><p>  else if(id.equals("41")){</p><p>  //gradeupdate.setVisible(true);</p><p>  cl.show(jpy, "gradeupdate");</p><p><b>  }</b><

62、;/p><p>  else if(id.equals("51")){</p><p>  //graderank.setVisible(true);</p><p>  cl.show(jpy, "graderank");</p><p><b>  }</b></p>

63、<p>  else if(id.equals("6")){</p><p>  //graderank.setVisible(true);</p><p>  cl.show(jpy, "statistical");</p><p><b>  }</b></p><p&

64、gt;<b>  }</b></p><p><b>  }</b></p><p><b>  );</b></p><p>  jt.setToggleClickCount(1);//將展開節(jié)點(diǎn)的鼠標(biāo)點(diǎn)擊次數(shù)設(shè)置為1</p><p><b>  }&

65、lt;/b></p><p><b>  設(shè)計(jì)操作數(shù)據(jù)庫(kù)類:</b></p><p>  對(duì)數(shù)據(jù)庫(kù)的連接,數(shù)據(jù)的查詢,更新函數(shù)都寫在這一個(gè)類中。</p><p>  連接數(shù)據(jù)庫(kù)函數(shù):連接成功則返回true,否則返回false;</p><p>  public boolean ConnectSQL(){//連接數(shù)據(jù)

66、庫(kù)</p><p>  if(stmt!=null){</p><p><b>  try {</b></p><p>  stmt.close();</p><p>  } catch (SQLException e) {</p><p>  // TODO Auto-generated cat

67、ch block</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(conn!=null){</p><p><b>  try {</b&g

68、t;</p><p>  conn.close();</p><p>  } catch (SQLException e) {</p><p>  // TODO Auto-generated catch block</p><p>  e.printStackTrace();</p><p><b>  }

69、</b></p><p><b>  }</b></p><p><b>  try { </b></p><p>  /** 使用Class.forName()方法自動(dòng)創(chuàng)建這個(gè)驅(qū)動(dòng)程序的實(shí)例且自動(dòng)調(diào)用DriverManager來(lái)注冊(cè)它*/</p><p>  Class.forName

70、(DB_DRIVER).newInstance(); </p><p>  //與url指定的數(shù)據(jù)源建立連接 </p><p>  conn = DriverManager.getConnection(DB_URL, DB_User, DB_Pwd); </p><p>  //采用Statement進(jìn)行查詢 </p><p>  stmt

71、= conn.createStatement(); </p><p>  System.out.println("連接成功");</p><p>  return true;</p><p>  } catch (Exception e) { </p><p>  e.printStackTrace(); </p&g

72、t;<p>  return false;</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  驗(yàn)證用戶登錄函數(shù):</b></p><p><b>  //驗(yàn)證用戶登錄</b><

73、/p><p>  public boolean ConnectSQL(String username,String userpassword,int usertype) throws SQLException{</p><p>  String sql="select *from USERMANAGER where" +</p><p>  &quo

74、t; USERNAME='"+username+"'and PASSWORD='"+userpassword+"'and TYPE='"+usertype+"'";</p><p>  if(ConnectSQL()){</p><p>  //System.out.pri

75、ntln("連接成功");</p><p>  return execute(sql);</p><p><b>  }</b></p><p><b>  else </b></p><p>  return false; </p><p><

76、;b>  }</b></p><p>  //執(zhí)行查詢 驗(yàn)證登陸</p><p>  public boolean execute(String sql) throws SQLException{</p><p>  boolean is_login =false;</p><p><b>  try{</b

77、></p><p>  rs = stmt.executeQuery(sql);</p><p>  }catch (SQLException e) { </p><p>  e.printStackTrace(); </p><p><b>  } </b></p><p>  if(rs

78、.next())</p><p>  is_login=true;</p><p>  rs.close();</p><p><b>  close();</b></p><p>  return is_login;</p><p><b>  }</b></p>

79、;<p>  數(shù)據(jù)查詢函數(shù),其中把查詢到的數(shù)據(jù)用Vector保存。</p><p>  public boolean executeQuery(String sql) throws SQLException { //數(shù)據(jù)查詢</p><p>  if(!ConnectSQL())</p><p>  return false;</p>&

80、lt;p>  rs = null; </p><p>  columnHeads=new Vector();</p><p>  Rows=new Vector();</p><p><b>  try { </b></p><p>  rs = stmt.executeQuery(sql); </p>

81、<p>  } catch (SQLException e) { </p><p>  e.printStackTrace(); </p><p>  return false;</p><p><b>  } </b></p><p>  if(!rs.next()){</p><p&

82、gt;  rs.close();</p><p><b>  close();</b></p><p>  return false;</p><p><b>  }</b></p><p><b>  try{</b></p><p>  Result

83、SetMetaData rsmd = rs.getMetaData();</p><p>  for(int i =1;i<=rsmd.getColumnCount();i++)</p><p>  columnHeads.addElement(rsmd.getColumnName(i));//得到列的頭</p><p><b>  do{</

84、b></p><p>  Rows.addElement(getNextRow(rs,rsmd));</p><p>  }while(rs.next());</p><p>  rs.close();</p><p>  return true;</p><p>  }catch(SQLException e)

85、{</p><p>  e.printStackTrace();</p><p>  return false;</p><p><b>  }</b></p><p>  // return true;</p><p><b>  }</b></p><

86、p>  private Vector getNextRow(ResultSet rs,ResultSetMetaData rsmd)</p><p>  throws SQLException{</p><p>  Vector currentRow = new Vector();//用于存放每行的記錄</p><p>  for(int i =1;i<

87、=rsmd.getColumnCount();++i)</p><p>  currentRow.addElement(rs.getString(i));</p><p>  return currentRow;</p><p><b>  }</b></p><p><b>  數(shù)據(jù)更新函數(shù):</b&g

88、t;</p><p>  public boolean executeUpdate(String sql){//數(shù)據(jù)更新</p><p>  if(!ConnectSQL())</p><p>  return false;</p><p><b>  try { </b></p><p>  s

89、tmt.executeUpdate(sql);</p><p><b>  close();</b></p><p>  return true;</p><p>  } catch (SQLException e) { </p><p>  e.printStackTrace(); </p><p&

90、gt;  return false;</p><p><b>  }</b></p><p>  //return true;</p><p><b>  }</b></p><p><b>  用戶添加頁(yè)面設(shè)計(jì):</b></p><p>  在程序中添

91、加用戶只允許添加普通用戶。</p><p><b>  頁(yè)面設(shè)計(jì)圖如下</b></p><p>  在確認(rèn)按鈕的監(jiān)聽里面添加代碼如下</p><p>  String user_name=jtf.getText().trim();</p><p>  String user_pwd = jpwdfArray[0].get

92、Text().trim();</p><p>  String user_pwd2 = jpwdfArray[1].getText().trim();</p><p>  if(user_name.equals("")||user_pwd.equals("")||user_pwd2.equals("")){</p>

93、<p>  JOptionPane.showMessageDialog(this,"用戶名或密碼不能為空");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(!user_pwd.equals(user_pwd2)){<

94、;/p><p>  JOptionPane.showMessageDialog(this,"兩次輸入的密碼不一致");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  String type ="1"

95、;</p><p>  sql="insert into usermanager values('"+user_name+"','"+user_pwd+"','"+type+"')";</p><p>  if(oracle.executeUpdate(sql))

96、{</p><p>  JOptionPane.showMessageDialog(this,"添加成功"); </p><p>  System.out.println("插入成功");</p><p><b>  return;</b></p><p>&

97、lt;b>  }</b></p><p><b>  else{</b></p><p>  JOptionPane.showMessageDialog(this,"該用戶名已存在"); </p><p>  System.out.println("插入失敗");&

98、lt;/p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  用戶查詢頁(yè)面設(shè)計(jì):</b></p><p>  在編輯框中若輸入為空則查詢?nèi)?,否則查詢指定用戶</p><p><b> 

99、 設(shè)計(jì)頁(yè)面如下:</b></p><p>  當(dāng)監(jiān)聽器監(jiān)聽到查詢按鈕時(shí),添加的代碼如下</p><p>  String stu_id=jtf.getText().trim();</p><p>  OracleSQL oracle1= new OracleSQL();</p><p>  String sql=null;<

100、/p><p>  if(stu_id.equals(""))//查詢?nèi)?lt;/p><p><b>  {</b></p><p>  sql="select *from turing.usermanager";</p><p><b>  }<

101、;/b></p><p><b>  else</b></p><p><b>  {</b></p><p>  sql="select *from turing.usermanager where username like '"+stu_id+"'%";&

102、lt;/p><p><b>  }</b></p><p><b>  try {</b></p><p>  if(!oracle1.executeQuery(sql)){</p><p>  JOptionPane.showMessageDialog(this,"未查詢到結(jié)果",

103、"",</p><p>  JOptionPane.ERROR_MESSAGE);</p><p><b>  return;</b></p><p><b>  }</b></p><p>  } catch (HeadlessException | SQLException

104、e1) {</p><p>  // TODO Auto-generated catch block</p><p>  e1.printStackTrace();</p><p><b>  }</b></p><p>  v_data=oracle1.Rows;</p><p>  v_hea

105、d=oracle1.columnHeads;</p><p><b>  //更新表格模型</b></p><p>  DefaultTableModel dtm=new DefaultTableModel(v_data,v_head);</p><p>  jt.setModel(dtm);</p><p>  //更

106、新顯示((DefaultTableModel)jt.getModel()).fireTableStructureChanged();</p><p><b>  用戶修改頁(yè)面設(shè)計(jì):</b></p><p><b>  界面設(shè)計(jì)圖如下:</b></p><p>  在確認(rèn)按鈕的監(jiān)聽函數(shù)中添加代碼如下</p&

107、gt;<p>  String user_name=jtf.getText().trim();</p><p>  String user_pwd = jpfArray[0].getText().trim();</p><p>  String user_pwdnew = jpfArray[1].getText().trim();</p><p>  

108、String user_pwdnew2 = jpfArray[2].getText().trim();</p><p>  String type ="1";</p><p>  if(user_name.equals("")||user_pwd.equals("")||user_pwdnew.equals(""

109、;)||user_pwdnew.equals("")){</p><p>  JOptionPane.showMessageDialog(this,"用戶名和密碼不能為空","",</p><p>  JOptionPane.ERROR_MESSAGE);</p><p><b>  return

110、;</b></p><p><b>  }</b></p><p>  if(!user_pwdnew.equals(user_pwdnew2)){</p><p>  JOptionPane.showMessageDialog(this,"兩次輸入的密碼不一致");</p><p>&l

111、t;b>  return;</b></p><p><b>  }</b></p><p>  sql="update usermanager set password='"+user_pwdnew+"'where username='"+user_name+"'&qu

112、ot;;</p><p>  if(oraclesql.executeUpdate(sql)){</p><p>  System.out.println("修改成功");</p><p>  JOptionPane.showMessageDialog(this,"修改成功","",</p>

113、<p>  JOptionPane.ERROR_MESSAGE);</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else{</b></p><p>  System.out.pri

114、ntln("修改失敗");</p><p>  JOptionPane.showMessageDialog(this,"修改失敗","",</p><p>  JOptionPane.ERROR_MESSAGE);</p><p><b>  return;</b></p>

115、<p><b>  }</b></p><p>  學(xué)生信息添加頁(yè)面設(shè)計(jì):</p><p><b>  該頁(yè)面設(shè)計(jì)圖如下:</b></p><p>  提交按鈕監(jiān)聽消息的核心代碼如下</p><p>  sql="insert into turing.student valu

116、es" +</p><p>  "('"+std_id+"','"+std_name+"','"+std_sex+"','"+std_age+"','"+std_sdep+"','"+std_spe

117、c+"','"+std_class+"')";</p><p>  if(!oraclesql.executeUpdate(sql)){</p><p>  JOptionPane.showMessageDialog(this,"未查詢到結(jié)果","",</p>&l

118、t;p>  JOptionPane.ERROR_MESSAGE);</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else{</b></p><p>  JOptionPane.showMes

119、sageDialog(this,"插入成功");</p><p>  return;</p><p><b>  }</b></p><p>  其中sql語(yǔ)句中的('"+std_id+"','"+std_name+"','"

120、+std_sex+"','"+std_age+"','"+std_sdep+"','"+std_spec+"','"+std_class+"'分別是輸入的值。</p><p>  分?jǐn)?shù)查詢頁(yè)面設(shè)計(jì)如下:</p><p>  查詢按

121、鈕監(jiān)聽器函數(shù)主要代碼如下</p><p>  if(stu_term.equals(""))</p><p><b>  {</b></p><p>  sql = "select student.sno,student.sname,cname,grade " +</p><p>

122、  "from turing.student,turing.course,turing.sc " +</p><p>  "where student.sno=sc.sno and course.cno = sc.cno and student.sno like '"+stu_id+"'%";</p><p>  

123、// sql="select sno,cno,grade,term from turing.sc where sno='"+stu_id+"'";</p><p><b>  }</b></p><p><b>  else</b></p><p>  sql =

124、"select student.sno,student.sname,cname,grade " +</p><p>  "from turing.student,turing.course,turing.sc " +</p><p>  "where student.sno=sc.sno and course.cno = sc.cno an

125、d sc.term like '"+stu_term+"'% and student.sno like '"+stu_id+"'%";</p><p><b>  try {</b></p><p>  if(!oraclesql.executeQuery(sql)){</p>

126、;<p>  JOptionPane.showMessageDialog(this,"未查詢到結(jié)果","",</p><p>  JOptionPane.ERROR_MESSAGE);</p><p><b>  return;</b></p><p><b>  }</b&

127、gt;</p><p>  } catch (HeadlessException | SQLException e1) {</p><p>  // TODO Auto-generated catch block</p><p>  e1.printStackTrace();</p><p><b>  }</b><

128、;/p><p>  v_data=oraclesql.Rows;</p><p>  //v_head=oraclesql.columnHeads;</p><p><b>  //更新表格模型</b></p><p>  DefaultTableModel dtm=new DefaultTableModel(v_data,

129、v_head);</p><p>  jt.setModel(dtm);</p><p>  //更新顯示((DefaultTableModel)jt.getModel()).fireTableStructureChanged();</p><p><b>  }</b></p><p>  其中學(xué)號(hào)必須輸入,

130、學(xué)期可以為空,當(dāng)學(xué)期為空時(shí)查詢?cè)搶W(xué)號(hào)下的所有成績(jī)。</p><p><b>  成績(jī)更新頁(yè)面設(shè)計(jì):</b></p><p><b>  頁(yè)面效果圖:</b></p><p>  其中查詢按鈕和之前的查詢頁(yè)面設(shè)計(jì)一樣,</p><p><b>  添加按鈕函數(shù):</b></

131、p><p>  單擊一次,信息一欄四個(gè)編輯框中的值設(shè)置為空,在編輯框中設(shè)置相應(yīng)的值后再次單擊執(zhí)行添加操作,代碼如下</p><p>  if(i%2==0){</p><p>  jtfArray[2].setText("");</p><p>  jtfArray[3].setText("");</

132、p><p>  jtfArray[4].setText("");</p><p>  jtfArray[5].setText("");</p><p><b>  i++;</b></p><p>  jb3.setText("確認(rèn)");</p>&l

133、t;p><b>  }</b></p><p><b>  else{</b></p><p>  String sno=jtfArray[2].getText().trim();</p><p>  String cno=jtfArray[3].getText().trim();</p><p&

134、gt;  String grad=jtfArray[4].getText().trim();</p><p>  String term=jtfArray[5].getText().trim();</p><p>  Integer grade = Integer.valueOf(grad);</p><p>  OracleSQL oracle2= new Ora

135、cleSQL();</p><p>  sql="insert into turing.sc values('"+sno+"','"+cno+"','"+grade+"','"+term+"')";</p><p>  if(o

136、racle2.executeUpdate(sql)){</p><p>  jb3.setText("添加");</p><p><b>  i++;</b></p><p>  JOptionPane.showMessageDialog(this,"添加成功","",</p&g

137、t;<p>  JOptionPane.ERROR_MESSAGE);</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else{</b></p><p>  jb3.setText(&qu

138、ot;添加");</p><p><b>  i++;</b></p><p>  JOptionPane.showMessageDialog(this,"添加失敗");</p><p>  return;</p><p><b>  }</b></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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論