畢業(yè)設(shè)計(jì)C語(yǔ)言學(xué)籍管理系統(tǒng)方案_第1頁(yè)
畢業(yè)設(shè)計(jì)C語(yǔ)言學(xué)籍管理系統(tǒng)方案_第2頁(yè)
畢業(yè)設(shè)計(jì)C語(yǔ)言學(xué)籍管理系統(tǒng)方案_第3頁(yè)
畢業(yè)設(shè)計(jì)C語(yǔ)言學(xué)籍管理系統(tǒng)方案_第4頁(yè)
畢業(yè)設(shè)計(jì)C語(yǔ)言學(xué)籍管理系統(tǒng)方案_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 . PAGE37 / NUMPAGES41 . 畢業(yè)設(shè)計(jì)(論文)題 目C語(yǔ)言學(xué)籍管理系統(tǒng)專 業(yè) 計(jì)算機(jī)應(yīng)用 班 次 09計(jì)應(yīng)1班 姓 名 炳臣 指導(dǎo)老師 匡孟秋 財(cái)經(jīng)工業(yè)職業(yè)技術(shù)學(xué)院二0一二年三月C語(yǔ)言學(xué)籍管理系統(tǒng)摘 要:本系統(tǒng)依據(jù)開發(fā)要求主要應(yīng)用于教育系統(tǒng),完成對(duì)日常的教育工作中學(xué)生成績(jī)檔案的數(shù)字化管理。開發(fā)本系統(tǒng)可使學(xué)院教職員工減輕工作壓力,比較系統(tǒng)地對(duì)教務(wù)、教學(xué)上的各項(xiàng)服務(wù)和信息進(jìn)行管理,同時(shí),可以減少勞動(dòng)力的使用,加快查詢速度、加強(qiáng)管理,以與國(guó)家各部門關(guān)于信息化的步伐,使各項(xiàng)管理更加規(guī)化。目前,學(xué)校工作繁雜、資料重多,雖然各類管理信息系統(tǒng)已進(jìn)入高校,但還未普與,而對(duì)于學(xué)生成績(jī)管理來(lái)說(shuō)

2、,目前還沒(méi)有一套完整的、統(tǒng)一的系統(tǒng)。因此,開發(fā)一套適和大眾的、兼容性好的系統(tǒng)是很有必要的。本系統(tǒng)在開發(fā)過(guò)程中,注意使其符合操作的業(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ì)上,采取了演化式原型法,隨著用戶的使用與對(duì)系統(tǒng)了解的不斷加深,對(duì)某一部分或幾部分進(jìn)行重新分析、設(shè)計(jì)、實(shí)施。本論文主要從系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)施與使用等幾個(gè)方面進(jìn)行介紹關(guān)鍵詞 成績(jī)管理 成績(jī)查詢 C語(yǔ)言 面向過(guò)程C Language Registration

3、 Management SystemAbstract: This system according to the development requirements are mainly applied in education 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, educatio

4、nal and teaching to the various services 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, make each management standardized.At present, the school work multifarious, mater

5、ial 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 unified system. Therefore, the development of a suitable and the populace, compatibility good system is very necessary.This

6、 system in the process of development, pay attention to the operation of the business 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 combinin

7、g 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 users of prototype, the use of system and the deepening understanding of a part or a few parts for analy

8、sis, design and implementation. This thesis mainly from the system analysis, system design and system implementation and use etc.Key WordsAchievement ManagementAchievement QueryC Programming LanguageProcedure-Oriented目錄TOC o 1-2 h z uHYPERLINK l _Toc293002554第1章緒論 PAGEREF _Toc293002554 h 1HYPERLINK

9、l _Toc2930025551.1 學(xué)籍管理系統(tǒng)概述 PAGEREF _Toc293002555 h 1HYPERLINK l _Toc2930025561.2 面向過(guò)程編程的基礎(chǔ)知識(shí) PAGEREF _Toc293002556 h 2HYPERLINK l _Toc293002557第2章需求分析 PAGEREF _Toc293002557 h 5HYPERLINK l _Toc2930025582.1 目標(biāo) PAGEREF _Toc293002558 h 5HYPERLINK l _Toc2930025592.2 要求 PAGEREF _Toc293002559 h 5HYPERLINK

10、 l _Toc2930025602.3 學(xué)生成績(jī)管理系統(tǒng)的功能 PAGEREF _Toc293002560 h 6HYPERLINK l _Toc293002561第3章模塊設(shè)計(jì) PAGEREF _Toc293002561 h 7HYPERLINK l _Toc2930025623.1主模塊 PAGEREF _Toc293002562 h 7HYPERLINK l _Toc2930025633.2 添加學(xué)生信息 PAGEREF _Toc293002563 h 7HYPERLINK l _Toc2930025643.3 顯示學(xué)生信息 PAGEREF _Toc293002564 h 7HYPERL

11、INK l _Toc2930025653.4 排序?qū)W生信息 PAGEREF _Toc293002565 h 7HYPERLINK l _Toc2930025663.5 查找學(xué)生信息 PAGEREF _Toc293002566 h 8HYPERLINK l _Toc293002567第4章主要數(shù)據(jù)結(jié)構(gòu) PAGEREF _Toc293002567 h 9HYPERLINK l _Toc293002568第5章流程圖 PAGEREF _Toc293002568 h 11HYPERLINK l _Toc293002569第6章源代碼 PAGEREF _Toc293002569 h 12HYPERLIN

12、K l _Toc2930025706.1 數(shù)據(jù)結(jié)構(gòu)與函數(shù)聲明的頭文件 PAGEREF _Toc293002570 h 12HYPERLINK l _Toc2930025716.2主控程序模塊 PAGEREF _Toc293002571 h 13HYPERLINK l _Toc2930025726.3添加學(xué)生模塊 PAGEREF _Toc293002572 h 20HYPERLINK l _Toc2930025736.4顯示學(xué)生模塊 PAGEREF _Toc293002573 h 21HYPERLINK l _Toc2930025746.5 對(duì)學(xué)生進(jìn)行排序模塊 PAGEREF _Toc29300

13、2574 h 22HYPERLINK l _Toc2930025756.6 查找學(xué)生模塊 PAGEREF _Toc293002575 h 30HYPERLINK l _Toc293002576參考文獻(xiàn) PAGEREF _Toc293002576 h 35HYPERLINK l _Toc293002577辭 PAGEREF _Toc293002577 h 36第1章 緒 論本章介紹學(xué)生學(xué)籍管理系統(tǒng)的有關(guān)知識(shí)、面向過(guò)程的編程技術(shù)以與應(yīng)用程序的開發(fā)方法和開發(fā)過(guò)程等基礎(chǔ)理論知識(shí),這是深入了解后續(xù)容的必要準(zhǔn)備。1.1 學(xué)籍管理系統(tǒng)概述1.1.1管理信息系統(tǒng)的概念管理信息系統(tǒng)(Management Inf

14、ormation Systems,簡(jiǎn)稱MIS),是一個(gè)不斷發(fā)展的新型學(xué)科,MIS的定義隨著計(jì)算機(jī)技術(shù)和通信技術(shù)的進(jìn)步也在不斷更新,在現(xiàn)階段普遍認(rèn)為MIS 是人為或計(jì)算機(jī)設(shè)備以與其他信息處理手段組成并用于管理信息的系統(tǒng)。包括以下幾個(gè)基本概念:(1) MIS的對(duì)象就是信息。信息是經(jīng)過(guò)加工的對(duì)決策者有價(jià)值的數(shù)據(jù)。信息的主要特征是來(lái)源分散,數(shù)量龐大。信息來(lái)源于生產(chǎn)第一線、社會(huì)環(huán)境、市場(chǎng)以與行政管理等部門。信息具有時(shí)間性。(2) 系統(tǒng)是由相互聯(lián)系、相互作用的若干要素按一定的規(guī)則組成并具有一定功能的整體。 系統(tǒng)由輸入、處理、輸出、反饋、控制等五個(gè)基本要素組成。(3) 管理信息由信息的采集、信息的傳遞、信息

15、的儲(chǔ)存、信息的加工、信息的維護(hù)和信息的使用等五個(gè)方面組成。 MIS包括計(jì)算機(jī)、網(wǎng)絡(luò)通信設(shè)備等硬件成分,也包括操作系統(tǒng)、應(yīng)用軟件包等軟件成分,并隨著計(jì)算機(jī)技術(shù)和通信技術(shù)的迅速發(fā)展還會(huì)出現(xiàn)更多的容。1.1.2 課題背景該項(xiàng)目開發(fā)的軟件為學(xué)校學(xué)生信息管理系統(tǒng)軟件,是鑒于目前學(xué)校學(xué)生人數(shù)劇增,學(xué)生信息呈爆炸性增長(zhǎng)的前提下,學(xué)校對(duì)學(xué)生信息管理的自動(dòng)化與準(zhǔn)確化的要求日益強(qiáng)烈的背景下構(gòu)思出來(lái)的,該軟件設(shè)計(jì)完成后可用于所有教育單位(包括學(xué)校,學(xué)院等等)的學(xué)生信息的管理. 目前社會(huì)上信息管理系統(tǒng)發(fā)展飛快,各個(gè)企事業(yè)單位都引入了信息管理軟件來(lái)管理自己日益增長(zhǎng)的各種信息,學(xué)生管理系統(tǒng)也是有了很大的發(fā)展,商業(yè)化的學(xué)生

16、信息管理軟件也不少.但本系統(tǒng)完全獨(dú)立開發(fā),力求使系統(tǒng)功能簡(jiǎn)潔明了,但功能齊全且易于操作1.1.3 目的背景與意義學(xué)生信息管理系統(tǒng)是一個(gè)教育單位不可缺少的部分。一個(gè)功能齊全、簡(jiǎn)單易用的信息管理系統(tǒng)不但能有效地減輕學(xué)校相關(guān)工作人員的工作負(fù)擔(dān),它的容對(duì)于學(xué)校的決策者和管理者來(lái)說(shuō)都至關(guān)重要。所以學(xué)生信息管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?。但一直以?lái)人們使用傳統(tǒng)人工的方式管理文件檔案、統(tǒng)計(jì)和查詢數(shù)據(jù),這種管理方式存在著許多缺點(diǎn),如:效率低、性差,人工的大量浪費(fèi);另外時(shí)間一長(zhǎng),將產(chǎn)生大量的文件和數(shù)據(jù),這對(duì)于查找、更新和維護(hù)都帶來(lái)了不少困難。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)

17、大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著來(lái)越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)學(xué)校的各類信息進(jìn)行管理,具有手工管理所無(wú)法比擬的優(yōu)點(diǎn).例如:檢索迅速、查詢方便、效率高、可靠性好、存儲(chǔ)量大、性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極提高學(xué)校信息管理的效率,也是一個(gè)單位科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。1.1.3 項(xiàng)目開發(fā)的目標(biāo) 建立學(xué)生信息管理系統(tǒng),采用計(jì)算機(jī)對(duì)學(xué)生信息進(jìn)行管理,進(jìn)一步提高辦學(xué)效益和現(xiàn)代化水平。幫助廣大教師提高工作效率,實(shí)現(xiàn)學(xué)生信息管理工作流程的系統(tǒng)化、規(guī)化和自動(dòng)化。1.2面向過(guò)程編程的基礎(chǔ)知識(shí)1.2.1面向過(guò)程基本概念面向過(guò)程其實(shí)是最為實(shí)際的

18、一種思考方式,就是算面向?qū)ο蟮姆椒ㄒ彩呛忻嫦蜻^(guò)程的思想.可以說(shuō)面向過(guò)程是一種基礎(chǔ)的方法.它考慮的是實(shí)際的實(shí)現(xiàn).一般的面向過(guò)程是從上往下步步求精.所以面向過(guò)程最重要的是模塊化的思想方法.對(duì)比較面向?qū)ο?面向?qū)ο蟮姆椒ㄖ饕前咽挛锝o對(duì)象化,對(duì)象包括屬性與行為.當(dāng)程序規(guī)模不是很大時(shí),面向過(guò)程的方法還會(huì)體現(xiàn)出一種優(yōu)勢(shì),因?yàn)槌绦虻牧鞒毯芮宄?按著模塊與函數(shù)的方法可以很好的組織.1.2.2 使用面向過(guò)程的C語(yǔ)言簡(jiǎn)介1. C語(yǔ)言C言是一種面向過(guò)程的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,它是目前眾多計(jì)算機(jī)語(yǔ)言中舉世公認(rèn)的優(yōu)秀的結(jié)構(gòu)程序設(shè)計(jì)語(yǔ)言之一。它由美國(guó)貝爾研究所的D.M.Ritchie于1972年推出。1978后,C語(yǔ)言

19、已先后被移植到大、中、小與微型機(jī)上。 C語(yǔ)言發(fā)展如此迅速,而且成為最受歡迎的語(yǔ)言之一,主要因?yàn)樗哂袕?qiáng)大的功能。許多著名的系統(tǒng)軟件,如DBASE 都是由C 語(yǔ)言編寫的。用C 語(yǔ)言加上一些匯編語(yǔ)言子程序,就更能顯示C 語(yǔ)言的優(yōu)勢(shì)了,像PC- DOS 、WORDSTAR等就是用這種方法編寫的。2. C 語(yǔ)言特點(diǎn):C語(yǔ)言是一種成功的系統(tǒng)描述語(yǔ)言,用C語(yǔ)言開發(fā)的UNIX操作系統(tǒng)就是一個(gè)成功的例;同時(shí)C語(yǔ)言又是一種通用的程序設(shè)計(jì)語(yǔ)言,在國(guó)際上廣泛流行。世界上很多著名的計(jì)算公司都成功的開發(fā)了不同版本的C語(yǔ)言,很多優(yōu)秀的應(yīng)用程序也都使用C語(yǔ)言開發(fā)的,它是一種很有發(fā)展前途的高級(jí)程序設(shè)計(jì)語(yǔ)言。1. C是中級(jí)語(yǔ)言

20、。它把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。C 語(yǔ)言可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作, 而這三者是計(jì)算機(jī)最基本的工作單元。 2.C是結(jié)構(gòu)式語(yǔ)言。結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼與數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護(hù)以與調(diào)試。C 語(yǔ)言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。3.C語(yǔ)言功能齊全。具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。另外C語(yǔ)言也具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大

21、,可以實(shí)現(xiàn)決策目的的游戲。4. C語(yǔ)言適用圍大。適合于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機(jī)型。 C語(yǔ)言對(duì)編寫需要硬件進(jìn)行操作的場(chǎng)合,明顯優(yōu)于其它解釋型高級(jí)語(yǔ)言,有一些大型應(yīng)用軟件也是用C語(yǔ)言編寫的。 C語(yǔ)言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫。它是數(shù)值計(jì)算的高級(jí)語(yǔ)言。5.C語(yǔ)言文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件 常用的C語(yǔ)言IDE(集成開發(fā)環(huán)境)有Microsoft Visual C+,Dev-C+,Code:Blocks,Borland C+,Watcom C+ ,Borland C+ B

22、uilder,GNU DJGPP C+ ,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc 等等 對(duì)于一個(gè)初學(xué)者,Microsoft Visual C+是一個(gè)比較好的軟件。界面友好,功能強(qiáng)大,調(diào)試也很方便。第2章 需求分析學(xué)籍管理系統(tǒng)應(yīng)具有如下1、能錄入學(xué)生的基本信息,包括學(xué)號(hào)、專業(yè)、年級(jí)、性別和出生日期信息,保存到結(jié)構(gòu)體數(shù)組中。2、能根據(jù)輸入的學(xué)號(hào)查找學(xué)生,進(jìn)行信息的修改。3、能根據(jù)輸入的學(xué)號(hào)從結(jié)構(gòu)體數(shù)組中刪除學(xué)生的記錄。4、實(shí)現(xiàn)查詢功能,能根據(jù)輸入的學(xué)號(hào)或年級(jí)在屏幕上顯示相應(yīng)的學(xué)生信息。5、能在屏幕上以列表的方式輸出所有學(xué)生的信息。2

23、.1 目標(biāo)(1)掌握和利用C語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力。(2)理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法。(3)掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法。(4)學(xué)會(huì)調(diào)試一個(gè)較長(zhǎng)程序的基本方法。(5)掌握書寫程序設(shè)計(jì)開發(fā)文檔的能力(書寫課程設(shè)計(jì)報(bào)告)。2.2 要求(1)用C語(yǔ)言實(shí)現(xiàn)系統(tǒng)。(2)利用結(jié)構(gòu)體鏈表實(shí)現(xiàn)學(xué)生成績(jī)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。(3)系統(tǒng)具有增加、查詢、插入、排序等基本功能。(4)系統(tǒng)的各個(gè)功能模塊要求用文件的形式實(shí)現(xiàn)。(5)完成設(shè)計(jì)任務(wù)并書寫課程設(shè)計(jì)報(bào)告。(6)將學(xué)生成績(jī)信息存在文件中。2.3 學(xué)生成績(jī)管理系統(tǒng)的功能1-按學(xué)號(hào)查詢學(xué)生信息2-按查詢學(xué)生信息3-顯示所有學(xué)生信息4-根據(jù)學(xué)號(hào)、單科成績(jī)進(jìn)行排

24、序5-添加學(xué)生信息6-刪除學(xué)生信息7-修改學(xué)生信息8-保存學(xué)生信息文件9-讀入學(xué)生信息文件0-退出此項(xiàng)目主要考察我們對(duì)結(jié)構(gòu)體、指針、文件的操作,以與C語(yǔ)言算法的掌握,所以完成此題目要求較高的設(shè)計(jì)能力,尤其是要有大局意識(shí)。如何調(diào)試程序也非常重要,通過(guò)這個(gè)程序可學(xué)到以前調(diào)試程序沒(méi)有的經(jīng)驗(yàn)。模塊設(shè)計(jì)將學(xué)生成績(jī)管理系統(tǒng)劃分為以下幾個(gè)模塊主模塊功能概述:1. 提供系統(tǒng)菜單的顯示功能2. 提供打開文件,并導(dǎo)入文件記錄的功能3. 提供保存文件信息的功能3.2 添加學(xué)生信息功能:1 根據(jù)輸入的相關(guān)信息,將學(xué)生信息添加到單向鏈表中 3.3 顯示學(xué)生信息功能:1. 將鏈表中的所有信息完全顯示3.4 排序?qū)W生信息功

25、能:(排序分為升序和降序兩種排序方式)1. 根據(jù)學(xué)號(hào)進(jìn)行排序2. 根據(jù)進(jìn)行排序3. 根據(jù)單科成績(jī)進(jìn)行排序4. 根據(jù)平均分進(jìn)行排序3.5 查找學(xué)生信息功能:(查找學(xué)生信息包含根據(jù)輸入學(xué)號(hào)進(jìn)行查找和根據(jù)輸入的進(jìn)行查找兩種方式,并根據(jù)返回的學(xué)生信息,進(jìn)行以下三種操作)1. 查詢學(xué)生信息,直接返回找到的信息2. 修改學(xué)生信息,根據(jù)找到的學(xué)生信息,對(duì)其進(jìn)行修改3. 刪除學(xué)生信息,根據(jù)找到的相關(guān)學(xué)生信息,從鏈表中刪除這條記錄第4章 主要數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)中用到的學(xué)生信息結(jié)構(gòu)體類型在單獨(dú)的頭文件stu.h中定義相應(yīng)的數(shù)據(jù)結(jié)構(gòu)體類型,全局變量,和宏名:LEN 記錄結(jié)構(gòu)體的大小定義學(xué)生結(jié)構(gòu)體 STU,包含相關(guān)的學(xué)

26、生信息struct student char number10; char name10; char sex; int score5; /用于記錄5門課程的成績(jī) float average; /平均分 struct student *next; /下個(gè)結(jié)點(diǎn);typedef struct student STU;定義*head全局指針,作為鏈表的頭結(jié)點(diǎn)static STU *head=NULL; /全局指針定義fomat字符串變量,作為錄入文件的數(shù)據(jù)格式char *fomat=%-10s%-10s%2c%4d%4d%4d%4d%4d%5.1fn;定義shouldsave全局變量,判斷是否需要保存

27、資料(0為不保存,1為保存)int shouldsave = 0; 各相關(guān)函數(shù)的聲明extern void append_record(); /添加記錄extern void show_record(); /輸出全部記錄extern void delete_record(); /刪除記錄extern void change_record(); /更改記錄extern void inquire_record(); /查詢記錄extern void sort_record(); /記錄排序第5章 流程圖圖1.1第6章 源代碼6.1 數(shù)據(jù)結(jié)構(gòu)與函數(shù)聲明的頭文件stu.h頭文件:#ifndef STU

28、_H#define STU_H#include#include#include#define LEN sizeof(STU) /宏,結(jié)構(gòu)體的大小struct student char number10; char name10; char sex; int score5; /用于記錄5門課程的成績(jī) float average; /平均分 struct student *next; /下個(gè)結(jié)點(diǎn);typedef struct student STU;static STU *head=NULL; /全局指針,作為鏈表的頭結(jié)點(diǎn)char *fomat=%-10s%-10s%2c%4d%4d%4d%4d%

29、4d%5.1fn;/錄入文件的數(shù)據(jù)格式int shouldsave = 0;/判斷是否需要保存資料的全局變量extern void append_record(); /添加記錄extern void show_record(); /輸出全部記錄extern void delete_record(); /刪除記錄extern void change_record(); /更改記錄extern void inquire_record(); /查詢記錄extern void sort_record(); /記錄排序#endif主控程序模塊main.c源文件:#includestu.h#include

30、sort.c#includeshow.c#includeappend.c#includefind.cvoid main(void) void save();void menu();void openfile(); /用于打開文件,形成鏈表int sel;openfile(); /用于打開文件信息,輸出到鏈表里while(1) menu(); fflush(stdin); scanf(%d,&sel); /讀取輸入的sel switch(sel) case 0:save();break;case 1:append_record();break; /* 增加學(xué)生 */ case 2:show_re

31、cord();break;/* 顯示學(xué)生 */ case 3:delete_record();break;/* 刪除學(xué)生 */ case 4:change_record();break;/* 修改學(xué)生 */ case 5:inquire_record();break;/* 查詢學(xué)生 */ case 6:sort_record();break;/排序default: printf(n輸入無(wú)效,請(qǐng)重新輸入n);break; void save()STU *p=NULL;FILE *fp;char *filename=E:student.txt;static int count=0; char y_

32、n;if(shouldsave) printf(n資料已更改,是否保存?(y or n)n); fflush(stdin); scanf(%c,&y_n); if(y_n!=y & y_n!=Y) printf(n%cn資料未保存n,y_n);/釋放空間 for(;head-next!=NULL;) p=head-next; head-next=head-next-next; free(p); free(head);exit(0); if(head-next=NULL) printf(n記錄為空n); return; else p=head-next; if(fp=fopen(filename

33、,w)=NULL) printf(n文件不能打開n);return; while(p!=NULL) fprintf(fp,fomat,p-number,p-name,p-sex,p-score0,p-score1,p-score2,p-score3,p-score4,p-average); p=p-next;count+; fclose(fp); printf(保存完畢,共保存%d條記錄,是否繼續(xù)?n,count); fflush(stdin); scanf(%c,&y_n); if(y_n=y|y_n=Y) return; else /釋放空間 for(;head-next!=NULL;)

34、p=head-next; head-next=head-next-next; free(p); free(head);printf(n你已退出系統(tǒng),再見n); exit(0); else printf(n你已退出系統(tǒng),再見n); exit(0);void menu()printf(n*n);printf(1.添加學(xué)生n);printf(2.顯示學(xué)生n);printf(3.刪除學(xué)生n);printf(4.修改學(xué)生n);printf(5,查詢學(xué)生n);printf(6.排序?qū)W生n);printf(0.退出n);printf(*n);printf(請(qǐng)選擇);void openfile() /用于打開

35、文件,形成鏈表FILE *fp;STU *p1=NULL,*p2=NULL;/,*temp=NULL;char y_n;static int count=0; /用于統(tǒng)計(jì)記錄數(shù) char u8IsFileNull;fp=fopen(E:student.txt,r); if(fp=NULL) printf(n=提示:文件還不存在,是否創(chuàng)建?(y/n)n); scanf(%c,&y_n); if(y_n=y|y_n=Y) fp=fopen(E:student.txt,w); else printf(n=提示:沒(méi)有創(chuàng)建文件n); exit(0); printf(n=提示:創(chuàng)建完成n); head=(

36、STU *)malloc(LEN);/創(chuàng)建完成后還是要建立統(tǒng)一的頭結(jié)點(diǎn),方便后續(xù)程序使用。 head-next=NULL; fclose(fp); return; printf(n=提示:文件已經(jīng)打開,正在導(dǎo)入記錄n); head=(STU *)malloc(LEN);p2=head; /用P2來(lái)指向表尾,p1來(lái)申請(qǐng)空間head-next=NULL; u8IsFileNull = fgetc(fp);if(u8IsFileNull=EOF) printf(文件為空n); return; rewind(fp);while(!feof(fp) p1=(STU *)malloc(LEN); fsca

37、nf(fp,%s %s %c %d %d %d %d %d %fn,p1-number,p1-name,&p1-sex,&p1-score0,&p1-score1,&p1-score2,&p1-score3,&p1-score4,&p1-average); p1-next=NULL; p2-next=p1; p2=p1; count+;fclose(fp);printf(n=提示:記錄導(dǎo)入完畢,共導(dǎo)入%d條記錄.n,count); 添加學(xué)生模塊append.c源程序文件:void append_record() STU *p1=NULL,*p2=NULL;/用P1來(lái)申請(qǐng)空間,P2來(lái)指向表尾 c

38、har y_n=y; int count=0; for(p2=head;p2-next!=NULL;p2=p2-next)/找到表尾; while(y_n=y|y_n=Y) p1=(STU *)malloc(LEN); printf(請(qǐng)輸入學(xué)號(hào) 性別 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 計(jì)算機(jī) C語(yǔ)言 的信息,以空格分開n); fflush(stdin); scanf(%s %s %c %d %d %d %d %d,p1-number,p1-name,&(p1-sex),&p1-score0,&p1-score1,&p1-score2,&p1-score3,&p1-score4); p1-average=(fl

39、oat)(p1-score0+p1-score1+p1-score2+p1-score3+p1-score4)/5; p1-next=NULL; p2-next=p1; p2=p1; count+; printf(n添加完成,共添加%d條記錄,是否繼續(xù)添加?Y/Nn,count); shouldsave = 1; fflush(stdin); scanf(%c,&y_n); 顯示學(xué)生模塊show.c源程序文件:void show_record() STU *p=NULL; if(head-next=NULL) printf(暫無(wú)記錄!); else printf(n學(xué)號(hào) 性別 語(yǔ)文 數(shù)學(xué) 英語(yǔ)

40、 計(jì)算機(jī) C語(yǔ)言 平均分n); for(p=head-next;p!=NULL;p=p-next) printf(fomat,p-number,p-name,p-sex,p-score0,p-score1,p-score2,p-score3,p-score4,p-average); 6.5 對(duì)學(xué)生進(jìn)行排序模塊sort.c源程序文件:void sort_record() STU *p=head-next,*pre=head,*p_free=NULL;/原鏈表的。 STU *temp=NULL,*q=NULL,*beq=NULL,*headq=(STU *)malloc(LEN); /新的鏈表 i

41、nt sel,sort; beq=headq; beq-next=q; /int count=0; /總的記錄數(shù) if(head-next=NULL) printf(n沒(méi)有找到任何記錄!n); else printf(1:按學(xué)號(hào)排序n); printf(2:按排序n); printf(3:按性別排序n); printf(4:按語(yǔ)文排序n); printf(5:按數(shù)學(xué)排序n); printf(6:按英語(yǔ)排序n); printf(7:按計(jì)算機(jī)排序n); printf(8:按C語(yǔ)言排序n); printf(9:按平均分排序n); printf(請(qǐng)選擇排序關(guān)鍵字和方式,以空格分開n1為升序,0為降序n

42、); fflush(stdin); scanf(%d %d,&sel,&sort); switch(sel) case 1: for(;head-next!=NULL;)/讀原鏈表 temp=(STU *)malloc(LEN);*temp=*head-next;/temp成為要加入鏈表的數(shù)據(jù)點(diǎn)beq=headq,q=beq-next;if(sort=1) for(;(q!=NULL)&(strcmp(temp-number,q-number)=0);)/正序 beq=q; q=q-next; else for(;(q!=NULL)&(strcmp(temp-number,q-number)n

43、ext; temp-next=beq-next;beq-next=temp;p_free=head-next;head-next=head-next-next; free(p_free); free(head); /釋放頭結(jié)點(diǎn)原存區(qū) head=headq; /頭結(jié)點(diǎn)指向新的存區(qū) shouldsave = 1; break; case 2: for(;head-next!=NULL;)/讀原鏈表 temp=(STU *)malloc(LEN);*temp=*head-next;/temp成為要加入鏈表的數(shù)據(jù)點(diǎn)beq=headq,q=beq-next;if(sort=1) for(;(q!=NUL

44、L)&(strcmp(temp-name,q-number)next; else for(;(q!=NULL)&(strcmp(temp-name,q-number)=0);)/隆序 beq=q; q=q-next; temp-next=beq-next;beq-next=temp;p_free=head-next;head-next=head-next-next; free(p_free); free(head); head=headq; shouldsave = 1; break; case 3: for(;head-next!=NULL;)/讀原鏈表 temp=(STU *)malloc

45、(LEN);*temp=*head-next;/temp成為要加入鏈表的數(shù)據(jù)點(diǎn)beq=headq,q=beq-next;if(sort=1) for(;(q!=NULL)&(temp-sexq-sex);)/正序 beq=q; q=q-next; else for(;(q!=NULL)&(temp-sexsex);)/隆序 beq=q; q=q-next; temp-next=beq-next;beq-next=temp;p_free=head-next;head-next=head-next-next; free(p_free); free(head); head=headq; should

46、save = 1; break; case 4: case 5: case 6: case 7: case 8: for(;head-next!=NULL;)/讀原鏈表 temp=(STU *)malloc(LEN);*temp=*head-next;/temp成為要加入鏈表的數(shù)據(jù)點(diǎn)beq=headq,q=beq-next;if(sort=1) for(;(q!=NULL)&(temp-scoresel-4q-scoresel-4);)/正序 beq=q; q=q-next; else for(;(q!=NULL)&(temp-scoresel-4scoresel-4);)/隆序 beq=q;

47、 q=q-next; temp-next=beq-next;beq-next=temp;p_free=head-next;head-next=head-next-next; free(p_free); free(head); head=headq; shouldsave = 1; break; case 9: for(;head-next!=NULL;)/讀原鏈表 temp=(STU *)malloc(LEN);*temp=*head-next;/temp成為要加入鏈表的數(shù)據(jù)點(diǎn)beq=headq,q=beq-next;if(sort=1) for(;(q!=NULL)&(temp-averag

48、eq-average);)/正序 beq=q; q=q-next; else for(;(q!=NULL)&(temp-averageaverage);)/隆序 beq=q; q=q-next; temp-next=beq-next;beq-next=temp;p_free=head-next;head-next=head-next-next; free(p_free); free(head); head=headq; shouldsave = 1; break; printf(n排序后的記錄信息:n學(xué)號(hào) 性別 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 計(jì)算機(jī) C語(yǔ)言 平均分n); for(q=headq-next;

49、q!=NULL;q=q-next) printf(fomat,q-number,q-name,q-sex,q-score0,q-score1,q-score2,q-score3,q-score4,q-average); 6.6 查找學(xué)生模塊find.c源程序文件:(包含查詢學(xué)生記錄、刪除學(xué)生記錄、更改學(xué)生記錄)STU *find() /用于找到需要的指針char name20,number10;static int sel;STU *pre=NULL;printf(請(qǐng)輸入查詢方式1.按學(xué)號(hào) 2.按n); scanf(%d,&sel);if(head-next=NULL)return pre;i

50、f(sel=1) printf(請(qǐng)輸入學(xué)號(hào)n); scanf(%s,number); for(pre=head;pre-next!=NULL;pre=pre-next) if(!strcmp(pre-next-number,number)return pre; else if(sel=2) printf(請(qǐng)輸入n); scanf(%s,name); for(pre=head;pre-next!=NULL;pre=pre-next) if(!strcmp(pre-next-name,name) return pre; return pre;void inquire_record()/查找記錄 S

51、TU *p=find(); if(p=NULL)|(p-next=NULL) printf(沒(méi)有找到該記錄!); else printf(n要查詢的記錄信息:n學(xué)號(hào) 性別 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 計(jì)算機(jī) C語(yǔ)言 平均分n); printf(fomat,p-next-number,p-next-name,p-next-sex,p-next-score0,p-next-score1,p-next-score2,p-next-score3,p-next-score4,p-next-average); void delete_record() /刪除記錄 STU *temp=NULL; STU *p=find(); if(p=NULL)|(p-next=NULL) printf(沒(méi)有找到該記錄!n); else printf(n要?jiǎng)h除的記錄信息:n學(xué)號(hào) 性別 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 計(jì)算機(jī) C語(yǔ)言 平均分n);printf(fomat,p-next-number,p-next-name,p-next-sex,p-next-score0,p-next-score1,p-next-score2,p-next-score3,p-next-score4,p-next-average); temp=p-next; p-next=p-next-next;

溫馨提示

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

評(píng)論

0/150

提交評(píng)論