




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
分類號編號華北水利水電學院NorthChinaInstituteofWaterConservancyandHydroelectricPower實驗報告課程軟件工程題目新生錄取管理系統(tǒng)院系信息工程學院專業(yè)計算機科學與技術〔2011級〕小組長何蒙蒙〔201114212〕小組成員1駱希?!?01114226〕小組成員2郭玉妍〔201114227〕指導教師莊晉林2014年6月15日華北水利水電學院軟件工程實驗報告2013~2014學年第二學期2011級計算機科學與技術專業(yè)小組長:何蒙蒙〔201114212〕分工:需求分析、編碼、錯誤調(diào)試、實驗報告小組成員1:駱希希〔201114226〕分工:編碼、數(shù)據(jù)庫建立、實驗報告的修改小組成員2:郭玉妍〔201114227〕分工:演示成果,說明程序?qū)嶒瀮?nèi)容:1.1題目:新生錄取管理系統(tǒng)問題定義:任務:某校錄取新生的標準下限為:六門課均及格,或雖有一門課不及格但在50分以上且平均成績到達60分以上。1.2要求〔1〕從鍵盤輸入每個考生的準考證號、姓名、身份證號、各科成績,生成一個文件。〔2〕可以對考生記錄進行添加、修改但不得刪除?!?〕找出符合錄取標準的考生記錄,計算該生總分,生成另一個文件?!?〕打印符合錄取標準的考生報表。報表按總分依次從大到小排序,表格內(nèi)容包括準考證號、姓名、總分、各單科成績。設置管理員和普通用戶兩種登錄系統(tǒng)身份,每個用戶應有自己的口令;管理員身份可以完成上述根本要求的功能,普通用戶可以通過同時輸入準考證號和身份證號查詢個人成績。二、實驗過程2.1功能需求分析:具體功能的詳細描述如下1.添加學生信息2.學生信息管理3.查詢學生信息4.學生信息修改5.查詢錄取條件的學生6.退出系統(tǒng)2.2數(shù)據(jù)流需求分析:登錄信息 返回信息用戶登用戶登錄進入系統(tǒng)操作數(shù)據(jù)庫錯誤信息2.3系統(tǒng)功能概述圖:2.4E—R圖的建立管理員信息E-R圖:符合條件的學生信息E-R圖:學生成績信息E-R圖:2.5數(shù)據(jù)庫的表的建立與實現(xiàn):學生成績表:符合條件的學生表:管理員信息表:三、詳細設計:3.1硬件環(huán)境Windows7專業(yè)版32位操作系統(tǒng),SQLserver2005,VS20103.2主要內(nèi)容〔1〕從鍵盤輸入每個考生的準考證號、姓名、身份證號、各科成績,生成一個文件?!?〕可以對考生記錄進行添加、修改但不得刪除?!?〕找出符合錄取標準的考生記錄,計算該生總分,生成另一個文件。〔4〕打印符合錄取標準的考生報表。報表按總分依次從大到小排序,表格內(nèi)容包括準考證號、姓名、總分、各單科成績。設置管理員和普通用戶兩種登錄系統(tǒng)身份,每個用戶應有自己的口令;管理員身份可以完成上述根本要求的功能,普通用戶可以通過同時輸入準考證號和身份證號查詢個人成績。3.3模塊劃分分為三個模塊:數(shù)據(jù)庫的建立、代碼實現(xiàn)、調(diào)試與改錯詳細設計:首先根據(jù)需求分析來確定程序要實現(xiàn)的功能,然后細化數(shù)據(jù)庫,把數(shù)據(jù)庫和需求確定之后整體開始設計界面,之后是填寫代碼來實現(xiàn)各個功能。最后通過對各個功能,各種數(shù)據(jù)的調(diào)試來測試程序的穩(wěn)定性、健壯性。程序分為學生登錄、管理員登錄兩種登錄方式。學生登錄之后只有查詢自己成績的功能,及在學生查詢功能里邊只有根據(jù)登錄時的身份證號和準考證號來直接查詢自己的成績,不需要重新輸入自己的信息。管理員的功能比擬多,首先可以查詢學生的成績并計算總分和平均分,然后再根據(jù)這些條件選擇符合條件的學生并進行錄取之后保存信息。管理員還可以修改和添加學生的信息,添加和修改之后的數(shù)據(jù)都會保存到數(shù)據(jù)庫中。3.4系統(tǒng)歡送界面 建立一個窗口,從公共控件中添加label,button控件到窗口,編輯按鈕程序;連接數(shù)據(jù)庫Student表對管理員輸入的信息進行驗證,判斷是否可以通過。相關運行截圖如下:3.5學生登錄界面建立一個窗口,從公共控件中添加label,button和TextBox控件到窗口,編輯按鈕程序;連接數(shù)據(jù)庫Student表對管理員輸入的信息進行驗證,判斷是否可以通過。相關運行截圖如下:在身份證號和考試號的文本框內(nèi)填入相應的數(shù)據(jù)登錄驗證登錄出錯點擊確定,身份證號和準考證號數(shù)據(jù)清空,需重新輸入 登錄成功點擊確定,進入系統(tǒng)3.6管理員登錄界面建立一個窗口,從公共控件中添加label,button,TextBox控件到窗口,編輯按鈕程序;連接數(shù)據(jù)庫Admin表對管理員輸入的信息進行驗證,判斷是否可以通過。相關運行截圖如下: 登錄驗證輸入用戶名和密碼,點擊登錄按鈕 登錄出錯點擊確定,用戶名和密碼框內(nèi)數(shù)據(jù)清空,需重新輸入 登錄成功點擊確定,進入系統(tǒng)3.7學生成績查詢界面建立一個窗口,從公共控件中添加label,button,textbox,GirdView等控件到窗口,編輯按鈕程序;GirdView需要配置數(shù)據(jù)源,對數(shù)據(jù)庫中的內(nèi)容進行顯示,對學生的考試成績信息,包括身份證號,準考證號,姓名,語文成績,數(shù)學成績,英語成績,物理成績,化學成績,生物成績,以及總成績進行查詢。關于DatagridView設置為不可編輯的,它的AutoSizeRowsMode屬性設置為AllCells,CollummHeadersHeightSizeMode屬性設置為AutoSize。運行截圖如下:學生登錄成功,進入系統(tǒng)查詢成績點擊“查詢”按鈕查詢出學生成績,點擊“返回”按鈕返回登錄界面。3.8管理員操作界面建立一個窗口,從公共控件中添加,TabelLayoutPanel,label,button,textbox,GirdView等控件到窗口,編輯按鈕程序;GirdView需要配置數(shù)據(jù)源,對數(shù)據(jù)庫中的內(nèi)容進行顯示,對學生的考試成績信息,包括身份證號,準考證號,姓名,語文成績,數(shù)學成績,英語成績,物理成績,化學成績,生物成績,以及總成績進行查詢。整個操作界面分三局部,第一局部是查詢符合錄取條件的學生,具錄取條件是六門課均及格,或雖有一門課不及格但在50分以上且平均成績到達60分以上,關于DatagridView設置為不可編輯的,因為這局部只查詢合格的學生,并保存或打印出來。它的AutoSizeRowsMode屬性設置為AllCells,CollummHeadersHeightSizeMode屬性設置為AutoSize。第二局部是修改學生信息,根據(jù)學生的身份證號查詢學生的信息,然后修改學生的成績,修改之后保存或者返回到主界面。關于DatagridView設置為可編輯的,它的AutoSizeRowsMode屬性設置為AllCells,CollummHeadersHeightSizeMode屬性設置為AutoSize。第三局部是添加學生信息,當要錄入學生信息的時候,根據(jù)DatagirdView中的順序依次錄入數(shù)據(jù),然后保存,關于DatagridView設置為可編輯的,它的AutoSizeRowsMode屬性設置為AllCells,CollummHeadersHeightSizeMode屬性設置為AutoSize,Rowtemplate屬性設置為DataGridViewRow{Index=-1}。相關運行截圖如下: 查詢界面點擊“符合條件的學生”按鈕,如下: 符合錄取條件的學生 修改界面在文本框中輸入身份證號,點擊“確定”按鈕,結果如下: 查詢出需要修改的學生點擊“保存”按鈕,將修改后的數(shù)據(jù)保存到數(shù)據(jù)庫中。 添加界面 添加成功在表格中輸入相應的數(shù)據(jù),點擊“保存”按鈕,保存到數(shù)據(jù)庫。四、測試方案設計 1. 檢查學生或管理員登錄的賬號和密碼是否正確,檢查方法是與數(shù)據(jù)庫中的數(shù)據(jù)表進行比擬,匹配那么進入系統(tǒng),不匹配那么進不去系統(tǒng)。2.設置身份證號的位數(shù)限制為18位或19位,超過那么輸不進去,少于該位數(shù)那么提示數(shù)據(jù)不完整,準考證號限制為14為,少于那么提示數(shù)據(jù)不完整,超過那么輸不進去。語文、數(shù)學、英語成績限制范圍,最小為0分,最大為150分。物理、化學、生物成績限制在100以內(nèi)。3.添加學生信息的時候,如果信息沒有全部填完,保存的時候提示信息部完整錯誤。測試結果分析:在測試過程中,假設輸入的密碼或用戶名是錯誤的,會出現(xiàn)密碼錯誤提示并提示重新輸入。在輸入身份證號的時候會有輸入不多于19位的限制,輸入準考證號有不多于14位的限制,這個沒有提示,只有在輸入的時候當你輸入數(shù)據(jù)超過了限制的話會輸不進去。因為學生姓名不是主鍵,也就是可以有重名的,在上述結果中有重名的出現(xiàn)。保存取消等功能都會有提示。六、實驗小結這次課程實驗提供了一個很好的學習時機,通過這次課程實驗發(fā)現(xiàn)這其中需要的很多知識我們沒有接觸過,去查資料的時候發(fā)現(xiàn)我們前邊所學到的僅僅是皮毛,還有很多需要我們掌握的東西我們根本不知道。同時也發(fā)現(xiàn)有很多已經(jīng)學過的東西我們沒有理解到位,不能靈活運用于實際,不能很好的用來解決問題,這就需要我們不斷的大量的實踐,通過不斷的自學,不斷地發(fā)現(xiàn)問題,思考問題,進而解決問題。在這個過程中我們將深刻理解所學知識,同時也可以學到不少很實用的東西。而且知道了分工合作的重要性,同時作為一個軟件開發(fā)的課程實驗,讓我們明白了設計一個軟件要站在實用性和用戶的角度去考慮問題,用戶看不懂代碼,他們只在乎你實現(xiàn)了什么功能,在乎這個軟件是否好用。所以在需求分析的過程中要充分考慮到各種會出現(xiàn)的情況。在需求分析過程中,我們通過上網(wǎng)查資料,結合我們自己的生活經(jīng)驗,根據(jù)可行性研究的結果和客戶的要求,分析現(xiàn)有情況及問題。由于沒有軟件開發(fā)的經(jīng)驗,有些需求沒有考慮清楚,做出來的東西沒有讓老師很滿意,老師是站在用戶的角度來看問題的,所以給我們找出了一些問題,讓我們意識到自己還有很多的缺乏,需要許多的學習。我們學習并應用了SQL語言,對數(shù)據(jù)庫的創(chuàng)立、修改、刪除方法有了一定的了解,通過導入表和刪除表、更改表學會了對于表的一些操作,為了建立一個關系數(shù)據(jù)庫信息管理系統(tǒng),必須得經(jīng)過系統(tǒng)調(diào)研、需求分析、概念設計、邏輯設計、物理設計、系統(tǒng)調(diào)試、維護以及系統(tǒng)評價的一般過程。很多事情不是想象中的那么簡單的,它涉及到的各種實體、屬性、數(shù)據(jù)流程、數(shù)據(jù)處理等等。數(shù)據(jù)庫的設計關系整個程序的設計過程,因為當數(shù)據(jù)庫出問題的時候,整個設計過程根本不能繼續(xù),要回來重新修改數(shù)據(jù)庫,然后再重新修改代碼。所以一旦數(shù)據(jù)庫確定了,就不能隨意更改了,這個建立數(shù)據(jù)庫的過程是一個很慢很繁瑣的過程,也是需要考慮很多的問題。我們是利用的C#進行的編碼,因為本身對C#也不是特別的了解,所以我們在編碼過程中發(fā)現(xiàn)了很多問題,通過上網(wǎng)和請教同學,我們慢慢的解決問題。也許我們做的不快、做的不好,但是每一步都是通過我們自己的努力來實現(xiàn)的。我們學習到了很多的知識,有很多細節(jié)的地方讓我們記憶深刻。比方數(shù)據(jù)庫要改為本地的,那樣就不用帶著電腦來回跑了,直接把數(shù)據(jù)庫別離到U盤里很方便下次使用。每次遇到不會的,我們都會積極的去上網(wǎng)搜資料或去問同學,這個過程雖然很枯燥,但是當看到自己想要的結果的時候我們是快樂的。也許做出來的東西并不是那么讓人滿意,但是我們學到的東西是不容無視的,只有通過不斷地改錯不斷地學習才能到達很完美的境界。程序有些存在的問題,要求打印的功能因為無法連接打印機所以就沒有實現(xiàn),不過可以換成保存到數(shù)據(jù)庫的另一個表。還有就是要求做的是一個軟件,所以數(shù)據(jù)庫和軟件應該是別離的,但是由于知識有限,沒有實現(xiàn)這個功能,我們會在課下繼續(xù)努力,爭取下次對程序進行封裝并且實現(xiàn)這個功能。七、參考文獻C#高級編程清華大學出版社出版社〔第七版〕八、附錄C#語言代碼如下:1.歡送界面namespaceMain{publicpartialclassMain:Form{publicMain(){InitializeComponent();}privatevoidbtnStuLoad_Click(objectsender,EventArgse){this.SetVisibleCore(false);StuLoadlo=newStuLoad();lo.Show();}privatevoidbtnAdmLoad_Click(objectsender,EventArgse){this.SetVisibleCore(false);AdmLoadlo=newAdmLoad();lo.Show();}}}2.學生登錄namespaceMain{publicpartialclassStuLoad:Form{publicStuLoad(){InitializeComponent();}privatevoidbtnCancel_Click(objectsender,EventArgse){this.SetVisibleCore(false);Mainmain=newMain();main.Show();}privatevoidbtnLoad_Click(objectsender,EventArgse){stringname=textBox1.Text;stringtid=textBox2.Text;varcontext=newStu_SysEntities1();varstu=(fromsincontext.Studentwhere(s.身份證號==name)&&(s.準考證號==tid)selects).FirstOrDefault();if(stu!=null){StuInfoFrmsif=newStuInfoFrm();sif.Identity=textBox1.Text;sif.Testid=textBox2.Text;MessageBox.Show("登ì?錄?成¨|功|!ê?");this.SetVisibleCore(false);sif.Show();}else{MessageBox.Show("輸入的身份證號或準考證號錯誤請檢查后重新輸入”);textBox1.Text="";textBox2.Text="";textBox1.Focus();}}}}3.管理員登錄namespaceMain{publicpartialclassAdmLoad:Form{publicAdmLoad(){InitializeComponent();}privatevoidbtnLoad_Click(objectsender,EventArgse){stringname=textBox1.Text;stringpwd=textBox2.Text;varcontext=newStu_SysEntities1();varadm=(fromsincontext.Adminwhere(s.工?è號?==name)&&(s.密碼==pwd)selects).FirstOrDefault();if(adm!=null){MessageBox.Show("登錄成功!");this.SetVisibleCore(false);AdmFrmsif=newAdmFrm();sif.Show();}else{MessageBox.Show("輸入的用戶名或密碼錯誤,請檢查后重新輸入!");textBox1.Text="";textBox2.Text="";textBox1.Focus();}}privatevoidbtnCancel_Click(objectsender,EventArgse){this.SetVisibleCore(false);Mainmain=newMain();main.Show();}}}4.管理員操作namespaceMain{publicpartialclassAdmFrm:Form{Stu_SysEntities1Entities=newStu_SysEntities1();publicAdmFrm(){InitializeComponent();}privatevoidbtnsave_Click(objectsender,EventArgse){//保存到數(shù)據(jù)庫varcontext=newStu_SysEntities1();List<Student>m_list=newList<Student>();intline_num=dataGridView1.NewRowIndex;for(inti=0;i<line_num;++i){Studentstudent=newStudent();student.身份證號?=(String)this.dataGridView1.Rows[i].Cells[0].Value;student.準考證號=(String)this.dataGridView1.Rows[i].Cells[1].Value;student.姓名=(String)(this.dataGridView1.Rows[i].Cells[2].Value);student.語文=Convert.ToInt32(this.dataGridView1.Rows[i].Cells[3].Value);student.數(shù)學=Convert.ToInt32(this.dataGridView1.Rows[i].Cells[4].Value);student.英語=Convert.ToInt32(this.dataGridView1.Rows[i].Cells[5].Value);student.物理=Convert.ToInt32(this.dataGridView1.Rows[i].Cells[6].Value);student.化學=Convert.ToInt32(this.dataGridView1.Rows[i].Cells[7].Value);student.生物=Convert.ToInt32(this.dataGridView1.Rows[i].Cells[8].Value);m_list.Add(student);}intkk=m_list.Count();for(inti=0;i<kk;++i){(m_list[i]);}context.SaveChanges();MessageBox.Show("保存成功!");}privatevoidbtnOK_Click(objectsender,EventArgse){//篩選出需要修改的學生varcontext=newStu_SysEntities1();List<Student>data=newList<Student>();varst=(fromdincontext.Studentwhered.身|份證號selectd).ToList();data.AddRange(st);dataGridView2.DataSource=st;}privatevoidbtnBack_Click(objectsender,EventArgse){this.SetVisibleCore(false);AdmLoadadmlo=newAdmLoad();admlo.Show();}privatevoidbtnSelectOk_Click(objectsender,EventArgse){//篩選出符合條件的學生varcontext=newStu_SysEntities1();List<Student>data=newList<Student>();varst=(fromdincontext.Studentwhere(d.語文>60&&d.數(shù)學>60&&d.英語>60&&d.物理>60&&d.化學>60&&d.生物?>60)||(((d.語文+d.數(shù)學+d.英語+d.物理+d.化學+d.生物)/6)>60&&(((d.語文>50)&&(d.語文<60))||((d.數(shù)學>50)&&(d.數(shù)學<60))||((d.英語>50)&&(d.英語<60))||((d.物理>50)&&(d.物理<60))||((d.化學>50)&&(d.化學<60))||((d.生物>50)&&(d.生物<60))))selectd).ToList();data.AddRange(st);dataGridView3.DataSource=st;}privatevoidbtnsave1_Click(objectsender,EventArgse){//保存到數(shù)據(jù)庫varcontext=newStu_SysEntities1();Studentstudent=newStudent();student.身份證號=(String)this.dataGridView2.Rows[0].Cells[0].Value;student.準考證號=(String)this.dataGridView2.Rows[0].Cells[1].Value;student.姓名=(String)(this.dataGridView2.Rows[0].Cells[2].Value);student.語文=Convert.ToInt32(this.dataGridView2.Rows[0].Cells[3].Value);student.數(shù)學=Convert.ToInt32(this.dataGridView2.Rows[0].Cells[4].Value);student.英語=Convert.ToInt32(this.dataGridView2.Rows[0].Cells[5].Value);student.物理=Convert.ToInt32(this.dataGridView2.Rows[0].Cells[6].Value);student.化學?=Convert.ToInt32(this.dataGridView2.Rows[0].Cells[7].Value);student.生物=Convert.ToInt32(this.dataGridView2.Rows[0].Cells[8].Value);}privatevoiddataGridView1_CellValidating(objectsender,DataGridViewCellValidatingEventArgse){DataGridViewdgv=(DataGridView)sender;if(dgv.Columns[e.ColumnIndex].Name=="身份證號"&&()==""){//向所在行設定錯誤文本dgv.Rows[e.RowIndex].ErrorText="沒有輸入值";e.Cancel=true;}}privatevoiddataGridView1_CellValidated(objectsender,DataGridViewCellEventArgse){DataGridViewdgv=(DataGridView)sender;//刪除錯誤文本
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度蘇州市事業(yè)單位全日制勞動合同標準范本
- 2025年度礦山加工產(chǎn)業(yè)政策研究與咨詢合同
- 二零二五年度高空玻璃安裝作業(yè)安全責任協(xié)議
- 二零二五年度農(nóng)村家庭房屋分割與農(nóng)村金融服務協(xié)議
- 二零二五年度員工離職解除勞動合同經(jīng)濟補償及服務期合同
- 二零二五年度公益廣告墻繪制作協(xié)議
- 二零二五年度影視特效團隊制片助理場記聘用合同
- 2025年度綠色環(huán)保住宅施工合同
- 二零二五年度舞臺搭建項目風險管理與服務合同
- 二零二五年度就業(yè)協(xié)議違約金賠償與就業(yè)心理干預協(xié)議
- 思想道德與法治知到章節(jié)答案智慧樹2023年寧波大學
- 農(nóng)田土地翻耕合同
- 鐵路混凝土工程施工質(zhì)量驗收標準(TB 10424-2018 )培訓教材
- 2023年全國醫(yī)學博士英語統(tǒng)考真題及參考答案
- 浙江新聞獎副刊類參評作品推薦表
- 人才培養(yǎng)方案執(zhí)行情況及總結
- 煤層氣開采地面工程設計方案
- xxx年國企集團公司職工代表大會制度 企業(yè)職工代表大會制度
- GB/T 22085.2-2008電子束及激光焊接接頭缺欠質(zhì)量分級指南第2部分:鋁及鋁合金
- GB/T 10454-2000集裝袋
- 英語2022年廣州市普通高中畢業(yè)班綜合測試(一)英語試題
評論
0/150
提交評論