課程設(shè)計(jì)-----學(xué)生選修課程系統(tǒng)設(shè)計(jì)_第1頁
已閱讀1頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  隨著課程改革的不斷深入,學(xué)校規(guī)模不斷擴(kuò)大、課程項(xiàng)目不斷增多,為了解決學(xué)生選課管理上的復(fù)雜的人工操作,減輕重復(fù)工作,故設(shè)計(jì)了選課系統(tǒng)。學(xué)校規(guī)模的擴(kuò)大使得學(xué)校對(duì)每年新生入學(xué)、畢業(yè)生離校及本校各種分流機(jī)制造成的學(xué)生信息產(chǎn)生變動(dòng),如學(xué)籍變動(dòng)、個(gè)人信息修改。為了適應(yīng)課程的改革,學(xué)校在每個(gè)學(xué)期都要開設(shè)一定的課程提供給學(xué)生,讓學(xué)生根據(jù)

2、自己的情況來選擇,根據(jù)學(xué)生選擇結(jié)果給出課程表。本校根據(jù)教學(xué)實(shí)際,為了使教師有效地管理學(xué)生信息,設(shè)計(jì)學(xué)生信息管理系統(tǒng),由此形成學(xué)生成績(jī)管理系統(tǒng),本文就此設(shè)計(jì)思路進(jìn)行闡述。 </p><p>  隨著學(xué)校規(guī)模的不斷擴(kuò)大,專業(yè)、班級(jí)、學(xué)生的數(shù)量急劇增加,有關(guān)學(xué)生選課的各種信息量也成倍增長(zhǎng),而目前許多高校的學(xué)生選課管理仍停留在復(fù)雜的人工操作上,重復(fù)工作較多,工作量大,效率低,因此,迫切需要開發(fā)基于互聯(lián)網(wǎng)的課程信息管理系統(tǒng)

3、來提高管理工作的效率?;谛@網(wǎng)的學(xué)生選課管理系統(tǒng),在學(xué)生選課的規(guī)范管理、科學(xué)統(tǒng)計(jì)和快速查詢方面具有較大的實(shí)用意義。它提高了信息的開放性,大大地改善了學(xué)生、教師對(duì)其最新信息查詢的準(zhǔn)確性.</p><p>  關(guān)鍵詞:選課系統(tǒng) ;學(xué)生信息管理系統(tǒng) ;數(shù)據(jù)流圖 </p><p><b>  Abstract</b></p><p>  With t

4、he deepening of the curriculum reform, increasing the school continues to expand the scale, course project, in order to solve the complex manual operation of student management, reduce duplication of work, so the design

5、of the course selection system. The school scale expansion so that the school of new students each year, the school leavers and various distribution mechanism of student information changes, such as the student status ch

6、anges, personal information changes. In order to adapt</p><p>  With the continuous expansion of school size, the number of professional, class, students increased dramatically, the amount of information on

7、a variety of elective students also multiplied, and now many college students course management still stays in the complex manual operation, too much repeated work, heavy workload, low efficiency, therefore, it is urgent

8、 to develop curriculum information management system based on Internet to improve management efficiency. Student course management system</p><p>  Keywords: course system,;student information management syst

9、em; data flow diagram</p><p><b>  目錄</b></p><p>  1概述…………………………………………………………………………………4</p><p>  1.1學(xué)生選修課的介紹4</p><p>  1.2管理者在本系統(tǒng)的功能4</p><p>  

10、1.3對(duì)功能的規(guī)定4</p><p>  1.4系統(tǒng)開發(fā)的意義5</p><p>  1.5系統(tǒng)開發(fā)的背景5</p><p>  2總體設(shè)計(jì)……………………………………………………………6</p><p>  2.1總體設(shè)計(jì)模板6</p><p><b>  3詳細(xì)設(shè)計(jì)7</b><

11、/p><p>  3.1主函數(shù),頭文件及結(jié)構(gòu)體聲明7</p><p>  3.2管理員功能模塊8</p><p>  3.3學(xué)生功能菜單10</p><p>  3.4創(chuàng)建鏈表模塊11</p><p>  3.5瀏覽模塊13</p><p>  3.6查詢模塊15</p>

12、<p>  3.7插入鏈表模塊18</p><p>  3.8 添加模塊18</p><p>  3.9刪除模塊18</p><p>  3.10選修課程模塊20</p><p>  3.11 讀取文件模塊22</p><p>  3.12 保存文件模塊22</p><p>

13、;  4系統(tǒng)測(cè)試.………………………………………………………24</p><p>  4.1進(jìn)入界面…………………………………………………………………….24</p><p>  4.2進(jìn)入管理者系統(tǒng)24</p><p>  4.3進(jìn)入學(xué)生菜單27</p><p><b>  5結(jié)論30</b></p>

14、<p><b>  參考文獻(xiàn)31</b></p><p><b>  致 謝32</b></p><p><b>  1概述</b></p><p>  1.1學(xué)生選修課的介紹</p><p>  現(xiàn)代的社會(huì)是信息化的社會(huì),信息無所不在。在生產(chǎn)領(lǐng)域、流通領(lǐng)域

15、、各個(gè)部門每天都和信息打交道,如何處理如此多的信息成為了一個(gè)重要的課題。學(xué)生在學(xué)期開始選課是教學(xué)活動(dòng)中的一個(gè)重要環(huán)節(jié),該環(huán)節(jié)如果能管理好,它不僅能加快學(xué)生的選課速度,也提高了整個(gè)活動(dòng)的效率。大學(xué)一般都有上千名學(xué)生,每學(xué)期開始學(xué)生都要選課,因而產(chǎn)生了大量的課程信息。考慮到用戶使用的方便和處理的信息量系統(tǒng)要完成錄入,保存,查詢,修改和刪除課程信息的各種過程,能打印出課程信息表。</p><p>  系統(tǒng)的主要使用對(duì)象

16、是需要選課的學(xué)生。學(xué)生在選課是要察看各個(gè)課程的詳細(xì)信息,還要選擇一些感興趣的課程,需要生成課表,在發(fā)現(xiàn)課程有沖突后能夠修改先前選擇的信息。需要隨學(xué)生選課的變化,計(jì)算相應(yīng)的總學(xué)分。在全部選定后,打印報(bào)表。系統(tǒng)還需要管理員來查看和修改學(xué)生的總體選課情況課程信息和學(xué)生信息。選課系統(tǒng)開發(fā)的目標(biāo)是實(shí)現(xiàn)學(xué)生選課信息關(guān)系的系統(tǒng)化、規(guī)范化和自動(dòng)化</p><p>  為保證系統(tǒng)安全高效地運(yùn)行,本系統(tǒng)把用戶劃分為2類:管理者和學(xué)生

17、。不同的用戶在系統(tǒng)中的作用和權(quán)限也有所不同,所以它所需要完成的功能也就不同。 </p><p>  1.2管理者和學(xué)生在本系統(tǒng)的功能</p><p>  管理者:查詢學(xué)生選課情況、自己任課情況、獲取自己所擔(dān)任課程分班表、錄入及修改成績(jī)等。學(xué)生:查詢本人信息、教師任課信息、選課、選課信息查詢、成績(jī)查詢。</p><p>  1.3對(duì)功能的規(guī)定 </p>

18、<p>  1). 可實(shí)現(xiàn)學(xué)生選課注冊(cè)。 </p><p>  2). 方便實(shí)現(xiàn)學(xué)生選課信息查詢。 </p><p>  3). 可對(duì)學(xué)生成績(jī)檔案進(jìn)行管理,成績(jī)表單生成簡(jiǎn)便。 </p><p>  4). 安全有效的用戶區(qū)分,管理。 </p><p>  5). 檔案數(shù)據(jù)的高安全性,保密性。 </p><p&g

19、t;<b>  6). 有幫助文檔</b></p><p>  1.4系統(tǒng)開發(fā)的意義 </p><p>  學(xué)生選課系統(tǒng)是一個(gè)學(xué)校不可缺少的部分,它的內(nèi)容對(duì)于學(xué)校的決策者和管理者來說都至關(guān)重要,所以學(xué)生選課系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?。但一直以來人們使用傳統(tǒng)人工的方式管理文件檔案,這種管理方式存在著許多缺點(diǎn),如:效率低、保密性差,另外時(shí)間一長(zhǎng),將

20、產(chǎn)生大量的文件和數(shù)據(jù),這對(duì)于查找、更新和維護(hù)都帶來了不少的困難。 因此,開發(fā)這樣一套軟件成為很有必要的事情 </p><p>  1.5系統(tǒng)開發(fā)的背景 </p><p>  目前,我國(guó)的高等教育事業(yè)蓬勃發(fā)展,高校的規(guī)模不斷擴(kuò)大,同時(shí),高校的教學(xué)改革也在全面推行,學(xué)分制在各高校全面啟動(dòng)。學(xué)分制——允許學(xué)生在計(jì)劃的指導(dǎo)下,根據(jù)自己的條件、能力、志趣,有選擇地支配自己的學(xué)習(xí)。因此,學(xué)生的選課

21、就成為推行學(xué)分制的重要管理任務(wù)。以往的選課均是在計(jì)劃模式下進(jìn)行:每位教師將所開的課程名稱,個(gè)人簡(jiǎn)介,課程限選人數(shù),限選專業(yè)等信息交給教務(wù)處,教務(wù)處再將這些信息統(tǒng)一成冊(cè),分發(fā)給各個(gè)班級(jí)班長(zhǎng),由班長(zhǎng)將本班的選課情況統(tǒng)計(jì)并返回教務(wù)處。這是一個(gè)相當(dāng)長(zhǎng)的周期,并且耗費(fèi)大量的人力、物力,對(duì)選擇結(jié)果沒有控制。學(xué)生選課系統(tǒng)能夠讓學(xué)生們?cè)诰W(wǎng)絡(luò)上自主選擇選修課程,教務(wù)處的工作人員則通過網(wǎng)絡(luò)來處理學(xué)生的選課信息。這個(gè)系統(tǒng)實(shí)現(xiàn)了對(duì)信息數(shù)據(jù)的瀏覽、查詢、編輯和管

22、理等基本數(shù)據(jù)庫(kù)操作,采取模塊化的編寫思想,提高了可讀性,同時(shí)提高了開發(fā)效率,從而實(shí)現(xiàn)了校園無紙化辦公,提高選課的效率,減輕選課操作的工作量,從而提高教學(xué)管理的效率</p><p><b>  2總體設(shè)計(jì)</b></p><p>  2.1學(xué)生選修課程總體設(shè)計(jì)模板</p><p>  描述:(1)對(duì)于后臺(tái)管理數(shù)據(jù)庫(kù),可以列出以下數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)

23、 </p><p>  管理員信息:管理員名稱、管理員密碼。 </p><p>  課程信息:課程號(hào)、課程名稱、課程類別、開課系。 </p><p>  選課信息:課程號(hào)、學(xué)生學(xué)號(hào)、成績(jī)</p><p>  (2)在管理員菜單中管理員可以進(jìn)行對(duì)選修課程的輸入和刪除,從而使得學(xué)生可以去進(jìn)入學(xué)生菜單去選擇選修的課程</p>&

24、lt;p>  (3)學(xué)生可以在學(xué)生菜單中先進(jìn)行對(duì)課程的瀏覽,再進(jìn)入選擇模塊進(jìn)行對(duì)課程的選擇,當(dāng)學(xué)生想查看自己的選修課程信息時(shí)進(jìn)入查詢模塊就可以查詢到自己所選的課程和課程信息。若對(duì)所選的課程不滿意可以進(jìn)入刪除模塊進(jìn)行刪除</p><p>  (4)當(dāng)輸入1到3以外的數(shù)字時(shí)進(jìn)入不到任何界面</p><p> ?。?)該程序采用多個(gè)main()函數(shù)模塊分別來實(shí)現(xiàn)程序的運(yùn)行,通過使用數(shù)組功能

25、來實(shí)現(xiàn)數(shù)據(jù)的錄入,使用strcpy()函數(shù)來實(shí)現(xiàn)錄入信息的復(fù)制,整個(gè)結(jié)構(gòu)從整體來看使用了選擇結(jié)構(gòu),break ..case ..的合理利用</p><p><b> ?。?lt;/b></p><p><b>  3詳細(xì)設(shè)計(jì)</b></p><p>  3.1主函數(shù),頭文件及結(jié)構(gòu)體聲明</p><p> 

26、 主函數(shù)設(shè)計(jì)地比較簡(jiǎn)潔,只是提供一個(gè)主菜單,switch語句將整個(gè)程序分為兩個(gè)大的功能模塊:進(jìn)入管理者界面和進(jìn)入學(xué)生界面。當(dāng)輸入1時(shí)進(jìn)入管理員菜單,當(dāng)輸入2時(shí)進(jìn)入學(xué)生菜單,當(dāng)輸入3時(shí)退出程序</p><p><b>  [程序]</b></p><p>  int main()</p><p><b>  {</b>&l

27、t;/p><p>  int n,w=1;</p><p><b>  do</b></p><p><b>  {</b></p><p>  system("cls"); puts("\n\n\t\t*****************MENU*************

28、*****\n\n");</p><p>  puts("\t\t\t\t1.以管理員身份登錄\n");</p><p>  puts("\t\t\t\t2.以學(xué)生身份登錄\n");</p><p>  puts("\t\t\t\t3.退出");</p><p>  put

29、s("\n\n\t\t*******************************************\n");</p><p>  printf("Chiose your number(1-3):[ ]\b\b");</p><p>  scanf("%d",&n);</p><p><

30、;b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1:Mangers() ;break;</p><p>  case 2:Students();break;</p><p>  case 3:w=0;break;</p><

31、p><b>  default:;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  while(w==1);</p><p>  return 0;}</p><p>  3.2管理員功能

32、模塊</p><p>  管理員的功能一共有四個(gè)功能:瀏覽,查詢,添加,刪除課程,運(yùn)用字符串處理函數(shù)處理密碼的問題,用一個(gè)switch語句實(shí)現(xiàn)函數(shù)的調(diào)用。當(dāng)進(jìn)入登陸界面后輸入管理員密碼1進(jìn)入管理員菜單,來進(jìn)行對(duì)課程的輸入和刪除</p><p><b>  [程序]</b></p><p>  void Mangers()</p>

33、<p><b>  {</b></p><p>  int n,w=1,flag=0,i=3;</p><p>  char s[8];</p><p>  char password[7]="1";</p><p><b>  do</b></p>&l

34、t;p><b>  {</b></p><p>  printf("\n\nEnter password:");</p><p>  scanf("%s",s);</p><p>  if(!strcmp(s,password)) //進(jìn)行密碼匹配驗(yàn)證</p>

35、<p><b>  {</b></p><p><b>  flag=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b>&l

36、t;/p><p><b>  {</b></p><p>  printf("\n\nError! You only have %d times! Enter again:\n",i-1);</p><p><b>  i--;</b></p><p><b>  } &l

37、t;/b></p><p><b>  }</b></p><p>  while(i>0);</p><p><b>  if(!flag)</b></p><p><b>  {</b></p><p>  printf("yo

38、u have Enter 3 times!"); //輸入密碼超過了3次!!</p><p>  exit(0); //自動(dòng)退出</p><p><b>  }</b></p><p><b>  do</b></p><

39、;p><b>  {</b></p><p>  system("cls");</p><p>  puts("\n\n\t\t*********************管理員菜單***********************\n\n");</p><p>  puts("\t\t\t\t

40、1---瀏覽課程\n");</p><p>  puts("\t\t\t\t2---查詢課程\n");</p><p>  puts("\t\t\t\t3---添加課程\n");</p><p>  puts("\t\t\t\t4---刪除課程\n");</p><p> 

41、 puts("\t\t\t\t5---返回主菜單");</p><p>  puts("\n\n\t\t******************************************************\n");</p><p>  printf("Chiose your number(1-5):[ ]\b\b");&l

42、t;/p><p>  scanf("%d",&n);</p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1:prin();break;</p><p>  case 2:sea

43、rch();break;</p><p>  case 3:insert();savefile();break;</p><p>  case 4:del();savefile();break;</p><p>  case 5:return;</p><p><b>  default:;</b></p>

44、<p><b>  } </b></p><p><b>  }</b></p><p>  while(w==1);</p><p><b>  }</b></p><p>  void Students()</p><p><b&g

45、t;  {</b></p><p>  int n,w=1;</p><p><b>  do</b></p><p><b>  {</b></p><p>  system("cls");</p><p>  puts("\n\n

46、\t\t*********************學(xué)生菜單***********************\n\n");</p><p>  puts("\t\t\t\t1---瀏覽所有課程\n");</p><p>  puts("\t\t\t\t2---查詢課程信息\n");</p><p>  puts(&quo

47、t;\t\t\t\t3---選擇選修課程\n");</p><p>  puts("\t\t\t\t4---瀏覽我選修的課程\n");</p><p>  puts("\t\t\t\t5---刪除錯(cuò)選課程\n");</p><p>  puts("\t\t\t\t6---返回主菜單");</

48、p><p>  puts("\n\n\t\t****************************************************\n");</p><p>  printf("Chiose your number(1-6):[ ]\b\b");</p><p>  scanf("%d",&a

49、mp;n);</p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1:prin();break;</p><p>  case 2:search();break;</p><p>  case 3:ch

50、oose();break;</p><p>  case 4:prin1();break;</p><p>  case 5:del();savefile1();break;</p><p>  case 6:return;</p><p><b>  default:;</b></p><p>

51、<b>  } </b></p><p><b>  }</b></p><p>  while(w==1);</p><p><b>  3.3學(xué)生功能菜單</b></p><p>  學(xué)生功能菜單包括六個(gè)功能:瀏覽課程,查詢課程,選修課程,瀏覽我所選修的課程,添加選修課程,

52、刪除錯(cuò)選的課程,也是用到switch語句來調(diào)用函數(shù)。</p><p><b>  [程序]</b></p><p>  void Students() //學(xué)生登錄菜單</p><p><b>  {</b></p><p>  int n,w

53、=1;</p><p><b>  do</b></p><p><b>  {</b></p><p>  system("cls");</p><p>  puts("\n\n\t\t************學(xué)生菜單**************\n\n")

54、;</p><p>  puts("\t\t\t\t1---瀏覽所有課程\n");</p><p>  puts("\t\t\t\t2---查詢課程信息\n");</p><p>  puts("\t\t\t\t3---選擇選修課程\n");</p><p>  puts("

55、;\t\t\t\t4---瀏覽我選修的課程\n");</p><p>  puts("\t\t\t\t5---刪除錯(cuò)選課程\n");</p><p>  puts("\t\t\t\t6---返回主菜單");</p><p>  puts("\n\n\t\t**************************

56、*********\n");</p><p>  printf("Chiose your number(1-6):[ ]\b\b");</p><p>  scanf("%d",&n);</p><p><b>  switch(n)</b></p><p>&l

57、t;b>  {</b></p><p>  case 1:prin();break;</p><p>  case 2:search();break;</p><p>  case 3:choose();break;</p><p>  case 4:prin1();break;</p><p>  

58、case 5:del();savefile1();break;</p><p>  case 6:return;</p><p><b>  default:;</b></p><p><b>  } </b></p><p><b>  }</b></p>&l

59、t;p>  while(w==1);</p><p><b>  3.4創(chuàng)建鏈表模塊</b></p><p> ?。?)從標(biāo)準(zhǔn)輸入文件輸入字符串到string字符數(shù)組,再用fputs函數(shù)把此字符串送入file1.txt文件中。  </p><p> ?。?)由于fputs函數(shù)不會(huì)在輸出一個(gè)字符串之后加上一個(gè)“\n”字符,為了在從

60、磁盤中取出數(shù)據(jù)時(shí)能區(qū)分各字符串,要在存入時(shí)使用fputs函數(shù)輸出一個(gè)“\n”。 </p><p> ?。?)由于輸入循環(huán)的控制條件是字符串的長(zhǎng)度不為0,所以結(jié)束輸入操作的方法是在最后一行只輸入一個(gè)Enter鍵功能說明 ,錄入課程信息代碼。</p><p><b>  創(chuàng)建鏈表模塊</b></p><p><b> 

61、 [程序]</b></p><p>  SUB *create_form() //創(chuàng)建鏈表 </p><p><b>  {</b></p><p>  SUB *head,*tail,*p;</p><p>  int num,stime,ttime;<

62、;/p><p>  int etime,score,term;</p><p>  char name[20],kind[10];</p><p>  int size=sizeof(SUB);</p><p>  head=tail=NULL;</p><p>  printf("輸入選修課程信息:\n&quo

63、t;);</p><p>  scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&score,&term);</p><p>  while(num!=0)</p><p><b>  {</b></

64、p><p>  p=(SUB *)malloc(size);</p><p>  p->num=num;</p><p>  strcpy(p->name,name);</p><p>  strcpy(p->kind,kind);</p><p>  p->stime=stime;</p&g

65、t;<p>  p->ttime=ttime;</p><p>  p->etime=etime;</p><p>  p->score=score;</p><p>  p->term=term;</p><p>  if(head==NULL)</p><p><b>

66、;  head=p;</b></p><p><b>  else</b></p><p>  tail->next=p;</p><p><b>  tail=p;</b></p><p>  scanf("%d%s%s%d%d%d%d%d",&num

67、,name,kind,&stime,&ttime,&etime,&score,&term);</p><p><b>  }</b></p><p>  tail->next=NULL;</p><p>  return head;</p><p><b>  }&

68、lt;/b></p><p><b>  3.5瀏覽模塊</b></p><p>  瀏覽模塊主要用管理員中的“瀏覽課程”和學(xué)生功能中的“瀏覽所有所有課程”,將所有的課程信息輸出,即將all_sub.txt文件里面的內(nèi)容全部輸出。在瀏覽界面中不能進(jìn)行刪除或添加課程,只能夠來看課程的信息或選擇的課程信息。</p><p><b>

69、  [程序]</b></p><p>  void prin() //瀏覽所有課程</p><p><b>  {</b></p><p><b>  SUB *ptr;</b></p><p>  head=NULL;</p><p>  readfile(

70、);</p><p>  if(head==NULL)</p><p><b>  {</b></p><p>  printf("\n\n\t*********NO RECORDS!************\n");</p><p><b>  return;</b></

71、p><p><b>  }</b></p><p>  printf("課程編號(hào) 課程名稱 課程性質(zhì) 總學(xué)時(shí) 授課學(xué)時(shí) 實(shí)踐或上機(jī)學(xué)時(shí) 學(xué)分 開課學(xué)期\n");</p><p>  for(ptr=head;ptr;ptr=ptr->next)</p><p><b>  {

72、</b></p><p>  printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p><b>

73、  }</b></p><p>  system("pause");</p><p><b>  }</b></p><p>  void prin1() //瀏覽所有已選修課程</p><p><b>  {</b></p><p>  

74、SUB *ptr;</p><p><b>  FILE *fp;</b></p><p>  if((fp=fopen("3.txt","r"))==NULL)</p><p><b>  {</b></p><p>  printf("Cann

75、ot open file.\n");</p><p><b>  choose();</b></p><p><b>  }</b></p><p>  printf("課程編號(hào) 課程名稱 課程性質(zhì) 總學(xué)時(shí) 授課學(xué)時(shí) 實(shí)踐或上機(jī)學(xué)時(shí) 學(xué)分 開課學(xué)期\n");</p>

76、<p>  while(!feof(fp))</p><p><b>  {</b></p><p>  ptr=(SUB*)malloc(sizeof(SUB));</p><p>  fscanf(fp,"%d%s%s%d%d%d%d%d\n",&ptr->num,ptr->name,pt

77、r->kind,&ptr->stime,&ptr->ttime,&ptr->etime,&ptr->score,&ptr->term);</p><p>  printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr-

78、>stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p><b>  }</b></p><p>  system("pause");</p><p><b>  }</b></p><p&g

79、t;<b>  3.6 查詢模塊</b></p><p>  查詢模塊主要用于管理員功能中的“查詢課程”和學(xué)生功能模塊中的“查詢所有課程”,查詢模塊共分為三個(gè)查詢方法:按課程名稱查找,按課程性質(zhì)查找和按學(xué)分查找switch語句中,每一個(gè)case語句就是一中查詢方法:</p><p><b>  [程序]</b></p><p&

80、gt;  void search() //課程信息查詢</p><p><b>  {</b></p><p>  int a,num;</p><p><b>  int t=1;</b></p><p>  char type[10],min[10]

81、;</p><p><b>  SUB *ptr;</b></p><p>  L1:system("cls");</p><p>  printf("\n\n\t\t**********請(qǐng)選擇查詢方式*************\n");</p><p>  printf(&quo

82、t;\n\t\t\t1---按課程名稱查找\n");</p><p>  printf("\n\t\t\t2---按課程性質(zhì)查找\n");</p><p>  printf("\n\t\t\t3---按學(xué)分查找\n");</p><p>  printf("\n\t\t\t4---退出查找\n")

83、;</p><p>  printf("\n\n\t\t**************************************\n");</p><p>  printf("\n\nChiose your number(1-4):[ ]\b\b");</p><p>  scanf("%d",&

84、;a);</p><p><b>  switch(a)</b></p><p><b>  {</b></p><p>  case 1:printf("請(qǐng)輸入要查找的課程的名稱:");</p><p>  scanf("%s",min);</p>

85、;<p>  printf("課程編號(hào) 課程名稱 課程性質(zhì) 總學(xué)時(shí) 授課學(xué)時(shí) 實(shí)踐或上機(jī)學(xué)時(shí) 學(xué)分 開課學(xué)期\n");</p><p>  for(ptr=head;ptr;ptr=ptr->next)</p><p>  if(strcmp(min,ptr->name)==0)</p><p><b

86、>  {</b></p><p>  printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p>&l

87、t;b>  t=0;</b></p><p><b>  }</b></p><p><b>  if(t) </b></p><p>  printf("\t\n未找到!\n");</p><p><b>  t=1;</b></p

88、><p>  system("pause");</p><p><b>  goto L1;</b></p><p>  case 2:printf("請(qǐng)輸入要查找的課程的性質(zhì):");</p><p>  scanf("%s",type);</p>&

89、lt;p>  printf("課程編號(hào) 課程名稱 課程性質(zhì) 總學(xué)時(shí) 授課學(xué)時(shí) 實(shí)踐或上機(jī)學(xué)時(shí) 學(xué)分 開課學(xué)期\n");</p><p>  for(ptr=head;ptr;ptr=ptr->next)</p><p>  if(strcmp(type,ptr->kind)==0)</p><p><b>

90、;  {</b></p><p>  printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p><b

91、>  t=0;</b></p><p><b>  }</b></p><p><b>  if(t) </b></p><p>  printf("\t\n未找到!\n");</p><p><b>  t=1;</b></p>

92、;<p>  system("pause");</p><p><b>  goto L1;</b></p><p>  case 3:printf("輸入要查找的課程的學(xué)分:");</p><p>  scanf("%d",&num);</p>&

93、lt;p>  printf("課程編號(hào) 課程名稱 課程性質(zhì) 總學(xué)時(shí) 授課學(xué)時(shí) 實(shí)踐或上機(jī)學(xué)時(shí) 學(xué)分 開課學(xué)期\n");</p><p>  for(ptr=head;ptr;ptr=ptr->next)</p><p>  if(ptr->score==num)</p><p><b>  {</b

94、></p><p>  printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p><b>  t=0;

95、</b></p><p><b>  }</b></p><p><b>  if(t) </b></p><p>  printf("\n\t未找到!\n");</p><p><b>  t=1;</b></p><p&g

96、t;  system("pause");</p><p><b>  goto L1;</b></p><p>  case 4:break;</p><p><b>  }</b></p><p><b>  }t=0;</b></p>&l

97、t;p><b>  }</b></p><p><b>  if(t) </b></p><p>  printf("\n\t未找到!\n");</p><p><b>  t=1;</b></p><p>  system("pause&q

98、uot;);</p><p><b>  goto L1;</b></p><p>  case 4:break; //退出查找</p><p><b>  }</b></p><p><b>  }</b></p>

99、<p><b>  3.7插入鏈表模塊</b></p><p>  插入鏈表操作主要用于添加課程,在整個(gè)課程信息中加入一些新課程,它在添加模塊中被調(diào)用:</p><p><b>  [程序]</b></p><p>  void *myInsert(SUB *subj) //鏈表插入操作 </p&g

100、t;<p><b>  {</b></p><p>  SUB *ptr,*ptr2;</p><p><b>  ptr=subj;</b></p><p>  if(head==NULL)</p><p><b>  {</b></p><

101、p><b>  head=ptr;</b></p><p>  head->next=NULL;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

102、<p>  for(ptr2=head;ptr2;ptr2=ptr2->next)</p><p>  if(ptr2->next==NULL)</p><p><b>  {</b></p><p>  ptr2->next=subj;</p><p><b>  3.8 添加模

103、塊</b></p><p>  添加模塊主要用于增加課程信息,采用鏈表的操作:</p><p><b>  [程序]</b></p><p>  void *insert() //插入課程信息 </p><p><b>  {</b></p

104、><p>  SUB *ptr,*subj;</p><p>  int size=sizeof(SUB);</p><p>  char ch,ch1;</p><p>  while(ch!='0')</p><p><b>  {</b></p><p>

105、  subj=(SUB *)malloc(size);</p><p><b>  ptr=subj;</b></p><p>  printf("輸入要插入的課程信息:\n");</p><p>  printf("\n\t\t 請(qǐng)輸入課程編號(hào):");scanf("%d",&

106、subj->num); </p><p>  printf("\n\t\t請(qǐng)輸入課程名稱:");scanf("%s",&subj->name); </p><p>  printf("\n\t\t 請(qǐng)輸入課程性質(zhì):");scanf("%s",&subj->kind);

107、</p><p>  printf("\n\t\t請(qǐng)輸入總學(xué)時(shí):");scanf("%d",&subj->stime);</p><p>  printf("\n\t\t請(qǐng)輸入授課學(xué)時(shí):");scanf("%d",&subj->ttime);</p><p>

108、  printf("\n\t\t請(qǐng)輸入實(shí)踐或上機(jī)學(xué)時(shí):");</p><p>  scanf("%d",&subj->etime);</p><p>  printf("\n\t\t請(qǐng)輸入學(xué)分:");scanf("%d",&subj->score);</p><p

109、>  printf("\n\t\t請(qǐng)輸入開課學(xué)期:");scanf("%d",&subj->term);</p><p>  myInsert(subj);</p><p>  printf("\n\n繼續(xù)插入請(qǐng)按回車\n");</p><p>  printf("\n結(jié)束添加

110、課程按 0: [ ]\b\b");</p><p>  ch1=getchar(); /*將回車鍵賦給CH1,否則subj->term輸完后輸入的回車鍵會(huì)賦給CH,因此用CH1填補(bǔ)。*/</p><p>  ch=getchar();</p><p><b>  }</b></p&

111、gt;<p>  return head;</p><p><b>  }</b></p><p><b>  3.9刪除模塊</b></p><p>  刪除模塊主要用于管理員刪除課程信息學(xué)生刪除自己的選課,全部采用刪除鏈表中的某一個(gè)節(jié)點(diǎn)的操作:</p><p><b> 

112、 [程序]</b></p><p>  void *del() //刪除課程-</p><p><b>  {</b></p><p>  SUB *p1,*p2;</p><p>  char ch,ch1;</p><

113、p><b>  int num;</b></p><p>  while(ch!='0')</p><p><b>  {</b></p><p>  printf("輸入想要?jiǎng)h除的課程編號(hào):[ ]\b\b\b\b\b");</p><p>  sca

114、nf("%d",&num);</p><p>  if(head->num==num)</p><p><b>  {</b></p><p><b>  p2=head;</b></p><p>  head=head->next;</p>&

115、lt;p><b>  free(p2);</b></p><p><b>  }</b></p><p>  if(head==NULL)</p><p>  return NULL;</p><p><b>  p1=head;</b></p><p

116、>  p2=head->next;</p><p><b>  while(p2)</b></p><p><b>  {</b></p><p>  if(p2->num==num)</p><p><b>  {</b></p><p&

117、gt;  p1->next=p2->next;</p><p><b>  free(p2);</b></p><p><b>  }</b></p><p><b>  else </b></p><p><b>  p1=p2;</b>&l

118、t;/p><p>  p2=p1->next;</p><p><b>  }</b></p><p>  printf("\n繼續(xù)刪除請(qǐng)按回車\n");</p><p>  printf("\n結(jié)束刪除課程按 0: [ ]\b\b");</p><p>

119、  ch1=getchar(); //將回車鍵賦給CH1,否則num輸完后再輸入的回車鍵會(huì)賦給CH,因此用CH1填補(bǔ)。</p><p>  ch=getchar();</p><p><b>  }</b></p><p>  return head;</p><p>  sy

120、stem("pause");</p><p><b>  }</b></p><p>  3.10選修課程模塊</p><p>  選修課程模塊采用插入鏈表的操作:</p><p><b>  [程序]</b></p><p>  void choose(

121、) //選新課程</p><p><b>  {</b></p><p>  SUB *p,*q;</p><p><b>  int a[5];</b></p><p>  int num,total=0,i=0,j;</p><

122、;p>  printf("輸入要選修的課程的編號(hào),編號(hào)之間以空格分開\n");</p><p>  scanf("%d",&num);</p><p>  printf("如果確認(rèn)輸入完要選修的課程的編號(hào),請(qǐng)輸入0: [ ]\b\b");</p><p>  while(num!=0)<

123、/p><p><b>  {</b></p><p>  for(p=head;p;p=p->next)</p><p>  if(p->num==num)</p><p><b>  {</b></p><p>  total=total+p->score;&

124、lt;/p><p><b>  a[i]=num;</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p>  scanf("%d",&num);</p><p><b&

125、gt;  }</b></p><p>  if(total<60)</p><p><b>  { </b></p><p>  printf("選修總學(xué)分為%d,未達(dá)到60,選修失敗!\n",total);</p><p>  system("pause");&

126、lt;/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  Int FILE,fp;</p><p><b>  FILE *fp;</b><

127、;/p><p>  fp=fopen("my_sub.txt","w");</p><p>  for(j=0;j<i;j++)</p><p>  for(q=head;q;q=q->next)</p><p>  if(q->num==a[j])</p><p>

128、;  fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",q->num,q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term);</p><p>  fclose(fp);</p><p>  printf("\t

129、\t\n*****選修成功!****\n");</p><p>  printf("\n您選修的課程總學(xué)分為%d,課程分別為:\n",total);</p><p>  printf("\n課程編號(hào) 課程名稱 課程性質(zhì) 總學(xué)時(shí) 授課學(xué)時(shí) 實(shí)踐或上機(jī)學(xué)時(shí) 學(xué)分 開課學(xué)期\n");</p><p>  fo

130、r(j=0;j<i;j++)</p><p>  for(q=head;q;q=q->next)</p><p>  if(q->num==a[j])</p><p>  printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",q->num,q->name,q->kind,q->st

131、ime,q->ttime,q->etime,q->score,q->term);</p><p>  printf("\n以上信息全部保存在'my_sub.txt'中\(zhòng)n");</p><p><b>  }</b></p><p>  system("pause"

132、);</p><p><b>  }</b></p><p>  3.11 讀取文件模塊</p><p>  讀取文件模塊是用來讀出文件內(nèi)容,并將內(nèi)容輸出到內(nèi)存中,當(dāng)輸入文件名時(shí),就能打開指定的文件,當(dāng)輸入all_sub.txt時(shí),打開所有課程信息的文件,當(dāng)輸入my_sub.txt時(shí),就是瀏覽學(xué)生選修的課程信息。</p><

133、p><b>  [程序]</b></p><p>  void readfile() //閱讀文件 </p><p><b>  {</b></p><p>  void *myInsert(SUB*);</p><p>  SUB *newSub;

134、 //新課程</p><p>  int num,stime,ttime,etime;</p><p>  int score,term;</p><p>  char c,name[20],kind[10],fname[20];</p><p><b>  FILE *fp;</b></p><p

135、>  fp=fopen("2.txt","r");</p><p>  while(!feof(fp))</p><p><b>  {</b></p><p>  newSub=(SUB*)malloc(sizeof(SUB));</p><p>  fscanf(fp,&

136、quot;%d%s%s%d%d%d%d%d\n",&newSub->num,newSub->name,newSub->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term);</p><p>  myIns

137、ert(newSub);</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  3.12 保存文件模塊</p><p>  保存文件模塊共分為兩個(gè)子程序,分別是將修改的信息保存到all_sub.txt和my_sub.txt文件中:</p><p>

138、<b>  [程序</b></p><p>  void savefile() //保存文件 </p><p><b>  {SUB *p;</b></p><p>  FILE *fp;fp=fopen("2.txt","w");</p><p&

139、gt;  if(fp==NULL)exit(0);</p><p>  printf("課程編號(hào) 課程名稱 課程性質(zhì) 總學(xué)時(shí) 授課學(xué)時(shí) 實(shí)驗(yàn)或上機(jī)學(xué)時(shí) 學(xué)分 開課學(xué)期\n");</p><p>  for(p=head;p;p=p->next)</p><p>  fprintf(fp,"%5d%12s%9s%9d%

140、9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);</p><p>  fclose(fp);</p><p>  printf("創(chuàng)建后的信息已放入'2.txt'文件中\(zhòng)n")

溫馨提示

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