畢業(yè)設(shè)計(jì)--c語言學(xué)籍管理系統(tǒng)_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設(shè)計(jì)(論文)</b></p><p>  題 目 C語言學(xué)籍管理系統(tǒng)</p><p>  專 業(yè) 計(jì)算機(jī)應(yīng)用 </p><p>  班 次 09計(jì)應(yīng)1班 </p><p>  姓 名 </p>

2、<p>  指導(dǎo)老師 </p><p><b>  二0一二年三月</b></p><p><b>  C語言學(xué)籍管理系統(tǒng)</b></p><p>  摘 要:本系統(tǒng)依據(jù)開發(fā)要求主要應(yīng)用于教育系統(tǒng),完成對日常的教育工作中學(xué)生成績檔案的數(shù)字化管理。開發(fā)本系統(tǒng)可使學(xué)院教職員工減輕工作壓力,比

3、較系統(tǒng)地對教務(wù)、教學(xué)上的各項(xiàng)服務(wù)和信息進(jìn)行管理,同時(shí),可以減少勞動(dòng)力的使用,加快查詢速度、加強(qiáng)管理,以及國家各部門關(guān)于信息化的步伐,使各項(xiàng)管理更加規(guī)范化。</p><p>  目前,學(xué)校工作繁雜、資料重多,雖然各類管理信息系統(tǒng)已進(jìn)入高校,但還未普及,而對于學(xué)生成績管理來說,目前還沒有一套完整的、統(tǒng)一的系統(tǒng)。因此,開發(fā)一套適和大眾的、兼容性好的系統(tǒng)是很有必要的。</p><p>  本系統(tǒng)在

4、開發(fā)過程中,注意使其符合操作的業(yè)務(wù)流程,并力求系統(tǒng)的全面性、通用性,使得本系統(tǒng)不只適用于一家教育機(jī)構(gòu)。在開發(fā)方法的選擇上,選擇了生命周期法與原型法相結(jié)合的方法,遵循系統(tǒng)調(diào)查研究、系統(tǒng)分析、系統(tǒng)設(shè)計(jì)和系統(tǒng)實(shí)施四個(gè)主要階段進(jìn)行設(shè)計(jì),而在具體的設(shè)計(jì)上,采取了演化式原型法,隨著用戶的使用及對系統(tǒng)了解的不斷加深,對某一部分或幾部分進(jìn)行重新分析、設(shè)計(jì)、實(shí)施。本論文主要從系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)施與使用等幾個(gè)方面進(jìn)行介紹</p>&l

5、t;p>  【關(guān)鍵詞】 成績管理 成績查詢 C語言 面向過程</p><p>  C Language Registration Management System</p><p>  Abstract: This system according to the development requirements are mainly applied in education

6、system of education, the daily work of the digital archives management of student performance. This system can make the college development staff to reduce the working pressure, educational and teaching to the various se

7、rvices and information management, also can reduce the use of force, accelerate query speed, strengthen management, as well as the national departments about the pace of normalization,</p><p>  At present, t

8、he school work multifarious, material more, though various management information system has entered the university, but has not been popular, and for students' performance management, it has been a complete and unif

9、ied system. Therefore, the development of a suitable and the populace, compatibility good system is very necessary.</p><p>  This system in the process of development, pay attention to the operation of the b

10、usiness process, and strive to system of comprehensive, generalization, makes this system not only applicable to a education institutions. On the choice of methods in the development life cycle method, a method of combin

11、ing with the prototype, follow the system research and systematic analysis, system design and system implementation, four main stages, and the specific design in the design, taking the evolution as </p><p> 

12、 【Key Words】</p><p>  Achievement Management</p><p>  Achievement Query</p><p>  C Programming Language </p><p>  Procedure-Oriented</p><p><b>  目  錄

13、</b></p><p>  第1章 緒 論1</p><p>  1.1 學(xué)籍管理系統(tǒng)概述1</p><p>  1.2 面向過程編程的基礎(chǔ)知識(shí)2</p><p>  第2章 需求分析5</p><p><b>  2.1 目標(biāo)5</b></p>

14、<p><b>  2.2 要求5</b></p><p>  2.3 學(xué)生成績管理系統(tǒng)的功能6</p><p><b>  第3章模塊設(shè)計(jì)7</b></p><p><b>  3.1主模塊7</b></p><p>  3.2 添加學(xué)生信息7&l

15、t;/p><p>  3.3 顯示學(xué)生信息7</p><p>  3.4 排序?qū)W生信息7</p><p>  3.5 查找學(xué)生信息8</p><p>  第4章 主要數(shù)據(jù)結(jié)構(gòu)9</p><p>  第5章 流程圖11</p><p>  第6章 源代碼12</p>

16、<p>  6.1 數(shù)據(jù)結(jié)構(gòu)與函數(shù)聲明的頭文件12</p><p>  6.2主控程序模塊13</p><p>  6.3添加學(xué)生模塊20</p><p>  6.4顯示學(xué)生模塊21</p><p>  6.5 對學(xué)生進(jìn)行排序模塊22</p><p>  6.6 查找學(xué)生模塊30&l

17、t;/p><p>  參 考 文 獻(xiàn)35</p><p>  謝 辭36</p><p><b>  第1章 緒 論</b></p><p>  本章介紹學(xué)生學(xué)籍管理系統(tǒng)的有關(guān)知識(shí)、面向過程的編程技術(shù)以及應(yīng)用程序的開發(fā)方法和開發(fā)過程等基礎(chǔ)理論知識(shí),這是深入了解后續(xù)內(nèi)容的必要準(zhǔn)備。</p><

18、p>  1.1 學(xué)籍管理系統(tǒng)概述</p><p>  1.1.1 管理信息系統(tǒng)的概念</p><p>  管理信息系統(tǒng)(Management Information Systems,簡稱MIS),是一個(gè)不斷發(fā)展的新型學(xué)科,MIS的定義隨著計(jì)算機(jī)技術(shù)和通信技術(shù)的進(jìn)步也在不斷更新,在現(xiàn)階段普遍認(rèn)為MIS 是人為或計(jì)算機(jī)設(shè)備以及其他信息處理手段組成并用于管理信息的系統(tǒng)。包括以下幾個(gè)基本

19、概念:</p><p>  (1) MIS的對象就是信息。信息是經(jīng)過加工的對決策者有價(jià)值的數(shù)據(jù)。信息的主要特征是來源分散,數(shù)量龐大。信息來源于生產(chǎn)第一線、社會(huì)環(huán)境、市場以及行政管理等部門。信息具有時(shí)間性。</p><p>  (2) 系統(tǒng)是由相互聯(lián)系、相互作用的若干要素按一定的規(guī)則組成并具有一定功能的整體。 系統(tǒng)由輸入、處理、輸出、反饋、控制等五個(gè)基本要素組成。</p>&l

20、t;p>  (3) 管理信息由信息的采集、信息的傳遞、信息的儲(chǔ)存、信息的加工、信息的維護(hù)和信息的使用等五個(gè)方面組成。 </p><p>  MIS包括計(jì)算機(jī)、網(wǎng)絡(luò)通信設(shè)備等硬件成分,也包括操作系統(tǒng)、應(yīng)用軟件包等軟件成分,并隨著計(jì)算機(jī)技術(shù)和通信技術(shù)的迅速發(fā)展還會(huì)出現(xiàn)更多的內(nèi)容。</p><p>  1.1.2 課題背景</p><p>  該項(xiàng)目開發(fā)的軟件為學(xué)

21、校學(xué)生信息管理系統(tǒng)軟件,是鑒于目前學(xué)校學(xué)生人數(shù)劇增,學(xué)生信息呈爆炸性增長的前提下,學(xué)校對學(xué)生信息管理的自動(dòng)化與準(zhǔn)確化的要求日益強(qiáng)烈的背景下構(gòu)思出來的,該軟件設(shè)計(jì)完成后可用于所有教育單位(包括學(xué)校,學(xué)院等等)的學(xué)生信息的管理.</p><p>  目前社會(huì)上信息管理系統(tǒng)發(fā)展飛快,各個(gè)企事業(yè)單位都引入了信息管理軟件來管理自己日益增長的各種信息,學(xué)生管理系統(tǒng)也是有了很大的發(fā)展,商業(yè)化的學(xué)生信息管理軟件也不少.但本系統(tǒng)完

22、全獨(dú)立開發(fā),力求使系統(tǒng)功能簡潔明了,但功能齊全且易于操作</p><p>  1.1.3 目的背景與意義</p><p>  學(xué)生信息管理系統(tǒng)是一個(gè)教育單位不可缺少的部分。一個(gè)功能齊全、簡單易用的信息管理系統(tǒng)不但能有效地減輕學(xué)校相關(guān)工作人員的工作負(fù)擔(dān),它的內(nèi)容對于學(xué)校的決策者和管理者來說都至關(guān)重要。所以學(xué)生信息管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄巍5恢币詠砣藗兪褂脗鹘y(tǒng)人

23、工的方式管理文件檔案、統(tǒng)計(jì)和查詢數(shù)據(jù),這種管理方式存在著許多缺點(diǎn),如:效率低、保密性差,人工的大量浪費(fèi);另外時(shí)間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護(hù)都帶來了不少困難。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著來越重要的作用。</p><p>  作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對學(xué)校的各類信息進(jìn)行管理,具有手工管理所無法比擬的優(yōu)點(diǎn)

24、.例如:檢索迅速、查詢方便、效率高、可靠性好、存儲(chǔ)量大、保密性好、壽命長、成本低等。這些優(yōu)點(diǎn)能夠極大地提高學(xué)校信息管理的效率,也是一個(gè)單位科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。</p><p>  1.1.3 項(xiàng)目開發(fā)的目標(biāo) </p><p>  建立學(xué)生信息管理系統(tǒng),采用計(jì)算機(jī)對學(xué)生信息進(jìn)行管理,進(jìn)一步提高辦學(xué)效益和現(xiàn)代化水平。幫助廣大教師提高工作效率,實(shí)現(xiàn)學(xué)生信息管理工作流程的系

25、統(tǒng)化、規(guī)范化和自動(dòng)化。</p><p>  1.2 面向過程編程的基礎(chǔ)知識(shí)</p><p>  1.2.1 面向過程基本概念</p><p>  面向過程其實(shí)是最為實(shí)際的一種思考方式,就是算面向?qū)ο蟮姆椒ㄒ彩呛忻嫦蜻^程的思想.可以說面向過程是一種基礎(chǔ)的方法.它考慮的是實(shí)際的實(shí)現(xiàn).一般的面向過程是從上往下步步求精.所以面向過程最重要的是模塊化的思想方法.對比較面

26、向?qū)ο?面向?qū)ο蟮姆椒ㄖ饕前咽挛锝o對象化,對象包括屬性與行為.當(dāng)程序規(guī)模不是很大時(shí),面向過程的方法還會(huì)體現(xiàn)出一種優(yōu)勢,因?yàn)槌绦虻牧鞒毯芮宄?按著模塊與函數(shù)的方法可以很好的組織.</p><p>  1.2.2 使用面向過程的C語言簡介</p><p><b>  1. C語言</b></p><p>  C言是一種面向過程的計(jì)算機(jī)程序設(shè)計(jì)語

27、言,它是目前眾多計(jì)算機(jī)語言中舉世公認(rèn)的優(yōu)秀的結(jié)構(gòu)程序設(shè)計(jì)語言之一。它由美國貝爾研究所的D.M.Ritchie于1972年推出。1978后,C語言已先后被移植到大、中、小及微型機(jī)上。 </p><p>  C語言發(fā)展如此迅速,而且成為最受歡迎的語言之一,主要因?yàn)樗哂袕?qiáng)大的功能。許多著名的系統(tǒng)軟件,如DBASE Ⅳ都是由C 語言編寫的。用C 語言加上一些匯編語言子程序,就更能顯示C 語言的優(yōu)勢了,像PC- DOS

28、、WORDSTAR等就是用這種方法編寫的。</p><p>  2. C 語言特點(diǎn):</p><p>  C語言是一種成功的系統(tǒng)描述語言,用C語言開發(fā)的UNIX操作系統(tǒng)就是一個(gè)成功的范例;同時(shí)C語言又是一種通用的程序設(shè)計(jì)語言,在國際上廣泛流行。世界上很多著名的計(jì)算公司都成功的開發(fā)了不同版本的C語言,很多優(yōu)秀的應(yīng)用程序也都使用C語言開發(fā)的,它是一種很有發(fā)展前途的高級(jí)程序設(shè)計(jì)語言。</p

29、><p>  1. C是中級(jí)語言。它把高級(jí)語言的基本結(jié)構(gòu)和語句與低級(jí)語言的實(shí)用性結(jié)合起來。C 語言可以像匯編語言一樣對位、字節(jié)和地址進(jìn)行操作, 而這三者是計(jì)算機(jī)最基本的工作單元。   </p><p>  2.C是結(jié)構(gòu)式語言。結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護(hù)以及調(diào)試。C 語言是以函數(shù)形式提供給

30、用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。</p><p>  3.C語言功能齊全。具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。另外C語言也具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大,可以實(shí)現(xiàn)決策目的的游戲。</p><p>  4. C語言適用范圍大。適合于多種操作系統(tǒng),如Windows

31、、DOS、UNIX等等;也適用于多種機(jī)型。   C語言對編寫需要硬件進(jìn)行操作的場合,明顯優(yōu)于其它解釋型高級(jí)語言,有一些大型應(yīng)用軟件也是用C語言編寫的。   C語言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫。它是數(shù)值計(jì)算的高級(jí)語言。</p><p>  5.C語言文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件   常用的C語言IDE(集成開發(fā)環(huán)境)有Micros

32、oft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++ ,Borland C++ Builder,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc 等等……   對于一個(gè)初學(xué)者,Microsoft Visual C++是一個(gè)比較好的軟件。界面友好,功能強(qiáng)大,調(diào)試也很方便。</p>

33、<p>  第2章 需求分析</p><p>  學(xué)籍管理系統(tǒng)應(yīng)具有如下</p><p>  1、能錄入學(xué)生的基本信息,包括學(xué)號(hào)、姓名、專業(yè)、年級(jí)、性別和出生日期信息,保存到結(jié)構(gòu)體數(shù)組中。</p><p>  2、能根據(jù)輸入的學(xué)號(hào)查找學(xué)生,進(jìn)行信息的修改。</p><p>  3、能根據(jù)輸入的學(xué)號(hào)從結(jié)構(gòu)體數(shù)組中刪除學(xué)生的記錄

34、。</p><p>  4、實(shí)現(xiàn)查詢功能,能根據(jù)輸入的學(xué)號(hào)或年級(jí)在屏幕上顯示相應(yīng)的學(xué)生信息。</p><p>  5、能在屏幕上以列表的方式輸出所有學(xué)生的信息。</p><p><b>  2.1 目標(biāo)</b></p><p>  (1)掌握和利用C語言進(jìn)行程序設(shè)計(jì)的能力。</p><p>  

35、(2)理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法。</p><p>  (3)掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法。</p><p>  (4)學(xué)會(huì)調(diào)試一個(gè)較長程序的基本方法。</p><p>  (5)掌握書寫程序設(shè)計(jì)開發(fā)文檔的能力(書寫課程設(shè)計(jì)報(bào)告)。</p><p><b>  2.2 要求</b></p>

36、<p>  (1)用C語言實(shí)現(xiàn)系統(tǒng)。</p><p>  (2)利用結(jié)構(gòu)體鏈表實(shí)現(xiàn)學(xué)生成績的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。</p><p>  (3)系統(tǒng)具有增加、查詢、插入、排序等基本功能。</p><p>  (4)系統(tǒng)的各個(gè)功能模塊要求用文件的形式實(shí)現(xiàn)。</p><p>  (5)完成設(shè)計(jì)任務(wù)并書寫課程設(shè)計(jì)報(bào)告。</p>&l

37、t;p>  (6)將學(xué)生成績信息存在文件中。</p><p>  2.3 學(xué)生成績管理系統(tǒng)的功能</p><p>  1--按學(xué)號(hào)查詢學(xué)生信息</p><p>  2--按姓名查詢學(xué)生信息</p><p>  3--顯示所有學(xué)生信息</p><p>  4--根據(jù)學(xué)號(hào)、姓名、單科成績進(jìn)行排序</p>

38、<p><b>  5--添加學(xué)生信息</b></p><p><b>  6--刪除學(xué)生信息</b></p><p><b>  7--修改學(xué)生信息</b></p><p>  8--保存學(xué)生信息文件</p><p>  9--讀入學(xué)生信息文件</p>

39、;<p><b>  0--退出</b></p><p>  此項(xiàng)目主要考察我們對結(jié)構(gòu)體、指針、文件的操作,以及C語言算法的掌握,所以完成此題目要求較高的設(shè)計(jì)能力,尤其是要有大局意識(shí)。如何調(diào)試程序也非常重要,通過這個(gè)程序可學(xué)到以前調(diào)試程序沒有的經(jīng)驗(yàn)。</p><p><b>  模塊設(shè)計(jì)</b></p><p&g

40、t;  將學(xué)生成績管理系統(tǒng)劃分為以下幾個(gè)模塊</p><p><b>  主模塊</b></p><p><b>  功能概述:</b></p><p>  1. 提供系統(tǒng)菜單的顯示功能</p><p>  2. 提供打開文件,并導(dǎo)入文件記錄的功能</p><p>  3.

41、提供保存文件信息的功能</p><p>  3.2 添加學(xué)生信息</p><p><b>  功能:</b></p><p>  1. 根據(jù)輸入的相關(guān)信息,將學(xué)生信息添加到單向鏈表中 </p><p>  3.3 顯示學(xué)生信息</p><p><b>  功能:</b>&

42、lt;/p><p>  1. 將鏈表中的所有信息完全顯示</p><p>  3.4 排序?qū)W生信息</p><p><b>  功能:</b></p><p> ?。ㄅ判蚍譃樯蚝徒敌騼煞N排序方式)</p><p>  1. 根據(jù)學(xué)號(hào)進(jìn)行排序</p><p>  2. 根據(jù)姓

43、名進(jìn)行排序</p><p>  3. 根據(jù)單科成績進(jìn)行排序</p><p>  4. 根據(jù)平均分進(jìn)行排序</p><p>  3.5 查找學(xué)生信息</p><p><b>  功能:</b></p><p>  (查找學(xué)生信息包含根據(jù)輸入學(xué)號(hào)進(jìn)行查找和根據(jù)輸入的姓名進(jìn)行查找兩種方式,并根據(jù)返回的學(xué)

44、生信息,進(jìn)行以下三種操作)</p><p>  1. 查詢學(xué)生信息,直接返回找到的信息</p><p>  2. 修改學(xué)生信息,根據(jù)找到的學(xué)生信息,對其進(jìn)行修改</p><p>  3. 刪除學(xué)生信息,根據(jù)找到的相關(guān)學(xué)生信息,從鏈表中刪除這條記錄</p><p>  第4章 主要數(shù)據(jù)結(jié)構(gòu)</p><p>  程序設(shè)計(jì)

45、中用到的學(xué)生信息結(jié)構(gòu)體類型</p><p>  在單獨(dú)的頭文件stu.h中定義相應(yīng)的數(shù)據(jù)結(jié)構(gòu)體類型,全局變量,和</p><p>  宏名:LEN 記錄結(jié)構(gòu)體的大小</p><p>  定義學(xué)生結(jié)構(gòu)體 STU,包含相關(guān)的學(xué)生信息</p><p>  struct student</p><p><b>  

46、{</b></p><p>  char number[10];</p><p>  char name[10];</p><p><b>  char sex;</b></p><p>  int score[5]; //用于記錄5門課程的成績</p><p>  float av

47、erage; //平均分</p><p>  struct student *next; //下個(gè)結(jié)點(diǎn)</p><p><b>  };</b></p><p>  typedef struct student STU;</p><p>  定義*head全局指針,作為鏈表的頭結(jié)點(diǎn)</p><p&g

48、t;  static STU *head=NULL; //全局指針</p><p>  定義fomat字符串變量,作為錄入文件的數(shù)據(jù)格式</p><p>  char *fomat="%-10s%-10s%2c%4d%4d%4d%4d%4d%5.1f\n";</p><p>  定義shouldsave全局變量,判斷是否需要保存資料(0為不保存

49、,1為保存)</p><p>  int shouldsave = 0; </p><p><b>  各相關(guān)函數(shù)的聲明</b></p><p>  extern void append_record(); //添加記錄</p><p>  extern void show_record(); //輸出全部記錄&l

50、t;/p><p>  extern void delete_record(); //刪除記錄</p><p>  extern void change_record(); //更改記錄</p><p>  extern void inquire_record(); //查詢記錄</p><p>  extern void sort_record

51、(); //記錄排序</p><p><b>  第5章 流程圖</b></p><p><b>  圖1.1</b></p><p><b>  第6章 源代碼</b></p><p>  6.1 數(shù)據(jù)結(jié)構(gòu)與函數(shù)聲明的頭文件</p><p>&l

52、t;b>  stu.h頭文件:</b></p><p>  #ifndef STU_H</p><p>  #define STU_H</p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #inc

53、lude<string.h></p><p>  #define LEN sizeof(STU) //宏,結(jié)構(gòu)體的大小</p><p>  struct student</p><p><b>  {</b></p><p>  char number[10];</p><p>  

54、char name[10];</p><p><b>  char sex;</b></p><p>  int score[5]; //用于記錄5門課程的成績</p><p>  float average; //平均分</p><p>  struct student *next; //下個(gè)結(jié)點(diǎn)</p>

55、;<p><b>  };</b></p><p>  typedef struct student STU;</p><p>  static STU *head=NULL; //全局指針,作為鏈表的頭結(jié)點(diǎn)</p><p>  char *fomat="%-10s%-10s%2c%4d%4d%4d%4d%4d%5.1

56、f\n";//錄入文件的數(shù)據(jù)格式</p><p>  int shouldsave = 0;//判斷是否需要保存資料的全局變量</p><p>  extern void append_record(); //添加記錄</p><p>  extern void show_record(); //輸出全部記錄</p><p>

57、  extern void delete_record(); //刪除記錄</p><p>  extern void change_record(); //更改記錄</p><p>  extern void inquire_record(); //查詢記錄</p><p>  extern void sort_record(); //記錄排序</p>

58、;<p><b>  #endif</b></p><p><b>  主控程序模塊</b></p><p>  main.c源文件:</p><p>  #include"stu.h"</p><p>  #include"sort.c"<

59、;/p><p>  #include"show.c"</p><p>  #include"append.c"</p><p>  #include"find.c"</p><p>  void main(void)</p><p><b>  {<

60、;/b></p><p>  void save();</p><p>  void menu();</p><p>  void openfile(); //用于打開文件,形成鏈表</p><p><b>  int sel;</b></p><p>  openfile(); //用于打

61、開文件信息,輸出到鏈表里</p><p><b>  while(1) </b></p><p><b>  { </b></p><p><b>  menu(); </b></p><p>  fflush(stdin);</p><p>  sca

62、nf("%d",&sel); //讀取輸入的sel</p><p>  switch(sel) </p><p><b>  { </b></p><p>  case 0:save();break;</p><p>  case 1:append_record();break; /* 增加學(xué)

63、生 */ </p><p>  case 2:show_record();break;/* 顯示學(xué)生 */ </p><p>  case 3:delete_record();break;/* 刪除學(xué)生 */ </p><p>  case 4:change_record();break;/* 修改學(xué)生 */ </p><p>  case

64、5:inquire_record();break;/* 查詢學(xué)生 */ </p><p>  case 6:sort_record();break;//排序</p><p>  default: printf("\n輸入無效,請重新輸入\n");break; </p><p><b>  } </b></p>

65、<p><b>  }</b></p><p><b>  }</b></p><p>  void save()</p><p><b>  {</b></p><p>  STU *p=NULL;</p><p><b>  FI

66、LE *fp;</b></p><p>  char *filename="E:\\student.txt";</p><p>  static int count=0;</p><p><b>  char y_n;</b></p><p>  if(shouldsave)</p&

67、gt;<p><b>  {</b></p><p>  printf("\n資料已更改,是否保存?(y or n)\n");</p><p>  fflush(stdin);</p><p>  scanf("%c",&y_n);</p><p>  if(

68、y_n!='y' && y_n!='Y')</p><p><b>  {</b></p><p>  printf("\n.......%c........\n資料未保存\n",y_n);</p><p><b>  //釋放空間</b></p&g

69、t;<p>  for(;head->next!=NULL;)</p><p><b>  {</b></p><p>  p=head->next;</p><p>  head->next=head->next->next;</p><p><b>  free(

70、p);</b></p><p><b>  }</b></p><p>  free(head);</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  if(head->ne

71、xt==NULL)</p><p><b>  {</b></p><p>  printf("\n記錄為空\n");</p><p><b>  return;</b></p><p><b>  }else</b></p><p>

72、;<b>  {</b></p><p>  p=head->next;</p><p><b>  }</b></p><p>  if((fp=fopen(filename,"w"))==NULL)</p><p><b>  {</b></

73、p><p>  printf("\n文件不能打開\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  while(p!=NULL)</p><p><b>  {</b>

74、;</p><p>  fprintf(fp,fomat,p->number,p->name,p->sex,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4],p->average);</p><p>  p=p->next;</p><p&g

75、t;<b>  count++;</b></p><p><b>  }</b></p><p>  fclose(fp);</p><p>  printf("保存完畢,共保存%d條記錄,是否繼續(xù)?\n",count);</p><p>  fflush(stdin);<

76、/p><p>  scanf("%c",&y_n); </p><p>  if(y_n=='y'||y_n=='Y') </p><p><b>  return;</b></p><p><b>  else </b></p>

77、<p><b>  {</b></p><p><b>  //釋放空間</b></p><p>  for(;head->next!=NULL;)</p><p><b>  {</b></p><p>  p=head->next;</p>

78、;<p>  head->next=head->next->next;</p><p><b>  free(p);</b></p><p><b>  }</b></p><p>  free(head);</p><p>  printf("\n你已退出

79、系統(tǒng),再見......\n"); </p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><

80、p><b>  {</b></p><p>  printf("\n你已退出系統(tǒng),再見......\n"); </p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  }<

81、;/b></p><p>  void menu()</p><p><b>  {</b></p><p>  printf("\n****************************\n");</p><p>  printf("1.添加學(xué)生\n");</p&g

82、t;<p>  printf("2.顯示學(xué)生\n");</p><p>  printf("3.刪除學(xué)生\n");</p><p>  printf("4.修改學(xué)生\n");</p><p>  printf("5,查詢學(xué)生\n");</p><p>

83、;  printf("6.排序?qū)W生\n");</p><p>  printf("0.退出\n");</p><p>  printf("******************************\n");</p><p>  printf("請選擇");</p><

84、;p><b>  }</b></p><p>  void openfile() //用于打開文件,形成鏈表</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  STU *p1=NULL,*p2=NULL;/

85、/,*temp=NULL;</p><p><b>  char y_n;</b></p><p>  static int count=0; //用于統(tǒng)計(jì)記錄數(shù)</p><p>  char u8IsFileNull;</p><p>  fp=fopen("E:\\student.txt",&qu

86、ot;r"); </p><p>  if(fp==NULL) </p><p><b>  { </b></p><p>  printf("\n=====>提示:文件還不存在,是否創(chuàng)建?(y/n)\n"); </p><p>  scanf("%c",&

87、y_n); </p><p>  if(y_n=='y'||y_n=='Y') </p><p>  fp=fopen("E:\\student.txt","w"); </p><p><b>  else </b></p><p><b>

88、;  {</b></p><p>  printf("\n=====>提示:沒有創(chuàng)建文件......\n"); </p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  printf("\n==

89、===>提示:創(chuàng)建完成......\n");</p><p>  head=(STU *)malloc(LEN);//創(chuàng)建完成后還是要建立統(tǒng)一的頭結(jié)點(diǎn),方便后續(xù)程序使用。</p><p>  head->next=NULL;</p><p>  fclose(fp);</p><p><b>  return;

90、</b></p><p><b>  } </b></p><p>  printf("\n=====>提示:文件已經(jīng)打開,正在導(dǎo)入記錄......\n"); </p><p>  head=(STU *)malloc(LEN);</p><p>  p2=head; //用P

91、2來指向表尾,p1來申請空間</p><p>  head->next=NULL;</p><p>  u8IsFileNull = fgetc(fp);</p><p>  if(u8IsFileNull==EOF)</p><p><b>  { </b></p><p>  print

92、f("文件為空\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  rewind(fp);</p><p>  while(!feof(fp))</p><p><b>  {

93、</b></p><p>  p1=(STU *)malloc(LEN);</p><p>  fscanf(fp,"%s %s %c %d %d %d %d %d %f\n",p1->number,p1->name,&p1->sex,&p1->score[0],&p1->score[1],&p1

94、->score[2],&p1->score[3],&p1->score[4],&p1->average);</p><p>  p1->next=NULL;</p><p>  p2->next=p1;</p><p><b>  p2=p1;</b></p><p

95、><b>  count++;</b></p><p><b>  }</b></p><p>  fclose(fp);</p><p>  printf("\n=====>提示:記錄導(dǎo)入完畢,共導(dǎo)入%d條記錄.\n",count); </p><p><b&

96、gt;  }</b></p><p><b>  添加學(xué)生模塊</b></p><p>  append.c源程序文件:</p><p>  void append_record()</p><p><b>  {</b></p><p>  STU *p1=NU

97、LL,*p2=NULL;//用P1來申請空間,P2來指向表尾</p><p>  char y_n='y';</p><p>  int count=0;</p><p>  for(p2=head;p2->next!=NULL;p2=p2->next)//找到表尾</p><p><b>  ;<

98、/b></p><p>  while(y_n=='y'||y_n=='Y')</p><p><b>  {</b></p><p>  p1=(STU *)malloc(LEN);</p><p>  printf("請輸入學(xué)號(hào) 姓名 性別 語文 數(shù)學(xué) 英語 計(jì)算機(jī) C

99、語言 的信息,以空格分開\n");</p><p>  fflush(stdin);</p><p>  scanf("%s %s %c %d %d %d %d %d",p1->number,p1->name,&(p1->sex),&p1->score[0],&p1->score[1],&p1-&g

100、t;score[2],&p1->score[3],&p1->score[4]);</p><p>  p1->average=(float)(p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3]+p1->score[4])/5;</p><p>  p1->next=NU

101、LL;</p><p>  p2->next=p1;</p><p><b>  p2=p1;</b></p><p><b>  count++;</b></p><p>  printf("\n添加完成,共添加%d條記錄,是否繼續(xù)添加?Y/N\n",count);<

102、;/p><p>  shouldsave = 1;</p><p>  fflush(stdin);</p><p>  scanf("%c",&y_n);</p><p><b>  }</b></p><p><b>  顯示學(xué)生模塊</b><

103、;/p><p>  show.c源程序文件:</p><p>  void show_record()</p><p><b>  {</b></p><p>  STU *p=NULL;</p><p>  if(head->next==NULL)</p><p>&l

104、t;b>  {</b></p><p>  printf("暫無記錄!");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p&g

105、t;  printf("\n學(xué)號(hào) 姓名 性別 語文 數(shù)學(xué) 英語 計(jì)算機(jī) C語言 平均分\n");</p><p>  for(p=head->next;p!=NULL;p=p->next) </p><p><b>  {</b></p><p>  printf(fomat,p->number,p-&

106、gt;name,p->sex,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4],p->average);</p><p><b>  }</b></p><p><b>  }</b></p><p><b

107、>  }</b></p><p>  6.5 對學(xué)生進(jìn)行排序模塊</p><p>  sort.c源程序文件:</p><p>  void sort_record()</p><p><b>  {</b></p><p>  STU *p=head->next,*pr

108、e=head,*p_free=NULL;//原鏈表的。</p><p>  STU *temp=NULL,*q=NULL,*beq=NULL,*headq=(STU *)malloc(LEN); //新的鏈表</p><p>  int sel,sort;</p><p>  beq=headq;</p><p>  beq->ne

109、xt=q;</p><p>  //int count=0; //總的記錄數(shù)</p><p>  if(head->next==NULL)</p><p><b>  {</b></p><p>  printf("\n沒有找到任何記錄!\n");</p><p>&

110、lt;b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("1:按學(xué)號(hào)排序\n");</p><p>  printf("2:按姓名排序\n");<

111、/p><p>  printf("3:按性別排序\n");</p><p>  printf("4:按語文排序\n");</p><p>  printf("5:按數(shù)學(xué)排序\n");</p><p>  printf("6:按英語排序\n");</p>

112、<p>  printf("7:按計(jì)算機(jī)排序\n");</p><p>  printf("8:按C語言排序\n");</p><p>  printf("9:按平均分排序\n");</p><p>  printf("請選擇排序關(guān)鍵字和方式,以空格分開\n1為升序,0為降序\n&quo

113、t;);</p><p>  fflush(stdin);</p><p>  scanf("%d %d",&sel,&sort);</p><p>  switch(sel)</p><p><b>  {</b></p><p><b>  cas

114、e 1: </b></p><p>  for(;head->next!=NULL;)//讀原鏈表</p><p><b>  {</b></p><p>  temp=(STU *)malloc(LEN);</p><p>  *temp=*head->next;//temp成為要加入鏈表的數(shù)據(jù)

115、點(diǎn)</p><p>  beq=headq,q=beq->next;</p><p>  if(sort==1)</p><p>  for(;(q!=NULL)&&(strcmp(temp->number,q->number)>=0);)//正序</p><p><b>  {</b&

116、gt;</p><p><b>  beq=q;</b></p><p>  q=q->next;</p><p><b>  }</b></p><p><b>  else</b></p><p>  for(;(q!=NULL)&&a

117、mp;(strcmp(temp->number,q->number)<=0);)//隆序</p><p><b>  {</b></p><p><b>  beq=q;</b></p><p>  q=q->next;</p><p><b>  }</b&

118、gt;</p><p>  temp->next=beq->next;</p><p>  beq->next=temp;</p><p>  p_free=head->next;</p><p>  head->next=head->next->next;</p><p> 

119、 free(p_free);</p><p><b>  }</b></p><p>  free(head); //釋放頭結(jié)點(diǎn)原內(nèi)存區(qū)</p><p>  head=headq; //頭結(jié)點(diǎn)指向新的內(nèi)存區(qū)</p><p>  shouldsave = 1;</p><p><b>

120、;  break;</b></p><p><b>  case 2: </b></p><p>  for(;head->next!=NULL;)//讀原鏈表</p><p><b>  {</b></p><p>  temp=(STU *)malloc(LEN);</p

121、><p>  *temp=*head->next;//temp成為要加入鏈表的數(shù)據(jù)點(diǎn)</p><p>  beq=headq,q=beq->next;</p><p>  if(sort==1)</p><p>  for(;(q!=NULL)&&(strcmp(temp->name,q->number)&

122、lt;=0);)//正序</p><p><b>  {</b></p><p><b>  beq=q;</b></p><p>  q=q->next;</p><p><b>  }</b></p><p><b>  else&l

123、t;/b></p><p>  for(;(q!=NULL)&&(strcmp(temp->name,q->number)>=0);)//隆序</p><p><b>  {</b></p><p><b>  beq=q;</b></p><p>  q=q

124、->next;</p><p><b>  }</b></p><p>  temp->next=beq->next;</p><p>  beq->next=temp;</p><p>  p_free=head->next;</p><p>  head->

125、next=head->next->next;</p><p>  free(p_free);</p><p><b>  }</b></p><p>  free(head);</p><p>  head=headq;</p><p>  shouldsave = 1;</p&

126、gt;<p><b>  break;</b></p><p><b>  case 3: </b></p><p>  for(;head->next!=NULL;)//讀原鏈表</p><p><b>  {</b></p><p>  temp=(ST

127、U *)malloc(LEN);</p><p>  *temp=*head->next;//temp成為要加入鏈表的數(shù)據(jù)點(diǎn)</p><p>  beq=headq,q=beq->next;</p><p>  if(sort==1)</p><p>  for(;(q!=NULL)&&(temp->sex&

128、gt;q->sex);)//正序</p><p><b>  {</b></p><p><b>  beq=q;</b></p><p>  q=q->next;</p><p><b>  }</b></p><p><b> 

129、 else</b></p><p>  for(;(q!=NULL)&&(temp->sex<q->sex);)//隆序</p><p><b>  {</b></p><p><b>  beq=q;</b></p><p>  q=q->nex

130、t;</p><p><b>  }</b></p><p>  temp->next=beq->next;</p><p>  beq->next=temp;</p><p>  p_free=head->next;</p><p>  head->next=hea

131、d->next->next;</p><p>  free(p_free);</p><p><b>  }</b></p><p>  free(head);</p><p>  head=headq;</p><p>  shouldsave = 1;</p><

132、;p><b>  break;</b></p><p><b>  case 4: </b></p><p><b>  case 5: </b></p><p><b>  case 6: </b></p><p><b>  case

133、7:</b></p><p><b>  case 8:</b></p><p>  for(;head->next!=NULL;)//讀原鏈表</p><p><b>  {</b></p><p>  temp=(STU *)malloc(LEN);</p>&l

134、t;p>  *temp=*head->next;//temp成為要加入鏈表的數(shù)據(jù)點(diǎn)</p><p>  beq=headq,q=beq->next;</p><p>  if(sort==1)</p><p>  for(;(q!=NULL)&&(temp->score[sel-4]>q->score[sel-4]

135、);)//正序</p><p><b>  {</b></p><p><b>  beq=q;</b></p><p>  q=q->next;</p><p><b>  }</b></p><p><b>  else</b&

136、gt;</p><p>  for(;(q!=NULL)&&(temp->score[sel-4]<q->score[sel-4]);)//隆序</p><p><b>  {</b></p><p><b>  beq=q;</b></p><p>  q=q-&

137、gt;next;</p><p><b>  }</b></p><p>  temp->next=beq->next;</p><p>  beq->next=temp;</p><p>  p_free=head->next;</p><p>  head->ne

138、xt=head->next->next;</p><p>  free(p_free);</p><p><b>  }</b></p><p>  free(head);</p><p>  head=headq;</p><p>  shouldsave = 1;</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論