




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGEi軟件工程課程設計報告系統名稱___學生學籍管理系統___學號_____姓名___XXX__批次___XXX_PAGEII摘要當今社會中,計算機的使用已經深入到日常工作和生活的方方面面。Windows系統的推出使電腦從高雅的學術殿堂走入了尋常百姓家,各行各業的人們無須經過特別的訓練就能夠使用電腦完成許許多多復雜的工作。然而,雖然現在世界上已經充滿了多如牛毛的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不開發適合自己特殊需求的軟件。我們都知道,對于學生的學籍管理是一個教育單位不可缺少的部分,它的內容對學校的管理者來說至關重要,所以學生學籍管理系統應該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來人們使用傳統人工的方式管理文件檔案,這種管理方式存在著許多缺點,如:效率低、保密性差,另外時間一長,將產生大量的文件和數據,這對于查找、更新和維護都帶來了不少的困難。而使用計算機對學生學籍信息進行管理,具有手工管理所無法比擬的優點.例如:檢索迅速、查找方便、存儲量大、保密性好等。這些優點能夠極大地提高學生管理的效率,也是學校科學化、正規化管理的重要途徑。關鍵詞:學生學籍管理系統;SQLSERVER2000;數據庫;軟件工程
序言學生學籍管理系統是常見的一種管理系統,包括學生信息、家庭信息、獎懲信息、畢業信息,學生社會關系,學生成績管理和學生課程信息管理等內容的設計。由于目前的學生學籍管理系統并不十分完善,在高等學校的教務管理工作中,學生信息的網上查詢都是十分復雜、棘手的工作。遵從以往的工作方式,該工作的工作量大,管理繁瑣,既耗人力,又耗物力;如今面對大量的學生數據、報表,手工處理方式已經很難跟上現代化的步伐。隨著計算機技術及網絡通訊技術的飛速發展,許多學校已經有了較好的計算機應用甚至網絡硬件建設基礎。因此為提高學校管理工作的現代化、科學化水平,保證信息處理的即時化、準確化,開發一套對學生學籍進行管理的軟件是極其重要的,而且是必需的。
本系統正是為解決這一問題而設計的,大大減少了以往學生管理工作的工作量,提高了工作效率,適應時代的步伐。。PAGE511、可行性分析1.1問題描述隨著高校規模的不斷增加,學生人數的增加,學校對學生管理的難度也越來越大,而學校對學生的管理,其實主要是對學生信息的管理,所以,學生信息管理是高校管理中很重要的一部分,它關系到整個高校的現代化程度。現代科技的發展,尤其是軟件行業的發展使得很多的管理工作都由計算機來完成,這樣不僅能節省人力和物力,而且能夠得到一些對決策起重要作用的信息。而高校作為一個人數比較多的單位,也需要開發出相應的軟件對學生學籍進行適當的管理。只有管好學生才能更進一步的做強教育。現在很多高校都在使用計算機對學生學籍進行管理,運用計算機來管理學生學籍,從而取代了人工管理模式下由于各種原因出現管理漏洞的可能性,因而減少了工作人員的難度性,提高了工作效率。我們在現行系統初步調查的基礎上提出了新系統目標,即新系統建立后所要求達到的運行指標,這是系統開發和評價的依據。1.2可行性分析研究1.2.1技術可行性技術上的可行性分析主要分析現有技術條件能否順利完成開發工作,硬、軟件配置能否滿足開發者需要等。根據客戶提出的系統功能、性能及實現系統的各項約束條件,根據新系統目標來衡量所需的技術是否具備,本系統是一個數據庫管理和查詢的系統,現有的技術以較為成熟,硬件、軟件的性能要求、環境條件等各項條件良好,估計利用現有技術條件應完全可以達到該系統的功能目標。同時,考慮給予的開發期限也較為充裕,預計系統是可以在規定期限內完成開發。1.2.2經濟可行性主要是對開發學籍管理系統的高校資金進行評價,一方面是估算開發它的支出費用,其中包括設備購置費、軟件開發費、管理和維護費、人員工資和培訓費等。另一方面是估算學籍管理系統這個軟件可能取得的收益中可以用錢來衡量的那部分。并對目前的軟件市場進行調查,所做軟件是否有很大的銷售市場和相當規模的用戶群。所做軟件的開發成本與客戶提出的要求是否可達到雙方都滿意。并且,分析系統開發是否會對其它產品或利潤帶來一定影響。經過調查我們了解到,現在很多高校都在尋找功能更加齊全的管理系統來取代舊系統,而且這個軟件帶來的收益遠遠超過它的開發所花費的代價。經過對上述幾個方面的調查研究和分析,我們得出高校這個軟件的市場前景是相當客觀的,在經濟角度來說,開發學生學籍管理是可行的。1.2.3操作可行性主要是了解高校學籍管理的相關人員對開發信息系統是否支持,現有高校學籍管理制度和方法是否科學,規章制度是否齊全,原始數據是否正確等。高校學籍管理人員積極支持該系統開發,使新系統能夠充分的發揮作用;系統界面友好美觀,操作簡單易行,易于理解,功能更加齊全。由于管理人員已經在使用舊系統,對計算機的簡單操作已經非常熟悉,所以操作者經過短時間的培訓就可以使用高校學籍管理系統。1.3結論意見經過認真地全面地可行性研究,系統基本上做到了在技術、經濟、運行、法律上的可行。因此,相信在按照計劃上實施的前提下,全系統的設計將會按時、高質量完成。所以,系統研制和開發是可以馬上進行的。2、項目開發計劃2.1編寫目的經過項目的可行性分析,得出項目可進一步進行下去的結論,結合現有的軟件開發技術,在軟件繼續進一步的開發之前首先給出此軟件項目計劃。2.2項目背景項目分析單位在接到項目分析員給出的項目可行性分析報告后,在本系統,即倉庫管理系統開發主管部門的統一下制定用于軟件實質開發的軟件項目計劃,以使軟件開發單位理解軟件開發要求,進行開發。2.3項目概述1、工作內容讓計算機對學生信息進行自動管理,管理員可以直接在計算機上實現學生信息管理,并能在一定程度上實現自動化。2、條件與限制開發該軟件的條件比較簡單,以開發單位目前的經濟與技術條件已完全具備開發的條件。該系統可在用戶要求的期限內完成。3、產品1)程序具體程序和源代碼在文件夾源代碼中。2)文檔文檔內容包括:(1)封面
(2)目錄
(3)中文摘要100字左右;關鍵詞3-5個
(4)序言
(5)可行性分析
(6)項目開發計劃
(7)需求規格說明(包含需要的系統流程圖、數據流程圖、數據字典、E-R圖)
(8)概要設計(包含總體軟件結構圖、總體數據結構)
(9)詳細設計(對概要設計內容進行詳細設計)
(10)設計總結、參考文獻、致謝等4、驗收標準軟件的驗收標準完全由用戶提出的軟件需求制定,能保證軟件的基本符合用戶的要求。2.4項目開發計劃1、任務分解分三個大的階段進行開發第一階段完成本系統的數據流圖跟E-R圖。第二階段完成概要設計跟詳細設計。第三階段書寫文檔。
2、預算軟件資金投入較少,具體預算分配簡略。3、關鍵問題各模塊之間的聯系和后臺數據庫的完成。使用目前的設備與現有開發技術完全可以開發出該系統,總的來說該項目沒有較大的技術難點與其他的一些風險因素。對于出現的一些小難點總都能得到解決。3、需求分析3.1任務需求分析經需求分析,所得本系統所實現的基本功能,如圖3.1思維圖所示:圖3.1學生學籍管理系統上圖為本系統所完成功能的一個基本信息圖。用戶可通過本軟件,對學生的在校情況信息有一個清晰的了解,幫助用戶查詢和修改學生的相關信息,從而對學生實現信息化的管理。經分析先給出該系統的系統流程圖,如圖3.2所示:學生課程信息學生課程信息學生成績管理學生成績管理用戶用戶登錄讀取用戶類型管理自己的信息管理普通用戶信息學生基本信息學生社會關系學生獎懲信息學生畢業信息幫助用戶管理模塊開始圖3.2系統流程圖重新輸入失敗成功普通用戶管理員該系統主要包括學生基本信息模塊,家長信息模塊,獎懲信息模塊和畢業信息模塊,系統要實現基本信息錄入、修改、刪除、保存和查詢等功能:信息的輸入,包括學生基本信息、家長信息、獎懲信息、畢業信息等。信息的修改、刪除。根據要求,查詢符合條件的各類信息。依據實際需要,對重要新信息進行統計。3.2數據流圖、數據字典及實體聯系圖3.2.1數據流圖數據流圖由四種基本的元素構成:數據流(DataFlow),處理(Process),數據存儲和數據源(數據終點)。數據流(DataFlow):為具有名稱且有流向的數據,用標有名稱的箭頭表示,一個數據可以是記錄、組合項或基本項。處理(Process):表示對數據所進行的加工和變換,在圖中用矩形框表示。指向處理數據流為該處理的輸入數據,離開處理的數據為處理的輸出數據。數據存儲:表示用文件方式或數據庫形式所存儲的數據,堆砌進行的存取分別以指向或離開數據存儲的箭頭表示。數據源及數據終點:表示數據的來源或數據的去向,可以是一個組織或人員,它處于系統范圍之外,所以又稱它為外部實體,它是為了幫助理解系統界面而引入的,一般只出現在數據流圖的起點和終點。該系統數據流圖如圖3.3所示:管理員接受信息更新系統信息1學生信息處理事務用戶管理員接受信息更新系統信息1學生信息處理事務用戶信息信息信息查詢圖3.3系統數據流程圖數據字典是關于數據的信息的集合,也就是對數據流圖中包含的所有元素的定義的集合。由于本次設計是小型軟件系統的開發,所以采用卡片形式書寫數據字典。每張卡片上保存描述一個數據的信息這樣做更新和修改起來比較方便,而且能單獨處理描述每個數據的信息。下面將列出若干數據元素的數據卡片信息。數據字典卡片:名稱:學生家長信息別名:名稱:學生家長信息別名:描述:對學生家長信息的描述定義:學號+姓名+家長姓名+工作單位+職務+電話+年齡+文化程度位置:輸出到打印機保存到磁盤名字:學號別名:Sno.描述:惟一地標識一個特定學生的關鍵域定義:學號=10{字符}位置:學生基本信息表家長信息表學生畢業信息表名字:普通用戶別名:學生用戶名字:普通用戶別名:學生用戶描述學生自己的信息,查看自己的獎懲信息名稱:學生獎懲信息別名:描述:學生獎懲信息的描述定義:學號+姓名+獎懲名稱+獎懲日期+獎懲原因+評價位置:輸出到打印機保存到磁盤名字:普通用戶別名:普通用戶名字:普通用戶別名:普通用戶描述:輸入學生自己的信息,查看其他的信息定義:用戶名+密碼位置:普通用戶表名字:學生畢業信息別名:描述:學生畢業后的信息描述定義:學號+姓名+學歷+學位+工作單位+職務+單位+政治面貌+電話位置:輸出到打印機保存到磁盤名字:普通用戶別名:學生信息名字:普通用戶別名:學生信息描述:學生在校期間所修課程信息名字:學生課程信息別名:描述:學生在校期間所修課程信息定義:學號+姓名+課程名稱+代課老師+所修時間+備注位置:普通用戶表名稱:系統幫助信息描述:為用戶提供系統幫助名稱:系統幫助信息描述:為用戶提供系統幫助定義:版本信息+使用說明+幫助信息+其他信息位置:普通用戶表名稱:學生基本信息別名:Sinfom描述:對學生基本情況的描述定義:學號+姓名+性別+民族+出生日期+家庭住址+通信地址+考生來源+家庭背景+入學分數+入學政治面貌+所在院系+專業+郵政編碼位置:輸出到打印機保存到磁盤3.2.3實體聯系E-R圖根據對數據流圖和數據字典的分析,我們可以確定該應用中的實體,屬性和實體之間的關系,并畫出如下所示的E-R圖。學生學生所在院系家庭住址學號姓名是否為系統原有信息是否提示:需要在保存后退出是否保存?否是保存成功否是RollbackCommit關閉窗體性別年齡出生日期郵政編碼圖3.4學生實體圖圖3.4學生實體圖家長家長姓名工作單位職稱電話號碼文化程度年齡圖3.5家長實體圖畢業去向信息畢業去向信息考研就業出國其他圖3.6畢業去向信息表畢業信息畢業信息學歷學位工作單位職稱工作經歷政治面貌電話圖3.7畢業工作信息圖所選課程所選課程課程名稱學號課程名稱學號授課老師備注所修時間姓名授課老師備注所修時間姓名圖3.8所選課程信息圖系統實體聯系圖,如圖3.8所示:學生成績信息家長信息學生成績信息家長信息學生查看獎懲信息查看畢業信息查看學生信息查看維護維護管理員11111111MMM11M圖3.9實體聯系圖學生課程信息學生課程信息查看查看4、系統概要設計4.1總體設計通過這個階段的工作將劃分出組成系統的物理元素。系統概要設計的基本目的是用比較抽象的概括方式確定系統如何完成預定的任務,也就是要確定系統的配置物理方案。軟件結構設計時應該遵循的最主要的原理是模塊獨立,讓模塊彼此間的接口關系應該盡量簡單。4.2系統功能模塊圖可以根據模塊獨立原理對軟件結構進行精化。為了合理的分解,得到盡可能高的內聚、盡可能松散的耦合,最終要的是,為了得到一個易于實現、易于測試和易于維護的軟件結構,應該對模塊進行再分解或合并。系統功能模塊圖如圖4-1所示:圖4-1系統功能模塊圖圖4-1系統功能模塊圖學生學籍管理系統學生信息模塊錄入刪除功能修改保存功能查詢維護功能錄入刪除功能社會關系模塊修改保存功能查詢維護功能獎懲信息模塊查詢維護功能修改保存功能錄入刪除功能錄入刪除功能畢業信息模塊查詢維護功能修改保存功能4.3數據庫概念設計數據庫一般分為三級模式:外模式、概念模式和內模式。外模式也就是不同用戶所對的數據視圖,它將數據庫內部抽象的數據及其互相之間的關系表示為簡單、直觀的應用界面。概念模式是數據庫中全部數據的邏輯結構和特征描述,通常以某種數據模型為基礎。內模式是對數據的物理結構和存儲方式的描述。在這里我們將要設計的是數據庫的概念模式,數據庫概念結構設計,是在需求分析的基礎上,設計出能夠滿足用戶需求的各種實體,以及他們之間的關系,為后面的邏輯結構設計打下基礎。4.4數據庫邏輯結構設計在數據庫設計中相當重要的一步就是將概念模型轉化為計算機上DBMS所支持的數據模型,例如,將E-R圖模型轉化為關系模型,道理很簡單,我們設計概念模型基本上都是一些抽象的關系,在數據庫設計的實現過程中,能在計算機上有效地表示出這些關系就成了數據庫設計的關鍵。根據學生檔案管理系統的功能要求,選取ODBODBC作為后臺數據庫。在上面的實體和實體之間的E-R圖設計基礎上,形成數據庫中的表格及表格之間的關系。該數據庫由5個表組成,學生基本信息表,學生家長信息表,學生獎懲信息表,學生畢業信息表,用戶信息表。主表的結構設計:1.學生基本信息表學生基本信息表是對學生的基本信息進行統計,學號、姓名、性別、民族出生年月、家庭背景、考生來源、入學分數、入學政治面貌、家庭住址、通訊地址、郵政編碼、所在院系、專業等信息。學生基本信息表的結構表如表4.1。表4.1學生基本信息結構表字段名稱數據類型主鍵非空學號charYesYes姓名charNoNo性別charNoNo民族charNoNo出生年月dateNoNo家庭背景charNoNo考生來源charNONO入學分數smallintNONO入學政治面貌charNONO家庭住址charNoNo通訊地址charNoNo郵政編碼charNoNo院系charNoNo專業charNoNo2.學生家長信息表學生家長信息表是對學生家長信息的統計,包括父親姓名、父親工作單位、父親電話、父親職務、父親年齡、父親文化程度、母親姓名、母親工作單位、母親電話、母親職務、母親年齡、母親文化程度等。學生家長信息表的結構如表4.2所示。表4.2學生家長信息字段名稱數據類型主鍵非空學號charyesYes姓名charNoNo父親姓名charNoNo父親工作單位charNoNo父親電話號碼charNoNo父親職位charNoNo父親年齡smallintNoNo母親姓名charNoNo母親工作單位charNoNo母親電話號碼charNoNo母親職位charNoNo母親年齡smallintNoNo3.學生獎懲信息學生獎懲信息是對學生在校期間的獎懲信息的統計,包括學號、姓名、獎懲名稱、獎懲日期、獎懲原因、各種評價等。學生獎懲信息表結構如表4.3。表4.3學生獎懲信息表字段名稱數據類型主鍵非空編號charNoYes學號charYesYes姓名charNoYes獎懲名稱charYesYes獎懲日期dateYesYes獎懲原因charNoNo評價charNoNo4.學生畢業信息學生畢業信息有兩部分組成學生畢業去向信息和學生畢業信息。學生畢業去向信息是對學生畢業以后的去向進行的統計,包括學生畢業后某些學生選擇考研,某些選擇就業,還有一些選擇培訓等。學生畢業去向信息結構表如表4.4所示:表4.4學生畢業去向信息表張虎考研所考學校(蘭州大學)李海考研所考學校(蘭州大學)張偉就業就業單位(蘭州石化)趙剛就業就業單位(蘭州石化)張玉就業公務員學生畢業信息是對學生畢業是的信息進行的統計,例如,某個學生的學歷,所修的的學位,工作單位,職稱,工作經歷,政治面貌,電話等信息。學生畢業信息表如下所示:表4.5學生畢業信息表姓名學歷工作單位職稱工作經歷政治面貌電話張三本科蘭州石化質檢員無黨員223344李四專科蘭州石化質檢員無黨員545556張俐本科蘭大老師無黨員68767楊虎本科白銀廠工程師無群眾43654姓名學歷工作單位職稱工作經歷政治面貌電話張三本科蘭州石化質檢員無黨員223344李四專科蘭州石化質檢員無黨員545556張俐本科蘭大老師無黨員68767楊虎本科白銀廠工程師無群眾436545.學生成績管理信息學生成績信息管理是對學生在校期間所修課程成績的統計。包括學生姓名、學號、院系、專業、所修課程的各科成績、是否通過(包括補考和重修)、總學分績。學生成績管理信息表結構如表4.4。、表4.4學生成績管理信息表字段名稱數據類型主鍵非空學號charyesYes姓名charNoNo院系charNoNo專業charNoNo課程charNoNo成績charNoNo是否通過boolenNoNo學分績charNoNo6.學生課程管理信息學生課程信息管理模塊可以幫助學生在使用本系統的同時,方便的查詢自己曾學習的課程科目信息,從而及時的給用戶反饋信息,讓用戶盡快的調整自己的學習計劃。表4.6學生課程信息表字段名稱數據類型主鍵非空編號charNoYes學號intYesNo姓名charNoYes課程名稱charNoYes代課老師charNoYes所修時間timeNoYes備注charNoYes4.5連接數據庫的特點當開發環境通過連接到數據庫上之后,在設計中使用數據庫畫筆可實現對該數據庫中表格,視圖等的操作,如創建表、修改表、刪除表、增加/刪除記錄。設計中設計數據窗口的時候,通過對話框實現與數據的連接。在應用程序中則一般是在應用程序對象中書寫連接數據庫的程序代碼,使得應用程序開始運行并實現與數據庫的連接。5、詳細設計5.1系統的主要功能及實現根據上面的需求分析,設計好數據庫系統,然后開發前臺應用程序。所開發的前臺界面要求用戶可方便操作,同時很好的完成每一個窗口所實現的功能。學生畢業信息模塊的設計應包括以下幾點功能:首先學生畢業信息模塊由兩部分組成:學生畢業去向信息和學生畢業信息。學生畢業去向信息模塊主要是統計了學生畢業后的去向信息,在這個模塊中包括了:例如,某個學生畢業后選擇考研,在該模塊中就可以查詢到該學生的所有考研信息,所考學校,所修專業等信息;某個學生畢業后選擇就業,在該模塊中就可以查詢到該學生的就業單位信息,工作單位名稱,工作時間等信息;某個學生選擇出國留學,在該模塊中就可以查詢到該學生的留學信息,留學的國家,所學專業等。學生畢業信息模塊主要是統計了學生畢業是自己的畢業信息。在這個模塊中包括了學生的所有畢業信息,例如,某個學生的學歷,所修的的學位,工作單位,職稱,工作經歷,政治面貌,電話等信息。5.2程序流程圖程序流程圖的優點是對控制流程的描繪很直觀,易于掌握。1、學生各種信息的查詢功能流程圖用戶用戶輸入查詢信息否是是否存在該信息數據否是提示沒有輸出該信息所要查詢的信息確認信息關閉窗體查詢相應信息是否存在確定信息結束否圖5.4登錄界面圖圖5.1查詢功能流程圖否是否輸入查詢條件是2、錄入功能程序流程圖管理員管理員輸入信息保存保存是否成功結束是否圖5.2錄入功能程序流程圖3、修改功能流程圖用戶用戶修改保存保存是否成功結束圖5.3修改流程圖是否5.3用戶界面設計5.3.1一般交互設計一般交互涉及信息顯示、數據輸入和系統整體控制等方面。1)、一致性為客戶交互界面中的菜單選擇、命令輸入、數據顯示以及眾多的其他功能,使用一致的格式。在設計的過程中,基本上保持了系統的格式一致。2)、信息的反饋向用戶及時提供視覺和聽覺的信息反饋,以保證在用戶和系統之間及時地建立雙向通信。在本系統設計過程中,基本做到了信息的及時反饋,在信息顯示的大部分窗體中包括了保存按鈕,會對數據庫中的數據進行及時地刷新顯示。3)、執行有較大影響的操作前提示用戶確認在設計過程中,如果用戶要執行刪除操作,以及對數據庫的讀寫操作時,都會有窗體彈出詢問繼續操作或者予以提示。4)、減少兩次操作間需要記憶的內容為了避免用戶為下一步操作而記憶大量數據,所以在設計過程中在需要數據傳遞的窗體中設置全局變量,來傳遞數據。例如在入賬和入庫的模塊的操作中都用到了這樣的方法。5)、對話、移動和思考的效率盡量減少用戶擊鍵的次數,在設計時考慮到了用戶屏幕的布局以減少用戶鼠標移動的距離,盡量避免用戶在操作中發生疑問的情況。6)、允許錯誤允許用戶的誤操作盡量不對系統造成傷害。7)、按功能對動作分類,并據此設計屏幕布局屏幕布局盡量將軟件所具有的所有功能在主頁面展示,界面一目了然。5.3.2信息顯示設計應當盡量為用戶提供的界面顯示時完整的、明確的和容易理解的,這樣才能滿足用戶的需求。1)、只顯示與當前工作有關的信息在用戶操作有關系統的特定功能的信息時,不必看到與之無關的數據、菜單和圖形。2)、使用便于用戶迅速吸收數據的方式來表示數據在系統設計的過程中,較多地使用了表結構的形式表示數據。這樣,用戶可以直觀的體會到圖表所表示的含義。3)、使用一致的標記、標準的縮寫和可預知的顏色為了使系統所表達的含義準確、無誤,就必須適用一致的標記、標準的縮寫和可以預知的縮寫,這樣用戶就無需參照其他信息源就能理解,而正確地適用軟件。4)、產生有意義的錯誤信息對于系統在運行過程中產生的錯誤盡量給用戶返回一個容易理解的錯誤信息,以使用戶保持對系統的信任,和系統的可用性。5)、使用窗口分隔不同類型的信息使用不同的窗口顯示、保存不同類型的信息。6)、高效率的使用顯示屏當使用多窗口時,應該有足夠的空間使得每個窗口至少都能顯示出一部分。此外,屏幕的大小應該選得和應用系統的類型相配套。在各個顯示數據的窗口中,由于數據窗體項目較多,所以在數據窗體空間中較多的是用了垂直和水平滾動條,以保證信息的全面正確顯示。5.3.3輸入界面設計用戶的大部分時間用在選擇菜單命令、鍵入數據和向系統提供輸入。在系統中,鍵盤是主要的輸入介質,但是鼠標等設備的也是重要的輸入手段,所以,對于他們的數據輸入操作有如下約定:1、保持信息顯示和數據輸入間的一致性為了方便用戶的使用,鼠標應當盡量減少操作的幅度。2、保持顯示信息和輸入信息之間的一致性對于用戶來說,要保證其輸入的數據在顯示上與其他顯示的視覺特征(例如:文字大小、顏色、位置等)要一致。對于不同類型的用戶在登錄到系統后,由于有不同的權限,所以在主界面中會有一些項目受到限制而無法使用,所以要使這些項目不發生作用,以保證系統安全。5.4軟件測試5.4.1測試的方法和步驟軟件的測試方法有兩種,一種是黑盒測試(功能測試),另外一種是白盒測試(結構測試)。黑盒測試把程序看作一個黑盒子,完全不考慮程序的內部結構和處理過程。也就是說,黑盒測試是在程序接口進行的測試,它只檢查程序功能是否能按照規格說明書的規定正常使用,程序是否能適當的接受輸入數據并產生正確的輸出信息,程序運行過程中能否保持外部信息的完整性。白盒測試的前提是可以把程序看成裝在一個透明的白盒子里,測試者完全知道程序的結構和處理算法。這種方法按照程序內部的邏輯測試程序,檢測程序中的主要執行通路是否能按預定的要求正確工作。在本次軟件的測試工作中,由于水平的限制,僅僅對軟件的各個功能模塊進行了測試,并對各個模塊之間的接口進行了詳細的測試(用黑盒測試法)。測試的步驟由于該系統是一個小系統,可以把整個系統作為一個單獨的實體來測試。當然,在測試的過程中可以分模塊、分階段來進行。5.4.2測試用例1、登錄測試當用戶文本框中不輸入信息的時候,提示“用戶名不能為空”。當用戶文本框中輸入的信息不存在時,提示“輸入有誤”。2、學生信息查詢模塊的窗體應顯示某貨物的所有信息,學號、姓名、性別、民族、出生年月、戶口類別、家庭住址、通訊地址、郵政編碼、所在院系、專業等。測試如下圖:當在學號中輸入"07240521"按查詢按鈕,將顯示出查詢的結果如下表5.1:表5.1查詢信息結果學號姓名性別民族出生日期家庭背景戶口類型所在院系專業00240521李偉男漢1987-11-20農民農村計通學院計算機籍貫身份證號碼入學時間擔任職務備注甘肅622222000012012007學習委員\當查詢文本框中輸入的信息不存在時,提示“沒有找到”。當查詢文本框中不輸入信息時,提示“輸入完整信息”。3、保存功能測試將信息輸入完整后,按保存按鈕,提示“保存成功”。4、刪除功能的測試選所要刪除的行,按刪除按鈕提示是否確定要刪除。選擇是后,將所要刪除的行刪除。按保存按鈕,保存此次操作。5、學生信息排序功能測試當點擊排序(默認升序)按鈕時顯示信息如下表5.2:表5.2排序信息結果學號姓名性別民族出生日期家庭背景戶口類型所在院系專業07240508蘭瑞男漢1985-6-7工人城市計通學院計算機07240521李偉男漢1984-3-5農民農村計通學院通信07140121王麗女漢1986-7-3教師城市材料學院材料07240522楊勉男漢1987-3-3農民農村計通學院計算機07240524艾可昕女漢1988-10-15醫生城市計通學院計算機08240227鄭睿男漢1987-1-12工人城市計通學院通信08190130李琰男漢1987-7-21農民農村生命學院制藥08110533歐曉倩女漢1989-9-6教師城市經管學院工管6、軟件使用說明書1、用戶登錄
用戶使用本系統時,首先要通過本系統的身份認證,此過程叫做登錄。登錄過程需要完成以下步驟:根據用戶名和密碼判斷是否為合法用戶;根據用戶類型判斷進入哪一個界面。登錄窗體的界面如下:圖6.1登錄界面管理員登陸界面如下圖所示:圖6.2管理員登陸界面系統主界面如下圖所示:圖6.3系統主界面2、為方便起見,此系統中的管理員系統主界面的下拉菜單和學生管理主界面的下拉菜單一樣,包括:學生基本信息學生基本信息查看學生家庭信息查看學生獎懲信息查看學生畢業信息查詢退出系統退出4、信息錄入方法錄入界面如圖6.3示單擊錄入按鈕,在光標處添寫所要添入的信息。圖6.3信息錄入界面5、查詢功能實現方法在使用“學生社會關系”功能模塊時,在輸入相應查詢條件時便可進行查詢,同時顯示查詢結果。如圖6.4所示。圖6.4學生社會關系查詢結果6.學生成績查詢本系統所實現的學生成績查詢,運行如圖6.5,圖6.6所示:圖6.5學生成績查詢模塊圖6.6學生成績信息7.學生課程信息查詢學生課程信息查詢,如圖6.7所示:圖6.7學生課程信息7、源程序#include<stdio.h>#include<stdlib.h>#include"string.h"#include"conio.h"#defineHEADER1"STUDENT\n"#defineHEADER2"|number|name|Comp|Math|Eng|sum|ave|mici|\n"#defineHEADER3"|||||||||"#defineFORMAT"|%-10s|%-15s|%4d|%4d|%4d|%4d|%.2f|%4d|\n"#defineDATAp->data.num,p->,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.total,p->data.ave,p->data.mingci#defineEND"\n"intsaveflag=0;/*是否需要存盤的標志變量*/typedefstructstudent/*標記為student*/{charnum[10];/*學號*/charname[15];/*姓名*/intcgrade;/*C語言成績*/intmgrade;/*數學成績*/integrade;/*英語成績*/inttotal;/*總分*/floatave;/*平均分*/intmingci;/*名次*/};typedefstructnode/*定義每條記錄或結點的數據結構,標記為node*/{structstudentdata;structnode*next;}Node,*Link;voidmenuchoice(){system("cls");/*清屏.與clrscr()功能相同*/textcolor(10);/*在文本模式中選擇新的字符顏色*/gotoxy(7,5);cprintf("TheStudents'GradeManagementSystem\n");gotoxy(7,8);printf("\nPleaseEnteryourchoice;0enterstudents'system\n\t\t\t");printf("");printf("1enterteachers'system\n");}voidmenu()/*菜單函數*/{system("cls");/*清屏.與clrscr()功能相同*/textcolor(10);/*在文本模式中選擇新的字符顏色*/gotoxy(7,5);/*在文本窗口中設置光標,下同*/cprintf("TheStudents'GradeManagementSystem\n");gotoxy(7,8);cprintf("*************************Menu********************************\n");gotoxy(7,9);cprintf("*1inputrecord2deleterecord*\n");gotoxy(7,10);cprintf("*3searchrecord4modifyrecord*\n");gotoxy(7,11);cprintf("*5insertrecord6countrecord*\n");gotoxy(7,12);cprintf("*7sortreord8saverecord*\n");gotoxy(7,13);cprintf("*9displayrecord0quitsystem*\n");gotoxy(7,14);cprintf("*************************************************************\n");/*cprintf()送格式化輸出至文本窗口屏幕中*/}voidmenustudent(){system("cls");/*清屏.與clrscr()功能相同*/textcolor(10);/*在文本模式中選擇新的字符顏色*/gotoxy(7,5);/*在文本窗口中設置光標,下同*/cprintf("TheStudents'GradeManagementSystem\n");gotoxy(7,8);cprintf("*************************Menu********************************\n");gotoxy(7,9);cprintf("*3searchrecord0quitsystem*\n");gotoxy(7,10);cprintf("*************************************************************\n");/*cprintf()送格式化輸出至文本窗口屏幕中*/}voidprintheader()/*格式化輸出表頭*/{printf(HEADER1);printf(HEADER2);printf(HEADER3);}voidprintdata(Node*pp)/*格式化輸出表中數據*/{Node*p;p=pp;printf(FORMAT,DATA);}voidWrong()/*輸出按鍵錯誤信息*/{printf("\n\n\n\n\n***********Error:inputhaswrong!pressanykeytocontinue**********\n");getchar();}voidNofind()/*輸出未查找此學生的信息*/{printf("\n=====>Notfindthisstudent!\n");}voidDisp(Linkl)/*顯示單鏈表l中存儲的學生記錄,內容為student結構中定義的數據項*/{Node*p;p=l->next;/*l存儲的是單鏈表中頭結點的指針,該頭結點沒有存儲學生信息,指針域指向的后繼結點才有學生信息*/if(!p){printf("\n=====>Notstudentrecord!\n");getchar();return;}printf("\n\n");printheader();/*輸出表格頭部*/while(p)/*逐條輸出鏈表中存儲的學生信息*/{printdata(p);p=p->next;/*移動至下一個結點*/printf(HEADER3);}getchar();}Node*Locate(Linkl,charfindmess[],charnameornum[])/*用于定位鏈表中符合要求的節點,并返回指向該節點的指針,findmess[]保存要查找的具體內容;nameornum[]保存按什么查找;在單鏈表l中查找;*/{Node*r;if(strcmp(nameornum,"num")==0)/*按學號查詢*/{r=l->next;while(r){if(strcmp(r->data.num,findmess)==0)/*若找到findmess值的學號*/returnr;r=r->next;}}elseif(strcmp(nameornum,"name")==0)/*按姓名查詢*/{r=l->next;while(r){if(strcmp(r->,findmess)==0)/*若找到findmess值的學生姓名*/returnr;r=r->next;}}return0;}voidstringinput(char*t,intlens,char*notice)/*輸入字符串,并進行長度驗證(長度<lens)*/{charn[255];do{printf(notice);/*顯示提示信息*/scanf("%s",n);/*輸入字符串*/if(strlen(n)>lens)printf("\nExceedtherequiredlength!\n");/*進行長度校驗,超過lens值重新輸入*/}while(strlen(n)>lens);strcpy(t,n);/*將輸入的字符串拷貝到字符串t中*/}intnumberinput(char*notice)/*輸入分數,0<=分數<=100)*/{intt=0;do{printf(notice);/*顯示提示信息*/scanf("%d",&t);/*輸入分數*/if(t>100||t<0)printf("\nScoremustin[0,100]!\n");/*進行分數校驗*/}while(t>100||t<0);returnt;}voidAdd(Linkl)/*增加學生記錄*/{Node*p,*r,*s;/*實現添加操作的臨時的結構體指針變量*/charch,flag=0,num[10];r=l;s=l->next;system("cls");Disp(l);/*先打印出已有的學生信息*/while(r->next!=NULL)r=r->next;/*將指針移至于鏈表最末尾,準備添加記錄*/while(1)/*一次可輸入多條記錄,直至輸入學號為0的記錄結點添加操作*/{while(1)/*輸入學號,保證該學號沒有被使用,若輸入學號為0,則退出添加記錄操作*/{stringinput(num,10,"Inputnumber(press'0'returnmenu):");/*格式化輸入學號并檢驗*/flag=0;if(strcmp(num,"0")==0)/*輸入為0,則退出添加操作,返回主界面*/{return;}s=l->next;while(s)/*查詢該學號是否已經存在,若存在則要求重新輸入一個未被占用的學號*/{if(strcmp(s->data.num,num)==0){flag=1;break;}s=s->next;}if(flag==1)/*提示用戶是否重新輸入*/{getchar();printf("=====>Thenumber%sisnotexisting,tryagain?(y/n):",num);scanf("%c",&ch);if(ch=='y'||ch=='Y')continue;elsereturn;}else{break;}}p=(Node*)malloc(sizeof(Node));if(!p){printf("\nAllocatememoryfailure");/*如沒有申請到,打印提示信息*/return;}strcpy(p->data.num,num);/*將字符串num拷貝到p->data.num中*/stringinput(p->,15,"Name:");p->data.cgrade=numberinput("ClanguageScore[0-100]:");/*輸入并檢驗分數,分數必須在0-100之間*/p->data.mgrade=numberinput("MathScore[0-100]:");p->data.egrade=numberinput("EnglishScore[0-100]:");p->data.total=p->data.egrade+p->data.cgrade+p->data.mgrade;/*計算總分*/p->data.ave=(float)(p->data.total/3);/*計算平均分*/p->data.mingci=0;p->next=NULL;/*表明這是鏈表的尾部結點*/r->next=p;/*將新建的結點加入鏈表尾部中*/r=p;saveflag=1;/*在main()有對該全局變量的判斷,若為1,則進行存盤操作*/}return;}voidQur(Linkl)/*按學號或姓名,查詢學生記錄*/{intselect;/*1:按學號查,2:按姓名查,其他:返回主界面(菜單)*/charsearchinput[20];/*保存用戶輸入的查詢內容*/Node*p;if(!l->next)/*若鏈表為空*/{system("cls");printf("\n=====>Nostudentrecord!\n");getchar();return;}system("cls");printf("\n=====>1Searchbynumber=====>2Searchbyname\n");printf("pleasechoice[1,2]:");scanf("%d",&select);if(select==1)/*按學號查詢*/{stringinput(searchinput,10,"Inputtheexistingstudentnumber:");p=Locate(l,searchinput,"num");/*在l中查找學號為searchinput值的節點,并返回節點的指針*/if(p)/*若p!=NULL*/{printheader();printdata(p);printf(END);printf("pressanykeytoreturn");getchar();}elseNofind();getchar();}elseif(select==2)/*按姓名查詢*/{stringinput(searchinput,15,"inputtheexistingstudentname:");p=Locate(l,searchinput,"name");if(p){printheader();printdata(p);printf(END);printf("pressanykeytoreturn");getchar();}elseNofind();getchar();}elseWrong();getchar();}voidDel(Linkl)/*刪除學生記錄:先找到保存該學生記錄的節點,然后刪除該節點*/{intsel;Node*p,*r;charfindmess[20];if(!l->next){system("cls");printf("\n=====>Nostudentrecord!\n");getchar();return;}system("cls");Disp(l);printf("\n=====>1Deletebynumber=====>2Deletebyname\n");printf("pleasechoice[1,2]:");scanf("%d",&sel);if(sel==1){stringinput(findmess,10,"inputtheexistingstudentnumber:");p=Locate(l,findmess,"num");if(p)/*p!=NULL*/{r=l;while(r->next!=p)r=r->next;r->next=p->next;/*將p所指節點從鏈表中去除*/free(p);/*釋放內存空間*/printf("\n=====>Deletesuccess!\n");getchar();saveflag=1;}elseNofind();getchar();}elseif(sel==2){stringinput(findmess,15,"inputtheexistingstudentname");p=Locate(l,findmess,"name");/*先按姓名查詢到該記錄所在的節點*/if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n=====>Deletesuccess!\n");getchar();saveflag=1;}elseNofind();getchar();}elseWrong();getchar();}voidModify(Linkl)/*修改學生記錄。先按輸入的學號查詢到該記錄,然后提示用戶修改學號之外的值,學號不能修改*/{Node*p;charfindmess[20];if(!l->next){system("cls");printf("\n=====>Nostudentrecord!\n");getchar();return;}system("cls");printf("Modifystudentrecorder:");Disp(l);stringinput(findmess,10,"\nInputtheexistingstudentnumber:");/*輸入并檢驗該學號*/p=Locate(l,findmess,"num");/*查詢到該節點*/if(p)/*若p!=NULL,表明已經找到該節點*/{printf("Number:%s,\n",p->data.num);printf("Name:%s,",p->);stringinput(p->,15,"inputnewname:");printf("Clanguagescore:%d,",p->data.cgrade);p->data.cgrade=numberinput("ClanguageScore[0-100]:");printf("Mathscore:%d,",p->data.mgrade);p->data.mgrade=numberinput("MathScore[0-100]:");printf("Englishscore:%d,",p->data.egrade);p->data.egrade=numberinput("EnglishScore[0-100]:");p->data.total=p->data.egrade+p->data.cgrade+p->data.mgrade;p->data.ave=(float)(p->data.total/3);p->data.mingci=0;printf("\n=====>Modifysuccess!\n");Disp(l);saveflag=1;}elseNofind();getchar();}voidInsert(Linkl)/*插入記錄,按學號查詢到要插入的節點的位置,然后在該學號之后插入一個新節點*/{Linkp,v,newinfo;/*p指向插入位置,newinfo指新插入記錄*/charch,num[10],s[10];/*s[]保存插入點位置之前的學號,num[]保存輸入的新記錄的學號*/intflag=0;v=l->next;system("cls");Disp(l);while(1){stringinput(s,10,"\nPleaseinputInsertlocationaftertheNumber:");flag=0;v=l->next;while(v)/*查詢該學號是否存在,flag=1表示該學號存在*/{if(strcmp(v->data.num,s)==0){flag=1;break;}v=v->next;}if(flag==1)break;/*若學號存在,則進行插入之前的新記錄的輸入操作*/else{getchar();printf("\n=====>Thenumber%sisnotexisting,tryagain?(y/n):",s);scanf("%c",&ch);if(ch=='y'||ch=='Y')continue;elsereturn;}}stringinput(num,10,"InputnewstudentNumber:");/*以新記錄的輸入操作與Add()相同*/v=l->next;while(v){if(strcmp(v->data.num,num)==0){printf("=====>Sorry,thenewnumber:'%s'isexisting!\n",num);printheader();printdata(v);printf("\n");getchar();return;}v=v->next;}newinfo=(Node*)malloc(sizeof(Node));if(!newinfo){printf("\nAllocatememoryfailure");/*如沒有申請到,打印提示信息*/return;/*返回主界面*/}strcpy(newinfo->data.num,num);stringinput(newinfo->,15,"Name:");newinfo->data.cgrade=numberinput("ClanguageScore[0-100]:");newinfo->data.mgrade=numberinput("MathScore[0-100]:");newinfo->data.egrade=numberinput("EnglishScore[0-100]:");newinfo->data.total=newinfo->data.egrade+newinfo->data.cgrade+newinfo->data.mgrade;newinfo->data.ave=(float)(newinfo->data.total/3);newinfo->data.mingci=0;newinfo->next=NULL;saveflag=1;p=l->next;/*將指針賦值給p,因為l中的頭節點的下一個節點才實際保存著學生的記錄*/while(1){if(strcmp(p->data.num,s)==0)/*在鏈表中插入一個節點*/{newinfo->next=p->next;p->next=newinfo;break;}p=p->next;}Disp(l);printf("\n\n");getchar();}voidTongji(Linkl)/*統計總分,單科第一和各科不及格人數*/{Node*pm,*pe,*pc,*pt;/*用于指向分數最高的節點*/Node*r=l->next;intcountc=0,countm=0,counte=0;/*保存三門成績中不及格的人數*/if(!r){system("cls");printf("\n=====>Nostudentrecord!\n");getchar();return;}system("cls");Disp(l);pm=pe=pc=pt=r;while(r){if(r->data.cgrade<60)countc++;if(r->data.mgrade<60)countm++;if(r->data.egrade<60)counte++;if(r->data.cgrade>=pc->data.cgrade)pc=r;if(r->data.mgrade>=pm->data.mgrade)pm=r;if(r->data.egrade>=pe->data.egrade)pe=r;if(r->data.total>=pt->data.total)pt=r;r=r->next;}printf("\ntheTongJiresult\n");printf("CLanguage<60:%d(ren)\n",countc);printf("Math<60:%d(ren)\n",countm);printf("English<60:%d(ren)\n",counte);printf("\n");printf("Thehigheststudentbytotalscroename:%stotoalscore:%d\n",pt->,pt->data.total);printf("ThehigheststudentbyEnglishscorename:%stotoalscore:%d\n",pe->,pe->data.egrade);printf("ThehigheststudentbyMathscorename:%stotoalscore:%d\n",pm->,pm->data.mgrade);printf("ThehigheststudentbyCscorename:%stotoalscore:%d\n",pc->,pc->data.cgrade);printf("\n\npressanykeytoreturn");getchar();}voidSort(Linkl)/*利用插入法排序實現單鏈表的按總分字段的降序排序,從高到低*/{Linkll;Node*p,*rr,*s;inti=0;if(l->next==NULL){system("cls");printf("\n=====>Nostudentrecord!\n");getchar();return;}ll=(Node*)malloc(sizeof(Node));if(!ll){printf("\nAllocatememoryfa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年甘肅張掖市民樂縣前進牧業(德瑞牧場)招聘考試筆試試題(含答案)
- 2025年安徽蚌埠市東方投資集團有限公司下屬子公司招聘考試筆試試題(含答案)
- 【來賓】2025年廣西來賓市商務局招聘筆試歷年典型考題及考點剖析附帶答案詳解
- 制作小弓箭教學課件
- 整車性能檢測技術課件
- 整式除法說課課件
- 農作物秸稈綜合利用情況調研報告
- 敬畏生命小學班會課件
- 敬業與樂業小學生課件
- 意外險理賠調查實務及典型案例分析
- GB/T 16451-2008天然脂肪醇
- GB 5013.2-1997額定電壓450/750V及以下橡皮絕緣電纜第2部分:試驗方法
- 山東省中小學校檔案管理暫行辦法
- 普通高中物理課程標準
- 國家開放大學《監督學》形考任務( 1-4)試題和答案解析
- 完工付款最終付款申請表
- 人工動靜脈內瘺
- 新版(七步法案例)PFMEA
- 慢阻肺隨訪記錄表正式版
- 廣西大學數學建模競賽選拔賽題目
- 受戒申請表(共3頁)
評論
0/150
提交評論