



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
等中科技火穿課程設計報告題目:招生查詢系統課程名稱: C語言程序與設計專業班級: 信息安全1302班學號: 姓名: 指導教師: 報告日期: 2014年10月1日計算機科學與技術學院任務書題目:招生查詢系統ー、主要內容建立招生信息系統,提供創建、編輯和綜合查詢等基本業務管理和服務。二、任務要求收集與閱讀相關文獻資料,確定系統目標與范圍,分析系統需求,確定系統功能;設計系統方案,完成系統實現;提交《課程設計報告》。三、參考文獻川曹計昌,盧萍,李開.C語言程序設計,北京:科學出版社,2013[2]李開,盧萍,曹計昌.C語言實驗與課程設計,北京:科學出版社,2011[3]張引.C程序設計基礎課程設計,杭州:浙江大學出版社,2007[4]黃明,梁旭,萬洪莉.C語言課程設計,北京:電子工業出版社,2006四、基本要求⑴只能使用C語言,源程序要有適當的注釋,使程序容易閱讀。⑵要有用戶界面。要求至少采用教材p215-p216類似的簡易菜單;鼓勵采用文本菜單界面甚至采用圖形菜單界面。⑶必須使用結構和十字交叉鏈表等數據結構。⑷使用文件保存數據。⑸鼓勵自行增加新功能。⑹設計測試的模擬數據,完成系統測試。⑺撰寫課程設計報告(要求正規雙面打印,A4幅面)內容包括:題目、系統功能模塊結構圖、數據結構設計及用法說明、程序結構(畫流程圖)、各模塊的功能、試驗結果(包括輸入數據和輸出結果)、體會、參考文獻和附錄:程序清單。課程設計報告封面統一格式,標準格式詳見《本科生課程設計規范化要求》。⑻課程設計資料(包括課程設計報告、源程序、目標程序和測試用例等)刻錄光盤。目錄TOC\o"1-5"\h\z\o"CurrentDocument"目錄 3!弓I言 4課題背景和意義 4國內外研究現狀 4課程設計的主要研究工作 5\o"CurrentDocument"2系統需求分析與總體設計 6系統需求分析 6系統總體設計 6\o"CurrentDocument"3系統詳細設計 12有關數據結構的定義 12主要算法設計 16\o"CurrentDocument"4系統實現與測試 34系統實現 34系統測試 39\o"CurrentDocument"5總結與展望 47全文總結 47工作展望 47\o"CurrentDocument"參考文獻 49\o"CurrentDocument"附錄程序清單 50課題背景和意義想進入一所滿意的大學,七分靠成績三分靠志愿。如果說高考檢驗的是學生成績,比的是個人實カ,那么,填報志愿絕對是個技術活兒,考驗的是決策能力,拼的是群體智慧。怎樣才能在千余所學校、10多萬個錄取位置中,找到適合自己的一個,這就需要選擇、對比、權衡、把握、決策……同時還需要對各個高校信息的了解與查詢。因此網上招生信息的查詢就有著他獨特的意義。同時網絡招生查詢系統具有以下的優點:有利于招生信息及時更新和發布。與傳統紙質材料相比,網絡招生查詢系統制作比較簡單,開發周期短,信息傳播更及時更方便,信息留存的時間長也便于檢索,并且更新信息的成本低,能夠讓最新的信息在第一時間傳播到用戶手中。用戶查找信息更加快捷、方便、全面,并且能夠對學、專業和分數線進行縱向和橫向的比對,做出最合適的選擇,適應復雜的招生數據的處理的需求。有利于節約時間,節約資源,提高工作效率,提高服務質量。國內外研究現狀信息管理系統在現代社會已經深入到各行各業,由于計算機技術的發展和普及,信息管理系統事實上已經成為了計算機管理信息系統。管理信息系統是ー個不斷發展的新型學科,它的定義隨著計算機技術的發展和通訊技術的進步也在不斷更新。管理信息由信息的采集,信息的傳遞,信息存儲,信息加工,信息的維護和信息的使用五個方面組成。任何地方只要有管理,就必然有信息。如果形成系統就形成管理信息系統,計算機設備使管理信息系統更加有效。尤其是現代社會,管理信息系統己經和計算機設備不可分離。信息管理系統ー詞在中國出現在70年代末80年代初,根據中國的特點,許多從事管理信息系統的學者給管理信息系統也下了一個定義,該定義為:“管理信息系統,是ー個由人和計算機等組成的能進行信息的收集,管理,加工,維護和使用的系統。管理信息系統能實測企業的各種運行情況,利用過去的數據預測未來;從企業全局出發輔助企業進行決策,利用信息控制企業行為,幫助企業實習其規劃目標。”自20世紀80年代以來,在西方國家中的大型企業里相繼出現了“信息總監”(CIO)這樣引人矚目的高級管理職位。20世紀90年代以來,隨著知識管理新概念的出現,CIO開始逐步向“知識總監”(CKO)演變。CIO和CKO的出現使信息資源管理者的行政地位提高到了最高決策層,標志著微觀層次的信息資源管理的地位與作用日益重要。為了適應新形式下現代化企業管理的需要,建立一個高效、可靠的計算機管理系統,并且在其上開發符合企業需要的生產信息管理系統已經越來越成為ー個現代化企業的標志,它必將為企業生產、科學調度等方面帶來深遠的影響。課程設計的主要研究工作課程設計是以考生以及家長對查詢招生信息的需求為背景,基于全國高等學校招生實際情況,設計出招生查詢系統。使用CodeBlocks作為開發工具,系統具有文件維護,數據維護,數據查詢,數據統計,幫助五個功能大類,包括數據加載,數據備份,數據恢復,數據保存,高校信息查詢、修改、增加、刪除等24個子模塊。能夠滿足數據查詢,修改,增加,刪除,以及數據統計等功能。并且可以進行模糊查詢,讓用戶對信息進行橫向和縱向的對比。本系統可以用鼠標和鍵盤兩種操作方式,方便快捷,便于使用。2系統需求分析與總體設計系統需求分析使用招生查詢系統的有兩類人,ー是用戶,二是系統管理員。用戶需要查詢高校信息,專業信息和專業每一年的招生信息。在不清楚高校和專業的具體編號和名稱的時候,也能夠通過某些條件進行模糊查找。在實際生活中,用戶也會需要每ー年招生的統計信息,來作為選擇學校時的參考。對于系統管理員而言,除了查詢之外最重要的功能就是修改和刪除信息。為了能夠方便修改,需要能夠選擇性的修改,沒有選擇的部分保持原數據。通過輸入編號選擇刪除的高校或者專業的信息。同時為了防止誤刪數據,也設計數據保存、備份和恢復的功能。系統主要是提供招生信息的快速查詢、檢索和統計。應該具有①按高校、按專業等查詢招生信息;②組合條件檢索招生信息;③統計招生情況等。系統總體設計系統分成五個大的模塊,分別是文件,數據維護,數據查詢,數據統計,幫助。招生信息查詢系統文件數據維護數據查詢數據統計文件數據維護數據查詢數據統計幫助文件模塊的功能包括一系列與系統啟動運行和系統結束運行相關的環境維護和數據操作,其進ー步分化為4個子模塊:數據保存、數據備份、數據恢復和退出系統。其功能結構如圖所示:數據保存子模塊:用于將內存中的代碼表數據和鏈表數據按照缺省路徑分別保存到各個文件中。當數據保存失敗時,輸出提示信息并讓用戶輸入存儲數據文件的新路徑,然后按用戶指定的新路徑保存數據。數據備份子模塊:用于將存放在多個數據文件中的代碼數據和基礎數據按用戶指定的路徑轉儲到ー個數據文件之中,當系統數據在破壞或者丟失時用來恢復數據。數據恢復子模塊:與系統備份模塊相對應,能從備份數據中恢復得到的系統數據,并加載數據到內存中。用于提高系統的穩定性和可靠性。退出系統子模塊:釋放程序運行過程中申請的動態存儲區,關閉控制臺標準輸入和輸出句柄,將標題欄設置為“運行結束”,清楚屏幕窗口信息,結束系統運行。
數據維護模塊完成為系統代碼數據和三種基礎數據信息的錄入、修改和刪除功能,保證數據的準確性、完整性和有效性。該模塊按信息種類劃分為:高校信息、專業信息和招生信息三個子模塊,如下圖所示:高校信息子模塊:用于插入,修改和刪除高校基本信息,保證高校信息的準確性。并且將高校的數據存入數據鏈表,并保存到高校信息數據文件中,以保證內存和外存在兩種存儲介質上數據內容的一致性。專業信息子模塊:用于插入,修改和刪除專業基本信息、,保證專業信息的準確性。并且將專業的數據存入數據鏈表,并保存到專業信息數據文件中,以保證內存和外存在兩種存儲介質上數據內容的一致性。招生信息子模塊:用于插入,修改和刪除招生基本信息,保證招生信息的準確性。并且將招生的數據存入數據鏈表,并保存到招生信息數據文件中,以保證內存和外存在兩種存儲介質上數據內容的一致性。
數據查詢模塊提供對三種基本數據信息按多種條件進行查詢的功能。該模塊按信息種類分為高校信息、專業信息和招生信息三個子模塊,如圖所示:高校信息査詢子模塊:用于學校信息的查詢,是模糊查找高校信息,普通用戶往往不了解高校編號,則可以通過高校名稱或者地址等信息進行搜索,輸出所有符合條件的高校信息。專業信息查詢子模塊:用于專業信息的查詢,是模糊査找專業信息,普通用戶往往不了解高校編號和專業編號,則可以通過專業名稱等信息進行搜索,輸出所有符合條件的專業信息。招生信息査詢子模塊:用于招生信息的查詢,是模糊查找招生信息,普通用戶往往不了解高校編號和專業編號,則可以通過專業名稱和招生年份,招生人數等信息進行搜索,輸出所有符合條件的招生信息。
數據統計對三類基礎數據進行多方面統計的功能,按照統計條件,劃分為各學校專業熱門度統計,各年份招生人數統計,高校信息統計,全錄入信息統計,如圖所示:數據統計各學校專業熱門度統計各年份招生人數統計高校信息各學校專業熱門度統計各年份招生人數統計高校信息統計全錄入信息統計各學校專業熱門度統計:用于對各個學校各個專業招生時長、人數的統計,并根據該專業平均每年錄取的人數為依據,計算該專業的熱門程度,從高到底排列。各年份招生人數統計:用于對武漢高校每年實際、計劃招生數的統計,并按各年實際招生數的高低排序后輸出這些統計數據。高校信息統計:用于對武漢各所高校的基本信息的統計,統計各個高校專業數量,和該高校每年的計劃和實際招生人數,全錄入信息統計:輸出已經錄入的所有信息,高校信息中輸出該高校的編號,專業信息輸出該專業的名稱,招生信息中輸出招生的年份。幫助模塊為用戶使用系統提供幫助,同時還提供系統版本信息和系統版權信息,分為幫助主題子模塊和系統說明子模塊,如圖所示:幫助幫助主題幫助主題子模塊:能夠時用戶對系統的功能更加了解,使用更加方便。關于系統子模塊:簡要介紹系統的功能,以及版權聲明,開發者的聯系方式,便于用戶進行反饋和對程序進行更好的修正。3系統詳細設計有關數據結構的定義按照任務要求,系統需要處理的基礎信息有三種:高校信息,專業信息和招生信息。這三種信息存在這樣的關聯:專業信息中的高校編號與高校信息中的高校編號存在關聯,招生信息中的專業編號與專業信息中的專業編號存在關聯。這三種數據通過錄入,成為系統的基礎數據。系統進行統計時需要使用到以上三種數據,統計的結果形成新的數據。本系統的統計模塊生成四種數據,分別表示專業歷史統計信息、招生統計信息、高校分類統計信息、總錄入信息統計信息。下面分別是設計本系統涉及的代碼數據、基礎數據和生成數據的數據結構,以及數據在內存和外存中的存儲結構。(1)高校信息表:數據項名稱數據項標志數據類型數據長度取值范圍示例高校名稱nameString20“華中科技大學”高校編號uni_idString3“001-999”“001”地址addrString20“湖北省珞瑜路”聯系電話telString20?在內存中的存儲結構:存放在十字交叉鏈表的主鏈接點上,每ー個主鏈接點除了保存下ー個結點的地址外,還保存該學校專業信息鏈表的頭結點地址。?數據文件的存儲結構:每條信息作為一條記錄存放到二進制文件。(2)專業信息表:數據項名稱數據項標志數據類型數據長度取值范圍示例高校編號uni_idString3“001-999”“001”專業名稱nameString20“華科信安”專業編號maj_idString12“Olis”
在內存中的存儲結構:存放在十字交叉鏈表的主鏈接點上,每ー個主鏈接點除了保存下ー個結點的地址外,還保存該學校專業信息鏈表的頭結點地址。數據文件的存儲結構:每條信息作為一條記錄存放到二進制文件。(3)招生信息表:數據項名稱數據項標志數據類型數據長度取值范圍示例專業名稱nameString10“華科信安”專業編號maj_idString12“Olis”招生年份yearString10“2014”計劃人數planint2“0-65535”“500”實際人數realint2“0-65535”“450”最高分maxint2“0-65535”“660”最低分minint2“0-65535”“600”在內存中的存儲結構:存放在十字交叉鏈表中該專業信息鏈結點的招生信息鏈結點上,每ー個結點保存下ー個招生信息結點的地址。數據文件的存儲結構:每條信息作為一條記錄存放到二進制文件。(4)專業歷史統計信息鏈結點結構:數據項名稱數據項標志數據類型數據長度取值范圍示例招生時長num_yearlong8“3”專業名稱nameString20“華科信安”總人數reallong8“1654”每年人數real_averdouble8“654.3”在內存中的存儲結構:存放在專業歷史統計信息的單向鏈表的結點中。數據文件的存儲結構:不存入外存。(5)招生統計信息:數據項名稱數據項標志數據類型數據長度取值范圍示例招生年份yearString15“2013”實際總人數realint2“0-65535”“365”計劃總人數planint2“0-65535”“221”在內存中的存儲結構:存放在招生統計信息的單向鏈表的結點中。數據文件的存儲結構:不存入外存。(6)髙校分類統計信息:數據項名稱數據項標志數據類型數據長度取值范圍示例髙校編號uni_idString3“001-999”“00ド高校名稱nameString20“華中科技大學”專業數量num_majint2“0-65535”“100”招生信息數量num_claint2“0-65535”“300”平均每年實際招生數realint2“0-65535”“7800”平均每年計劃招生數planint2“〇ー65535”“7456”在內存中的存儲結構:存放在高校分類統計信息的單向鏈表的結點中。數據文件的存儲結構:不存入外存。(7)總錄入信息統計信息:數據項名稱數據項標志數據類型數據長度取值范圍示例高校編號uni_idString3“001-999”“001”專業名稱nameString15“華科信安”招生年份yearString15“2014”在內存中的存儲結構:存放在總錄入信息統計信息的單向鏈表的結點中。數據文件的存儲結構:不存入外存。系統主要涉及“高校”、“專業”和“招生”3類信息。“高校”信息由高校編號、高校名稱、高校地址和聯系電話等數據項目組成,“專業”信息由專業編號、專業名稱等數據項目組成,“招生”信息由招生年份、招生計劃、實際招生、最高分數和最低分數等數據項目組成。在磁盤上,采用3個文件分別存儲“高校”、“專業”和“招生”的數據。在“專業”信息中增加高校編號,在“招生”信息中增加高校編號和專業編號。高校信息表,專業信息表和招生信息表在內存中構成一個三向十字交叉鏈表。3.2主要算法設計這部分主要描述系統中的模塊實現的流程,可采用流程圖的方式表示各模塊的算法流程。.數據保存模塊算法思想:(1)分別打開三個需要被寫入信息的文件(2)將存在在鏈表中的信息寫入文件(3)保存文件并關閉函數原型:/**函數名稱:SaveSysData函數功能:保存系統代碼表和三類基礎數據.輸入參數:hd主鏈頭結點指針輸出參數:返回值:BOOL類型,總是為TRUE*調用說明:/BOOLSaveSysData(UNI_NODE*hd)(UNI_NODE*pUniNode=hd;FILE*pFile;pFile=fopen(gp_uni_info_filename,"wb");while(pUniNode!=NULL)(fwrite(pUniNode,sizeof(UNI_NODE),l,pFile);pUniNode=pUniNode->next;}fclose(pFile);MAJ_NODE*pMajNode;UNI_NODE*pUniNodel=hd;pFile=fopen(gp_maj_info_filename,"wb");while(pUniNode1!=NULL)pMajNode=pUniNodel->snext;while(pMajNode!=NULL)Ifwrite(pMajNode,sizeof(MAJ_NODE),1,pFile);pMajNode=pMajNode->next;}pUniNode1=pUniNode1->next;fclose(pFile);UNI_NODE*pUniNode2=hd;MAJ_NODE*pMajNodel;CLA_NODE*pClaNode;pFile=fopen(gp_cla_info_filename,"wb");while(pUniNode2!=NULL)pMajNodel=pUniNode2->snext;while(pMajNodel!=NULL)(pClaNode=pMajNodel->cnext;while(pClaNode!=NULL)(fwrite(pClaNode,sizeof(CLA_NODE),1,pFile);pClaNode=pClaNode->next;)pMajNode1=pMajNodel->next;)pUniNode2=pUniNode2->next;}fclose(pFile);returnTRUE;}.數據備份模塊:算法思想:(1)創建一個以時間為文件名稱的空文件(2)分別從三個已經保存的文件中讀出信息并按順序寫入該文件中(3)保存文件,并關閉。函數原型:/**函數名稱:BackupSysData函數功能:將系統代碼表和三類基礎數據備份到ー個數據文件.輸入參數:hd主鏈頭結點指針*輸出參數:返回值:BOOL類型,總是為TRUE*調用說明:ツBOOLBackupSysData(UNI_NODE*hd)(chari=0;UNI_NODE*pUniNode=hd;charnum[3]={0};StatNum(num);time」now;time(&now);char*fileName=ctime(&now);FILE*pFile;deletech(fileName,15);char*pl=n.datn;fileName=strcat(fileName,pl);if((pFile=fopen(fileName,,,wb,,))==NULL)(returnFALSE;}fwrite(num,sizeof(num),1,pFile);for(i=0;i<num[0];i++)(fwrite(pUniNode,sizeof(UNI_NODE),1,pFile);pUniNode=pUniNode->next;}MAJ_NODE*pMajNode;UNI_NODE*pUniNodel=gp_head;while(pUniNode1!=NULL){pMajNode=pUniNodel->snext;while(pMajNode!=NULL){fwrite(pMajNode,sizeof(MAJ_NODE),l,pFile);pMajNode=pMajNode->next;pUniNode1=pUniNodel->next;UNI_NODE*pUniNode2=gp_head;MAJ_NODE*pMajNodel;CLA_NODE*pChargerNode;while(pUniNode2!=NULL)(pMajNode1=pUniNode2->snext;while(pMajNodel!=NULL)(pChargerNode=pMajNodel->cnext;while(pChargerNode!=NULL)(fwrite(pChargerNode,sizeof(CLA_NODE),1,pFile);pChargerNode=pChargerNode->next;)pMajNodel=pMajNodel->next;}pUniNode2=pUniNode2->next;}fclose(pFile);returnTRUE;).數據恢復模塊:算法思想:(1)輸入需要讀取的文件的文件名(2)從該文件中讀出信息并按順序分別寫入三個保存信息的文件中(3)保存文件,并關閉。函數原型:BOOLRestoreSysData(UNI_NODE**phead,char*filename){UNI_NODE*hd=NULL,*pUniNode,tmpl;MAJ_NODE*pMajNode,tmp2;CLA_NODE*pClaNode,tmp3;FILE*pFile;intfind;intre=0;charnum[3];chari=0;if((pFile=fopen(filename,nrbn))==NULL)(returnFALSE;)fread(num,sizeof(num),1,pFile);fbr(i=O;i<numfO];i++)(fread(&tmpl,sizeof(UNI_NODE),1,pFile);pUniNode=(UNI_NODE*)malloc(sizeof(UNI_NODE));*pUniNode=tmpl;pUniNode->snext=NULL;pUniNode->next=hd;hd=pUniNode;)gp_head=hd;fbr(i=0;i<num[l];i++)fread(&tmp2,sizeof(MAJ_NODE),1,pFile);pMajNode=(MAJ_NODE*)malloc(sizeof(MAJ_NODE));*pMajNode=tmp2;pMajNode->cnext=NULL;pUniNode=hd;while(pUniNode!=NULL&&strcmp(pUniNode->uni_id,pMajNode->uni_id)!=0)(pUniNode=pUniNode->next;)if(pUniNode!=NULL) {pMajNode->next=pUniNode->snext;pUniNode->snext=pMajNode;)else(free(pMajNode);for(i=0;i<num[2];i++)fread(&tmp3,sizeof(CLA_NODE),1,pFile);pClaNode=(CLA_NODE*)malloc(sizeof(CLA_NODE));*pClaNode=tmp3;pUniNode=hd;find=0;while(pUniNode!=NULL&&find==0)pMajNode=pUniNode->snext;while(pMajNode!=NULL&&find==0)(if(strcmp(pMajNode->maj_id,pClaNode->maj_id)==0)(find=1;break;)pMajNode=pMajNode->next;)pUniNode=pUniNode->next;}if(find)(pClaNode->next=pMajNode->cnext;pMajNode->cnext=pClaNode;}else(free(pClaNode);)}fclose(pFile);returnTRUE;).錄入高校信息模塊:算法思想:(1)輸入需要錄入的高校的信息(2)將信息寫入高校信息的鏈表中函數原型: if(selectnum==l)TOC\o"1-5"\h\zchar*plabel_temp[]={"高校編號: シ”高校名稱: ”,”聯系電話: シ”高校地址: ”,”確定取消”};if(ShowModuleInput(plabel_temp,5)==(l3+5))(peel(plabel_temp,4);UNI_NODE*puni_node=(UNI_NODE*)malloc(sizeof(UNI_NODE));strcpy(puni_node->uni_id,plabel_temp[0]);strcpy(puni_node->name,plabel_temp[1]);strcpy(puni_node->tel,plabel_temp[2]);strcpy(puni_node->addr,plabel_temp[3]);puni_node->snext=NULL;puni_node->next=NULL;if(SeekUniNode(gp_head,puni_node->uniJd)==NULL)(char*pCh[]={”已經成功錄入山確定”};ShowModule(pCh,2);puni_node->next=gp_head;gp_head=puni_node;)else{char*pCh[ド{"已有該高校信息","確定"};free(puni_node);ShowModule(pCh,2);}}.修改高校信息模塊:算法思想:(1)輸入需要修改的高校編碼(2)讀入需要修改的信息并保存(3)遍歷高校信息鏈表,找到匹配的節點,將保存的信息寫入找的節點的位置函數原型:if(selectnum==2)(char*plabel_tempロ={"輸入高校編號: ","確定 取消"};if(ShowModuIeInput(plabel_temp,2)==(l3+2))(peel(plabel_temp,1);if(SeekUniNode(gp_head,plabel_temp[0])!=NULL)(UNI_NODE*puni_node=SeekUniNode(gp_head,plabel_temp[01);char*ppCh[5];chara[50],b[50],c[50],d[50],*pl="確定取消";sprintf(a,"高校編號:改%-20s”,puni_node->uni_id);sprintf(b,"高校名稱:改%-20s”,puni_node->name);sprintf(c,"聯系電話:改%-20s",puni_node->tel);sprirHf(d,"高校地址:改%-20s”,puni_node->addr);ppCh[0]=a;ppCh[l]=b;ppCh[2]=c;ppCh[3]=d;ppCh[4]=pl;if(ShowModuleInput(ppCh,5)==(13+5))peel(ppCh,4);if(strcmp(ppCh[O],plabel_temp[O])==O)(if(*ppCh[l]!=O)strcpy(puni_node->name,ppCh[1]);if(*ppCh[2]!=0)strcpy(puni_node->tel,ppCh[2]);if(*ppCh[3]!=0)strcpy(puni_node->addr,ppCh[3]);char*pCh[ド{"修改成功","確定"};ShowModule(pCh,2);]else(if(*ppCh[O]!=O)strcpy(puni_node->uni_id,ppChfO]);if(*ppCh[l]!=O)strcpy(puni_node->name,ppCh[1]);if(*ppCh[2]!=0)strcpy(puni_node->tel,ppCh[2]);if(*ppCh[3]!=0)strcpy(puni_node->addr,ppCh[3]);char*pCh[六{"修改成功","確定"};ShowModule(pCh,2);else(char*pChロ={"沒有該高校","確定"};ShowModule(pCh,2);1}}.刪除高校信息模塊:算法思想:(1)輸入需要修改的高校編碼(2)遍歷高校信息鏈表,找到匹配的節點,刪除該接節點函數原型:if(selectnum==3)(char*plabel_temp[]={"輸入高校代碼: ","確定 取消"};if(ShowModuleInput(plabel_temp,2)==(l3+2))(peel(plabel_temp,1);if(SeekUniNode(gp_head,p!abel_temp[0])!=NULL)(if(DeleteUnitype(plabel_temp[O])==TRUE){char*pCh[ド{"刪除成功","確定"};ShowModule(pCh,2);elsechar*pCh[ド{"未知錯誤刪除失敗","確定"};)else{char*pCh[]={"未有此高校信息","確定"};ShowModule(pCh,2);}]]}).查詢高校信息模塊:算法思想:(1)輸入需要查詢的高校信息(2)保存該信息,遍歷高校信息列表,找出與該信息匹配的高校信息節點,并將這些節點保存在另一個鏈表中(3)輸出該鏈表保存的信息函數原型:BOOLQueryUnilnfo(void)(TOC\o"1-5"\h\zchar*plabel_temp[]={ "高校編號: ","高校名稱: ","聯系電話: ","高校地址: ","確定取消"};if(ShowModuleInput(plabel_temp,5)==(l3+5)){UNI_NODE*puninode,*puninodex;peel(plabel_temp,4);inti,a=0,x=0;char*ppch[4],*pch[4];charb[50]="l=";charc[50]="2=";chard[50]="3=";chare[50]="4=";pch[O]=b;pch[l]=c;pch[2]=d;pch[3]=d;fbr(i=0;i<4;i++)(if(*plabel_temp[i]!=O)(strcat(pch[i],plabel_temp[i]);ppch[a]=pch[i];a++;}}switch(a)(case0:{char*pCh⑵產pl二”沒有找到需要的信息”,*pz="確定”;pCh[0]=pl;pCh[l]=pz;ShowModule(pCh,2);retumTRUE;}casel:puninode=SeekUniNodeM(gp_head,a,ppch[0]);break;case2:puninode=SeekUniNodeM(gp_head,a,ppch[0],ppch(l]);break;case3:puninode=SeekUniNodeM(gp_head,a,ppch[0],ppch[l],ppch[2]);break;case4:puninode=SeekUniNodeM(gp_head,a,ppch[0],ppch[l],ppch(2],ppch[3]);break;}if(puninode==NULL)char*pCh⑵,*pl="沒有找到需要的信息",*pz="確定";pCh[O]=pl;pCh[l]=pz;ShowModule(pCh,2);returnTRUE;)for(puninodex=puninode;puninodex!=NULL;puninodex=puninodex->next){x++;)char*pCh[x+2],*pl="高校編號高校名稱聯系電話高校地址",*pz="確定pCh[O]=pl;pCh[x+l]=pz;fbr(i=O;i<x;i++)(pChfi+1]=(char*)malloc(sizeof(char)*l00);sprintf(pCh[i+1],"%-lOs%-1Os%-1Os%-1OsH,puninode->uni_id,puninode->name,puninode->tel,puninode->addr);puninode=puninode->next;)ShowModule(pCh,x+2);8.統計高校信息模塊:算法思想:(1)遍歷高校信息鏈表(2)保存需要的信息在各個變量中(3)對各個變量進行必要的運算并輸出函數原型:BOOLStatUni(void)(BOOLbRet=TRUE;UNI_NODE*pUniNode=gp_head;MAJ_NODE*pMajNode;CLA_NODE*pClaNode;UNI_RANK_NODE*pUniRankNode,*head=NULL,*p1,*p2,*p3,*temp;longnum_maj=0,num_cla=0;doublereal=0;doubleplan=0;inti,count=0;if(pUniNode!=NULL){while(pUniNode!=NULL)(pUniRankNode=(UNI_RANK_NODE*)malloc(sizeof(UNI_RANK_NODE));count++;strcpy(pUniRankNode->uni_id,pUniNode->uni_id);strcpy(pUniRankNode->name,pUniNode->name);pMajNode=pUniNode->snext;while(pMajNode!=NULL)(num_maj++;pClaNode=pMajNode->cnext;while(pClaNode!=NULL)(num_cla++;real+=pClaNode->real;plan+=pClaNode->plan;pClaNode=pClaNode->next;)pMajNode=pMajNode->next;}pUniRankNode->num_maj=num_maj;pUniRankNode->num_cla=num_cla;pUniRankNode->plan=plan;pUniRankNode->reaI=real;num_maj=O;num_cla=O;plan=O;real=O;pUniRankNode->next=head;head=pUniRankNode;pUniNode=pUniNode->next;)pUniRankNode=(UNI_RANK_NODE*)malloc(sizeof(UNI_RANK_NODE));pUniRankNode->next=head;for(i=0;i<count-l;i++)(p1=pUniRankNode;p2=p1->next;p3=p2->next;while(p3!=NULL)(if(p3->num_maj>=p2->num_maj)(p2->next=p3->next;p3->next=p2;pl->next=p3;temp=p2;p2=p3;p3=temp;}p1=p1->next;p2=p2->next;p3=p3->next;head=pUniRankNode->next;char*pCh[count+2],*pl="高校代碼高校名稱專業數量招生信息數量平均年實際數平均年計劃數",*pz="確定";pCh[0]=pl;pCh[count+l]=pz;for(i=0;i<count;i++)(pCh[i+l]=(char*)malloc(sizeof(char)*l00);sprintf(pCh[i+l],n%-lOs%-1Os%-1Old%-1Old%-12.1If%-12.1If;head->uni_id,head->name,head->num_maj,head->num_cla,(head->real)/3,(head->plan)/3);head=head->next;)ShowModule(pCh,count+2);}else(char*pCh[ド{“無髙校錄入,,,”確定”};ShowModule(pCh,2);returnbRet;4系統實現與測試系統實現.本系統是在Windows8(64bit)平臺上開發和運行的,使用CodeBlocks中的GNUGCC編譯器進行編譯的,符合最新C語言標準。.C語言定義各種數據類型如下。/**<高校編號?/**<高校編號?//**<高校名稱?//**<聯系電話?//**<高校地址?/charname[20];chartel[20];charaddr[20];structmaj_node*snext;/*歩〈指向高校信息支鏈的指針ッstructuni_node*next;/**v指向下ー結點的指針?/}UNI_NODE;專業信息鏈結點結構:typedefstructmaj_node{/**<專業編號/**<專業編號?//**<專業名稱*//**〈高校編號?//**<指向專業信息支鏈的指針叼/*?く指向下一結點的指針?/charname[20];charuni_id[3];structcla_node*cnext;structmaj_node*next;}MALNODE;招生信息鏈結點結構:typedefstructcla_node{charmaj_id[12];charnameflO];charyearflO];intplan;intreal;intmax;intmin;structcla_node*next;}CLA_NODE;專業歷史統計信息鏈結點結構:typedefstructmaj_history_node{charname[20];longnum_year;longreal;doublereal_aver;structmaj_history_node*next;}MAJ_HISTORY_NODE;招生統計信息鏈結點結構:typedefstructcla_sum_node{charyear[15];intreal;intplan;structcla_sum_node*next;}CLA_SUM_NODE;高校分類統計信息鏈結點結構:typedefstructuni_rank_node{charuni_id[3];charname[15];/**<專業編號?//**<專業名稱?//**<招生年份?//**<計劃人數?//**<實際人數?//**<最高分數?//**<最低分數*//**<指向下ー結點的指針?//**<專業名稱?//**<招生時長?//**<總人數*//**<每年人數?//**<指向下ー結點的指針?//**<招生年份?//**<實際總人數?//**<計劃總人數?//**<指向下ー結點的指針?//**<高校代碼?//**<高校名稱?/longnum_maj;longnum_cla;doublereal;longnum_maj;longnum_cla;doublereal;doubleplan;/**<專業數量*//**<招生信息數量*//**く平均每年計劃招生數?//**<平均每年實際招生數?/structuni_rank_node*next;/**<指向下ー結點的指針?/}UNI_RANK_NODE;總錄入信息統計信息鏈結點結構:typedefstructsum_node{charuni_id[3];charname[15];charyear[15];structsum_node*next;}SUM_NODE;/**<高校編號?//**<專業名稱*//**<招生年份?//**<指向下ー結點的指針刃//?代碼表加載?//*數據鏈表初始化?//?系統界面初始化?//?清屏?//?顯示菜單欄?//?顯示下拉菜單?//?顯示彈出窗口*/3.系統中所使用的函數說明如下。intLoadCode(char*filename,char**ppbuffer);intCreatList(UNI_NODE**pphead);voidInitlnterface(void);voidClearScreen(void);voidShowMenu(void);voidPopMenu(intnum);voidPopPrompt(intnum);voidPopUp(SMALL_RECT*,WORD,LABEL_BUNDLE*,HOT_AREA*);/?彈出窗口屏幕信息維護?/voidPopOff(void); /?關閉頂層彈出窗口?/voidDrawBox(SMALL_RECT*parea); /?繪制邊框?/voidLocSubMenu(intnum,SMALL_RECT*parea); /?主菜單下拉菜單定位?/voidShowState(void); /?顯示狀態欄?/voidTagMainMenu(intnum); /?標記被選中的主菜單項?/voidTagSubMenu(intnum); /?標記被選中的子菜單項?/
intDealConInput(HOT_AREA*phot_area,int*pihot_num);/?控制臺輸入處理*/voidSetHotPoint(HOT_AREA*phot_area,inthot_num); /?設置熱區?/voidRunSys(UNI_NODE**pphd); /*系統功能模塊的選擇和運行?/BOOLExeFunction(intmain_menu_num,intsub_menu_num);/?功能模塊的調用?/voidCloseSys(UNI_NODE*phd); /*退出系統?/BOOLShowModule(char**pString,intn);BOOLLoadData(void); /*數據加載?/BOOLSaveData(void); /*保存數據?/BOOLBackupData(void); /*備份數據?/BOOLRestoreData(void); /?恢復數據?/BOOLExitSys(void); /?退出系統?/BOOLHelpTopic(void); /*幫助主體?/BOOLAboutUni(void); /?關于系統?/BOOLMaintainUnilnfo(void);BOOLMaintainMajlnfo(void);/?維護高校信息?/?維護高校信息?//?維護專業信息?//?維護招生信息?/BOOLQueryUnilnfo(void);BOOLQueryMajlnfo(void);BOOLQueryClalnfo(void);/?查詢宿舍樓信息?//*查詢學生基本信息?//?查詢繳費信息?///?統計專業熱門度?//?專業分類統計?//?高校信息統計?/BOOLStatMajHistory(void);BOOLStatMajType(void);BOOLStatUni(void);BOOLStatSum(void);voidCharWindow(char*ch,SMALL_RECTp);/?回顯字符?/voidStatNum(char*num);char*mstrcat(char*strq,char*c); /?鏈接函數定義?/BOOLInsertClaNode(CLA_NODE*ps_node);/?插入招生信息結點?/BOOLDelClaNode(UNI_NODE*phd,char*stu_id,char*date);/?刪除招生信息結點?/BOOLDeleteUnitype(char*string); /?刪除高校信息結點?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國電動急救器械行業市場深度分析及發展趨勢與投資研究報告
- 股東協議中的保證金條款
- 食堂品質控制協議
- 2025年中國復方珍珠解毒口服液項目投資可行性研究報告
- 2025年互聯網金融平臺合規整改對投資者信心重建策略研究報告
- 2025年互聯網廣告精準投放算法效果評估與用戶行為分析報告
- 2025年農業綠色發展政策與綠色農業保險技術創新研究報告
- 2025年文化旅游演藝項目文化旅游產業創新政策與產業支持措施報告
- 2025年老年長期照護服務模式在預防失智癥中的應用實踐報告
- 2025年房地產市場區域分化對房地產投資顧問服務的影響報告
- 公司行政服務接待工作培訓
- 2024年江西省高考物理試卷真題(含答案解析)
- 基于單片機的汽車智能照明系統-畢業設計(論文)
- 技術人員外包服務合同(3篇)
- 賽力斯招聘在線測評題
- 《中醫基礎理論》課程教案
- 第十三屆全國交通運輸行業職業技能競賽試題一
- T-CTSS 86-2024 原味茶飲料標準
- 財務管理委托代理會計服務 投標文件(技術方案)
- 體育館項目總體規劃方案
- AQ 1066-2008 煤層瓦斯含量井下直接測定方法(正式版)
評論
0/150
提交評論