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

下載本文檔

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

文檔簡介

1、<p>  項(xiàng)目名稱: 學(xué)生信息管理系統(tǒng) </p><p><b>  目 錄</b></p><p>  1 實(shí)驗(yàn)?zāi)康暮鸵饬x1</p><p><b>  1.1 目的1</b></p><p><b>  1.2 意義1</b></p>

2、<p>  2 系統(tǒng)功能描述及設(shè)計(jì)1</p><p>  3 系統(tǒng)存儲結(jié)構(gòu)設(shè)計(jì)與描述3</p><p>  4 系統(tǒng)功能實(shí)現(xiàn)及算法描述3</p><p>  5 系統(tǒng)性能測試8</p><p><b>  6 設(shè)計(jì)小結(jié)14</b></p><p><b>  致謝1

3、4</b></p><p><b>  參考文獻(xiàn)15</b></p><p>  附錄:源代碼清單16</p><p><b>  1 實(shí)驗(yàn)?zāi)康暮鸵饬x</b></p><p><b>  1.1 目的</b></p><p>  C語言課

4、程設(shè)計(jì)要求我們綜合應(yīng)用所學(xué)的計(jì)算機(jī)基礎(chǔ)知識和所掌握的程序設(shè)計(jì)——C語言,獨(dú)立地設(shè)計(jì)并實(shí)現(xiàn)一個(gè)較為完整的小型軟件系統(tǒng)。主要目的是在鞏固所學(xué)內(nèi)容的基礎(chǔ)之上,將課本上的理論知識和實(shí)際有機(jī)的結(jié)合起來,鍛煉我們分析解決實(shí)際問題的能力。是我們通過系統(tǒng)分析,系統(tǒng)設(shè)計(jì),編程調(diào)試,寫實(shí)驗(yàn)報(bào)告等環(huán)節(jié),初步掌握軟件設(shè)計(jì)的方法和步驟,靈活運(yùn)用程序設(shè)計(jì)進(jìn)行軟件開發(fā)的能力,提高分析問題和解決問題的能力,提高程序設(shè)計(jì)水平。</p><p>&

5、lt;b>  1.2 意義</b></p><p>  描述實(shí)驗(yàn)意義學(xué)生信息檔案的管理對于學(xué)校的管理者來說至關(guān)重要,學(xué)生信息是高等學(xué)校非常重要的一項(xiàng)數(shù)據(jù)資源,是一個(gè)教育單位不可缺少一部分。但其包含的數(shù)據(jù)量大,涉及的人員面廣,而且需要及時(shí)更新,故較為復(fù)雜,難以單純地依賴人工管理,而且傳統(tǒng)的人工管理方式既不易于規(guī)范化,管理效率也不高,所以利用計(jì)算機(jī)實(shí)現(xiàn)學(xué)生信息檔案管理成為必然的趨勢。本系統(tǒng)針對學(xué)校學(xué)

6、生信息的特點(diǎn)以及管理中實(shí)際需要而設(shè)計(jì),能夠有效地實(shí)現(xiàn)學(xué)生信息管理的信息化,減輕管理人員的工作負(fù)擔(dān),高效率、規(guī)范化地管理大量的學(xué)生信息,并避免人為操作的錯(cuò)誤和不規(guī)范行為。</p><p>  2 系統(tǒng)功能描述及設(shè)計(jì)</p><p>  系統(tǒng)設(shè)計(jì)的總?cè)蝿?wù)是實(shí)現(xiàn)各種信息的系統(tǒng)化、規(guī)范化和自動化。系統(tǒng)設(shè)計(jì)主要包括以下兩方面:</p><p>  1.系統(tǒng)功能設(shè)計(jì)是在系統(tǒng)開發(fā)

7、的總體任務(wù)的基礎(chǔ)上完成。本設(shè)計(jì)中的信息管理系統(tǒng)需要完成功能主要有:</p><p>  學(xué)生信息錄入,包括學(xué)號、學(xué)生姓名、學(xué)生性別、學(xué)生的計(jì)算機(jī)成績、英語成績、數(shù)學(xué)成績。其中學(xué)號是隨機(jī)生成的。</p><p>  學(xué)生信息瀏覽,包括學(xué)號、學(xué)生姓名、學(xué)生性別、計(jì)算機(jī)成績、英語成績、數(shù)學(xué)成績等。</p><p>  學(xué)生信息查詢,包括按學(xué)號查詢和按姓名查詢學(xué)生學(xué)號、學(xué)生

8、姓名、學(xué)生性別、計(jì)算機(jī)成績、英語成績、數(shù)學(xué)成績。</p><p>  學(xué)生信息排序,包括按學(xué)生的總分大小進(jìn)行從大到小排序。</p><p>  學(xué)生信息添加, 包括添加學(xué)生學(xué)號、學(xué)生姓名、學(xué)生性別、計(jì)算機(jī)成績、英語成績、數(shù)學(xué)成績等</p><p>  學(xué)生信息統(tǒng)計(jì),包括最高分、最低分、平均分、及格率及各個(gè)分?jǐn)?shù)段的比率。</p><p>  學(xué)

9、生信息刪除,包括按學(xué)號查詢該學(xué)生然后顯示該學(xué)生的信息,并提示是否刪除。</p><p>  學(xué)生信息修改,包括學(xué)生學(xué)號、學(xué)生姓名、學(xué)生性別、計(jì)算機(jī)成績、英語成績、數(shù)學(xué)成績等的修改。</p><p>  2.系統(tǒng)功能模塊設(shè)計(jì)是對上述各項(xiàng)功能進(jìn)行集中、分塊,按照結(jié)構(gòu)化程序設(shè)計(jì)的要求,得到如圖2-1所示的系統(tǒng)功能模塊圖。</p><p>  圖2-1學(xué)生信息管理系統(tǒng)功能模

10、塊圖</p><p>  3 系統(tǒng)存儲結(jié)構(gòu)設(shè)計(jì)與描述</p><p>  存儲結(jié)構(gòu)為結(jié)構(gòu)體,如下:</p><p>  struct student</p><p><b>  {</b></p><p>  int ID; /*學(xué)生的學(xué)號*/&l

11、t;/p><p>  char Name[20]; /*學(xué)生的姓名*/</p><p>  char Sex[3]; /*學(xué)生的性別*/</p><p>  float Computer; /*學(xué)生的計(jì)算機(jī)成績*/</p><p>  f

12、loat English; /*學(xué)生的英語成績*/</p><p>  float Math; /*學(xué)生的數(shù)學(xué)成績*/</p><p>  float Average; /*學(xué)生的平均分?jǐn)?shù)*/</p><p>  }student[1000],t;

13、 /*定義了一千個(gè)學(xué)生,t為程序中需要的中介結(jié)構(gòu)體在查詢學(xué)生成績的時(shí)候可以作為中介變量是整個(gè)結(jié)構(gòu)體轉(zhuǎn)換。另外在學(xué)生信息排序的是的時(shí)候在定義最大值得時(shí)候作為中介變量使得排序按照平均分?jǐn)?shù)排序*/</p><p>  定義的一個(gè)包含學(xué)生學(xué)號、姓名、性別、計(jì)算機(jī)分?jǐn)?shù)、數(shù)學(xué)分?jǐn)?shù)、英語分?jǐn)?shù)的結(jié)構(gòu)體變量。用于存儲學(xué)生信息。后面給出了結(jié)構(gòu)體中的具體的解釋和說明,在此種的程序管理中,定義結(jié)構(gòu)體可以使

14、得程序變得簡單,不會那么的復(fù)雜難以控制,這也是結(jié)構(gòu)體在寫程序時(shí)候的方便。</p><p>  4 系統(tǒng)功能實(shí)現(xiàn)及算法描述</p><p>  下面是系統(tǒng)用到的函數(shù)名:</p><p>  void main(); /*主函數(shù)*/</p><p>  void save();

15、 /*文件的保存*/</p><p>  int load(); /*文件的讀取*/</p><p>  int suiji(); /*隨機(jī)數(shù)的生成*/</p><p>  int Student_SearchByIn

16、dex(int id); /*通過學(xué)號返回?cái)?shù)組下標(biāo)*/</p><p>  int Student_SearchByName(char name[]); /*通過姓名返回?cái)?shù)組下標(biāo)*/</p><p>  void Student_StatisticsByMath(); /*按數(shù)學(xué)成績統(tǒng)計(jì)學(xué)生信息*/</p><p>  void

17、 Student_StatisticsByEnglish(); /*按英語成績統(tǒng)計(jì)學(xué)生信息*/</p><p>  void Student_StatisticsByComputer(); /*按計(jì)算機(jī)成績統(tǒng)計(jì)學(xué)生信息*/</p><p>  float Student_Average(int index); /*求每個(gè)學(xué)生的平均分?jǐn)?shù)*/</

18、p><p>  void Student_DisplaySingle(int index); /*顯示單個(gè)的學(xué)生信息*/</p><p>  void Student_Input(); /*輸入學(xué)生的信息*/</p><p>  void Student_Display(); /*瀏覽學(xué)生信息*

19、/</p><p>  void Student_Select(); /*兩種選擇查找*/</p><p>  void Student_Sort(); /*對學(xué)生信息排序*/</p><p>  void Student_Statistics(); /*統(tǒng)計(jì)學(xué)生信

20、息*/</p><p>  void Student_Insert(); /*添加學(xué)生信息*/</p><p>  void Student_Modify(); /*修改學(xué)生信息*/</p><p>  void Student_Delete(); /*刪除學(xué)生信

21、息*/</p><p>  以上為全部函數(shù),后面為函數(shù)的說明。下面給出部分函數(shù)的流程圖:</p><p>  1.主菜單模塊包含了錄入,瀏覽,查詢,排序,統(tǒng)計(jì),添加,修改,刪除,退出這幾個(gè)小模塊,他們之間存在以下的聯(lián)系,用流程圖給出,學(xué)生信息管理功能菜單的流程圖:</p><p>  圖4-1功能菜單的流程圖</p><p>  2.主菜單選

22、3進(jìn)入查詢模塊,包含了按學(xué)號查詢和按姓名查詢,如果輸入的學(xué)號與內(nèi)存里的學(xué)號相等,就輸出該學(xué)生的所有信息,如果不相等則提示用戶不存在該學(xué)生,并且詢問用戶時(shí)候繼續(xù)查詢,若繼續(xù)查詢則重新輸入學(xué)號,若不繼續(xù)則返回上一層菜單。下面給出按學(xué)號查詢的流程圖:</p><p>  圖4-2 學(xué)號查詢流程圖</p><p>  這個(gè)流程圖是按學(xué)號來查詢學(xué)生信息,先進(jìn)入主菜單輸入3選擇查詢模塊,然后輸入用戶想

23、要查詢的學(xué)生的學(xué)生學(xué)號,此時(shí)調(diào)用子函數(shù)int Student_SearchByIndex(int id)來確定是否有該學(xué)生,若有則輸出該學(xué)生的信息,若不存在,則顯示不存在該學(xué)生并詢問用戶是否繼續(xù)查詢。</p><p>  3.主菜單選6進(jìn)入刪除模塊,刪除函數(shù)的功能是首先查詢是否有這個(gè)學(xué)生,如果有,則選擇是否刪除。如果沒有則輸出不存在該學(xué)生并且詢問用戶是否繼續(xù)查詢。下面給出刪除函數(shù)的流程圖:</p>

24、<p>  圖4-3學(xué)生刪除函數(shù)流程圖</p><p>  學(xué)生刪除模塊,開始主菜單后選擇8進(jìn)入學(xué)生信息刪除模塊,繼而輸入要刪除的學(xué)生的學(xué)號,系統(tǒng)會通過學(xué)號來查找要刪除的學(xué)生信息,同時(shí)調(diào)用int Student_SearchByIndex(int id)函數(shù)來確定是否有該學(xué)生,有則詢問用戶是否要刪除,若不存在該學(xué)生則輸出不存在,是否繼續(xù),刪除學(xué)生信息之后系統(tǒng)繼續(xù)詢問用戶是否繼續(xù)刪除學(xué)生信息。</p

25、><p>  4.主菜單選5進(jìn)入統(tǒng)計(jì)模塊,統(tǒng)計(jì)函數(shù)的功能按照用戶的選擇來按照不同科目的成績來統(tǒng)計(jì)學(xué)生信息??梢园凑沼?jì)算機(jī)成績,英語成績和數(shù)學(xué)成績統(tǒng)計(jì),下面用計(jì)算機(jī)成績的流程圖來舉例吧。</p><p>  圖4-4學(xué)生統(tǒng)計(jì)函數(shù)流程圖(按計(jì)算機(jī)成績統(tǒng)計(jì))</p><p>  如圖按照學(xué)生計(jì)算機(jī)成績來統(tǒng)計(jì)學(xué)生信息,先進(jìn)入主菜單有用戶選擇統(tǒng)計(jì)模塊,進(jìn)入統(tǒng)計(jì)模塊后進(jìn)入了統(tǒng)計(jì)子菜

26、單,由用戶選擇1按照計(jì)算機(jī)成績來統(tǒng)計(jì)所有學(xué)生的關(guān)于計(jì)算機(jī)成績的最高分,最低分,平均跟,及格率和分?jǐn)?shù)段比率。</p><p><b>  5 系統(tǒng)性能測試</b></p><p>  通過對程序測試的截圖,顯示各函數(shù)的測試情況,下面為各個(gè)模塊的測試圖:</p><p>  程序主菜單:進(jìn)入主菜單之后可以有如圖九種選擇。</p>&l

27、t;p><b>  圖5-1程序主菜單</b></p><p>  輸入1后進(jìn)入錄入學(xué)生信息菜單,可以錄入學(xué)生姓名,性別,學(xué)號,計(jì)算機(jī)分?jǐn)?shù),英語分?jǐn)?shù)和數(shù)學(xué)分?jǐn)?shù),錄入完了一位學(xué)生信息后可以選擇是否繼續(xù)錄入,選擇y可以繼續(xù)錄入學(xué)生信息。</p><p>  圖5-2錄入學(xué)生信息菜單</p><p>  開始錄入學(xué)生信息,如圖,錄入完了一個(gè)學(xué)生

28、信息之后選擇y繼續(xù)便進(jìn)行下一個(gè)學(xué)生的信息錄入.。</p><p>  圖5-3錄入學(xué)生信息</p><p>  輸入n后,回到主菜單然后輸入2瀏覽學(xué)生信息,瀏覽學(xué)生信息將所有的學(xué)生信息按照指定的格式輸出,瀏覽學(xué)生信息之后可以按enter鍵返回主菜單。</p><p>  圖5-4學(xué)生信息瀏覽</p><p>  輸入enter之后返回主菜單,

29、繼續(xù)輸入3后進(jìn)入查詢界面如圖所示,可以有兩種查詢的方式,按學(xué)號查找和按姓名查找,如圖選擇一可以按學(xué)號查詢學(xué)生信息,輸入學(xué)號顯示學(xué)生信息,并且提示用戶是否繼續(xù),若繼續(xù)則繼續(xù)輸入學(xué)號查詢,若不繼續(xù)則返回上一個(gè)菜單。</p><p>  圖5-5學(xué)生信息查詢</p><p>  主菜單輸入4進(jìn)入排序界面,如圖所示,系統(tǒng)按照總分成績大小從上往下排序,排序完了之后并顯示排序后的學(xué)生信息瀏覽,瀏覽完按

30、enter鍵返回主菜單。</p><p>  圖5-6學(xué)生信息排序主菜單</p><p>  主菜單選5進(jìn)入統(tǒng)計(jì)菜單,在統(tǒng)計(jì)菜單里面可以選擇按計(jì)算機(jī)成績,按英語成績,按數(shù)學(xué)成績這三種方式對學(xué)生信息進(jìn)行統(tǒng)計(jì)。</p><p>  圖5-7學(xué)生信息統(tǒng)計(jì)菜單</p><p>  計(jì)算機(jī)分?jǐn)?shù)統(tǒng)計(jì),此時(shí)系統(tǒng)按照所以學(xué)生的計(jì)算機(jī)成績來統(tǒng)計(jì),統(tǒng)計(jì)后顯示學(xué)生

31、計(jì)算機(jī)成績里面的最高分,最低分,平均分,及格率以及分?jǐn)?shù)段比率。統(tǒng)計(jì)完了之后提示用戶是否繼續(xù),若繼續(xù)則返回上一個(gè)菜單,不繼續(xù)則返回主菜單。</p><p>  圖5-8計(jì)算機(jī)分?jǐn)?shù)統(tǒng)計(jì)</p><p>  主菜單選6進(jìn)入添加學(xué)生信息界面,進(jìn)圖界面之后由用戶添加一個(gè)學(xué)生的信息,包括學(xué)生姓名,學(xué)生性別,計(jì)算機(jī)成績,英語成績和數(shù)學(xué)成績,至于學(xué)號由系統(tǒng)隨機(jī)分配。</p><p>

32、;  圖5-9刪除學(xué)生信息</p><p>  主菜單選7進(jìn)入修改菜單,通過輸入學(xué)生學(xué)號查找到學(xué)生的信息,然后顯示學(xué)生的信息,并且讓用戶重新輸入要修改后的信息,包含姓名,性別,計(jì)算機(jī)成績,英語成績和數(shù)學(xué)成績,至于學(xué)號是系統(tǒng)隨機(jī)生成。</p><p>  圖5-10修改學(xué)生信息</p><p>  主菜單選8進(jìn)入刪除菜單,進(jìn)入刪除菜單后通過輸入學(xué)號找到要刪除的學(xué)生信息

33、,程序通過后一個(gè)的學(xué)生信息將前一個(gè)學(xué)生的信息依次覆蓋來達(dá)到學(xué)生刪除功能,顯示了學(xué)生信息之后提示用戶是否繼續(xù)刪除.</p><p><b>  圖5-11刪除菜單</b></p><p>  主菜單選9退出即可推出該系統(tǒng)。</p><p>  圖5-12退出學(xué)生管理系統(tǒng)</p><p><b>  系統(tǒng)總結(jié):&l

34、t;/b></p><p>  整個(gè)系統(tǒng)清新簡明,功能較多,模塊分析到位,有錄入也有添加,信息加入之后還有修改以及刪除功能,觀看里面的學(xué)生信息有瀏覽功能,為了明了的了解學(xué)生的信息還附帶了排序,查找和統(tǒng)計(jì)功能,總體而言系統(tǒng)比較完善,具備的功能也比較多,而且該系統(tǒng)對非法字符也有所考慮,大致的內(nèi)容模板簡單明了。</p><p><b>  6 設(shè)計(jì)小結(jié)</b><

35、/p><p>  我覺得這次課程設(shè)計(jì)應(yīng)該是我們大一下學(xué)期以來寫的最多代碼的程序了,以前每次上機(jī)寫過許多的小程序,感覺都不是很難??墒沁@次的課程設(shè)計(jì),才發(fā)現(xiàn)要寫一個(gè)比較完善的管理系統(tǒng)是比較困難的,通過這次的課程設(shè)計(jì)我發(fā)現(xiàn)我在學(xué)習(xí)上有太多的不足。比如一開始不知道該如何下手,一點(diǎn)思路都沒有。后來就將一個(gè)個(gè)的子函數(shù)寫出來,然后將它們一個(gè)一個(gè)運(yùn)行,發(fā)現(xiàn)沒有很大問題,但是這時(shí)候總體的時(shí)候卻又出了別的新問題了。很多函數(shù)連接不起來。

36、問題還是有很多,在文件的讀取與寫入,遇見了比較多次的麻煩,有關(guān)于這個(gè)返回值的問題,因?yàn)閷⒊绦蜻\(yùn)行完了一次之后輸入的人數(shù)的總體值會清零,而這個(gè)時(shí)候在讀文件的時(shí)候需要返回值,后來是在老師的指導(dǎo)下慢慢完成的。不過在此期間,我學(xué)到了很多東西。以前學(xué)習(xí)的選擇語句,條件語句,變量的控制等等都得到了很好的鞏固。還有我知道了如何一條條的去調(diào)試語句,運(yùn)用這個(gè)方法我知道如何更簡單知道程序的錯(cuò)誤和修改程序。當(dāng)我把程序?qū)懞煤螅野l(fā)現(xiàn)C語言并不是很難,難的是自己

37、并不用心花時(shí)間去專研,雖然遇到了很多的困難,但是進(jìn)過自己的努力和同學(xué)與老師的幫助,自己也是全部弄清楚了,這次程序設(shè)計(jì)我學(xué)到了很多。</p><p><b>  致謝</b></p><p>  本次課程設(shè)計(jì)是在胡老師指導(dǎo)以及同學(xué)們的互相幫助下完成的,在此次的程序編寫中老師給了我很多的建議和指導(dǎo),使得本設(shè)計(jì)順利完成。在此期間, 老師對我提出的問題都很詳細(xì)的給出解答,無論

38、是小問題或者是一些比較麻煩的問題都很細(xì)心的指導(dǎo)和說教。一點(diǎn)點(diǎn)的指出我錯(cuò)誤的部分,并給出各種解決方法。這次的程序設(shè)計(jì)真的很謝謝胡老師。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 雷于生,胡成松.C語言程序設(shè)計(jì)[M].北京:高等教育出版社,廣州:中山大學(xué)出版社.2009.[2] 譚浩強(qiáng).C語言課程設(shè)計(jì)(第三版)[M].北京:清華大學(xué)出版社

39、.1996.[3] 譚浩強(qiáng).C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)[M].北京:清華大學(xué)出版社.2005.[4] 黃遠(yuǎn)林 等編著.C語言程序設(shè)計(jì)基礎(chǔ)實(shí)驗(yàn)與題解[M].北京:清華大學(xué)出版社.2010. </p><p><b>  附錄:源代碼清單</b></p><p>  #include"stdio.h"</p><p>  

40、#include"stdlib.h"</p><p>  #include"string.h"</p><p>  void save(); /*文件的保存*/</p><p>  int load(); /*文件的讀取*

41、/</p><p>  int suiji(); /*隨機(jī)數(shù)的生成*/</p><p>  int Student_SearchByIndex(int id); /*通過學(xué)號返回?cái)?shù)組下標(biāo)*/</p><p>  int Student_SearchByName(char name[]); /*通過姓名返回?cái)?shù)

42、組下標(biāo)*/</p><p>  void Student_StatisticsByMath(); /*按數(shù)學(xué)成績統(tǒng)計(jì)學(xué)生信息*/</p><p>  void Student_StatisticsByEnglish(); /*按英語成績統(tǒng)計(jì)學(xué)生信息*/</p><p>  void Student_StatisticsByComputer();

43、 /*按計(jì)算機(jī)成績統(tǒng)計(jì)學(xué)生信息*/</p><p>  float Student_Average(int index); /*求每個(gè)學(xué)生的平均分?jǐn)?shù)*/</p><p>  void Student_DisplaySingle(int index); /*顯示單個(gè)的學(xué)生信息*/</p><p>  void Student_Input();

44、 /*輸入學(xué)生的信息*/</p><p>  void Student_Display(); /*瀏覽學(xué)生信息*/</p><p>  void Student_Select(); /*兩種選擇查找*/</p><p>  void Student_Sort();

45、 /*對學(xué)生信息排序*/</p><p>  void Student_Statistics(); /*統(tǒng)計(jì)學(xué)生信息*/</p><p>  void Student_Insert(); /*添加學(xué)生信息*/</p><p>  void Student_Modify();

46、 /*修改學(xué)生信息*/</p><p>  void Student_Delete(); /*刪除學(xué)生信息*/</p><p>  int Num=0,SAME[20];</p><p>  struct student</p><p><b>  {</b></p>

47、<p>  int ID; /*學(xué)生的學(xué)號*/</p><p>  char Name[20]; /*學(xué)生的姓名*/</p><p>  char Sex[3]; /*學(xué)生的性別*/</p><p>  float Computer

48、; /*學(xué)生的計(jì)算機(jī)成績*/</p><p>  float English; /*學(xué)生的英語成績*/</p><p>  float Math; /*學(xué)生的數(shù)學(xué)成績*/</p><p>  float Average;

49、 /*學(xué)生的平均分?jǐn)?shù)*/</p><p>  }student[1000],t; /*定義了一千個(gè)學(xué)生,t為程序中需要的中介結(jié)構(gòu)體*/</p><p>  void main()</p><p><b>  {</b></p><p><b>  int n;</b&

50、gt;</p><p>  while(n!=9)</p><p><b>  {</b></p><p>  system("cls");</p><p>  printf("*********************************************************

51、***\n");</p><p>  printf("- - - - - - - - - - - - ");</p><p>  printf("學(xué)生信息管理系統(tǒng)");</p><p>  printf("- - - - - - - - - - - - \n");</p><p

52、>  printf("1.錄入學(xué)生信息 ");/*完成*/</p><p>  printf("2.瀏覽學(xué)生信息 \n");/*完成*/</p><p>  printf("3.查找學(xué)生信息 ");/*完成*/</p><p>  printf("4

53、.對學(xué)生信息排序 \n");/*完成*/</p><p>  printf("5.統(tǒng)計(jì)學(xué)生信息 ");/*完成*/</p><p>  printf("6.添加學(xué)生信息 \n");/*完成*/</p><p>  printf("7.修改學(xué)生信息 &quo

54、t;);/*完成*/</p><p>  printf("8.刪除學(xué)生信息 \n");/*完成*/</p><p>  printf("9.退出程序 \n");</p><p>  printf("- - - - - - - - - - - - - - - - - - - - - - -

55、- - - - - - - \n");</p><p>  printf("************************************************************\n");</p><p>  printf("輸入選擇類型1--9:\n");</p><p>  scanf(&quo

56、t;%d",&n);</p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1:Student_Input();break;</p><p>  case 2:Student_Display();break;&

57、lt;/p><p>  case 3:Student_Select();break;</p><p>  case 4:Student_Sort();break;</p><p>  case 5:Student_Statistics();break;</p><p>  case 6:Student_Insert();break;</p&

58、gt;<p>  case 7:Student_Modify();break;</p><p>  case 8:Student_Delete();break;</p><p>  case 9:exit(0);break;</p><p><b>  }</b></p><p><b>  }&

59、lt;/b></p><p><b>  }</b></p><p><b>  /*隨機(jī)數(shù)*/</b></p><p>  int suiji()</p><p><b>  {</b></p><p><b>  int m,n;&l

60、t;/b></p><p>  for(m=0;m<1000;m++)</p><p><b>  {</b></p><p>  SAME[m]=rand()%1000+2011000;</p><p>  for(n=0;n<m;n++)</p><p>  if(SAME[

61、m]==SAME[n])</p><p><b>  {</b></p><p><b>  m--;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  retur

62、n SAME[m];</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*通過學(xué)號返回?cái)?shù)組下標(biāo)*/</p><p>  int Student_SearchByIndex(int id)</p><p><b> 

63、 {</b></p><p><b>  int i;</b></p><p>  for (i=0;i<Num;i++)</p><p><b>  {</b></p><p>  if(student[i].ID==id)</p><p><b&g

64、t;  {</b></p><p><b>  return i;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  return -1;</p><p><b>  } &

65、lt;/b></p><p>  /*通過姓名返回?cái)?shù)組下標(biāo)*/</p><p>  int Student_SearchByName(char name[])</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  

66、for(i=0;i<Num;i++)</p><p><b>  {</b></p><p>  if(strcmp(student[i].Name,name)==0)</p><p><b>  {</b></p><p><b>  return i;</b><

67、/p><p><b>  }</b></p><p><b>  }</b></p><p>  return -1;</p><p><b>  }</b></p><p>  /*求每個(gè)學(xué)生的平均分?jǐn)?shù)*/</p><p>  fl

68、oat Student_Average(int index)</p><p><b>  {</b></p><p>  student[index].Average=(student[index].Computer+student[index].English+student[index].Math)/3;</p><p>  return

69、student[index].Average;</p><p><b>  }</b></p><p>  /*顯示單個(gè)學(xué)生信息*/</p><p>  void Student_DisplaySingle(int index)</p><p><b>  {</b></p><

70、p>  printf("%10s%10s%10s%8s%8s%8s\n","學(xué)號","姓名","性別","計(jì)算機(jī)","英語","數(shù)學(xué)");</p><p>  printf("------------------------------------------

71、------------------\n");</p><p>  printf("%10d%10s%10s%8.2f%8.2f%8.2f\n",student[index].ID,student[index].Name,student[index].Sex,student[index].Computer,student[index].English,student[index].M

72、ath);</p><p><b>  }</b></p><p>  /*錄入學(xué)生的信息*/ </p><p>  void Student_Input() </p><p><b>  {</b></p><p><b>  char ch;</b>

73、</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  printf("請輸入姓名:");</p><p>  scanf("%s",student[Num].Name);</p>&l

74、t;p>  printf("請輸入學(xué)生性別:");</p><p>  scanf("%s",student[Num].Sex);</p><p>  printf("請輸入計(jì)算機(jī)成績:");</p><p>  scanf("%f",&student[Num].Compu

75、ter);</p><p>  printf("請輸入英語成績:");</p><p>  scanf("%f",&student[Num].English);</p><p>  printf("請輸入數(shù)學(xué)成績:");</p><p>  scanf("%f&qu

76、ot;,&student[Num].Math);</p><p>  student[Num].ID=suiji();</p><p><b>  Num++;</b></p><p>  printf("是否繼續(xù)?(y/n):");</p><p>  getchar();</p>

77、;<p>  ch=getchar();</p><p>  while(ch!='y'&&ch!='n')</p><p><b>  {</b></p><p>  printf("輸入格式不正確,是否繼續(xù)(y/n):");</p><p&

78、gt;  getchar();</p><p>  ch=getchar();</p><p>  if(ch=='n')</p><p><b>  {</b></p><p><b>  break;</b></p><p><b>  }<

79、;/b></p><p><b>  }</b></p><p>  if(ch=='n')</p><p><b>  {</b></p><p><b>  break;</b></p><p><b>  }<

80、/b></p><p><b>  } </b></p><p><b>  save();</b></p><p><b>  }</b></p><p>  /*瀏覽學(xué)生信息*/</p><p>  void Student_Display()

81、</p><p><b>  {</b></p><p>  Num=load();</p><p><b>  int i;</b></p><p>  printf("%10s%10s%10s%8s%8s%8s\n","學(xué)號","姓名"

82、,"性別","計(jì)算機(jī)","英語","數(shù)學(xué)");</p><p>  printf("------------------------------------------------------------\n");</p><p>  for(i=0;i<Num;i++)</p&

83、gt;<p><b>  {</b></p><p>  printf("%10d%10s%10s%8.2f%8.2f%8.2f\n",student[i].ID,student[i].Name,student[i].Sex,student[i].Computer,student[i].English,student[i].Math); </p>

84、<p><b>  }</b></p><p>  printf("按enter鍵返回");</p><p>  getchar();</p><p>  getchar();</p><p><b>  }</b></p><p>  /*

85、按姓名查詢學(xué)生信息*/</p><p>  void Student_SelectByName()</p><p><b>  {</b></p><p><b>  char ch;</b></p><p><b>  while(1)</b></p><

86、p><b>  {</b></p><p>  char name[20];</p><p>  int index;</p><p>  printf("請輸入要查詢的學(xué)生的姓名:");</p><p>  scanf("%s",&name);</p>

87、<p>  index=Student_SearchByName(name);</p><p>  if(index==-1)</p><p><b>  {</b></p><p>  printf("學(xué)生不存在!\n");</p><p><b>  }</b>&

88、lt;/p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("你要查詢的學(xué)生信息為:\n");</p><p>  Student_DisplaySingle(index);</p><p>&l

89、t;b>  }</b></p><p>  printf("是否繼續(xù)?(y/n):");</p><p>  getchar();</p><p>  ch=getchar();</p><p>  while(ch!='y'&&ch!='n')</p

90、><p><b>  {</b></p><p>  printf("輸入格式不正確,是否繼續(xù)(y/n):");</p><p>  getchar();</p><p>  ch=getchar();</p><p>  if(ch=='n')</p>

91、<p><b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(ch=='n')</p>

92、<p><b>  {</b></p><p>  Student_Select(); </p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p>&

93、lt;p><b>  }</b></p><p>  /*按學(xué)號查詢學(xué)生信息*/</p><p>  void Student_SelectByIndex()</p><p><b>  {</b></p><p><b>  char ch;</b></p>

94、<p><b>  while(1)</b></p><p><b>  {</b></p><p>  int index,id;</p><p>  printf("請輸入要查詢的學(xué)生的學(xué)號:");</p><p>  scanf("%d",

95、&id);</p><p>  index=Student_SearchByIndex(id);</p><p>  if(index==-1)</p><p><b>  {</b></p><p>  printf("學(xué)生不存在!\n");</p><p><

96、b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("你要查詢的學(xué)生信息為:\n");</p><p>  Student_DisplaySingle(index);<

97、/p><p><b>  }</b></p><p>  printf("是否繼續(xù)?(y/n):");</p><p>  getchar();</p><p>  ch=getchar();</p><p>  while(ch!='y'&&ch!

98、='n')</p><p><b>  {</b></p><p>  printf("輸入格式不正確,是否繼續(xù)(y/n):");</p><p>  getchar();</p><p>  ch=getchar();</p><p>  if(ch==

99、9;n')</p><p><b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(ch=='

100、;n')</p><p><b>  {</b></p><p>  Student_Select();</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</

101、b></p><p><b>  }</b></p><p>  /*兩種選擇查找學(xué)生信息*/</p><p>  void Student_Select()</p><p><b>  {</b></p><p>  Num=load();</p>&l

102、t;p>  system("cls");</p><p><b>  int n;</b></p><p>  printf("------------------------------------------------------------\n");</p><p>  printf(&qu

103、ot;1.按學(xué)號查詢 ");</p><p>  printf("2.按姓名查詢 \n");</p><p>  printf("3.退出該查詢 \n");</p><p>  printf("------------------------------------

104、------------------------\n");</p><p>  printf("輸入選擇類型1--3:\n");</p><p>  scanf("%d",&n);</p><p><b>  switch(n)</b></p><p><b

105、>  {</b></p><p>  case 1:Student_SelectByIndex();break;</p><p>  case 2:Student_SelectByName();break;</p><p>  case 3:;break;</p><p><b>  }</b><

106、/p><p><b>  }</b></p><p>  /*按總分對學(xué)生信息排序*/</p><p>  void Student_Sort()</p><p><b>  {</b></p><p>  Num=load();</p><p><

107、b>  int i,j;</b></p><p>  for(i=0;i<Num;i++)</p><p>  student[i].Average=Student_Average(i);</p><p>  for(i=0;i<Num-1;i++)</p><p><b>  {</b>&

108、lt;/p><p>  for(j=0;j<Num-i-1;j++)</p><p>  if(student[j+1].Average>student[j].Average)</p><p><b>  {</b></p><p>  t=student[j+1];</p><p>  

109、student[j+1]=student[j];</p><p>  student[j]=t;</p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("%10s%10s%10s%8s%8s%8s\n","學(xué)號

110、","姓名","性別","計(jì)算機(jī)","英語","數(shù)學(xué)");</p><p>  printf("------------------------------------------------------------\n");</p><p>  for(i=0

111、;i<Num;i++)</p><p><b>  {</b></p><p>  printf("%10d%10s%10s%8.2f%8.2f%8.2f\n",student[i].ID,student[i].Name,student[i].Sex,student[i].Computer,student[i].English,student

112、[i].Math); </p><p><b>  }</b></p><p>  printf("按enter鍵返回");</p><p>  getchar();</p><p>  getchar();</p><p><b>  }</b><

113、/p><p>  /*按計(jì)算機(jī)成績統(tǒng)計(jì)學(xué)生信息*/</p><p>  void Student_StatisticsByComputer()</p><p><b>  {</b></p><p><b>  char ch;</b></p><p>  int i,a=0,b

114、=0,c=0,d=0,e=0,j=0;</p><p>  float max=0,min=100,s=0,Average,jige;</p><p>  for(i=0;i<Num;i++)</p><p><b>  {</b></p><p>  if(student[i].Computer>max)&

115、lt;/p><p>  max=student[i].Computer;</p><p>  if(student[i].Computer<min)</p><p>  min=student[i].Computer;</p><p>  s=s+student[i].Computer;</p><p>  if(s

116、tudent[i].Computer>=60)</p><p><b>  j++;</b></p><p>  if(student[i].Computer>=0&&student[i].Computer<=59)</p><p><b>  a++;</b></p>&l

117、t;p>  if(student[i].Computer>=60&&student[i].Computer<=69)</p><p><b>  b++;</b></p><p>  if(student[i].Computer>=70&&student[i].Computer<=79)</p>

118、<p><b>  c++;</b></p><p>  if(student[i].Computer>=80&&student[i].Computer<=89)</p><p><b>  d++;</b></p><p>  if(student[i].Computer>

119、=90&&student[i].Computer<=100)</p><p><b>  e++;</b></p><p><b>  }</b></p><p>  Average=s/Num;</p><p>  printf("\n");</p&

120、gt;<p>  jige=(float)j/Num;</p><p>  printf("%8s%8s%8s%8s%12s\n","最高分","最低分","平均分","及格率","分?jǐn)?shù)段比率");</p><p>  printf("------

121、------------------------------------------------------\n");</p><p>  printf("%8.2f%8.2f%8.2f%8.2f %d:%d:%d:%d:%d",max,min,Average,jige,a,b,c,d,e);</p><p>  printf("\n")

122、;</p><p>  printf("是否繼續(xù)?(y/n):");</p><p>  getchar();</p><p>  ch=getchar();</p><p>  while(ch!='y'&&ch!='n')</p><p><

123、b>  {</b></p><p>  printf("輸入格式不正確,是否繼續(xù)(y/n):");</p><p>  getchar();</p><p>  ch=getchar();</p><p>  if(ch=='n')</p><p><b>

124、;  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(ch=='y')</p><p><b>

125、  {</b></p><p>  Student_Statistics();</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*按英語成績統(tǒng)計(jì)學(xué)生信息*/</p><p>  void Student_Sta

126、tisticsByEnglish()</p><p><b>  {</b></p><p><b>  char ch;</b></p><p>  int i,j=0,a=0,b=0,c=0,d=0,e=0;</p><p>  float max=0,min=100,s=0,Average,j

127、ige;</p><p>  for(i=0;i<Num;i++)</p><p><b>  {</b></p><p>  if(student[i].English>max)</p><p>  max=student[i].English;</p><p>  if(stude

128、nt[i].English<min)</p><p>  min=student[i].English;</p><p>  s=s+student[i].English;</p><p>  if(student[i].English>=60)</p><p><b>  j++;</b></p>

129、;<p>  if(student[i].English>=0&&student[i].English<=59)</p><p><b>  a++;</b></p><p>  if(student[i].English>=60&&student[i].English<=69)</p>

130、<p><b>  b++;</b></p><p>  if(student[i].English>=70&&student[i].English<=79)</p><p><b>  c++;</b></p><p>  if(student[i].English>=80

131、&&student[i].English<=89)</p><p><b>  d++;</b></p><p>  if(student[i].English>=90&&student[i].English<=100)</p><p><b>  e++;</b><

132、/p><p><b>  }</b></p><p>  Average=s/Num;</p><p>  jige=(float)j/Num;</p><p>  printf("%8s%8s%8s%8s%12s\n","最高分","最低分","平均分&

133、quot;,"及格率","分?jǐn)?shù)段比率");</p><p>  printf("------------------------------------------------------------\n");</p><p>  printf("%8.2f%8.2f%8.2f%8.2f %d:%d:%d:%d:%d&

134、quot;,max,min,Average,jige,a,b,c,d,e);</p><p>  printf("\n");</p><p>  printf("是否繼續(xù)?(y/n):");</p><p>  getchar();</p><p>  ch=getchar();</p>

135、<p>  while(ch!='y'&&ch!='n')</p><p><b>  {</b></p><p>  printf("輸入格式不正確,是否繼續(xù)(y/n):");</p><p>  getchar();</p><p>  c

136、h=getchar();</p><p>  if(ch=='n')</p><p><b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  

137、}</b></p><p>  if(ch=='y')</p><p><b>  {</b></p><p>  Student_Statistics();</p><p><b>  }</b></p><p><b>  }<

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論