資訊科學與技術學院
《資料結構》課程設計報告
完成日期:2013-01-09
1 課程設計的目的 1
1.1 課程設計的目的 1
1.2 課程設計的題目 1
1.3 題目要求 1
2 概要設計 2
2.1 儲存結構 2
2.2 基本操作 3
3 詳細設計 3
3.1 流程圖 3
3.2 源程式 10
4 測試 21
5 課程設計總結 29
6參考書目: 29
更好的掌握資料結構這門課程,會用資料結構的基本思想及演算法解決實際問題。更好的掌握鍊錶,能進行各種基本的操作,提高程式設計能力。
《學生管理系統》
使用下面的資料,用c/c++設計乙個簡單的學籍管理系統,實現出最基本的功能。
學生基本資訊檔案(a.txt)及其內容:a.txt檔案不需要程式設計錄入資料,可用文字編輯工具直接生成
學號姓名性別宿舍號碼**號碼
01 張成成男 501 87732111
02 李成華女 101 87723112
03 王成鳳女 101 87723112
04 張明明男 502 87734333
05 陳東男 501 87732111
06 李果男 502 87734333
07 張園園女 102 87756122
學生成績基本資訊檔案(b.txt)及其內容:
學號課程編號課程名稱學分平時成績實驗成績捲麵成績綜合成績實得學分
01 a01 大學物理 3 66 78 82
02 b03 高等數學 4 78 -1 90
01 b03 高等數學 4 45 -1 88
02 c01 vf 3 65 76 66
(一) 功能要求及說明:
(1) 資料錄入功能: 對b.txt進行資料錄入,只錄入每個學生的學號、課程編號、課程名稱、學分、平時成績、實驗成績、捲麵成績共7個資料.
綜合成績、學分由程式根據條件自動運算。
綜合成績的計算:如果本課程的實驗成績為-1,則表示無實驗,綜合成績=平時成績*30%+捲麵成績*70%; 如果實驗成績不為-1,表示本課程有實驗,綜合成績=平時成績*15%+實驗成績*.15%+捲麵成績*70% .
實得學分的計算: 採用等級學分制.
綜合成績在90-100之間 ,應得學分=學分*100% 綜合成績在80-90之間 ,應得學分=學分*80%
綜合成績在70-80之間 ,應得學分=學分*75% 綜合成績在60-70之間 ,應得學分=學分*60%
綜合成績在60以下 ,應得學分=學分*0%
(2)查詢功能:分為學生基本情況查詢和成績查詢兩種
a:學生基本情況查詢:
a1----輸入乙個學號或姓名(可實現選擇),查出此生的基本資訊並顯示輸出。
a2---輸入乙個宿舍號碼,可查詢出本室所有的學生的基本資訊並顯示輸出。
b:成績查詢:
b1:輸入乙個學號時,查詢出此生的所有課程情況,格式如下:
學號:xx 姓名:***xx
課程編號:*** 課程名稱:***xx 綜合成績:***x 實得學分: xx
課程編號:*** 課程名稱:***xx 綜合成績:***x 實得學分: xx
課程編號:*** 課程名稱:***xx 綜合成績:***x 實得學分: xx
共修:xx科,實得總學分為: ***
(3)刪除功能:當在a.txt中刪除乙個學生時,自動地在b.txt中刪除此人所有資訊。
(4 ) 排序功能:能實現選擇按綜合成績或實得學分公升序或降序排序並顯示資料。
(二)其它要求:
(1) 只能使用c/c++語言,源程式要有適當的注釋,使程式容易閱讀
(2) 至少採用文字選單介面(如果能採用圖形選單介面更好)
(3) 學生可自動增加新功能模組(視情況可另外加分)
(4)寫出課程設計報告,具體要求見相關說明文件
首先,為了能使自己得到鍛鍊,儲存結構我使用了順序儲存與鏈式儲存,學生基本資訊用的陣列來儲存,對學生成績基本資訊使用鍊錶進行儲存。結構體定義如下:
//學生基本資訊的結構體定義
typedef struct student
student;
//學生成績資訊的結構體定義
typedef struct grade
grade;
(1)資料錄入功能
(2)查詢功能
(3)刪除功能
(4)排序功能
(5)顯示所有學生資訊
(6)儲存
(7)退出
各個演算法的設計如下:
1.主函式:int main( );
從a.txt中讀取儲存的學生基本資訊到記憶體,以便進行處理,過程如圖1
圖 12.選單函式:void menu(student *stu,grade *head,grade *gra);
stu是指向學生基本資訊陣列的指標,head是指向學生成績資訊煉表頭結點的指標,gra是指向學生成績資訊鍊錶最後乙個結點的指標。
用於進行指示進行各種操作,是與每個函式都相聯絡的乙個函式,功能操作見圖2
圖23.資料錄入函式:void luru(grade *gra);
其中gra是指向單鏈表最後乙個結點的指標,用於後插法中進行插入。
將學生成績資訊依次輸入單鏈表中,其中單鏈表邊輸入邊建立,綜合成績和實得學分可由計算機自己計算。流程圖見圖3yn
90-100 80-9070-8060-70 60以下 圖3
4.查詢功能:void lookfor(student *p,grade *head);
p為指向學生基本資訊陣列的指標,head為指向學生成績鍊錶的頭結點的指標。
有學生基本情況查詢和成績查詢兩種大功能,基本情況查詢又分為按學號或姓名查詢單個學生基本資訊,也可輸入宿舍號查詢整個宿舍學生的基本資訊。成績查詢只要輸入學號便可查詢相應學生的成績資訊。見圖4
圖45.刪除功能:void del(student *stu,grade *head);
stu為指向學生基本資訊陣列的指標,head為指向學生成績鍊錶的頭結點的指標。
執行刪除功能時在儲存學生基本資訊的陣列中與儲存學生成績資訊的鍊錶中同時刪除該學生資訊,以便進行下面操作與向檔案中儲存資訊。功能見圖5
圖56.排序功能:void sort(grade *head);
head為指向學生成績鍊錶的頭結點的指標。
下面流程圖實現的是按綜合成績公升序排序,使用的選擇排序法,雖說使用的儲存結構為鏈式儲存結構,但排序時並非改變的指標指向,而是只修改儲存的資訊,指標指向不用改變。如圖6n
學生管理系統
題目 學生宿舍管理系統資料庫設計 通過對學生宿舍樓的實地調查,了解到現在的學生宿舍管理仍停留在完全的人工管理階段,樓管處沒有標準的住宿學生存檔資訊。這中人工管理方式費時 費事 費力,造成工作效率低下。開發出合適的學生宿舍管理系統,可以方便學生宿舍的管理,提高宿舍管理工作效率及查詢效率。1 了解目前宿...
學生管理系統
資料庫原理及應用 課程設計 2009 2010學年第一學期第18 周 學生資訊管理系統 目錄1 問題描述 0 1.1背景 0 1.2.學生資訊管理系統需求分析 1 1.2.1資料需求 1 1.2.2需要完成主要功能 2 1.2.3事務需求 4 2.方案圖表設計 5 2.1 e r圖 5 3.邏輯設計...
學生課程管理系統
1.需求說明 如果要實現乙個學校課程管理系統,在此學校課程管理系統中只涉及對學生 班級 課程 教師和參考書的管理,此系統要求能夠記錄學生的選修情況 教師的授課情況,以及學生 班級 課程 教師和參考書的基本情況。系統具體要求如下 一門課程可由多名教師講授。一名教師可以講授多門課程。一名學生可以選修多門...