




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 ?軟件工程課程設(shè)計?報告 員工信息管理系統(tǒng) 2021/2021學(xué)年 第一學(xué)期2021年12月09日目錄第一章 系統(tǒng)概述11.1 編寫目的11.2 選題背景及意義11.3 說明性定義1第二章 系統(tǒng)概述22.1 系統(tǒng)目標(biāo)22.2 運(yùn)行環(huán)境22.3 需求分析22.3.1 功能需求22.3.2 性能需求52.3.3 系統(tǒng)集成需求5第三章 信息管理系統(tǒng)總體設(shè)計63.1 編寫目的63.2 模塊定義63.2.1 錄入信息模塊63.2.2 查詢信息模塊63.2.3 刪除信息模塊63.2.4 修改信息模塊73.2.5 文件導(dǎo)入導(dǎo)出模塊73.2.6 打印信息模塊73.2.7 退出系統(tǒng)7第四章 系統(tǒng)物理結(jié)構(gòu)84.
2、1 系統(tǒng)流程圖84.2 用戶界面設(shè)計9第五章 系統(tǒng)詳細(xì)設(shè)計105.1 編寫目的105.2 系統(tǒng)描述105.3 數(shù)據(jù)庫設(shè)計105.4 程序的類設(shè)計11第六章 信息管理系統(tǒng)編碼實(shí)現(xiàn)126.1 系統(tǒng)界面實(shí)現(xiàn)126.2 編碼實(shí)現(xiàn)16結(jié)束語17參考文獻(xiàn)18附錄:程序清單19第一章 系統(tǒng)概述1.1 編寫目的明確該系統(tǒng)的軟件需求,搞清該系統(tǒng)的數(shù)據(jù)流向和數(shù)據(jù)結(jié)構(gòu),為設(shè)計階段做好準(zhǔn)備。確定系統(tǒng)功能,設(shè)計時應(yīng)遵循的原那么,約束條件及性能等要求。和用戶明確需求內(nèi)容,撰寫需求規(guī)格說明。1.2 選題背景及意義隨著企業(yè)信息蓬勃開展,各種信息的分類、管理顯得尤為重要,為不斷提高管理水平,單獨(dú)對企業(yè)的員工信息進(jìn)行管理。員工信
3、息管理就是對企業(yè)員工情況的全方位管理,它關(guān)系到企業(yè)的平穩(wěn)開展與壯大。由于企業(yè)從小型規(guī)模往大開展,不斷增加與擴(kuò)大業(yè)務(wù)規(guī)模,不斷招納人才,因此員工信息管理的工作量和工作難度增大,手工方式管理文件檔案已不能滿足提高管理水平的需要,而且隨著時間的推移,將會積累大量的員工檔案和數(shù)據(jù),手工方式的查詢、修改和維護(hù)檔案和數(shù)據(jù)會變得非常困難。我們所需的員工信息管理系統(tǒng)有下特點(diǎn):要保證信息庫是平安的,保證數(shù)據(jù)一致性擁有友好的用戶界面,能方便用戶使用;完整的添加,查詢,修改,刪除等維護(hù)系統(tǒng),起到計算機(jī)輔助管理的作用;員工信息管理系統(tǒng)的存在為管理人員提供了簡單、準(zhǔn)確、快捷、高效的資源效勞。因此,開發(fā)管理信息系統(tǒng)是一項(xiàng)
4、急需的工作。 說明性定義員工信息管理系統(tǒng)是一套幫助企業(yè)管理人員完成對員工從入職到離職的所有數(shù)據(jù)用計算機(jī)進(jìn)行輔助管理的信息系統(tǒng)。第二章 系統(tǒng)概述2.1 系統(tǒng)目標(biāo)A 為了員工信息管理更完善;B 企業(yè)人事部對員工的管理更方便;C 提高自己的動手編程能力。2.2 運(yùn)行環(huán)境硬件:奔騰四處理器及以上,內(nèi)存最低1G。軟件:Ubuntu Linux系統(tǒng)。2.3 需求分析 員工信息管理系統(tǒng)使企業(yè)對員工管理更加方便,提升了企業(yè)對員工管理的能力和品質(zhì)。使員工管理中數(shù)據(jù)量過多,數(shù)據(jù)收集復(fù)雜,數(shù)據(jù)回饋過慢,數(shù)據(jù)出錯率高的問題不復(fù)存在。劃分員工信息管理系統(tǒng)的各功能模塊,對各項(xiàng)功能進(jìn)行描述,并對數(shù)據(jù)需求、性能需求、系統(tǒng)集成
5、需求進(jìn)行描述。 功能需求 A. 模塊劃分 企業(yè)可以通過系統(tǒng)錄入員工的信息,刪除信息、修改信息、查詢信息。系統(tǒng)還需實(shí)現(xiàn)講信息從文件導(dǎo)入與導(dǎo)出到文件。該系統(tǒng)可以打印員工信息,退出系統(tǒng)時,保存所有數(shù)據(jù)。B. 系統(tǒng)功能系統(tǒng)的主要功能如下: a. 根本信息管理模塊:員工根本信息包括編號、姓名、性別、身份證號、生日、籍貫、學(xué)歷、地址、 、工齡以及薪水。通過該功能模塊,將信息錄入,系統(tǒng)管理員工的信息。b. 員工信息查詢模塊: 此模塊實(shí)現(xiàn)多種條件查詢,如根據(jù)姓名、身份證號查詢單人信息。根據(jù)籍貫、年齡段查詢多人信息。c. 刪除信息模塊:通過多種信息提供方式刪除一條或多條信息。d. 修改信息:如上所述,可通過多種
6、方式找到所需用戶,對其信息進(jìn)行修改。e. 從文件導(dǎo)入、導(dǎo)出:員工的詳細(xì)信息可以從文件導(dǎo)入系統(tǒng),方便批量管理。也可以講系統(tǒng)中的信息數(shù)據(jù)導(dǎo)出到文件,作為備份。f. 打印信息:通過用戶的操作,對信息的查找結(jié)果,信息列表進(jìn)行打印。e. 退出系統(tǒng):系統(tǒng)應(yīng)具有良好的退出程序,退出系統(tǒng)保存所有數(shù)據(jù),防止數(shù)據(jù)喪失。C. 數(shù)據(jù)需求 a. 數(shù)據(jù)流圖數(shù)據(jù)流圖描述了系統(tǒng)中數(shù)據(jù)從輸入到輸出變換的過程?,F(xiàn)將員工信息管理系統(tǒng)數(shù)據(jù)流向數(shù)據(jù)流圖表示如圖2.1。b. 數(shù)據(jù)字典數(shù)據(jù)字典是關(guān)于數(shù)據(jù)信息的集合,也就是對數(shù)據(jù)流圖中包含的元素的定義的集合,它能夠供人查閱對不了解的條目的解釋。信息的錄入員工信息表用戶操作顯示打印員工信息存儲
7、圖2.1 系統(tǒng)數(shù)據(jù)流圖名字:員工信息描述:員工的根本情況定義:員工根本信息 = 員工編號 + 員工姓名 + 性別 + 生日 + 籍貫 + 學(xué)歷 + 地址 + + 工齡 + 薪水位置:員工根本信息表圖2.2 數(shù)據(jù)字典 c. 用例圖員工檔案錄入及維護(hù)各類信息查詢、排序登錄系統(tǒng)新生圖2.3 用例圖2.3.2 性能需求 A. 員工信息管理系統(tǒng)使用簡單、方便、人性化設(shè)計。B. 本系統(tǒng)采用多層架構(gòu)設(shè)計,使系統(tǒng)結(jié)構(gòu)更清楚,分工更明確,有利于后期的維護(hù)。C. 系統(tǒng)程序應(yīng)該精簡,減少數(shù)據(jù)冗余,提高運(yùn)行效率。D. 界面的設(shè)計應(yīng)該以用戶為中心,簡潔,美觀,容易使用。E. 用戶界面的風(fēng)格保持一致,使用戶使用起來方便上
8、手。2.3.3 系統(tǒng)集成需求 A. 各子模塊的集成 員工信息管理系統(tǒng)由各個子模塊結(jié)合而成。在程序的運(yùn)行過程中,各個模塊能夠相互交換數(shù)據(jù),進(jìn)行信息處理。 B. 軟件接口 本信息管理系統(tǒng)采用Linux平臺下C語言編程、以文件作為數(shù)據(jù)平臺,除了導(dǎo)入導(dǎo)出數(shù)據(jù)信息外,無其他的連接。第三章 信息管理系統(tǒng)總體設(shè)計3.1 編寫目的A 掌握系統(tǒng)總體結(jié)構(gòu)的設(shè)計;B 掌握系統(tǒng)接口設(shè)計,數(shù)據(jù)結(jié)構(gòu)設(shè)計;C 掌握系統(tǒng)總體設(shè)計的步驟和方法。3.2 模塊定義各模塊的根本功能描述如下: 3.2.1 錄入信息模塊系統(tǒng)運(yùn)行后,可以通過兩種方式與外界進(jìn)行數(shù)據(jù)交換,一種是直接錄入,用戶通過鍵盤的輸入來添加新員工的管理數(shù)據(jù)內(nèi)容;另一種是
9、通過文件導(dǎo)入的方式將數(shù)據(jù)添加到系統(tǒng)中,這是另一個模塊。在這里,我們要考慮的是如何讓用戶能夠高效,簡便的錄入信息,錄入的內(nèi)容能夠被系統(tǒng)識別,而不是垃圾信息??刂坪脭?shù)據(jù)的格式與數(shù)據(jù)類型,讓其能夠區(qū)分哪一條錄入的是哪個個信息,不會出現(xiàn)偏差。同時做好出錯處理,比方:輸入生日,防止出現(xiàn)非數(shù)字的數(shù)據(jù)。3.2.2 查詢信息模塊員工信息管理系統(tǒng)提供的更多的功能是管理,如何快速、有效、方便的管理,是我們所追求的,也是企業(yè)需要的。查詢信息要做到方便、高效,就要做多種查詢方式,根據(jù)姓名查詢,根據(jù)性別分類查詢,根據(jù)年齡段做查詢,這樣有利于用戶根據(jù)的信息快速找出索要找的對象,再繼續(xù)做深一步的處理。3.2.3 刪除信息模
10、塊 該模塊主要是對離職員工、無用信息、錯誤的信息進(jìn)行刪除處理。刪除、首先是要明確刪除哪條信息,在確定該條信息的為之前,還是得先查找到,因此,該模塊是建立在查詢信息模塊之上,調(diào)用該功能前,借助查詢信息模塊找到要刪除的信息,然后做刪除操作。3.2.4 修改信息模塊該模塊同刪除信息模塊類似,修改之前同樣要通過查詢,找到要修改的記錄,然后做相應(yīng)的修改操作。3.2.5 文件導(dǎo)入導(dǎo)出模塊該模塊的主要功能是輔助系統(tǒng)的可用性與平安性。為方便員工信息的管理,系統(tǒng)的文件導(dǎo)出,可以將系統(tǒng)內(nèi)存儲的數(shù)據(jù)導(dǎo)出到文件,方便拷貝或作為備份。導(dǎo)入那么可以將批量的信息插入到系統(tǒng)的數(shù)據(jù)中,方便批量的管理與操作,給系統(tǒng)帶來一定的靈活
11、性。3.2.6 打印信息模塊該模塊為顯示信息提供一個可視的渠道,用戶查找到的信息,批量處理信息,調(diào)出來的局部信息,都可以打印出來,方便觀看,操作。3.2.7 退出系統(tǒng)該模塊處理系統(tǒng)的退出工作。一個好系統(tǒng)有開始,就有結(jié)束,結(jié)束系統(tǒng)的生命之前,要做好退出保存工作,處理好與客戶的交互,保存好數(shù)據(jù)記錄,防止喪失數(shù)據(jù)等平安事件的發(fā)生。第四章 系統(tǒng)物理結(jié)構(gòu)4.1 系統(tǒng)流程圖管理系統(tǒng)用戶交互錄入信息查詢信息刪除信息修改信息導(dǎo)入導(dǎo)出打印信息退出系統(tǒng)圖4.1 員工管理系統(tǒng)流程圖在設(shè)計該系統(tǒng)時,考慮到模塊的復(fù)用,充分利用開發(fā)好的模塊,積累成果和知識經(jīng)驗(yàn),開發(fā)新的模塊,防止軟件開發(fā)中的重復(fù)勞動。模塊復(fù)用可降低軟件測
12、試過程的難度,提高系統(tǒng)的穩(wěn)定性,因此,在設(shè)計時將可以復(fù)用的地方進(jìn)行整合,形成架構(gòu)如圖4.2所示。系統(tǒng)外部應(yīng)用錄入信息導(dǎo)入導(dǎo)出打印信息退出系統(tǒng)查詢刪除修改圖4.2 模塊結(jié)構(gòu)圖4.2 用戶界面設(shè)計本系統(tǒng)使用的界面文字精練,為用戶提供有效的使用保證。并且用戶界面直觀,易于操作,使得用戶能夠方便使用系統(tǒng)。第五章 系統(tǒng)詳細(xì)設(shè)計5.1 編寫目的在邏輯上實(shí)現(xiàn)每個模塊的功能,對每個模塊的實(shí)現(xiàn)細(xì)節(jié)和數(shù)據(jù)結(jié)構(gòu)進(jìn)行分析設(shè)計,并對各個子模塊功能加以詳細(xì)描述。當(dāng)前工作是系統(tǒng)模塊流程實(shí)現(xiàn)的細(xì)節(jié)局部,是系統(tǒng)構(gòu)建的必要環(huán)節(jié)。5.2 系統(tǒng)描述本系統(tǒng)分為輸入、輸出、查詢、修改、刪除、導(dǎo)入導(dǎo)出、打印等功能,各種操作的最終對象都是員
13、工的信息數(shù)據(jù),因此設(shè)計好數(shù)據(jù)存儲方法,便于操作即可,因此將列出數(shù)據(jù)存儲,運(yùn)行的格式。5.3 數(shù)據(jù)庫設(shè)計表5-1 員工信息數(shù)據(jù)表字段名類型長度是否為空說明nochar5否員工編號,設(shè)為主鍵namechar21員工姓名idchar19員工身份證號sexchar2員工性別birthchar9員工生日hometownchar11員工籍貫educationchar2員工學(xué)歷addresschar31員工地址telchar16員工 senioritychar3員工工齡salarychar11員工薪水5.4 程序的類設(shè)計員工信息類屬性:名稱:員工編號類別:字符串名稱:員工姓名類別:字符串名稱:員工身份證號類
14、別:字符串名稱:員工性別類別:字符串名稱:員工生日類別:字符串名稱:員工籍貫類別:字符串名稱:員工學(xué)歷類別:字符串名稱:員工地址類別:字符串名稱:員工 類別:字符串名稱:員工工齡類別:字符串名稱:員工薪水類別:字符串第六章 信息管理系統(tǒng)編碼實(shí)現(xiàn)6.1 系統(tǒng)界面實(shí)現(xiàn)本局部展示了員工信息管理系統(tǒng)的界面,操作過程。首先,啟動系統(tǒng),顯示系統(tǒng)界面,給用戶的操作提供顯而易見的提示,能夠干些什么,如下圖。圖6.1 系統(tǒng)主界面圖本次顯示主要是在打印模塊文件中實(shí)現(xiàn),用printf語句,輸出系統(tǒng)的主界面,并且通過獲得用戶輸入的選項(xiàng),進(jìn)行各個分支的相應(yīng)操作。這里,用到case語句進(jìn)行選擇,并且給用戶提供良好的操作余
15、地。例如,用戶現(xiàn)在想選擇A選項(xiàng)進(jìn)行錄入信息,這時,用戶可以輸入“A 或“a,系統(tǒng)都能夠識別,調(diào)用錄入信息的函數(shù),進(jìn)行錄入信息的處理。當(dāng)用戶要錄入信息時,系統(tǒng)提供了錄入信息的專有通道,設(shè)計錄入信息,用到了fgets函數(shù),拋棄了scanf的用法,之所以這么做,就是因?yàn)閟canf讓系統(tǒng)不受控,如果讓輸入一個整形數(shù),但是用戶誤操作的輸入了字母,這就會造成系統(tǒng)的崩潰。輸入內(nèi)容見圖6.2。當(dāng)用戶需要打印信息時,比方查詢某段的數(shù)據(jù),進(jìn)行打印,或是直接要顯示所有員工信息的內(nèi)容,我們需要一個打印信息的模塊來給用戶呈現(xiàn)他所要看到的信息,這里,主要是查看鏈表中對應(yīng)的信息,然后將其輸出到屏幕,如圖6.3所示。圖6.2
16、 信息的錄入圖6.3 打印信息當(dāng)用戶需要查詢信息時,系統(tǒng)根據(jù)用戶選擇查詢信息的選項(xiàng),調(diào)用查詢函數(shù),并且給用戶提供幾種選擇,供用戶提供不同的條件來給出的數(shù)據(jù),以此獲得查詢的內(nèi)容。查詢的結(jié)果分為兩種,一種是找到,一種是沒找到,即系統(tǒng)中不存在此信息。那么,找到了,就將信息打印到屏幕,假設(shè)未找到,不能不了了之,要為用戶提供必要的信息,提示用戶數(shù)據(jù)文件中沒有此條記錄信息,或是輸入有誤。通過查詢信息,未找到索要的結(jié)果,如圖6.4所示。圖6.4 信息查詢未找到假設(shè)找到了要查詢的信息,那么輸出到屏幕,如圖6.5所示。圖6.5 信息查詢找到結(jié)果當(dāng)用戶想刪除信息時,也需要先找到要刪除的員工,對其進(jìn)行刪除操作,刪除
17、具體界面與使用見圖6.6。當(dāng)用戶想將系統(tǒng)的文件導(dǎo)出來作為備份或進(jìn)行其它處理時,可以選擇文件導(dǎo)出,來實(shí)現(xiàn)想操作的要求,見圖6.7.圖6.6 信息刪除圖6.7 導(dǎo)出到文件假設(shè)用戶要關(guān)閉系統(tǒng),系統(tǒng)在退出前詢問用戶是否要保存當(dāng)前修改的數(shù)據(jù),通過選擇y/n來告訴是否保存,最終退出系統(tǒng),如圖6.8所示。圖6.8 退出系統(tǒng)6.2 編碼實(shí)現(xiàn)信息系統(tǒng)的設(shè)計已經(jīng)完成,現(xiàn)在已經(jīng)明確了根本思路和要做什么,具體實(shí)現(xiàn)的內(nèi)容也設(shè)計好了,剩下的工作是用代碼把明確的內(nèi)容實(shí)現(xiàn)出來。 下面劃分為幾個模塊,分別用于處理不同的局部,首先,要將系統(tǒng)啟動所需的數(shù)據(jù)加載到鏈表里面,這就需要翻開數(shù)據(jù)文件,對文件內(nèi)容做相應(yīng)的解析,對應(yīng)的填寫到每
18、個節(jié)點(diǎn)的內(nèi)容中去。另一個模塊是實(shí)現(xiàn)對鏈表的各種操作,包括錄入、查詢等。還需要一個模塊來輸出不同需要的界面,來提示用戶可以進(jìn)行哪些操作。最終,在主函數(shù)中列出按需啟動的函數(shù),控制程序正常運(yùn)行。結(jié)束語3周的軟件工程課程設(shè)計結(jié)束了,總結(jié)這些時間里我做的東西,應(yīng)該是最有意義的事情。重要的是做設(shè)計的過程,和做完設(shè)計的總結(jié),從過程中,得到的是歷練,從總結(jié)中,得到的是經(jīng)驗(yàn)和教訓(xùn)。員工信息管理系統(tǒng)是在普遍不過的設(shè)計了,選題并不一定有多么創(chuàng)新,所做出的東西也并不一定要超越別人,要做的是用個人的思維、智慧、想法來構(gòu)建一個系統(tǒng)。這個經(jīng)過,迫使我重新溫習(xí)了軟件工程的各個流程和所需的知識,并且通過運(yùn)用,得以深化。系統(tǒng)的設(shè)
19、計是個復(fù)雜的問題,本次的系統(tǒng)設(shè)計,存在很多的問題值得改良。目前做出的系統(tǒng)僅僅處于理想狀態(tài)的系統(tǒng),是試驗(yàn)成果,真正企業(yè)所使用的員工信息管理系統(tǒng)絕不會是如此簡單和不可靠的,對員工信息的管理,重要的是數(shù)據(jù)的內(nèi)容,保護(hù)已有的數(shù)據(jù)資源。而真正用于員工信息管理的系統(tǒng)通常都是有標(biāo)準(zhǔn)圖形界面的,并且當(dāng)涉及的員工數(shù)量比擬大的時候,通過鏈表的操作顯然是不適宜的,要想表達(dá)出更高的效率,必須要用到數(shù)據(jù)庫的接連,來保證數(shù)據(jù)查詢等操作的速率和平安性。如今,信息管理系統(tǒng)已經(jīng)走向成熟化,真正用于企業(yè)的信息管理系統(tǒng)也不是罕見的情況,無非根據(jù)硬件的提升與網(wǎng)絡(luò)的開展,向更優(yōu)質(zhì)、更方便、更簡單的路線走去。參考文獻(xiàn) 1 2 附錄:程序
20、清單1 實(shí)現(xiàn)功能#include "system.h"/*初始化鏈表*/struct node *init(struct node *head) head = (struct node *)malloc (sizeof(struct node); if (head = NULL) printf("頭結(jié)點(diǎn)創(chuàng)立失敗n"); exit(1); strcpy(head->no, "9999"); head->next = NULL; return head;/*完全匹配*/int inside_match(char *src, c
21、har *dest) while (*src != '0') if (*dest = *src) src+; dest+; else return 1; /end of while (*src != '0') if (*src = *dest) return 0; else return 1; /*匹配字符串*/int match(char *src, char *dest) while (*src != *dest && *dest != '0') dest+; if (inside_match(src, dest) = 0)
22、return 0; else return 1; /*打印指定一條信息*/void print_line(struct node *pt) printf("|%4s| |%20s| |%18s| |%1s| ", pt->no, pt->name, pt->id, pt->sex); printf("|%8s| |%10s| |%1s| |%30s| ", pt->birth, pt->hometown, pt->education,pt->address); printf("|%15s| |%2
23、s| |%10s|n", pt->tel, pt->seniority, pt->salary); /*修改信息*/void change(struct node *pt) int num; char bufMAX = 0; num = change_menu(); switch (num) case 1: printf("請輸入正確的編號:"); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->no, buf); break; case 2: printf("請輸入正確的
24、名字:"); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->name, buf); break; case 3: printf("請輸入正確的身份證號:"); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->id, buf); break; case 4: printf("請輸入正確的性別:"); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->sex,
25、 buf); break; case 5: printf("請輸入正確的生日:"); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->birth, buf); break; case 6: printf("請輸入正確的籍貫:"); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->hometown, buf); break; case 7: printf("請輸入正確的學(xué)歷:"); fgets(buf, MAX
26、, stdin); process_buf(buf); strcpy(pt->education, buf); break; case 8: printf("請輸入正確的地址:"); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->address, buf); break; case 9: printf("請輸入正確的 :"); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->tel, buf); break; case
27、10: printf("請輸入正確的工齡:"); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->seniority, buf); break; case 11: printf("請輸入正確的薪水:"); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->salary, buf); break; default: printf("沒有此選項(xiàng)n"); return; break; /*刪除找到的節(jié)點(diǎn)*/void
28、del(struct node *tmp) struct node *pt = head, *pre = head; while (pt != tmp) pre = pt; pt = pt->next; if (pt->next = NULL) pre->next = NULL; else pre->next = pt->next; if (pt != NULL) free(pt); pt = NULL;/*查找*/void find(char ch, char type) struct node *pt = head, *pre = head; char *si
29、gn; int sum = 0; int tmp; char bufMAX = 0; fgets(buf, MAX, stdin); process_buf(buf); printf("n"); /*第一個節(jié)點(diǎn)為空節(jié)點(diǎn),沒保存信息,略過*/ if (pt->next != NULL) pt = pt->next; /*根據(jù)所需,分析按哪種類型進(jìn)行查找*/ while (pt != NULL) switch(ch) case '1': tmp = match(buf, pt->name); break; case '2': t
30、mp = match(buf, pt->no); break; case '3': tmp = match(buf, pt->id); break; case '4': tmp = match(buf, pt->hometown); break; default: printf("不知道比擬哪類n"); return; break; /*找出結(jié)果*/ if (tmp = 0) if (type = 's') /*執(zhí)行查找結(jié)果打印*/ print_line(pt); else if (type = 'c
31、') /*執(zhí)行更改信息*/ change(pt); else if (type = 'd') /*刪除選定信息*/ del(pt); sum+; pre = pt; pt = pt->next; /*遍歷鏈表結(jié)束,沒有發(fā)現(xiàn)要找的信息*/ if (sum = 0) printf("n沒有找到您要的信息n"); /*處理緩存器,將"n"替換文"0" */char *process_buf(char *buf) char *re = buf; while (*buf != 'n') buf+;
32、*buf = '0' return re;/*錄入信息*/void type_in(struct node *pt) char buf100; getchar(); /*找到鏈表尾*/ while (pt->next != NULL) pt = pt->next; /*創(chuàng)立新節(jié)點(diǎn)*/ pt->next = (struct node *)malloc(sizeof(struct node); pt = pt->next; if (pt = NULL) printf("節(jié)點(diǎn)創(chuàng)立失敗n"); pt->next = NULL; /*輸入
33、信息*/ printf("請輸入編號:n"); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->no, buf); printf("請輸入姓名:n"); memset(buf, 0, sizeof(buf); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->name, buf); printf("請輸入身份證號n"); memset(buf, 0, sizeof(buf); fgets(buf, MAX, s
34、tdin); process_buf(buf); strcpy(pt->id, buf); printf("請輸入性別:n"); memset(buf, 0, sizeof(buf); fgets(buf, 3, stdin); process_buf(buf); strcpy(pt->sex, buf); printf("請輸入生日:n"); memset(buf, 0, sizeof(buf); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->birth, buf); pri
35、ntf("請輸入籍貫:n"); memset(buf, 0, sizeof(buf); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->hometown, buf); printf("請輸入學(xué)歷:n"); memset(buf, 0, sizeof(buf); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->education, buf); printf("請輸入地址:n"); memset(buf, 0,
36、sizeof(buf); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->address, buf); printf("請輸入 :n"); memset(buf, 0, sizeof(buf); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->tel, buf); printf("請輸入工齡:n"); memset(buf, 0, sizeof(buf); fgets(buf, MAX, stdin); process_buf(
37、buf); strcpy(pt->seniority, buf); printf("請輸入薪水:n"); memset(buf, 0, sizeof(buf); fgets(buf, MAX, stdin); process_buf(buf); strcpy(pt->salary, buf);/*打印信息*/void print_info(struct node *pt) /*濾去空節(jié)點(diǎn)*/ pt = pt->next; /*打印信息*/ while (pt != NULL) printf("|%4s| |%20s| |%18s| |%1s| &
38、quot;, pt->no, pt->name, pt->id, pt->sex); printf("|%8s| |%10s| |%1s| |%30s| ", pt->birth, pt->hometown, pt->education,pt->address); printf("|%15s| |%2s| |%10s|n", pt->tel, pt->seniority, pt->salary); pt = pt->next; /*保存信息*/int save_info(struct
39、 node *pt) char buf4 = 0; /用戶輸入 getchar(); /*退出時提醒是否保存信息*/ printf("是否保存信息? (y/n)n"); fgets(buf, 4, stdin); process_buf(buf); /*不保存信息,直接退出*/ if (buf0 = 'n' | buf0 = 'N') return 0; pt = pt->next; /*保存信息,翻開數(shù)據(jù)文檔*/ FILE *fp = fopen("data.txt", "w"); if (pt
40、 = NULL) printf("文件翻開失敗n"); exit(1); /*將數(shù)據(jù)寫入文檔*/ while (pt != NULL) fprintf(fp, "%4s_%20s_%18s_%1s_%8s_%10s_%1s_%30s_%15s_%2s_%10sn", pt->no, pt->name, pt->id, pt->sex, pt->birth, pt->hometown, pt->education2 系統(tǒng)啟動設(shè)置#include "system.h"int main() /*初始
41、化鏈表*/ head = init(head); /*加載數(shù)據(jù)到系統(tǒng)*/ start(head);/*進(jìn)入用戶界面*/Print_menu();Return 0; 3 啟動加載數(shù)據(jù)庫#include "system.h"/*啟動系統(tǒng),從文檔加載數(shù)據(jù)*/int start(struct node *pt) int sum = 0; /記錄編號,姓名. 順序號 char bufMAX = 0; /用來存放拆分后的信息 char *sign = buf; char get_lineMAX; /從文檔中讀取一個人的信息 char *str = get_line; /*翻開存放數(shù)據(jù)的
42、文檔*/ FILE *fp = fopen("data.txt", "r"); if (fp = NULL) printf("數(shù)據(jù)庫翻開失敗n"); /*從文檔中讀取記錄*/ while (fgets(get_line, 131, fp) != NULL) /*初始化變量*/ str = get_line; sign = buf; sum = 0; /*創(chuàng)立一個節(jié)點(diǎn),存放信息*/ pt->next = (struct node *)malloc(sizeof(struct node); pt = pt->next; if
43、(pt = NULL) printf("系統(tǒng)加載數(shù)據(jù)創(chuàng)立節(jié)點(diǎn)失敗n"); pt->next = NULL; /*拆分信息,加載到系統(tǒng)中*/ while (*str != 'n') *sign+ = *str+; if (*str = '_') *sign = '0' /存放在文檔中的每條信息中間用"_"隔開 /遇到符號"_"就斷開 str+; sum+; /*將對應(yīng)的信息加載到鏈表中*/ if (1 = sum) strcpy(pt->no, buf); if (2 = su
44、m) strcpy(pt->name, buf); if (3 = sum) strcpy(pt->id, buf); if (4 = sum) strcpy(pt->sex, buf); if (5 = sum) strcpy(pt->birth, buf); if (6 = sum) strcpy(pt->hometown, buf); if (7 = sum) strcpy(pt->education, buf); if (8 = sum) strcpy(pt->address, buf); if (9 = sum) strcpy(pt->
45、tel, buf); if (10 = sum) strcpy(pt->seniority, buf); memset(buf, 0, sizeof(buf); sign = buf; *sign = '0' strcpy(pt->salary, buf); /*關(guān)閉文檔*/ if (fclose(fp) != 0) printf("數(shù)據(jù)庫關(guān)閉失敗n"); return 0;/*從文件導(dǎo)入*/int in_from_file() int sum = 0; /記錄編號,姓名. 順序號 char bufMAX = 0; /用來存放拆分后的信息 char *sign = buf; char get_
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 橋面鋪裝激光整平機(jī)技術(shù)解析與應(yīng)用
- 腫瘤抗體研究與應(yīng)用進(jìn)展
- 2024年福建廈門市蘇頌醫(yī)院補(bǔ)充工作人員招聘105人筆試考點(diǎn)考試題庫與答案
- 春節(jié)節(jié)前安全檢查與假日安全提示
- 2024年高考押題-歷史
- 收費(fèi)站月工作總結(jié)
- 直腸惡性腫瘤疾病查房
- 腫瘤放療護(hù)理查房
- 2025社區(qū)獲得性肺炎防治進(jìn)展
- 支原體肺炎院感防控要點(diǎn)
- 大學(xué)生醫(yī)學(xué)健康科普演講
- 2025國開電大《管理英語1》綜合測試形考任務(wù)答案
- 冶金天車作業(yè)安全培訓(xùn)
- 廣東省深圳市2021-2022學(xué)年高一下學(xué)期英語期末調(diào)研考試(含答案)
- 《馬克思主義基本原理概論》課后思考題及答案
- 2025屆成都市新都一中高三一診考試英語試卷含答案
- 煤炭行業(yè)的企業(yè)戰(zhàn)略布局與資源整合考核試卷
- 電動二輪車租賃合同協(xié)議
- 電梯維保合同分包協(xié)議
- 靜脈血液標(biāo)本采集指南
- fca外貿(mào)合同協(xié)議
評論
0/150
提交評論