《面向對象程序設計學生選課系統(tǒng)課程設計報告.doc》由會員分享,可在線閱讀,更多相關《面向對象程序設計學生選課系統(tǒng)課程設計報告.doc(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、課程設計(論文)編 號: B04931053學 號: 201240450110 課 程 設 計教 學 院計算機學院課程名稱高級語言程序設計題 目學生選課系統(tǒng)專 業(yè)軟件工程班 級12級軟件工程(1)班姓 名明平耀同組人員王天灝、徐威鵬、張澤坤、黃文瑞指導教師謝晉2013年12月15日 目 錄一概述2二總體方案設計3三詳細設計4四程序的調試與運行結果說明5五課程設計總結6參考文獻7一 概述1. 課程設計的目的1理解和掌握該課程中的有關基本概念,程序設計思想和方法。2培養(yǎng)綜合運用所學知識獨立完成課題的能力。3培養(yǎng)勇于探索、嚴謹推理、實事求是、有錯必改,用實踐來檢驗理論,全方位考慮問題等科學技術人員應
2、具有的素質。4掌握從資料文獻、科學實驗中獲得知識的能力,提高學生從別人經(jīng)驗中找到解決問題的新途徑的悟性,初步培養(yǎng)工程意識和創(chuàng)新能力。2. 課程設計的要求需要的基本知識與技能,尚未掌握的知識點,需要查閱相關資料。教師對本題目所提出的要求等。(1) 需求分析1.1任務要求 制做學生選課系統(tǒng),共包括課程信息和學生信息兩部分。課程信息包括:課程編碼、課程名稱、適用專業(yè)、課程類型(必修、限選、必選、實踐、學習)、學分、學時、主講教師等。學生信息管理,學生選課管理(學生選課學分總數(shù)有一定范圍),學生可以對課程進行查詢、瀏覽,選完課后可以退選、重選,并可以按學號、姓名進行查詢和統(tǒng)計。要求:1.源文件采用多文
3、件的工程結構。 2.數(shù)據(jù)儲存采用文件形式。 3.標準的C輸入輸出。 4.功能完善,適當?shù)淖⑨尅?5.關于文件的內容要自學。1.2系統(tǒng)功能需求分析1.為存儲課程信息,需要定義一個結構體類型,成員包括課程編碼、課程名稱、適用專業(yè)、課程類型、學分、學時、主講教師,所選人數(shù)等等,并建立鏈表,定義該結構體類型的指針,用于指向各節(jié)點;2.為存儲學生信息,需要定義一個結構體類型,成員包括學生編碼、學生姓名、所選課程編碼、所選課程學分和等等,并建立鏈表,定義該結構體類型的指針,用于指向各節(jié)點;3.對于課程信息和學生信息,可以選擇從鍵盤輸入也可選擇從文件中打開原來存盤的信息,并對他們分別建立添加、刪除、瀏覽、查
4、詢等功能的子函數(shù),完成相應的功能,對程序實現(xiàn)模塊化。這其中要用到對鏈表的刪除、插入、增加等知識。刪除包括課程刪除和學生信息刪除,刪除時用一結構體指針指向鏈表的第一個結點,檢查該節(jié)點的值是否等于輸入的要刪除的課程編號或學生學號,若相等就刪除,不相等則后移指針,直至表尾。插入時也要先找到相應結點,再添加。查詢功能要設置按照學生姓名、學生編號等多種方式。4.學生選課是要先輸入自己的學號,如果在已經(jīng)輸入的學生信息中找不到此學號,則提示需要先輸入自己的信息。如找到了自己的學號,則可以進行選課。在選課之前要先對所有的課程信息進行瀏覽。選課有一定的學分限制,超過相應的學分(這里設置的是10個學分),系統(tǒng)就會
5、顯示可以選滿的信息。此系統(tǒng)還可以實現(xiàn)刪除所選課程的功能,設計思路與選課功能相似。5為實現(xiàn)存儲功能,需用到文件的相關函數(shù),打開文件,將添加、修改或刪除的信息存入磁盤中。6.實現(xiàn)易于使用者理解和使用的友好界面。 二 總體方案設計1.具體的設計思路:程序的要求是設計學生選修課管理系統(tǒng),對選修課程能夠進行錄入和修改操作等,要求有菜單界面和退出功能。首先,考慮到程序的數(shù)據(jù)輸入,可以設置一個管理員登陸選項,通過該選項進入管理員界面,進行選修課的錄入和修改操作,最后將錄入的課程保存到相應的文件中。然后定義各種函數(shù)的功能包括查看,查詢,刪除等。另一個為學生登陸界面,該界面學生可以進行課程選擇和瀏覽查詢等操作。
6、在進行該操作之前需要對管理員保存的文件進行讀取,然后對其中的內容進行查詢等,在學生選好課程以后,可以將其選好的課程保存于相應的文件中,以便下次進行修改。通過函數(shù)的層層調用來實現(xiàn)程序的邏輯結構。中間通過文件的打開和關閉實現(xiàn)對文件內部所包含的數(shù)據(jù)的操作。2 概要設計2.1系統(tǒng)總體設計框架 對程序進行模塊化可以使整個程序清晰明了。對課程信息和學生信息建立從文件中輸入、從鍵盤中輸入、添加、刪除、查詢和瀏覽的功能,其各個子函數(shù)中運用鏈表儲存數(shù)據(jù)。選課管理建立學生選課、推選、查詢、瀏覽的功能,其各個子函數(shù)中運用鏈表儲存數(shù)據(jù)。從主函數(shù)開始執(zhí)行,依次調用各個子函數(shù),并運用文件的相關知識將信息進行存盤。2.2系
7、統(tǒng)功能模塊圖學生選課系統(tǒng)課程信息從文件錄入從鍵盤錄入增加刪除學生信息從文件錄入從鍵盤錄入增加刪除選 課退 課信息存儲3 詳細設計3.1功能模塊設計思路主要功能模塊的算法設計思路如下:1、 課程信息錄入函數(shù)(void load()從鍵盤錄入(void zhang( ))I 定義指向結構體變量的指針;II 從頭指針指向的結構體開始依次錄入結構體中所包含的各個成員;III直到輸入的結構體成員的編號為0,錄入結束從文件錄入(void zhang1( ))I 分別定義指向結構體變量的指針和指向文件的指針;II 輸入文件的路徑,打開文件,若沒有找到則有提示;III 將文件中的信息依次讀出,最后結構體的指針
8、為2、 課程信息管理(void managementc())增加課程信息(void insert(struct course *incourse))I 定義指向結構體變量的指針;II 輸入要增加的課程編號,從頭指針指向的結構體依次向后,直到鏈表的最后;III 輸入課程結構體各個成員的信息,使最后一個結構體指針值為刪除課程信息(void delc(int num1))I 定義指向結構體變量的指針;II 輸入要增加的課程編號,從頭指針指向的結構體依次向后,直到找到課程編號為輸入值的那個結構體;III 將其刪除,其前一個的結構體指針指向其后一個結構體3、 學生信息錄入函數(shù)(void input()從
9、鍵盤錄入(void putin( ))I 定義指向結構體變量的指針;II 從頭指針指向的結構體開始依次錄入結構體中所包含的各個成員;III 直到輸入的結構體成員的編號為0,錄入結束從文件錄入(void putin2( ))I 分別定義指向結構體變量的指針和指向文件的指針;II 輸入文件的路徑,打開文件,若沒有找到則有提示;III 將文件中的信息依次讀出,最后結構體的指針為4、 學生信息管理(void managements())增加學生信息(void inserts(struct student * incouse))I 定義指向結構體變量的指針;II 輸入要增加的學生編號,從頭指針指向的結構
10、體依次向后,直到鏈表的最后;III 輸入學生結構體各個成員的信息,使最后一個結構體指針值為刪除學生信息(void dels(int num2))I 定義指向結構體變量的指針;II 輸入要增加的學生編號,從頭指針指向的結構體依次向后,直到找到學生編號為輸入值的那個結構體;III 將其刪除,其前一個的結構體指針指向其后一個結構體5、 學生選課管理(void elective())學生選課(void elect())I 分別定義指向課程和學生結構體變量的指針;II 輸入要選課的學生的編號,從頭指針指向的結構體依次向后,直到找到學生編號為輸入值的那個結構體,如不存在則顯示要錄入學生信息;III 輸入要
11、選課程的編號,從頭指針指向的結構體依次向后,直到找到課程編號為輸入值的那個結構體;IV 在學生結構體對應的所選課程編號中更改信息,所選學分中加上相應分值,課程結構體所選人數(shù)中相應加一學生退課(void back())I 分別定義指向課程和學生結構體變量的指針;II 輸入要退課的學生的編號,從頭指針指向的結構體依次向后,直到找到學生編號為輸入值的那個結構體,如不存在則顯示要錄入學生信息;III 輸入要退課程的編號,從頭指針指向的結構體依次向后,直到找到課程編號為輸入值的那個結構體;IV 在學生結構體對應的所選課程編號中更改信息,所選學分中減去相應分值,課程結構體所選人數(shù)中相應減一6、 信息瀏覽和
12、保存(void into())課程信息瀏覽(void listc())I 定義指向結構體變量的指針;II從頭指針指向的結構體依次向后,將課程結構體各成員的信息一次輸出,直到最后一個結構體指針的值為NULL學生信息瀏覽(void lists())I 定義指向結構體變量的指針;II從頭指針指向的結構體依次向后,將學生結構體各成員的信息一次輸出,直到最后一個結構體指針的值為NULL課程信息保存(void intoc())I 定義指向課程結構體變量的指針和指向文件的指針;II 輸入保存路徑,如果沒有保存則有顯示;III 將課程信息寫入文件中;IV 將課程信息進行保存,關閉文件學生信息保存(void i
13、ntos())I 定義指向學生結構體變量的指針和指向文件的指針;II 輸入保存路徑,如果沒有保存則有顯示;III 將學生信息寫入文件中;IV 將學生信息進行保存,關閉文件7、 學生信息查詢(void store())按學生姓名查詢(void search2())I定義指向結構體變量的指針;II 輸入要查詢的學生的姓名,從頭指針指向的結構體依次向后,直到找到學生姓名為輸入值的那個結構體;III 將該學生結構體成員的各信息依次輸出按學生編號查詢(void search1())I定義指向結構體變量的指針;II 輸入要查詢的學生的編號,從頭指針指向的結構體依次向后,直到找到學生編號為輸入值的那個結構體
14、; 三 詳細設計【功能模塊劃分及其流程圖】本程序功能模塊根據(jù)程序設計的需求,綜合程序的實用性、人性化、智能化的考慮,將程序劃分為6個部分分別編寫,程序主體功能將由這9個部分來完成。這9個部分依次是:1. 登錄界面函數(shù);void login()2. 學生登錄界面據(jù)函數(shù):void stu_login()3. 管理員登錄界面函數(shù):void man_login()4. 退出界面函數(shù):void bye_sys()5. 課程選擇函數(shù):void c_select()6. 課程瀏覽函數(shù):void c_view()7. 課程查詢函數(shù):void c_search()8. 課程增加函數(shù):void c_add()9.
15、 課程刪除函數(shù):void c_delete()10. 菜單函數(shù):void index()11. 主函數(shù)部分; main()總體設計:系統(tǒng)功能模塊圖部分函數(shù)流程圖:1、 課程選擇函數(shù):2、 課程查詢函數(shù)3、 課程增加函數(shù)4、課程刪除函數(shù) 四 程序的調試與運行結果說明1、程序開始界面如下:選擇某個選項,如進行管理員登錄,進行課程的增加進入管理員界面:2、再選擇所要進行的操作,如進行課程增加,結果如下:下面可以進行繼續(xù)增加課程或者退出:3、選擇課程瀏覽,可以分頁查看相應的課程信息:第一頁:第二頁:4、課程查詢查找結果:4、 管理員課程刪除操作:刪除后可以進行瀏覽,觀察刪除后的結果:可見刪除后只有一條
16、記錄。刪除操作完成正確。下面進行學生操作的使用方法:1、學生登陸界面:2、選擇學生選課選項:3、學生登陸也可進行課程瀏覽和查詢函數(shù),其結果與管理員登陸相同,不再演示。五 課程設計總結選課系統(tǒng)程序比起通訊錄程序來講好寫一些,由于本程序用到了數(shù)組,對于數(shù)組的操作掌握的比較熟練,所以在編寫程序的時候困難沒有那么多。本程序在編寫的過程中用到了許多通訊錄中的模塊化設計和函數(shù)互相調用的思想,使得編寫比較方便和好用。通過該系統(tǒng)的課程設計分析,我掌握了模塊化設計的方法,理解和運用了結構化程序設計的思想和方法,掌握和提高了運用C語言進行程序設計的能力。程序設計的過程,實際上是確定解決問題的詳細步驟,而這個步驟通
17、常叫做流程,在程序設計過程中理清楚整個問題的流程很重要,然后采取逐步細化的方法實現(xiàn)整個程序。對于一個較大的應用程序,一般不可能一次就設計出一個很完善的系統(tǒng)。通常要先設計滿足基本要求的系統(tǒng),然后再測試或者在使用的過程中不斷完善,慢慢地做成一個功能很完善選修課程管理系統(tǒng)。所以在進行調試的時候需要對許多變量理解和掌握其變化規(guī)律等,這對于我更好的掌握visual C中調試的工具有很大的幫助??傊?jīng)過這次課程設計,我對c語言的使用和理解都有了很大的加深,對于編程的思想也有了很多新的理解和感受。 參考文獻1、李麗娟主編 ,C語言程序設計教程(第二版),人民郵電出版社2、嚴蔚敏主編,數(shù)據(jù)結構(C語言),清華大學出版社3、崔單主編,C語言程序設計案例精粹,電子工業(yè)出版社4、譚浩強主編,程序設計(第三版),清華大學出版社19