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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

5、t;p>  【關鍵詞】 成績管理 成績查詢 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 學籍管理系統(tǒng)概述1</p><p>  1.2 面向過程編程的基礎知識2</p><p>  第2章 需求分析5</p><p><b>  2.1 目標5</b></p>

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

15、t;/p><p>  3.3 顯示學生信息7</p><p>  3.4 排序?qū)W生信息7</p><p>  3.5 查找學生信息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添加學生模塊20</p><p>  6.4顯示學生模塊21</p><p>  6.5 對學生進行排序模塊22</p><p>  6.6 查找學生模塊30&l

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

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

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

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

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

22、全獨立開發(fā),力求使系統(tǒng)功能簡潔明了,但功能齊全且易于操作</p><p>  1.1.3 目的背景與意義</p><p>  學生信息管理系統(tǒng)是一個教育單位不可缺少的部分。一個功能齊全、簡單易用的信息管理系統(tǒng)不但能有效地減輕學校相關工作人員的工作負擔,它的內(nèi)容對于學校的決策者和管理者來說都至關重要。所以學生信息管理系統(tǒng)應該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來人們使用傳統(tǒng)人

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

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

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

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

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

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

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

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

31、、DOS、UNIX等等;也適用于多種機型。   C語言對編寫需要硬件進行操作的場合,明顯優(yōu)于其它解釋型高級語言,有一些大型應用軟件也是用C語言編寫的。   C語言具有繪圖能力強,可移植性,并具備很強的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫。它是數(shù)值計算的高級語言。</p><p>  5.C語言文件由數(shù)據(jù)序列組成,可以構(gòu)成二進制文件或文本文件   常用的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 等等……   對于一個初學者,Microsoft Visual C++是一個比較好的軟件。界面友好,功能強大,調(diào)試也很方便。</p>

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

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

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

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

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

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

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

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

41、提供保存文件信息的功能</p><p>  3.2 添加學生信息</p><p><b>  功能:</b></p><p>  1. 根據(jù)輸入的相關信息,將學生信息添加到單向鏈表中 </p><p>  3.3 顯示學生信息</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ù)學號進行排序</p><p>  2. 根據(jù)姓

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

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

45、中用到的學生信息結(jié)構(gòu)體類型</p><p>  在單獨的頭文件stu.h中定義相應的數(shù)據(jù)結(jié)構(gòu)體類型,全局變量,和</p><p>  宏名:LEN 記錄結(jié)構(gòu)體的大小</p><p>  定義學生結(jié)構(gòu)體 STU,包含相關的學生信息</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; //下個結(jié)點</p><p><b>  };</b></p><p>  typedef struct student STU;</p><p>  定義*head全局指針,作為鏈表的頭結(jié)點</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>  各相關函數(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; //下個結(jié)點</p>

55、;<p><b>  };</b></p><p>  typedef struct student STU;</p><p>  static STU *head=NULL; //全局指針,作為鏈表的頭結(jié)點</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; /* 增加學

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

64、5:inquire_record();break;/* 查詢學生 */ </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.添加學生\n");</p&g

82、t;<p>  printf("2.顯示學生\n");</p><p>  printf("3.刪除學生\n");</p><p>  printf("4.修改學生\n");</p><p>  printf("5,查詢學生\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)計記錄數(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é)點,方便后續(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)打開,正在導入記錄......\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條記錄.\n",count); </p><p><b&

96、gt;  }</b></p><p><b>  添加學生模塊</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("請輸入學號 姓名 性別 語文 數(shù)學 英語 計算機 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>  顯示學生模塊</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學號 姓名 性別 語文 數(shù)學 英語 計算機 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 對學生進行排序模塊</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:按學號排序\n");</p><p>  printf("2:按姓名排序\n");<

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

112、<p>  printf("7:按計算機排序\n");</p><p>  printf("8:按C語言排序\n");</p><p>  printf("9:按平均分排序\n");</p><p>  printf("請選擇排序關鍵字和方式,以空格分開\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、點</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é)點原內(nèi)存區(qū)</p><p>  head=headq; //頭結(jié)點指向新的內(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ù)點</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ù)點</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ù)點</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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論