西安交大城市學院計算機系
課程設計報告
課程名稱: 資料結構課程設計
專業: 資訊管理與資訊系統
題目: 宿舍管理系統
2023年6月12日
計算機系
《資料結構》2009級課程設計任務書
一、 系統設計說明:
1、 資料結構設計:
(1) 本系統用的資料型別有整型,字元型,陣列,結構體,結構體指標
(2) 本系統包含的功能模組有使用者登入系統,建立新的單鏈錶即住宿人資訊,插入住宿人,刪除住宿人,查詢住宿人,輸出住宿人資訊,主選單模組
各模組功能描述:
1、 只有管理員才能登入進去,登入時需要輸入對應的使用者名稱及密碼
2、 學生資訊鍊錶的建立是在程式開始的時候輸入已有的住宿人
3、 在單鏈表表頭結點插入學生資訊是用於有新住宿人的時候新增資訊
4、 在單鏈表表頭結點刪除學生資訊是在住宿人資訊無用時刪除
5、 查詢住宿人為了使使用者方便的查詢某個學生的相關資訊
6、 輸出所有學生資訊以儲存的學生資訊便於檢視
7、 主選單模組,用於控制整個系統的正常執行
各模組的層次結構可以借助下面的圖表簡明表示出來
2、 演算法設計
(1) 登陸模組介紹
登陸模組主要介紹首先開啟系統進行的操作,只有管理員才可登陸,具有一定的隱蔽性,保證該系統的安全。
(2) 主選單模組
主選單模組主要是登陸進去之後首先在螢幕上可顯示進行的操作,通過switch語句,通過鍵盤輸入0-6之間的某個數字對需要的操作進行選擇
(3) 學生資訊鍊錶的建立模組
該模組通過尾插法建立乙個新的鍊錶來儲存所有資訊,包括學生的學號,姓名和宿舍號
(4) 插入學生資訊模組
該模組構建了insertnode(linklist head,listnode *p,int i)函式,利用while語句及if語句確定插入位置,然後再插入需要的學生資訊
(5) 查詢學生資訊模組
該模組為建立了*findlist(linklist head)函式,可以利用按照學號查詢及姓名查詢,借助while語句及if語句檢視學生的資訊。
(6) 刪除學生資訊模組
該模組構建了delnode函式,通過while語句及if查詢要刪除的住宿者的資訊
(7) 修改學生資訊模組
該模組建立了指標函式*modinode(linklist head),通過修改學號及姓名進行修改,首先遍歷所有住宿者,再通過while語句判斷是否為要修改的學生資訊。
3、 測試用例設計:
(1)登陸系統介面
(2)主選單介面
(3)學生資訊鍊錶的建立介面
(4)插入學生資訊介面
(5)查詢學生資訊介面
(6)刪除學生資訊介面
(7) 修改學生資訊介面
(8) 輸出學生資訊
(9)退出管理系統
4、 上機除錯:
問題1:無法顯示正確的理想的理想介面
解決方法:調整程式的輸出選項,以致達到理想結果
問題2:編譯不出來
解決辦法:看是否上次編譯的對話方塊沒有關閉
問題3:老是提示system(」cls」)有錯誤
解決辦法:加了標頭檔案#include
二、 資料流程圖:
1、 系統整體流程圖
2、 具體演算法的流程圖
(1) 登陸模組
void denglu ()
輸入不正確會提示使用者名稱及密碼不正確
輸入正確的使用者名稱及密碼進入該作業系統
main()函式
(2) 新建模組
linklist createlist(void)
申請表頭結點
linklist head=(listnode *)malloc(sizeof(listnode))
listnode *p,*rear
學號(6)姓名(10)性別(2)宿舍號(4)
用尾插法建立單鏈表
輸入住宿者的相關資訊
return head
(3) 插入模組
void insertnode( linklist head, listnode *p )
listnode *p1
空表:插入作為第乙個結點
while((j<=i-1)&&(p1!=null))
找到第i-1個結點,p1指向該結點
p1=p1->next; if(p1==null)
j沒有合適的插入點
結束(5)刪除模組
void delnode(linklist head
listnode *p,*q;
呼叫查詢函式,找到要刪除的資訊
if (p==null) 找不到要刪除的住宿者的資訊return n
if (jx=='1')
q=q->next;
q->next=p->next;
free(p);
刪除成功
結束(6)查詢模組
listnode *listfind(linklist head)
listnode *p;char num[6];char name[10];
按學號查詢按姓名查詢
while (p && strcmp( while (p && strcmp(
p->data.num,num)<0p->
查詢成功 if (p==nullreturn p
strcmp (p->data.num,num)>0
沒有查到要查詢的住宿者
結束(7) 修改模組
void *modinode(linklist head)
listnode *p;
1、修改學號2、修改姓名
請輸入要修改學生的學號請輸入要修改學生的姓名
while(p && strcmpwhile (p && strcmp(p->
(p->data.num,num)!=0請輸入修改後的學生的姓名
p=p->next;}
請輸入修改後的學生的學號
printlist(headprintlist(head)
結束三、 程式源**:
#include
#include
#include
#include
//結點型別
typedef structdatatype;
//結點型別定義
typedef struct nodelistnode;
listnode *p;
typedef listnode *linklist;
linklist head;
int n;
/*函式說明*/
int menu_select();
linklist createlist(void);
void printlist(linklist head);
int insertnode(linklist head,listnode *p,int i);
listnode *findlist(linklist head);
void delnode(linklist head);
void denglu();
void *modinode(linklist head);
//主函式
void main()
{int i;
denglu();
for{ switch(menu_select()){
c語言課程設計報告宿舍管理系統
西安郵電學院 c語言課程設計報告書 實驗題目 學生宿舍管理系統 一 實驗目的 通過本課程設計,強化上機動手能力,使學生在理論和實踐的基礎上進一步鞏固 c語言程式設計 課程學習的內容,掌握工程軟體設計的基本方法。通過這次實習練習,可以更進一步的熟悉所學的知識,還可以加強和鞏固知識。長達兩周的上機練習,...
c語言課程設計報告宿舍管理系統
西安郵電大學 c語言課程設計報告書 實驗題目 學生宿舍管理系統 一 實驗目的 通過本課程設計,強化上機動手能力,使學生在理論和實踐的基礎上進一步鞏固 c語言程式設計 課程學習的內容,掌握工程軟體設計的基本方法。通過這次實習練習,可以更進一步的熟悉所學的知識,還可以加強和鞏固知識。長達兩周的上機練習,...
學生宿舍管理系統課程設計報告
課程設計報告 課程設計名稱資訊系統課程設計 專業資訊管理與資訊系統 班級學號 姓名指導教師 成績年月日資訊系統課程設計 某高校學生宿舍管理系統 目錄一 設計任務與要求 1 1.1 總體目標與任務要求 1 1.2 題目選擇與目的意義 1 1.3 所選題目的主要工作 1 二 需求分析 1 2.1 使用者...