畢業(yè)設(shè)計(jì)論文C++球隊(duì)信息管理系統(tǒng)_第1頁
畢業(yè)設(shè)計(jì)論文C++球隊(duì)信息管理系統(tǒng)_第2頁
畢業(yè)設(shè)計(jì)論文C++球隊(duì)信息管理系統(tǒng)_第3頁
畢業(yè)設(shè)計(jì)論文C++球隊(duì)信息管理系統(tǒng)_第4頁
畢業(yè)設(shè)計(jì)論文C++球隊(duì)信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、摘摘 要要 球隊(duì)信息管理系統(tǒng)在 vc6.0 環(huán)境下,用純 c 語言編寫。采用結(jié)構(gòu)化軟件工 程的方法。 ,每個(gè)功能模塊對應(yīng)一個(gè).c 文件和一個(gè)或多個(gè)函數(shù)。有一個(gè) com.c 的文件,其中有 8 個(gè)公用的函數(shù)。 有一個(gè) common.h 的頭文件,有鏈表結(jié)點(diǎn)結(jié)構(gòu)體的定義以及函數(shù)的原型說明,以 及系統(tǒng)數(shù)據(jù)文件存儲路徑。 該系統(tǒng)作為一種一般的數(shù)據(jù)檢索和排序方式,有著較高的實(shí)用價(jià)值。該系 統(tǒng)具有將輸入的數(shù)據(jù)(球員姓名、員工號、薪水、角色等各項(xiàng)基本信息)以文 件形式保存、根據(jù)員工號或者姓名查詢相關(guān)人員的信息、根據(jù)球員姓名和薪水 進(jìn)行排序的功能、能夠統(tǒng)計(jì)出球隊(duì)的人數(shù)及薪水總額等信息,并為用戶提供簡 單易操作

2、的人機(jī)界面。 球隊(duì)信息管理系統(tǒng)實(shí)現(xiàn)對一個(gè)球隊(duì)的各類人員的相關(guān)信息進(jìn)行輸入、輸出、 查詢等操作。能夠通過主界面進(jìn)入到各個(gè)不同的子案例的功能中,并可以正確 實(shí)現(xiàn)各操作,易于使用,提高工作效率,給管理用戶帶來輕松的感受。 球隊(duì)信息管理系統(tǒng) 總控子系統(tǒng) 信息錄入子系統(tǒng) 信息刪除子系統(tǒng) 查詢排序子系統(tǒng) 報(bào)表子系統(tǒng) 退 出 信息統(tǒng)計(jì)模塊 分類匯總模塊 返回 定制報(bào)表模塊 退出 排序模塊 查詢模塊 關(guān)鍵詞:關(guān)鍵詞:c 語言語言 結(jié)構(gòu)化軟件工程結(jié)構(gòu)化軟件工程 流程圖流程圖 功能介紹功能介紹 abstract the information manages system of football team - (

3、timsft) under the environment of vc6.0, writing with the c language. adopt the method that the structure turns the software engineering. each function mold piece to should a document of c and one or several functions .there is document of com.c among them have 8 public functions. there is the protot

4、ype elucidation of the definition and function that the chain watch knot orders the structure body, and saving path of the system data document. timsft is a kind of general data index and the row preface methods, having higher practical value. timsft have to carry on the data about various basic inf

5、ormation of football players name, football players number, salary, role and so on. the importation keeps with the document form, according to employees number or the name searches the related personnel of information. it according to the players name and salary function that lines up the preface. t

6、imsft can statistics the information, such as a number of ball team and the salary total amount and for the man-machine interface that the customer provide to operate in brief and easily. the related information of each kind of personnel of the football team information management system realization

7、 to a football team carries on the importation, outputs and searches. timsft can enter through a main interface in the function of the each different case example, with right carry out each operation. timsft is easy to the use and raise the work efficiency, bring relaxed feeling for the customer. ti

8、msft chief control input information delete informatio select informati report system exit stat. module coolect module exit report module exit taxis module select module keyword: the information manages system of football team the c language software engineering flow chart function introduction 目目 錄

9、錄 第第 1 章章球隊(duì)管理信息系統(tǒng)設(shè)計(jì)球隊(duì)管理信息系統(tǒng)設(shè)計(jì).- 5 - 1.1 需求設(shè)計(jì).- 5 - 1.2 系統(tǒng)結(jié)構(gòu)圖.- 5 - 1.3 系統(tǒng)流程圖.- 7 - 1.3.1 結(jié)點(diǎn)生成流程圖 .- 7 - 1.3.2 轉(zhuǎn)入新的成員流程圖 .- 9 - 1.3.3 排序流程圖 .- 10 - 1.3.4 從文件讀取信息流程圖 .- 11 - 1.3.5 將鏈表寫入文件流程圖 .- 12 - 1.3.6 將鏈表結(jié)點(diǎn)釋放流程圖 .- 13 - 1.3.7 人員轉(zhuǎn)入流程圖 .- 14 - 第第 2 章章球隊(duì)信息管理系統(tǒng)功能說明球隊(duì)信息管理系統(tǒng)功能說明.- 15 - 2.1 系統(tǒng)模塊劃分.- 15 -

10、 2.2 系統(tǒng)功能說明.- 15 - 2.3 子系統(tǒng)功能說明.- 15 - 2.3.1 總控子系統(tǒng).- 15 - 2.3.2 信息錄入子系統(tǒng).- 15 - 2.3.3 信息刪除子系統(tǒng).- 15 - 2.3.4 查詢排序子系統(tǒng).- 16 - 2.3.5 報(bào)表子系統(tǒng).- 16 - 2.4 退出.- 16 - 第第 3 章章球隊(duì)信息管理系統(tǒng)功能演示球隊(duì)信息管理系統(tǒng)功能演示.- 17 - 3.1 列出所有隊(duì)員信息 .- 17 - 3.2 人員轉(zhuǎn)入 .- 18 - 3.3 人員轉(zhuǎn)出 .- 18 - 3.4 按姓名查詢 .- 19 - 3.5 按編號查詢 .- 19 - 3.6 按姓名排序 .- 20 -

11、 3.7 按薪水排序 .- 21 - 第第 4 章章報(bào)表子系統(tǒng)功能說明報(bào)表子系統(tǒng)功能說明.- 22 - 第第 5 章章附:代碼的實(shí)現(xiàn)附:代碼的實(shí)現(xiàn).- 26 - 參考文獻(xiàn)參考文獻(xiàn).- 35 - 致致 謝謝.- 36 - 第第 1 章章球隊(duì)管理信息系統(tǒng)設(shè)計(jì)球隊(duì)管理信息系統(tǒng)設(shè)計(jì) 1.1 需求設(shè)計(jì)需求設(shè)計(jì) 1 轉(zhuǎn)入人員 2 顯示出現(xiàn)在所有人員的全部信息 3 轉(zhuǎn)出人員 4 查詢某位球員的信息(按姓名或按人員編號) 5 按照某個(gè)信息對球隊(duì)各類人員的信息進(jìn)行重新排序:按姓名或按薪水 6 按照規(guī)定實(shí)現(xiàn)某些信息報(bào)表 7 統(tǒng)計(jì)球隊(duì)人員總數(shù)及所有人員的工資總額 8 實(shí)現(xiàn)按角色對各類人員進(jìn)行分類匯總相關(guān)信息 9 由

12、用戶自己隨意確定報(bào)表的輸出形式及內(nèi)容 10 球隊(duì)各類人員的主要信息包括: 編號、姓名、角色、年齡、身高、體重、薪水、加入球隊(duì)日期 1.2 系統(tǒng)結(jié)構(gòu)圖系統(tǒng)結(jié)構(gòu)圖 球隊(duì)信息管理系統(tǒng) 總控子系統(tǒng) 信息錄入子系統(tǒng) 信息刪除子系統(tǒng) 查詢排序子系統(tǒng) 報(bào)表子系統(tǒng) 退 出 信息統(tǒng)計(jì)模塊 分類匯總模塊 返回 定制報(bào)表模塊 退出 排序模塊 查詢模塊 圖圖 1-1 系統(tǒng)結(jié)構(gòu)圖系統(tǒng)結(jié)構(gòu)圖 球隊(duì)人員信息管理系統(tǒng) 列 出 人 員 清 單 人 員 轉(zhuǎn) 入 人 員 轉(zhuǎn) 出 按 姓 名 查 詢 報(bào) 表 子 系 統(tǒng) 按 編 號 查 詢 按 姓 名 排 序 按 薪 水 排 序 退 出 系 統(tǒng) 統(tǒng) 計(jì) 人 員 總 數(shù) 統(tǒng) 計(jì) 薪 水

13、 總 額 按 角 色 匯 總 定 制 報(bào) 表 返 回 上 級 菜 單 退 出 系 統(tǒng) 球隊(duì)人員信息管理系統(tǒng) 系統(tǒng)結(jié)構(gòu)圖 圖 1-2 系統(tǒng)結(jié)構(gòu)圖 1.3 系統(tǒng)流程圖系統(tǒng)流程圖 1.3.1 結(jié)點(diǎn)生成流程圖結(jié)點(diǎn)生成流程圖 調(diào)用malloc函數(shù)向系統(tǒng)申請一個(gè)結(jié)點(diǎn)的空間 申請成功? next域賦值為null 是 給新結(jié)點(diǎn)的其它數(shù)據(jù)域賦值 否返回結(jié)點(diǎn)的指針 開始 結(jié)束 圖圖 1-3 系統(tǒng)流程圖系統(tǒng)流程圖 1.3.2 轉(zhuǎn)入新的成員流程圖轉(zhuǎn)入新的成員流程圖 調(diào)用malloc函數(shù)向系統(tǒng)申請一個(gè)結(jié)點(diǎn)的空間 申請成功? next域賦值為null 是 輸入編號(確認(rèn)編號在鏈表中不存在,并且是合 法有效的,然后再賦值給

14、編號域) 否 輸入姓名(確認(rèn)姓名輸入有效,然后再賦值給姓 名域) 輸入角色、年齡、身高、體重、薪水等,并確 認(rèn)數(shù)據(jù)的合法性 輸入加入球隊(duì)的日期,并對輸入的日期進(jìn)行較 完備的數(shù)據(jù)校驗(yàn) 返回結(jié)點(diǎn)的指針 開始 結(jié)束 圖圖 1-4 系統(tǒng)流程圖系統(tǒng)流程圖 1.3.3 排序流程圖排序流程圖 定 定位 位指 指針 針q和 和p賦 賦值 值: : q=head; p=head-next; 結(jié) 結(jié)束 束 style的 的值 值為 為多 多少 少? ? (用 用switch語 語句 句) 按 按姓 姓名 名升 升序 序查 查找 找插 插入 入位 位置 置 如 如果 果未 未找 找到 到, ,指 指針 針p和 和q

15、同 同 步 步向 向后 后移 移動 動 style=1 按 按姓 姓名 名降 降序 序查 查找 找插 插入 入位 位置 置 如 如果 果未 未找 找到 到, ,指 指針 針p和 和q同 同步 步向 向 后 后移 移動 動 style=2 按 按薪 薪水 水升 升序 序查 查找 找插 插入 入位 位置 置 如 如果 果未 未找 找到 到, ,指 指針 針p和 和q同 同 步 步向 向后 后移 移動 動 style=3 按 按薪 薪水 水降 降序 序查 查找 找插 插入 入位 位置 置 如 如果 果未 未找 找到 到, ,指 指針 針p和 和q同 同步 步 向 向后 后移 移動 動 style=4

16、 默 默認(rèn) 認(rèn)按 按編 編號 號升 升序 序查 查找 找插 插入 入位 位置 置 如 如果 果未 未找 找到 到, ,指 指針 針p和 和q同 同步 步向 向 后 后移 移動 動 style=其 其他 他 將 將等 等插 插入 入結(jié) 結(jié)點(diǎn) 點(diǎn)插 插入 入到 到鏈 鏈表 表中 中: : (1) newnode-next = p; (2) q-next = newnode; 返 返回 回鏈 鏈表 表的 的頭 頭指 指針 針head 開 開始 始 圖 1-5 系統(tǒng)流程圖 1.3.4 從文件讀取信息流程圖從文件讀取信息流程圖 以以rb形形式式打打開開一一個(gè)個(gè)文文件件 結(jié)結(jié)束束 是是 開開始始 文文件件

17、是是否否存存在在? 創(chuàng)創(chuàng)建建一一個(gè)個(gè)新新文文件件,并并打打開開它它 申申請請新新的的頭頭結(jié)結(jié)點(diǎn)點(diǎn),并并將將next域域賦賦值值為為null 否否 是是 申申請請一一個(gè)個(gè)新新的的結(jié)結(jié)點(diǎn)點(diǎn)空空間間,并并將將next域域賦賦值值為為null 從從文文件件中中讀讀取取一一個(gè)個(gè)結(jié)結(jié)構(gòu)構(gòu)體體結(jié)結(jié)點(diǎn)點(diǎn)信信息息到到新新結(jié)結(jié)點(diǎn)點(diǎn)中中 調(diào)調(diào)用用insert函函數(shù)數(shù),將將新新結(jié)結(jié)點(diǎn)點(diǎn)插插入入到到鏈鏈表表中中 是是否否讀讀取取到到文文件件的的末末尾尾? 關(guān)關(guān)閉閉文文件件 返返回回頭頭指指針針head 從從文文件件中中讀讀取取一一個(gè)個(gè)結(jié)結(jié)構(gòu)構(gòu)體體結(jié)結(jié)點(diǎn)點(diǎn)信信息息到到新新結(jié)結(jié)點(diǎn)點(diǎn)中中 調(diào)調(diào)用用insert函函數(shù)數(shù),將將新

18、新結(jié)結(jié)點(diǎn)點(diǎn)插插入入到到鏈鏈表表中中 否否 圖 1-6 信息流程圖 1.3.5 將鏈表寫入文件流程圖將鏈表寫入文件流程圖 開開始始 結(jié)結(jié)束束 以以wb形形式式打打開開待待寫寫入入的的文文件件 頭頭指指針針是是否否為為null? 提提示示無無數(shù)數(shù)據(jù)據(jù),并并 返返回回 是是 否否 指指針針指指向向第第一一個(gè)個(gè)有有效效的的數(shù)數(shù)據(jù)據(jù)結(jié)結(jié)點(diǎn)點(diǎn) 結(jié)結(jié)點(diǎn)點(diǎn)指指針針是是否否為為null? 將將當(dāng)當(dāng)前前結(jié)結(jié)點(diǎn)點(diǎn)信信息息寫寫入入到到文文件件中中 指指針針移移動動到到下下一一個(gè)個(gè)數(shù)數(shù)據(jù)據(jù)結(jié)結(jié)點(diǎn)點(diǎn) 否否 關(guān)關(guān)閉閉文文件件 是是 圖 1-7 文件流程圖 1.3.6 將鏈表結(jié)點(diǎn)釋放流程圖將鏈表結(jié)點(diǎn)釋放流程圖 定定義義指指針

19、針q指指向向head,指指針針p指指向向q的的下下 一一個(gè)個(gè)結(jié)結(jié)點(diǎn)點(diǎn) 結(jié)結(jié)點(diǎn)點(diǎn)指指針針p是是否否為為null? 釋釋放放結(jié)結(jié)點(diǎn)點(diǎn)q 將將指指針針q指指向向p,將將p指指向向p的的下下一一個(gè)個(gè)結(jié)結(jié)點(diǎn)點(diǎn) 否否 開開始始 結(jié)結(jié)束束 釋釋放放結(jié)結(jié)點(diǎn)點(diǎn)q 是是 圖 1-8 流程圖 1.3.7 人員轉(zhuǎn)入流程圖人員轉(zhuǎn)入流程圖 開開始始 是是否否添添加加新新人人員員? 生生成成一一個(gè)個(gè)新新結(jié)結(jié)點(diǎn)點(diǎn)(調(diào)調(diào)用用newnode) 是是 將將新新結(jié)結(jié)點(diǎn)點(diǎn)插插入入到到鏈鏈表表中中(調(diào)調(diào)用用 insert) 將將新新鏈鏈表表寫寫入入到到文文件件中中 否否 在在屏屏幕幕上上顯顯示示整整個(gè)個(gè)新新的的鏈鏈表表 結(jié)結(jié)束束 圖 1

20、-9 流程圖 1.3.8 人員轉(zhuǎn)出流程圖人員轉(zhuǎn)出流程圖 開開始始 是是否否到到達(dá)達(dá)鏈鏈表表末末尾尾 (p=null?) 輸輸入入要要刪刪除除人人員員的的編編號號 初初始始化化指指針針:q=head; p = q-next; 比比較較查查找找編編號號是是否否存存在在,如如果果存存在在則則 刪刪除除,否否則則繼繼續(xù)續(xù)后后移移,再再進(jìn)進(jìn)行行查查找找 將將刪刪除除結(jié)結(jié)點(diǎn)點(diǎn)后后的的鏈鏈表表重重新新寫寫入入 到到文文件件中中 結(jié)結(jié)束束 否否 將將刪刪除除結(jié)結(jié)點(diǎn)點(diǎn)后后的的鏈鏈表表顯顯示示到到屏屏 幕幕上上 圖 1-10 流程圖 第第 2 章章 球隊(duì)信息管理系統(tǒng)功能說明球隊(duì)信息管理系統(tǒng)功能說明 2.1 系統(tǒng)模

21、塊劃分系統(tǒng)模塊劃分 球隊(duì)信息管理系統(tǒng) 總控子系統(tǒng) 信息錄入子系統(tǒng) 信息刪除子系統(tǒng) 查詢排序子系統(tǒng) 報(bào)表子系統(tǒng) 退 出 信息統(tǒng)計(jì)模塊 分類匯總模塊 返回 定制報(bào)表模塊 退出 排序模塊 查詢模塊 圖 2-1 系統(tǒng)模塊圖 2.2 系統(tǒng)功能說明系統(tǒng)功能說明: 本系統(tǒng)實(shí)現(xiàn)對一個(gè)球隊(duì)隊(duì)員的基本信息的管理,主要有列出所有隊(duì)員清單、 添加一個(gè)隊(duì)員信息、刪除一個(gè)隊(duì)員信息、隊(duì)員信息排序、隊(duì)員信息查詢、隊(duì)員 信息統(tǒng)計(jì)、分類匯總、定制報(bào)表等功能。 2.3 子系統(tǒng)功能說明子系統(tǒng)功能說明 2.3.1 總控子系統(tǒng)總控子系統(tǒng) 本子系統(tǒng)功能包括系統(tǒng)菜單的輸出、系統(tǒng)主要流程的控制。 2.3.2 信息錄入子系統(tǒng)信息錄入子系統(tǒng) 本子

22、系統(tǒng)功能包括結(jié)構(gòu)體類型定義、數(shù)據(jù)文件存儲路徑定義、讀寫文件、插 入法創(chuàng)建有序鏈表、遍歷輸出鏈表等公共模塊,還有新建一個(gè)結(jié)點(diǎn)并錄入該結(jié) 點(diǎn)各項(xiàng)數(shù)據(jù)、數(shù)據(jù)輸入格式驗(yàn)證等。 2.3.3 信息刪除子系統(tǒng)信息刪除子系統(tǒng) 本子系統(tǒng)功能是從鏈表中刪除用戶指定的結(jié)點(diǎn)信息,并將結(jié)果保存到文件。 2.3.4 查詢排序子系統(tǒng)查詢排序子系統(tǒng) 本字系統(tǒng)功能包括兩個(gè)模塊,一個(gè)是查詢,包括按編號查詢和按姓名查詢; 還有一個(gè)是排序,包括按姓名排序和按月薪排序,其中升序還是降序排序由用 戶從鍵盤輸入。 2.3.5 報(bào)表子系統(tǒng)報(bào)表子系統(tǒng) 本子系統(tǒng)包括五個(gè)模塊。 2.3.5.1 信息統(tǒng)計(jì)模塊信息統(tǒng)計(jì)模塊 有統(tǒng)計(jì)球隊(duì)隊(duì)員人數(shù)和統(tǒng)計(jì)球

23、隊(duì)月薪總額兩個(gè)功能。 2.3.5.2 分類匯總模塊分類匯總模塊 按角色分類匯總并輸出隊(duì)員的所有信息。 2.3.5.3 定制報(bào)表模塊定制報(bào)表模塊 由用戶選擇輸入需要輸出的字段、各字段輸出的順序,然后按照用戶的定 制要求輸出所有隊(duì)員的信息。 2.3.5.4 返回上級菜單返回上級菜單 返回到主菜單 2.3.5.5 退出退出 終止程序運(yùn)行 2.4 退出退出: 終止程序運(yùn)行 第第 3 章章 球隊(duì)信息管理系統(tǒng)功能演示球隊(duì)信息管理系統(tǒng)功能演示 圖 3-1 運(yùn)行效果圖 3.1 列出所有隊(duì)員信息列出所有隊(duì)員信息 默認(rèn)按編號升序列出默認(rèn)按編號升序列出 圖 3-2 運(yùn)行效果 3.2 人員轉(zhuǎn)入人員轉(zhuǎn)入(新增人員)(新

24、增人員) 輸入信息時(shí)有一定程度的容錯(cuò)處理輸入信息時(shí)有一定程度的容錯(cuò)處理 圖 3-3 運(yùn)行效果 3.3 人員轉(zhuǎn)出人員轉(zhuǎn)出(刪除人員)(刪除人員) 執(zhí)行完畢后將從文件中物理刪除該人員數(shù)據(jù)執(zhí)行完畢后將從文件中物理刪除該人員數(shù)據(jù) 圖 3-4 運(yùn)行效果 3.4 按姓名查詢按姓名查詢 圖 3-5 運(yùn)行效果 3.5 按編號查詢按編號查詢 圖 3-6 運(yùn)行效果 3.6 按姓名排序按姓名排序 可以由用戶選擇升序還是降序??梢杂捎脩暨x擇升序還是降序。 圖 3-7 運(yùn)行效果 3.7 按薪水排序按薪水排序 可以由用戶選擇升序還是降序??梢杂捎脩暨x擇升序還是降序。 圖 3-8 運(yùn)行效果 第第 4 章章 報(bào)表子系統(tǒng)功能說

25、明報(bào)表子系統(tǒng)功能說明 圖 4-1 報(bào)表子系統(tǒng) 4.1 統(tǒng)計(jì)球隊(duì)人員總數(shù)統(tǒng)計(jì)球隊(duì)人員總數(shù) 圖 4-2 運(yùn)行效果 4.2 統(tǒng)計(jì)球隊(duì)薪水總額統(tǒng)計(jì)球隊(duì)薪水總額 圖 4-3 運(yùn)行效果 4.3 按角色分類匯總輸出報(bào)表按角色分類匯總輸出報(bào)表 圖 4-4 運(yùn)行效果 4.4 用戶定制報(bào)表用戶定制報(bào)表 圖 4-5 運(yùn)行效果 第第 5 章章 代碼代碼 5.1menu.c 文件文件 #include common.h void showmenu() printf(-n); printf( 球隊(duì)管理系統(tǒng) n); printf(-n); printf(* 1. 列出人員清單 *n); printf(* 2. 人員轉(zhuǎn)入 *

26、n); printf(* 3. 人員轉(zhuǎn)出 *n); printf(* 4. 按姓名查詢 *n); printf(* 5. 按編號查詢 *n); printf(* 6. 按姓名排序 *n); printf(* 7. 按薪水排序 *n); printf(* 8. 報(bào)表子系統(tǒng) *n); printf(* 0. 退出系統(tǒng) *n); printf(-n); printf(-n); 5.2 common.h 文件文件 #include #include #include #include struct date int year; int month; int day; ; typedef struct

27、mem char number10; char name20; int role; int age; float high; float weight; float salary; struct date joindate; /加入球隊(duì)的日期 struct mem *next; member; extern char * roleset4; #define filename c:team.dat/存儲數(shù)據(jù)的文件的路徑 void showmenu(); void showall(member *head); void addmember(member *head); member * newno

28、de(member *head); member * insert(member *head,member *newnode,int style); void list(member *head); void writetofile(member *head); member * loadfromfile(int); 5.3 showall.c 文件文件 #include common.h /* 函數(shù)名:showall 函數(shù)功能:遍歷鏈表輸出所有數(shù)據(jù) */ void showall(member *head) list(head); printf(n 數(shù)據(jù)顯示完畢!nn); 5.4 addme

29、nber.c 文件文件 #include common.h void addmember(member *head) char flag;/是否添加新隊(duì)員 while(1) printf(要添加一個(gè)新隊(duì)員嗎? y/nn); flag=getche(); if(flag=n|flag=n)/不再加入新隊(duì)員 break; else if(flag=y|flag=y) member * newnod = newnode(head); insert(head,newnod,0);/printf(新結(jié)點(diǎn)被插入到鏈表中n); /end of if else printf(n 輸入不正確!請重新選擇!n);

30、 /end of while writetofile(head);/printf(n 新鏈表被寫入文件n); list(head);/printf(輸出鏈表n); printf(新增隊(duì)員結(jié)束!nn); 5.5 com.c 文件文件 #include common.h member * newnode(member *head) member * newnode= (member *)malloc(sizeof(member); float tmp; char tmpdate10; if(newnode=null) return null;/申請內(nèi)存失敗 newnode-next = null;

31、 /*以下從鍵盤為新節(jié)點(diǎn)賦值*/ do printf(n 請輸入新隊(duì)員編號:n); gets(newnode-number); if(strlen(newnode-number)=0)/ 輸入不能為空串 continue; /if(unique(head,newnode-number)=1)/驗(yàn)證編號的唯一性 /break; else break; /printf(所輸入的編號已經(jīng)存在,請重新輸入!n); while(1); printf(請輸入新隊(duì)員姓名:n); while(strlen(gets(newnode-name)=0)/ 輸入不能為空串 printf(請重新輸入新隊(duì)員姓名:n);

32、 continue; printf(請輸入新隊(duì)員角色(0-前鋒 1-中場 2-后衛(wèi) 3-守門員):n);/暫時(shí) 沒有考慮輸入 03 之外的數(shù)據(jù)的容錯(cuò)性 while(1) while(scanf(%d,/跳到行輸入緩沖區(qū)下一個(gè)空白字符 printf(請重新輸入角色!n); if(newnode-role=0/跳到行輸入緩沖區(qū)下一個(gè)空白字符 printf(請重新輸入年齡!n); printf(請輸入新隊(duì)員身高(單位:厘米):n);/輸入不是f 格式,需要重新輸 入 while(scanf(%f,/跳到行輸入緩沖區(qū)下一個(gè)空白字符 printf(請重新輸入身高!n); newnode-high=tmp

33、; printf(請輸入新隊(duì)員體重(單位:公斤):n); while(scanf(%f,/跳到行輸入緩沖區(qū)下一個(gè)空白字符 printf(請重新輸入體重!n); newnode-weight=tmp; printf(請輸入新隊(duì)員薪水(單位:人民幣元/月):n); while(scanf(%f,/跳到行輸入緩沖區(qū)下一個(gè)空白字符 printf(請重新輸入薪水!n); newnode-salary=tmp; while(getchar()!=n)/清空行輸入緩沖區(qū) continue; do printf(請輸入新隊(duì)員加入日期(使用半角字符,格式:yymmdd): n); gets(tmpdate);

34、/if(checkdate(newnode, tmpdate)=1) break; while(1); return newnode;/返回新節(jié)點(diǎn)的指針 /* 函數(shù)名:insert 函數(shù)功能:將新結(jié)點(diǎn) newnode 插入到鏈表 head 中,按指定的排序方式 style 插 入,默認(rèn)按編號升序插入 style=1,按姓名升序排序 style=2,按姓名降序排序 style=3,按薪水升序排序 style=4,按薪水升序排序 style=其他,按編號升序排序 */ member * insert(member *head,member *newnode,int style) member *p

35、,*q; q=head; p=head-next; switch(style) case 1:/按姓名升序插入 while(p!=null)/找到插入點(diǎn),在 p 與 q 之間插入 if(strcmp(p-name ,newnode-name) next; q=q-next; else break; break; case 2:/按姓名降序插入 while(p!=null)/找到插入點(diǎn),在 p 與 q 之間插入 if(strcmp(p-name ,newnode-name) 0)/按姓名降序插入 p=p-next; q=q-next; else break; break; case 3:/按薪水

36、升序插入 while(p!=null)/找到插入點(diǎn),在 p 與 q 之間插入 if(p-salary salary)/按薪水升序插入 p=p-next; q=q-next; else break; break; case 4:/按薪水降序插入 while(p!=null)/找到插入點(diǎn),在 p 與 q 之間插入 if(p-salary newnode-salary)/按薪水降序插入 p=p-next; q=q-next; else break; break; default:/默認(rèn),按編號升序插入 while(p!=null)/找到插入點(diǎn),在 p 與 q 之間插入 if(strcmp(p-num

37、ber ,newnode-number) next; q=q-next; else break; break; /end of switch q-next = newnode; newnode-next = p; return head; /* 函數(shù)名:list 函數(shù)功能:從文件讀入數(shù)據(jù),形成鏈表,并遍歷鏈表輸出所有數(shù)據(jù) */ void list(member *head) member*p; int count=0; p=head-next; printf(n%3s%8s%15s%13s%4s%8s%8s%8s%12snn,id,number,name, role,age,high,weig

38、ht,salary,joindate); while(p!=null)/遍歷輸出鏈表 printf(%3d%8s%15s%13s%4d%8.2f%8.2f%8.2f%5d-%2d- %2dn,count+1,p-number,p-name,rolesetp-role,p-age,p-high,p-weight,p- salary,p-joindate.year,p-joindate.month,p-joindate.day); count+; if(count%20=0)/分屏顯示,每輸出 20 條記錄暫停 getch(); p=p-next; /* 函數(shù)名:loadfromfile 函數(shù)功能

39、:從文件中把數(shù)據(jù)全部讀出,用插入法生成鏈表并返回頭指針 head */ member * loadfromfile(int style) member *head,*node; file *fp = fopen(filename,rb); if(fp=null)/文件還不存在,無法打開 char c; printf(文件打開錯(cuò)誤或文件不存在!n); printf(需要新建一個(gè)文件嗎?(y/n)n); c=getche(); if(c=y|c=y) fp=fopen(filename,wb); fclose(fp); fp=fopen(filename,rb); else printf(nn 程序即將結(jié)束!n); exit(1);/程序終止運(yùn)行 head=(member*)(malloc(sizeo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論