畢業(yè)設計---學生信息管理系統(tǒng)設計與實現(xiàn)_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

3、的內(nèi)容對于學校的管理與運行來說相當重要,所以本系統(tǒng)應該能夠為用戶提供充足的信息與快捷的查詢方式。本系統(tǒng)主要采用SQL Server 2005數(shù)據(jù)庫和C#開發(fā)的功能較為完善的學生信息管理系統(tǒng)。該系統(tǒng)主要包括用戶登錄、信息查詢、成績統(tǒng)計和選課等功能模塊。</p><p>  關鍵詞:學生信息管理系統(tǒng),數(shù)據(jù)庫,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 開發(fā)工具簡介5</p><p>  2.1 ASP.NET簡介5</p><p>  2.2 SQL語言基礎簡介和SQL語句

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

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

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

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

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

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

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

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

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

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

20、L查詢的基本語句,當人們在對一個數(shù)據(jù)庫進各種各樣的操作時,使用的最多的就是數(shù)據(jù)查詢,在以SQL為基礎的關系數(shù)據(jù)庫中,使用的最多的就是SELECT查詢語句。</p><p>  SELECT語句的完整句法如下:</p><p>  SELECT 目標表的列名或列表達式序列</p><p>  FROM   基本表和(或)視圖序列</p>

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

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

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

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

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

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

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

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

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

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

33、驗證,只有輸入了正確的用戶名和密碼后,系統(tǒng)登陸才會成功。在輸入了錯誤的或者是不存在的用戶名和密碼時,系統(tǒng)會給出出錯信息提示,指明登陸過程中的錯誤輸入或者錯誤操作,以便用戶進行正確的登陸。</p><p><b>  關鍵代碼如下:</b></p><p><b>  1、確認按鈕:</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("請正確輸入:查無此人或密碼輸入錯誤!");</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("請正確輸入:查無此人或密碼輸入錯誤!");</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("請正確輸入:查無此人或密碼輸入錯誤!");</p><p><b>  }</b></p><p>  cn.Close();</p><p><b> 

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

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是新用戶注冊的界面</p><p>  圖5.1.2注冊界面</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("添加用戶成功??!", "提示");</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>  進入窗體后,通過register_ Click()方法,將新用戶的個人信息存入數(shù)據(jù)庫,同時調(diào)用hash()函數(shù)將新用戶設定的密碼加密,保證密碼的安全性。</p><p><b>  5.2學生模塊設計</b></p><p>  

68、學生模塊主要包括學生選課、密碼修改、成績統(tǒng)計和個人信息查詢。</p><p>  學生選課的功能是通過選課窗體實現(xiàn)的。如圖5-2-1所示:</p><p>  圖5-2-1學生選課界面</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 課程號,課程名,成績,教工號 from 選課的學生信息 where 學生學號='{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 選課的學生信息,course where 選課的學生信息.課程號=course.cno and 學生學號='{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>  進入窗體后,首先xuan_Load()方法調(diào)用displ

88、ay()將選課的相關信息獲得,以便顯示在窗體。通過button2_Click()方法查詢已選課程和待選課程,利用button1_Click()方法選擇要選的課程,并把相關信息存入數(shù)據(jù)庫的相關表中。</p><p>  密碼修改有助于用戶對自己信息的保護,實現(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("請輸入密碼");</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("錯誤:" + 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("請輸入密碼");</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("錯誤:" + 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教師模塊設計</b></p><p&g

109、t;  教師模塊主要有查詢選課的學生信息、成績統(tǒng)計(包括成績錄入、修改、打印和查詢等)和密碼修改和個人信息查詢。其中密碼修改與學生模塊的類似,這里不再贅述。</p><p>  圖5-3-1是選課的學生信息的界面,可以通過選擇課程名查詢具體課程的學生信息。</p><p>  圖5-3-1學生選課信息</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 選課的學生信息 where 教工號 ='{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 教工號='{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 選課的學生信息 where 教工號='{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>  進入窗體后,通過teastuinfo_Load()方法調(diào)用display()方法

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

121、lt;p><b>  保存成績:</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 選課的學生信息 set 成績=" + grade + " where 課程號=&qu

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

125、Exception ex)</p><p><b>  {</b></p><p>  MessageBox.Show("錯誤:" + ex.Message);</p><p><b>  }</b></p><p><b>  打印成績:</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 = "選擇目標數(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論