畢業(yè)設(shè)計(jì)---學(xué)生信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩37頁(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><b>  畢業(yè)設(shè)計(jì)說(shuō)明書</b></p><p>  摘 要:隨著計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,Internet應(yīng)用在全球范圍內(nèi)日益普及,當(dāng)今社會(huì)正快速向信息化社會(huì)前進(jìn),信息系統(tǒng)的作用也越來(lái)越大。傳統(tǒng)的學(xué)校學(xué)籍管理方法、由于分散管理,易發(fā)生數(shù)據(jù)丟失,勞動(dòng)強(qiáng)度高,速度慢。使用計(jì)算機(jī)可以高速、快捷地完成以上工作。特別是在計(jì)算機(jī)聯(lián)網(wǎng)后,數(shù)據(jù)在網(wǎng)上傳遞,可以實(shí)現(xiàn)數(shù)據(jù)共享,避免重復(fù)

2、勞動(dòng),規(guī)范教學(xué)管理行為,從而提高了管理效率和水平。學(xué)籍管理信息系統(tǒng)以計(jì)算機(jī)為工具,通過(guò)對(duì)教務(wù)管理所需的信息管理,把管理人員從繁瑣的數(shù)據(jù)計(jì)算處理中解脫出來(lái),從而全面提高教學(xué)質(zhì)量。</p><p>  針對(duì)目前學(xué)校發(fā)展迅速,學(xué)生信息管理要求不斷加強(qiáng)與復(fù)雜化,信息管理系統(tǒng)由此誕生,為使學(xué)校管理各種各樣學(xué)生信息,為老師與學(xué)生方便簡(jiǎn)捷的查詢所需信息與資源,也為了后臺(tái)的維護(hù)與更新。學(xué)生信息管理是一個(gè)教育單位不可缺少的部分,它

3、的內(nèi)容對(duì)于學(xué)校的管理與運(yùn)行來(lái)說(shuō)相當(dāng)重要,所以本系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⑴c快捷的查詢方式。本系統(tǒng)主要采用SQL Server 2005數(shù)據(jù)庫(kù)和C#開(kāi)發(fā)的功能較為完善的學(xué)生信息管理系統(tǒng)。該系統(tǒng)主要包括用戶登錄、信息查詢、成績(jī)統(tǒng)計(jì)和選課等功能模塊。</p><p>  關(guān)鍵詞:學(xué)生信息管理系統(tǒng),數(shù)據(jù)庫(kù),C#</p><p>  Abstract: Along with the compu

4、ter and network technology rapid development, Internet application in the global scope increasingly popular, today's society is fast forward to the information society, the role of information system is more and more

5、 big. The traditional school students' identity management method, because of decentralized management, easy happening data loss, labor strength, high speed. Use the computer can be high speed, quickly complete the a

6、bove work. Especially in computer netw</p><p>  In view of the current rapid development of the school, students' information management requires the continuous strengthening and complicated, information

7、 management system born, to make the school management various student information for the teacher and student convenient simple inquires information and resources needed and also to the maintenance and update. Students&

8、#39; information management is a education unit essential part, its content to the school's management and operation is important</p><p>  Keywords: students' information management system, database,

9、 to use c #</p><p><b>  目 錄</b></p><p><b>  1 引言4</b></p><p>  2 開(kāi)發(fā)工具簡(jiǎn)介5</p><p>  2.1 ASP.NET簡(jiǎn)介5</p><p>  2.2 SQL語(yǔ)言基礎(chǔ)簡(jiǎn)介和SQL語(yǔ)句

10、介紹5</p><p>  2.3 C#語(yǔ)言簡(jiǎn)介6</p><p>  3 系統(tǒng)需求分析6</p><p><b>  4 系統(tǒng)設(shè)計(jì)7</b></p><p>  4.1 系統(tǒng)功能結(jié)構(gòu)7</p><p>  4.2實(shí)體關(guān)系E-R圖設(shè)計(jì)8</p><p>  4.

11、3數(shù)據(jù)庫(kù)設(shè)計(jì)8</p><p>  5 系統(tǒng)詳細(xì)設(shè)計(jì)10</p><p>  5.1登錄模塊設(shè)計(jì)10</p><p>  5.2學(xué)生模塊設(shè)計(jì)15</p><p>  5.3教師模塊設(shè)計(jì)20</p><p>  5.4管理員模塊設(shè)計(jì)24</p><p>  5.5系統(tǒng)安全設(shè)計(jì)31&l

12、t;/p><p>  5.6報(bào)表設(shè)計(jì)33</p><p><b>  6軟件測(cè)試33</b></p><p>  6.1軟件測(cè)試的必要性33</p><p>  6.2 調(diào)試35</p><p><b>  結(jié) 論35</b></p><p>

13、  參 考 文 獻(xiàn)36</p><p><b>  1 引言</b></p><p>  隨著計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,Internet應(yīng)用在全球范圍內(nèi)日益普及,當(dāng)今社會(huì)正快速向信息化社會(huì)前進(jìn),信息系統(tǒng)的作用也越來(lái)越大。傳統(tǒng)的學(xué)校學(xué)籍管理方法、由于分散管理,易發(fā)生數(shù)據(jù)丟失,勞動(dòng)強(qiáng)度高,速度慢。使用計(jì)算機(jī)可以高速、快捷地完成以上工作。特別是在計(jì)算機(jī)聯(lián)網(wǎng)后,數(shù)據(jù)在網(wǎng)上

14、傳遞,可以實(shí)現(xiàn)數(shù)據(jù)共享,避免重復(fù)勞動(dòng),規(guī)范教學(xué)管理行為,從而提高了管理效率和水平。學(xué)籍管理信息系統(tǒng)以計(jì)算機(jī)為工具,通過(guò)對(duì)教務(wù)管理所需的信息管理,把管理人員從繁瑣的數(shù)據(jù)計(jì)算處理中解脫出來(lái),從而全面提高教學(xué)質(zhì)量。</p><p><b>  2 開(kāi)發(fā)工具簡(jiǎn)介</b></p><p>  2.1 ASP.NET簡(jiǎn)介</p><p>  ASP.NET

15、是.NTE框架層之一,負(fù)責(zé)處理對(duì)特定類型文件的Web請(qǐng)求,這些文件主要包括擴(kuò)展名為.aspx,.ascx以及.asmx的文件以及其他一些文件(在Web Internet Services Manager 應(yīng)用程序中,可以通過(guò)查看Web站點(diǎn)的Application Configuration屬性得到所有文件類型的列表)。ASP.NET引擎為創(chuàng)建動(dòng)態(tài)內(nèi)容提供了強(qiáng)健的對(duì)象模型,同時(shí)松散地集成在.NET框架中。這種集成有利于把.NET框架移植到

16、非Windows平臺(tái)。</p><p>  2.2 SQL語(yǔ)言基礎(chǔ)簡(jiǎn)介和SQL語(yǔ)句介紹</p><p>  SQL 的全稱是Structured Query Language,即結(jié)構(gòu)化查詢語(yǔ)言。SQL語(yǔ)句可以從關(guān)系數(shù)據(jù)庫(kù)中獲得數(shù)據(jù),也可以建立數(shù)據(jù)庫(kù)、增加數(shù)據(jù)、修改數(shù)據(jù)。1986年ANSI采用SQL語(yǔ)言作為關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言,后被國(guó)際化標(biāo)準(zhǔn)組織(ISO)采納為國(guó)際標(biāo)準(zhǔn)。SQL語(yǔ)言使用方

17、便、功能豐富、簡(jiǎn)潔易學(xué),是操作數(shù)據(jù)庫(kù)的工業(yè)標(biāo)準(zhǔn)語(yǔ)言,得到廣泛地應(yīng)用。</p><p> ?。?)SQL語(yǔ)言的優(yōu)點(diǎn):</p><p><b>  1)非過(guò)程化語(yǔ)言</b></p><p>  SQL語(yǔ)言是一種非過(guò)程化語(yǔ)言,它一次處理一個(gè)記錄集合,對(duì)數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL語(yǔ)言允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對(duì)單個(gè)記錄進(jìn)行操作。SQL語(yǔ)言不要求

18、用戶指定數(shù)據(jù)的存取方法,而是使用查詢優(yōu)化器,由系統(tǒng)決定對(duì)指定數(shù)據(jù)存取的最快速手段。當(dāng)設(shè)計(jì)者在關(guān)系表上定義了索引時(shí),系統(tǒng)會(huì)自動(dòng)利用索引進(jìn)行快速檢索,用戶不需知道表上是否有索引或者有什么類型的索引等細(xì)節(jié)。</p><p><b>  2)同一語(yǔ)言</b></p><p>  SQL可用于所有用戶的數(shù)據(jù)庫(kù)活動(dòng)類型,包括數(shù)據(jù)庫(kù)系統(tǒng)管理員、程序員等,它操作簡(jiǎn)單,使用方便。<

19、;/p><p>  3)關(guān)系數(shù)據(jù)庫(kù)的公共語(yǔ)言</p><p>  用戶可將使用SQL的技能從一個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù)管理系統(tǒng)很容易的轉(zhuǎn)到另一個(gè)系統(tǒng)。所有用SQL語(yǔ)言寫的程序都具有可移植性。</p><p><b> ?。?)SQL查詢</b></p><p>  數(shù)據(jù)查詢是關(guān)系運(yùn)算理論在SQL語(yǔ)言中的主要體現(xiàn),SELECT 語(yǔ)句是SQ

20、L查詢的基本語(yǔ)句,當(dāng)人們?cè)趯?duì)一個(gè)數(shù)據(jù)庫(kù)進(jìn)各種各樣的操作時(shí),使用的最多的就是數(shù)據(jù)查詢,在以SQL為基礎(chǔ)的關(guān)系數(shù)據(jù)庫(kù)中,使用的最多的就是SELECT查詢語(yǔ)句。</p><p>  SELECT語(yǔ)句的完整句法如下:</p><p>  SELECT 目標(biāo)表的列名或列表達(dá)式序列</p><p>  FROM   基本表和(或)視圖序列</p>

21、<p>  [WHERE 行條件表達(dá)式]</p><p>  [GROUP BY 列名序列]</p><p>  [ORDER BY列名 [ASC│DESC]…]</p><p>  SQL語(yǔ)言還可以完成許多功能,例如:在數(shù)據(jù)庫(kù)表格中插入、修改和刪除記錄;建立、修改和刪除數(shù)據(jù)對(duì)象;控制對(duì)數(shù)據(jù)和數(shù)據(jù)對(duì)象的存??;確保數(shù)據(jù)庫(kù)的一致性和完整性等。</p&

22、gt;<p>  2.3 C#語(yǔ)言簡(jiǎn)介</p><p>  在過(guò)去的20年中,C/C++已經(jīng)成為廣泛應(yīng)用于商業(yè)軟件開(kāi)發(fā)中的高級(jí)語(yǔ)言。但是C和C++都包含了一些容易使開(kāi)發(fā)者產(chǎn)生錯(cuò)誤的特性,通常我們可以認(rèn)為,C/C++的靈活性是以犧牲開(kāi)發(fā)效率為代價(jià)的。</p><p>  在基于C語(yǔ)言的所有衍生語(yǔ)言中,C#是最近的演變結(jié)果。C#相對(duì)于C++而言,更現(xiàn)代、簡(jiǎn)單、完全面向?qū)ο蠛皖愋桶?/p>

23、全。最重要的是,它簡(jiǎn)化和現(xiàn)代化了C++在類、名字空間、方法重載和異常處理等領(lǐng)域的處理方法,摒棄了C++的復(fù)雜性,使它更易用、更少出錯(cuò)。</p><p>  在增強(qiáng)易用性的同時(shí),C#也減少了C++的一些特性,如不再有宏、模板和多重繼承等。事實(shí)上,特別是對(duì)企業(yè)開(kāi)發(fā)者來(lái)說(shuō),上述功能只會(huì)產(chǎn)生更多的麻煩而不是效益。</p><p>  C#使編程更方便的新功能有嚴(yán)格的類型安全、版本控制、垃圾收集(g

24、arbage collection)等功能,所有這些功能的目標(biāo)都瞄準(zhǔn)了開(kāi)發(fā)面向組件的軟件。</p><p><b>  3 系統(tǒng)需求分析</b></p><p>  本系統(tǒng)屬于小型的學(xué)生信息管理系統(tǒng),可以有效地對(duì)學(xué)生信息進(jìn)行管理。本系統(tǒng)應(yīng)該達(dá)到以下目標(biāo):</p><p>  系統(tǒng)采用人機(jī)交互方式,界面美觀,信息查詢靈活、方便,數(shù)據(jù)存儲(chǔ)安全可靠。

25、</p><p>  實(shí)現(xiàn)對(duì)學(xué)生選課、退學(xué)、個(gè)人信息及密碼修改等操作。</p><p>  實(shí)現(xiàn)對(duì)教職工及學(xué)生管理</p><p>  實(shí)現(xiàn)成績(jī)修改、查詢、刪除等操作。</p><p>  實(shí)現(xiàn)成績(jī)統(tǒng)計(jì)的自動(dòng)結(jié)算。</p><p>  實(shí)現(xiàn)對(duì)學(xué)生教師的歷史信息記錄進(jìn)行查詢,支持模糊查詢。</p><

26、p><b>  實(shí)現(xiàn)打印水晶報(bào)表</b></p><p>  系統(tǒng)應(yīng)最大限度地實(shí)現(xiàn)易維護(hù)性和易操作性</p><p><b>  4 系統(tǒng)設(shè)計(jì)</b></p><p>  4.1 系統(tǒng)功能結(jié)構(gòu)</p><p>  根據(jù)管理系統(tǒng)的實(shí)際需求,可以將學(xué)生學(xué)籍管理系統(tǒng)劃分為學(xué)生管理、教師管理、教務(wù)管理

27、和系統(tǒng)設(shè)置4個(gè)部分。各個(gè)部分的具體功能的系統(tǒng)功能結(jié)構(gòu)圖如圖4.1所示。</p><p>  圖4.1 系統(tǒng)功能結(jié)構(gòu)圖</p><p>  4.2實(shí)體關(guān)系E-R圖設(shè)計(jì)</p><p>  圖4.2 系統(tǒng)實(shí)體關(guān)系E-R圖</p><p><b>  4.3數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p>  在開(kāi)

28、發(fā)學(xué)生信息管理系統(tǒng)之前,分析了該系統(tǒng)的數(shù)據(jù)量。由于系統(tǒng)管理信息方面的數(shù)據(jù)較多,學(xué)生信息、課程信息以及成績(jī)會(huì)占用較大的空間,因此選擇Microsoft SQL Server 2005數(shù)據(jù)庫(kù)存儲(chǔ)這些信息,數(shù)據(jù)庫(kù)命名為db_design,在數(shù)據(jù)庫(kù)中創(chuàng)建了6個(gè)表,2個(gè)視圖。</p><p>  表admin主要用于保存所有管理員信息,該表的結(jié)構(gòu)如表1所示。</p><p><b>  表

29、1管理員信息表</b></p><p>  表course主要用于保存課程信息,該表的結(jié)構(gòu)如表2所示</p><p><b>  表2課程信息表</b></p><p>  表teacher主要用于保存教師信息,該表的結(jié)構(gòu)如表3所示</p><p><b>  表3教師信息表</b>&l

30、t;/p><p>  表student主要用于保存學(xué)生信息,該表的結(jié)構(gòu)如表4所示</p><p><b>  表4學(xué)生信息表</b></p><p>  表teach主要用于保存學(xué)生選課信息,該表的結(jié)構(gòu)如表5所示</p><p><b>  表5選課信息表</b></p><p>

31、;  表grade主要用于保存所有學(xué)生成績(jī),該表的結(jié)構(gòu)如表6所示</p><p><b>  表6成績(jī)信息表</b></p><p><b>  5 系統(tǒng)詳細(xì)設(shè)計(jì)</b></p><p>  學(xué)生信息管理系統(tǒng)主要分登錄、學(xué)生、教師、管理員四個(gè)模塊。下面進(jìn)行分別介紹。</p><p><b>

32、;  5.1登錄模塊設(shè)計(jì)</b></p><p>  為了使系統(tǒng)的安全性得到保障,大多數(shù)系統(tǒng)都開(kāi)發(fā)登錄模塊。本模塊的主要功能是對(duì)用戶身份進(jìn)行驗(yàn)證,只有系統(tǒng)的合法用戶才能進(jìn)入系統(tǒng)。登錄模塊運(yùn)行界面如圖5.1.1所示</p><p>  圖5.1.1 登錄界面</p><p>  在進(jìn)行系統(tǒng)登陸過(guò)程中,登陸模塊將調(diào)用數(shù)據(jù)庫(kù)里的用戶信息表,并對(duì)用戶名和密碼進(jìn)行

33、驗(yàn)證,只有輸入了正確的用戶名和密碼后,系統(tǒng)登陸才會(huì)成功。在輸入了錯(cuò)誤的或者是不存在的用戶名和密碼時(shí),系統(tǒng)會(huì)給出出錯(cuò)信息提示,指明登陸過(guò)程中的錯(cuò)誤輸入或者錯(cuò)誤操作,以便用戶進(jìn)行正確的登陸。</p><p><b>  關(guān)鍵代碼如下:</b></p><p><b>  1、確認(rèn)按鈕:</b></p><p>  String

34、 userid = adminBox.Text;</p><p>  SqlCommand cmd = new SqlCommand();</p><p>  SqlDataReader datareader;</p><p>  cmd.Connection = cn;</p><p>  if (cn.State == Connectio

35、nState.Closed)</p><p>  cn.Open();</p><p>  string str;</p><p>  if (this.radiobtn.Checked == true)</p><p><b>  {</b></p><p>  str = string.For

36、mat("select * from admin where username='{0}' and pwd='{1}'", adminBox.Text.Trim(), sd.Encrypt(pwdBox.Text.Trim()));</p><p>  cmd.CommandText = str;</p><p>  datareader

37、 = cmd.ExecuteReader();</p><p>  if (datareader.Read())</p><p><b>  {</b></p><p>  admin main = new admin();</p><p>  this.Hide();</p><p>  mai

38、n.Show();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  MessageBox.Show("請(qǐng)正確輸入:查無(wú)此人或密碼輸入錯(cuò)誤!");</p&g

39、t;<p><b>  }</b></p><p>  cn.Close();</p><p><b>  }</b></p><p>  else if (this.radiobtnstu.Checked == true)</p><p><b>  {</b>

40、</p><p>  str = string.Format("select * from student where sno='{0}' and pwd='{1}'", adminBox.Text.Trim(), sd.Encrypt(pwdBox.Text.Trim()));</p><p>  cmd.CommandText = s

41、tr;</p><p>  // userid = adminBox.Text;</p><p>  datareader = cmd.ExecuteReader();</p><p>  if (datareader.Read())</p><p><b>  {</b></p><p>  

42、student main = new student ();</p><p>  this.Hide();</p><p>  main.Show();</p><p><b>  }</b></p><p><b>  else</b></p><p><b> 

43、 {</b></p><p>  MessageBox.Show("請(qǐng)正確輸入:查無(wú)此人或密碼輸入錯(cuò)誤!");</p><p><b>  }</b></p><p>  cn.Close();</p><p><b>  }</b></p><p

44、><b>  else {</b></p><p>  str = string.Format("select * from teacher where tno='{0}' and pwd='{1}'", adminBox.Text.Trim(), sd.Encrypt(pwdBox.Text.Trim()));</p>

45、<p>  cmd.CommandText = str;</p><p>  // userid = adminBox.Text;</p><p>  datareader = cmd.ExecuteReader();</p><p>  if (datareader.Read())</p><p><b>  {<

46、;/b></p><p>  teacher main = new teacher();</p><p>  this.Hide();</p><p>  main.Show();</p><p><b>  }</b></p><p><b>  else</b>&l

47、t;/p><p><b>  {</b></p><p>  MessageBox.Show("請(qǐng)正確輸入:查無(wú)此人或密碼輸入錯(cuò)誤!");</p><p><b>  }</b></p><p>  cn.Close();</p><p><b> 

48、 }</b></p><p>  當(dāng)輸入用戶名密碼后,還能通過(guò)按Enter鍵登錄系統(tǒng),實(shí)現(xiàn)原理:在輸入密碼的文本框的KeyPress事件下,判斷是否按了Enter,如果按了就激發(fā)“登錄”按鈕的Click事件。如果用戶輸入的用戶名密碼不正確系統(tǒng)會(huì)通過(guò)MessageBox.Show("用戶名或密碼錯(cuò)誤")提示出錯(cuò)。</p><p><b>  關(guān)鍵代碼

49、如下:</b></p><p>  private void Form1_Load(object sender, EventArgs e)</p><p>  { txtName.Focus();</p><p><b>  }</b></p><p>  private void tx

50、tPwd_KeyPress(object sender, KeyPressEventArgs e)</p><p><b>  {</b></p><p>  if (e.KeyChar == 13)</p><p><b>  {</b></p><p>  btnSubmit_Click(sen

51、der, e);</p><p><b>  }</b></p><p><b>  }</b></p><p>  圖5.1.2是新用戶注冊(cè)的界面</p><p>  圖5.1.2注冊(cè)界面</p><p><b>  主要代碼如下:</b></p

52、><p>  Hash m_hash = new Hash("MD5");</p><p>  cn.Open();</p><p>  SqlCommand cmd = new SqlCommand();</p><p>  if (radiobtnstu.Checked == true)</p><p&

53、gt;<b>  {</b></p><p>  cmd.CommandText = string.Format("select * from student where sno='{0}'", this.textBox6.Text.Trim());</p><p>  // textBox2.Text = textBox6.Tex

54、t;</p><p><b>  }</b></p><p>  else if (radiobtntea.Checked == true)</p><p><b>  {</b></p><p>  cmd.CommandText = string.Format("select * fr

55、om teacher where tno='{0}'", this.textBox6.Text.Trim());</p><p>  // textBox2.Text = textBox6.Text;</p><p><b>  }</b></p><p><b>  else</b></p

56、><p><b>  {</b></p><p>  // textBox2.ReadOnly = false;</p><p>  cmd.CommandText = string.Format("select * from admin where username='{0}'", this.textBox6.

57、Text.Trim());</p><p><b>  }</b></p><p>  cmd.Connection = cn;</p><p>  if (null == cmd.ExecuteScalar())</p><p><b>  {</b></p><p>  

58、string str;</p><p>  if (radioButton1.Checked == true)</p><p><b>  {</b></p><p>  str = string.Format("insert into admin(username,pwd) values('{0}','{1}

59、')", textBox6.Text.Trim(), m_hash.Encrypt(textBox7.Text.Trim()));</p><p><b>  }</b></p><p>  else if (radiobtnstu.Checked == true)</p><p><b>  {</b>

60、</p><p>  str = string.Format("insert into student(sno,sname,sage,entertime,sdept,connection,pwd,notice,sex) values('{0}','{1}',{2},'{3}','{4}','{5}','{6}'

61、;,'{7}','{8}')", textBox6.Text.Trim(), textBox1.Text.Trim(), textBox5.Text.Trim(), str1, comboBox2.Text.Trim(), textBox4.Text.Trim(), m_hash.Encrypt(textBox7.Text.Trim()), richTextBox1.Text.Trim(),co

62、mboBox1.Text.Trim());</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  str = string.Format("insert into teach

63、er(tno,tname,tage,entertime,sdept,connection,pwd,notice,sex) values('{0}','{1}',{2},'{3}','{4}','{5}','{6}','{7}','{8}')", textBox6.Text.Trim(), textBo

64、x1.Text.Trim(), textBox5.Text.Trim(), str1, comboBox2.Text.Trim(), textBox4.Text.Trim(), m_hash.Encrypt(textBox7.Text.Trim()), richTextBox1.Text.Trim(),comboBox1.Text.Trim());</p><p><b>  }</b>&l

65、t;/p><p>  cmd = new SqlCommand(str, cn);</p><p>  cmd.ExecuteNonQuery();</p><p>  MessageBox.Show("添加用戶成功?。?quot;, "提示");</p><p><b>  }</b><

66、/p><p><b>  else</b></p><p>  MessageBox.Show("用戶" + login.userid.Trim() + "已經(jīng)存在!", "提示");</p><p>  cn.Close();</p><p>  this.Hid

67、e();</p><p><b>  }</b></p><p>  進(jìn)入窗體后,通過(guò)register_ Click()方法,將新用戶的個(gè)人信息存入數(shù)據(jù)庫(kù),同時(shí)調(diào)用hash()函數(shù)將新用戶設(shè)定的密碼加密,保證密碼的安全性。</p><p><b>  5.2學(xué)生模塊設(shè)計(jì)</b></p><p>  

68、學(xué)生模塊主要包括學(xué)生選課、密碼修改、成績(jī)統(tǒng)計(jì)和個(gè)人信息查詢。</p><p>  學(xué)生選課的功能是通過(guò)選課窗體實(shí)現(xiàn)的。如圖5-2-1所示:</p><p>  圖5-2-1學(xué)生選課界面</p><p><b>  主要代碼如下:</b></p><p>  SqlConnection cn = BaseClass.DBC

69、onn.CyCon();</p><p>  DataSet ds = new DataSet();</p><p>  DataSet ds1 = new DataSet();</p><p><b>  數(shù)據(jù)刷新顯示:</b></p><p>  private void display()</p>&

70、lt;p><b>  {</b></p><p>  SqlCommand cmd = new SqlCommand();</p><p>  cmd.CommandText = string.Format("select 課程號(hào),課程名,成績(jī),教工號(hào) from 選課的學(xué)生信息 where 學(xué)生學(xué)號(hào)='{0}' ",login

71、.userid.Trim());</p><p>  cmd.Connection = cn;</p><p>  SqlDataAdapter adapter = new SqlDataAdapter(cmd);</p><p>  ds.Clear();</p><p>  adapter.Fill(ds, "s");

72、</p><p>  dataGridView1.DataSource = ds.Tables["s"];</p><p>  comboBox1.Items.Clear();</p><p>  string str = string.Format("select cname from course except (select 課

73、程名 from 選課的學(xué)生信息,course where 選課的學(xué)生信息.課程號(hào)=course.cno and 學(xué)生學(xué)號(hào)='{0}')", login.userid.Trim());</p><p>  cmd = new SqlCommand(str, cn);</p><p>  cn.Open();</p><p>  SqlDat

74、aReader dr = cmd.ExecuteReader();</p><p>  while (dr.Read())</p><p><b>  {</b></p><p>  comboBox1.Items.Add(dr[0].ToString());</p><p><b>  }</b>

75、</p><p>  cn.Close();</p><p><b>  }</b></p><p>  private void display1()</p><p><b>  {</b></p><p>  SqlCommand cmd = new SqlCommand

76、();</p><p>  cmd.CommandText = string.Format("select * from 選課信息 ");</p><p>  cmd.Connection = cn;</p><p>  SqlDataAdapter adapter = new SqlDataAdapter(cmd);</p>&l

77、t;p>  ds1.Clear();</p><p>  adapter.Fill(ds1, "s1");</p><p>  dataGridView2.DataSource = ds1.Tables["s1"];</p><p><b>  }</b></p><p>&

78、lt;b>  選課:</b></p><p>  private void button1_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  BaseClass.DBConn.getsqlcmd("insert into grade(sno

79、,cno,tno) values('"+login.userid.Trim()+"','"+dataGridView2.CurrentRow.Cells[0].Value.ToString()+"','"+dataGridView2.CurrentRow.Cells[4].Value.ToString()+"')");&

80、lt;/p><p>  display();</p><p><b>  }</b></p><p>  private void stucourse_Load(object sender, EventArgs e)</p><p><b>  {</b></p><p>  d

81、isplay();</p><p>  display1();</p><p><b>  }</b></p><p><b>  查詢:</b></p><p>  private void button2_Click(object sender, EventArgs e)</p>

82、<p><b>  {</b></p><p>  SqlCommand cmd =new SqlCommand();</p><p>  cmd.CommandText=string.Format("select * from 選課信息 where 課程名 = '{0}'",comboBox1.Text.Trim());

83、</p><p>  cmd.Connection = cn;</p><p>  SqlDataAdapter adapter = new SqlDataAdapter(cmd);</p><p>  ds1.Clear();</p><p>  adapter.Fill(ds1, "s1");</p>&

84、lt;p>  dataGridView2.DataSource = ds1.Tables["s1"];</p><p><b>  }</b></p><p><b>  退選:</b></p><p>  private void button3_Click(object sender, Eve

85、ntArgs e)</p><p><b>  {</b></p><p>  if (dataGridView1.CurrentRow.Cells[2].Value.ToString() != "")</p><p><b>  {</b></p><p>  BaseClas

86、s.DBConn.getsqlcmd("delete from grade where sno="+login.userid.Trim()+" and cno="+dataGridView1.CurrentRow.Cells[0].Value.ToString()+" and tno="+dataGridView1.CurrentRow.Cells[3].Value.ToStr

87、ing());</p><p>  display();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  進(jìn)入窗體后,首先xuan_Load()方法調(diào)用displ

88、ay()將選課的相關(guān)信息獲得,以便顯示在窗體。通過(guò)button2_Click()方法查詢已選課程和待選課程,利用button1_Click()方法選擇要選的課程,并把相關(guān)信息存入數(shù)據(jù)庫(kù)的相關(guān)表中。</p><p>  密碼修改有助于用戶對(duì)自己信息的保護(hù),實(shí)現(xiàn)該功能的界面如下圖5-2-2:</p><p>  圖5-2-2密碼修改</p><p><b> 

89、 主代碼如下:</b></p><p>  SqlConnection conn = BaseClass.DBConn.CyCon();</p><p>  public updatepwd()</p><p><b>  {</b></p><p>  InitializeComponent();</

90、p><p><b>  }</b></p><p>  Hash sd = new Hash("MD5");</p><p>  private void button1_Click(object sender, EventArgs e)</p><p><b>  {</b><

91、;/p><p>  if (textBox2.Text == "")</p><p><b>  {</b></p><p>  MessageBox.Show("請(qǐng)輸入密碼");</p><p>  //textBox2.Focus();</p><p>&l

92、t;b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if (textBox2.Text != textBox3.Text)</p><p><b>  {</b></p>

93、<p>  MessageBox.Show("兩次密碼不一致");</p><p>  // textBox3.Focus();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</

94、b></p><p>  SqlCommand cmd = new SqlCommand("update student set pwd='" + sd.Encrypt(textBox2.Text.Trim()) + "' where sno='" + login.userid.Trim() + "'", conn)

95、;</p><p><b>  try</b></p><p><b>  {</b></p><p>  conn.Open();</p><p>  cmd.ExecuteNonQuery();</p><p>  if (MessageBox.Show("密碼

96、修改成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) == DialogResult.OK)</p><p><b>  {</b></p><p>  this.Close();</p><p><b>  }</b><

97、/p><p><b>  }</b></p><p>  catch (SqlException ex)</p><p><b>  {</b></p><p>  MessageBox.Show("錯(cuò)誤:" + ex.Message);</p><p>&l

98、t;b>  }</b></p><p><b>  finally</b></p><p><b>  {</b></p><p>  conn.Close();</p><p><b>  }</b></p><p><b>

99、;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  private void button2_Click(object sender, EventArgs e)</p><p><b>  {</b>

100、</p><p>  if (textBox4.Text == "")</p><p><b>  {</b></p><p>  MessageBox.Show("請(qǐng)輸入密碼");</p><p>  //textBox2.Focus();</p><p>

101、;<b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if (textBox1.Text != textBox4.Text)</p><p><b>  {</b></p&

102、gt;<p>  MessageBox.Show("兩次密碼不一致");</p><p>  // textBox3.Focus();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {&l

103、t;/b></p><p>  SqlCommand cmd = new SqlCommand("update teacher set pwd='" + sd.Encrypt(textBox4.Text.Trim()) + "' where tno='" + login.userid.Trim() + "'", co

104、nn);</p><p><b>  try</b></p><p><b>  {</b></p><p>  conn.Open();</p><p>  cmd.ExecuteNonQuery();</p><p>  if (MessageBox.Show("

105、;密碼修改成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) == DialogResult.OK)</p><p><b>  {</b></p><p>  this.Close();</p><p><b>  }</b>&

106、lt;/p><p><b>  }</b></p><p>  catch (SqlException ex)</p><p><b>  {</b></p><p>  MessageBox.Show("錯(cuò)誤:" + ex.Message);</p><p>

107、;<b>  }</b></p><p><b>  finally</b></p><p><b>  {</b></p><p>  conn.Close();</p><p><b>  }</b></p><p><b

108、>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  依然使用Hash()函數(shù),把密碼由明文編為密文。</p><p><b>  5.3教師模塊設(shè)計(jì)</b></p><p&g

109、t;  教師模塊主要有查詢選課的學(xué)生信息、成績(jī)統(tǒng)計(jì)(包括成績(jī)錄入、修改、打印和查詢等)和密碼修改和個(gè)人信息查詢。其中密碼修改與學(xué)生模塊的類似,這里不再贅述。</p><p>  圖5-3-1是選課的學(xué)生信息的界面,可以通過(guò)選擇課程名查詢具體課程的學(xué)生信息。</p><p>  圖5-3-1學(xué)生選課信息</p><p><b>  主代碼如下:</b&

110、gt;</p><p>  SqlConnection cn = BaseClass.DBConn.CyCon();</p><p>  DataSet ds = new DataSet();</p><p>  private void display()</p><p><b>  {</b></p>

111、<p>  SqlCommand cmd = new SqlCommand();</p><p>  cmd.CommandText = string.Format("select * from 選課的學(xué)生信息 where 教工號(hào) ='{0}'", login.userid.Trim());</p><p>  cmd.Connection =

112、 cn;</p><p>  SqlDataAdapter adapter = new SqlDataAdapter(cmd);</p><p>  ds.Clear();</p><p>  adapter.Fill(ds, "s");</p><p>  dataGridView1.DataSource = ds.Ta

113、bles["s"];</p><p><b>  }</b></p><p>  private void teastuinfo_Load(object sender, EventArgs e)</p><p><b>  {</b></p><p>  display();&l

114、t;/p><p>  string str1 = string.Format("select 課程名 from 選課信息 where 教工號(hào)='{0}'", login.userid.Trim());</p><p>  SqlCommand cmd ;</p><p>  cmd = new SqlCommand(str1, cn)

115、;</p><p>  cn.Open();</p><p>  SqlDataReader dr = cmd.ExecuteReader();</p><p>  while (dr.Read())</p><p><b>  {</b></p><p>  comboBox1.Items.Ad

116、d(dr[0].ToString());</p><p><b>  }</b></p><p>  cn.Close();</p><p><b>  }</b></p><p>  private void button1_Click(object sender, EventArgs e)<

117、;/p><p><b>  {</b></p><p>  string str1 = string.Format("select * from 選課的學(xué)生信息 where 教工號(hào)='{0}' and 課程名='{1}'",login.userid.Trim(),comboBox1.Text.Trim());</p

118、><p>  SqlCommand cmd;</p><p>  cmd = new SqlCommand(str1, cn);</p><p>  SqlDataAdapter adapter = new SqlDataAdapter(cmd);</p><p>  ds.Clear();</p><p>  adapt

119、er.Fill(ds, "xkdxsxx");</p><p>  dataGridView1.DataSource = ds.Tables["xkdxsxx"];</p><p><b>  }</b></p><p>  進(jìn)入窗體后,通過(guò)teastuinfo_Load()方法調(diào)用display()方法

120、,獲得選課的學(xué)生信息,并顯示在窗體中。選擇具體課程后,按下“查詢”按鈕以調(diào)用button1_Click()方法,可以查詢具體課程學(xué)生選課信息。</p><p>  圖5-3-2所示為成績(jī)統(tǒng)計(jì)的界面。</p><p><b>  圖5-3-2</b></p><p><b>  主代碼如下:</b></p>&

121、lt;p><b>  保存成績(jī):</b></p><p>  int n = dataGridView1.Rows.Count;</p><p><b>  try</b></p><p><b>  {</b></p><p>  for (int i = 0; i &

122、lt; n; i++)</p><p><b>  {</b></p><p>  int grade = Convert.ToInt32(dataGridView1.Rows[i].Cells[5].Value);</p><p>  string sno = Convert.ToString(dataGridView1.Rows[i].Ce

123、lls[2].Value);</p><p>  string cno = Convert.ToString(dataGridView1.Rows[i].Cells[0].Value);</p><p>  BaseClass.DBConn.getsqlcmd("update 選課的學(xué)生信息 set 成績(jī)=" + grade + " where 課程號(hào)=&qu

124、ot; + cno + " and 學(xué)生學(xué)號(hào)=" + sno);</p><p><b>  }</b></p><p>  MessageBox.Show("成績(jī)保存成功!");</p><p><b>  }</b></p><p>  catch(Sql

125、Exception ex)</p><p><b>  {</b></p><p>  MessageBox.Show("錯(cuò)誤:" + ex.Message);</p><p><b>  }</b></p><p><b>  打印成績(jī):</b></

126、p><p>  this.savaexcel.InitialDirectory = "\\";</p><p>  this.savaexcel.Filter = "XLS文件(*.XLS)|*.xls";</p><p>  this.savaexcel.FilterIndex = 1;</p><p>

127、  this.savaexcel.RestoreDirectory = true;</p><p>  this.savaexcel.Title = "選擇目標(biāo)數(shù)據(jù)";</p><p>  if (savaexcel.ShowDialog() == DialogResult.OK)</p><p><b>  {</b>&l

128、t;/p><p>  string filename = savaexcel.FileName;</p><p>  string str = string.Empty;//表示空字符串,此字段為只讀</p><p>  for (int i = 0; i <= dataGridView1.Columns.Count - 1; i++)</p>&l

129、t;p><b>  {</b></p><p>  str += dataGridView1.Columns[i].HeaderText + "\t";</p><p>  if (i == dataGridView1.Columns.Count - 1)</p><p><b>  {</b>&

130、lt;/p><p>  str += "\r";</p><p><b>  }</b></p><p><b>  }</b></p><p>  for (int i = 0; i < dataGridView1.Rows.Count; i++)</p>&l

131、t;p><b>  {</b></p><p>  for (int j = 0; j <= dataGridView1.Columns.Count - 1; j++)</p><p><b>  {</b></p><p>  str += dataGridView1.Rows[i].Cells[j].Val

132、ue + "\t";</p><p>  if (j == dataGridView1.Columns.Count - 1)</p><p><b>  {</b></p><p>  str += "\r";</p><p><b>  }</b></

溫馨提示

  • 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)論