c語言課程設(shè)計報告——機房管理系統(tǒng)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p><b>  設(shè)計內(nèi)容</b></p><p><b>  設(shè)計要求</b></p><p><b> ?。?)題目要求</b></p><p> ?。?)輸入/輸出要求</p>&l

2、t;p><b>  整體設(shè)計思路</b></p><p><b>  流程圖</b></p><p><b> ?。?)層次模塊圖</b></p><p> ?。?)空機號查詢N—S圖</p><p>  五.主函數(shù)及功能菜單說明</p><p>

3、<b>  六.各模塊簡要說明</b></p><p><b>  七.心得體會</b></p><p><b>  附錄</b></p><p><b>  源程序代碼</b></p><p><b>  各模塊運行結(jié)果截圖</b>

4、</p><p><b>  一:設(shè)計內(nèi)容</b></p><p><b>  題目:機房管理系統(tǒng)</b></p><p>  設(shè)計機房管理系統(tǒng),要求由菜單進行管理。</p><p> ?。?)上機前先檢查是否有空機位,有則將其顯示出,無則提示無空位。</p><p> ?。?/p>

5、2)還有空位置時,運行進入,并記錄下位置號以及序號,與上機時間。 </p><p>  (3)可對上機者上機信息進行查詢,修改與刪除。</p><p> ?。?)設(shè)計相關(guān)模塊,顯示上機者的上機費用。</p><p> ?。?)顯示所有上機者的上機信息。</p><p><b>  二:設(shè)計要求</b></p&g

6、t;<p><b>  題目要求:</b></p><p>  為各項操作功能設(shè)計一個菜單。應(yīng)用程序運行后,先顯示這個菜單,然后用戶通過菜單項選擇希望進行的操作項目。</p><p>  要求以上功能分別用函數(shù)實現(xiàn)。</p><p><b>  輸入/輸出要求:</b></p><p>

7、;  應(yīng)用程序運行后,先顯示一個菜單,然后用戶根據(jù)需要選擇相應(yīng)的操作項目。進入每個操作后,根據(jù)程序的提示輸入相應(yīng)的信息。</p><p>  要求用戶輸入數(shù)據(jù)時,要給出清晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。</p><p><b>  三:整體設(shè)計思路</b></p><p>  在設(shè)計該程序時,要將系統(tǒng)的不同功能分成各個

8、模塊。每個模塊由一個函數(shù)定義,整個程序由函數(shù)調(diào)用來實現(xiàn)。每個模塊是一個子函數(shù),由一個主函數(shù)調(diào)用各個子函數(shù)。在定義子函數(shù)時,根據(jù)不同的功能選擇不同的語句,如需要使用循環(huán)時可以用“do……while”來實現(xiàn);需要使用選擇時可以用“switch”或“if”語句來實現(xiàn)等。</p><p>  設(shè)計以菜單方式工作的機房管理系統(tǒng),主要包括六個模塊,分別是上機者信息輸入模塊,上機者信息查詢模塊,上機者信息修改模塊,上機者信息刪

9、除模塊,上機者上機費用計算模塊,所有上機者信息顯示模塊。每個模塊由組員相應(yīng)完成。另外考慮到機房的特殊要求,新增一個上課模式,此模式功能是將所有機子開啟,統(tǒng)一賦上上機者相關(guān)信息,避免管理員一個一個的給機子輸入信息。</p><p>  本系統(tǒng)程序關(guān)鍵在于一個空機位的檢索,亦是本程序核心之所在。本程序是通過給StudentList[time]賦值為0或1分別實現(xiàn)空機號的判斷。0代表無人上機,及為空機號,反之1代表有人

10、上機,及不為空機號。</p><p>  本程序通過定義結(jié)構(gòu)體,包括姓名[name],機號[seat],學(xué)號[stu_num],上機時間[time]四個成員。具體如下;</p><p>  Struct student_info{char name[10]; </p><p>  int seat;</p><p>  Long stu_n

11、um;</p><p>  int time;}</p><p><b>  四:流程圖</b></p><p><b>  層次模塊圖</b></p><p><b>  空機號查詢N—S圖</b></p><p>  空機號檢索是本程序的核心,本程序

12、的其它幾個模塊皆是通過先對空機號的判斷然后進行下去的(及先對StudentList[time]的值進行0或1的判斷)。例如“顯示所有上機信息模塊”,我們小組通過一個for循環(huán)語句,從機號0—79號逐一判斷,符合條件則將其輸出。而判斷的標準就是if(StudentList[i].time!=0)。N—S圖如下所示: </p><p>  其它模塊類似,流程圖省略。</p><p>  五:主

13、函數(shù)及功能菜單說明</p><p>  在主函數(shù)之前,我們首先定義了一個結(jié)構(gòu)體,同時進行了相關(guān)函數(shù)的聲明。其中,結(jié)構(gòu)體包括:姓名[name],機號[seat],學(xué)號[stu_num],上機時間[time]四個成員。在主函數(shù)中,我們定義了一個變量j,通過一個for循環(huán)語句,從j=0到j(luò)=80,分別給所有機子編號,同時給所有機子的上機時間賦以初值0,即: </p><p>  for(j

14、=0;j<80;j++)</p><p>  {StudentList[j].time=0; </p><p>  StudentList[j].seat=j;}</p><p>  從而為空機號的檢索以及下面各個模塊順利的連接編譯做下鋪墊。</p>

15、<p>  而功能菜單的實現(xiàn),我們采用的是switch選擇語句并結(jié)合do……while循環(huán)的方法,通過人為的輸入來實現(xiàn)菜單的操作。為美化菜單,我們加上相應(yīng)的頭文件#include<stdlib.h>,再加上相應(yīng)的顏色函數(shù):system( "color 5A "),從而成功使系統(tǒng)界面背景顏色與字體分別變成紫色與綠色。</p><p><b>  系統(tǒng)菜單界面截

16、圖</b></p><p><b>  六:各模塊簡要說明</b></p><p><b>  學(xué)生信息輸入模塊</b></p><p>  學(xué)生信息輸入模塊是本系統(tǒng)的第一個模塊,亦是本系統(tǒng)尤為關(guān)鍵的一個模塊。下面的模塊能夠正常運行,皆離不開這一模塊。</p><p>  結(jié)合主函數(shù),我

17、們在輸入上機者信息時,我們通過對 StudentList[i].time進行0或1的判斷,對整個機房進行一個空機號的檢索,檢查是否有空機號,有則執(zhí)行輸入功能,無則輸出“機房已滿”信息。當然,管理員亦能先執(zhí)行第二個模塊:空機號檢索模塊,先檢索出空機,再讓上機者選擇機號上機。</p><p><b>  空機號查詢模塊</b></p><p>  詳見上文流程圖部分的介紹

18、。</p><p>  查詢、修改、刪除、顯示上機信息模塊</p><p>  這四個模塊采用的設(shè)計思路基本一致,皆通過對StudentList[i].time的值進行0或1的判斷,達到功能的實現(xiàn)。例如:查詢上機信息模塊。在此模塊中,設(shè)計者通過一個if的判斷語句(即:if(StudentList[i].time!=0) ),對管理員所輸入機號進行一個是否為空機號的判斷,若檢測到所輸機號是空

19、機號(即:StudentList[i].time=0)時,則不輸出相關(guān)信息 ,反之,輸出相關(guān)上機者信息。</p><p><b>  顯示上機費用模塊</b></p><p>  此模塊采用的是時間乘上每單位時間的費用的計費方式來進行計費的。在本系統(tǒng)中,我們規(guī)定每小時上機費用是2元,通過調(diào)用在“學(xué)生信息輸入模塊”中所輸入的上機時間(即:StudentList[i].t

20、ime)乘上此費用,從而得到上機者上機費用。</p><p><b>  上課模式模塊</b></p><p>  此模塊為本系統(tǒng)新增模塊,是根據(jù)機房某些時候的特殊需要設(shè)計的,旨在能夠方便管理員一次性輸入數(shù)據(jù)。而為達到這一功能,我們采用了一個for循環(huán)語句,從0號機一直到79號機統(tǒng)一賦上相同的上機時間,學(xué)號。For循環(huán)語句如下: for(i=0;i<80;i++

21、) </p><p><b>  {</b></p><p>  StudentList[i].time=n;</p><p>  StudentList[i].stu_num=0;</p><p>  st

22、rcpy(StudentList[i].name,"");</p><p><b>  }</b></p><p><b>  七:心得體會</b></p><p>  C語言程序設(shè)計是本學(xué)期才開的課,雖然到現(xiàn)在已經(jīng)告一段落,不過現(xiàn)在回想,覺得經(jīng)過大半個學(xué)期的學(xué)習(xí),自己的確學(xué)到了不少東西,不過依然只是個

23、入門者,經(jīng)后還得靠自己繼續(xù)學(xué)習(xí),加強。</p><p>  這次C語言課程設(shè)計,在我們小組開始準備時,大家?guī)缀醵际且活^霧水,尤其是我這個當組長的,更是不知該如何給小組成員分配任務(wù),這也是我遇到的第一個難題。后來在學(xué)習(xí)函數(shù)并且與其它小組討論之后,漸漸有了眉目。于是我決定按功能模塊給小組成員分配任務(wù),我們這個小組基本上是一人負責(zé)一個模塊,而我在負責(zé)“刪除上機信息模塊”的同時,也擔負起主函數(shù)與連接各個模塊的任務(wù)。在這個

24、過程中我于是遇到了第二個困難。</p><p>  這第二個困難就是如何利用“結(jié)構(gòu)體”。說句實話,在我們小組開始著手準備之時連結(jié)構(gòu)體都弄不清楚,因為壓根就還沒學(xué)到此部分。但在自己查閱相關(guān)書籍以及與同學(xué)討論再加上后來老師在“結(jié)構(gòu)體”一章中的講解,我們終于在最后用結(jié)構(gòu)體完成了此次課程設(shè)計。</p><p>  此次的課程設(shè)計之所以能夠順利完成也離不開組員之間的團結(jié)協(xié)作。比如在此次課程設(shè)計中,起

25、初大家都不知道該如何將各個部分連接起來,也就是說該如何選取一個統(tǒng)一的判斷標準。后來在經(jīng)過組員的討論并親自實踐調(diào)試之后,大家得到了一致的意見。從本系統(tǒng)源程序代碼中可以大家可以發(fā)現(xiàn),我們小組所編寫的程序的核心就是空機號的判斷,及上文所提到的StudentList[j].time值的判斷。(Student[i].time==0表示空機號,等于1則表示非空極號,有人正在操作此機)。于是在接下來的模塊編寫時,我們小組成員都嚴格的統(tǒng)一遵照此規(guī)定完成

26、了接下來的任務(wù)。例如“顯示所有上機信息模塊”,我們小組就是通過一個for循環(huán)語句,通過逐一檢查,遇到符合條件的則將其輸出。而我們的判斷標準就是Student[i].time的值為零則不輸出,不為零則將其輸出。</p><p>  因為在這次C語言課程設(shè)計中,我們小組可謂經(jīng)歷了一次“自學(xué)大作戰(zhàn)”,因此我們也逐漸感受到了自學(xué)的妙處,我想這必將會對我今后的學(xué)習(xí)產(chǎn)生一定的積極影響。例如在我們小組基本完成設(shè)計之后,我們覺得

27、主界面不夠美觀,是否可以改進一下呢?于是我們通過上網(wǎng)查閱了相關(guān)的資料,發(fā)現(xiàn)我們其實可以給主界面以及字體加點背景顏色,而這項工作也并不是很難,只需要調(diào)用庫函數(shù)中的顏色函數(shù)。于是我們在主函數(shù)中加上System("color 0A"),并加上相應(yīng)的頭文件#include<stdlib.h>。于是我們就成功實現(xiàn)了這一功能,給該程序主界面賦上了紫色,字體也變?yōu)榱司G色。</p><p>  在

28、課程設(shè)計中,收獲知識,提高能力的同時,我也學(xué)到了很多人生哲理,懂得怎樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中如何去克服心理上的不良情緒,因此在以后的生活和學(xué)習(xí)過程中,我一定會把課程設(shè)計的精神帶到生活中,不畏艱難,勇往直前!</p><p><b>  附錄</b></p><p><b>  一:源程序代碼</b></p&g

29、t;<p>  #include<stdio.h></p><p>  #include<string.h></p><p>  #include<stdlib.h> </p><p>  #define MaxSize 80</p><p>  struct student_info<

30、/p><p><b>  {</b></p><p>  char name[10]; //姓名</p><p>  int seat; //機號</p>

31、;<p>  long stu_num; //學(xué)號</p><p>  int time; //上機時間</p><p>  }StudentList[MaxSize];</p>&l

32、t;p>  void Insert();</p><p>  void Empty();</p><p>  void Search();</p><p>  void Update();</p><p>  void Delete();</p><p>  void Dispallmoney();</p&

33、gt;<p>  void Show();</p><p>  void Class();</p><p>  int main()</p><p><b>  { </b></p><p><b>  int i,j;</b></p><p>  syst

34、em("color 5A"); //字體和背景顏色 </p><p>  for(j=0;j<80;j++)</p><p><b>  {</b></p><p>  StudentList[j].time=0; //給所

35、有機子上機時間賦值為0,代表空機</p><p>  StudentList[j].seat=j; //給所有機子編號 </p><p><b>  }</b></p>

36、<p>  printf("\t\t\t*****************************\n\n");//顯示一個簡易菜單</p><p>  printf("\t\t\t 歡迎使用機房管理系統(tǒng)\n\n");</p><p>  printf("\t\t\t*****************************

37、\n\n");</p><p><b>  do</b></p><p>  {printf("\n");</p><p>  printf("\t\t\t1------輸入學(xué)生信息(Insert)\n");</p><p>  printf("\t\t\t2-

38、-----查詢空機位(Empty)\n");</p><p>  printf("\t\t\t3------查詢上機情況(Search)\n");</p><p>  printf("\t\t\t4------修改上機信息(Update)\n");</p><p>  printf("\t\t\t5----

39、--刪除上機信息(Delete)\n");</p><p>  printf("\t\t\t6------顯示學(xué)生上機費用(Dispallmoney)\n");</p><p>  printf("\t\t\t7------顯示所有上機信息(Show)\n");</p><p>  printf("\t\t

40、\t8------上課模式(Class)\n");</p><p>  printf("\t\t\t9------退出(Exit)\n");</p><p>  scanf("%d",&i); //接受用戶的選擇

41、 </p><p><b>  switch(i)</b></p><p>  {case 1:Insert(); //調(diào)用學(xué)生信息輸入函數(shù)</p><p><b>  break;</b&

42、gt;</p><p>  case 2:Empty(); //調(diào)用空機號檢索函數(shù)</p><p><b>  break;</b></p><p>  case 3:Search(); //調(diào)用上機信息查詢函數(shù)</p><

43、p>  break ;</p><p>  case 4:Update(); //調(diào)用上機信息修改函數(shù)</p><p>  break; </p><p>  case 5:Delete();</p>

44、<p><b>  break;</b></p><p>  case 6:Dispallmoney(); //調(diào)用計費函數(shù)</p><p><b>  break;</b></p><p>  case 7:Show();

45、 //調(diào)用上機信息全顯示函數(shù)</p><p><b>  break;</b></p><p>  case 8:Class(); //調(diào)用機房上課模式函數(shù)</p><p><b>  break;</b></p><p>  case 9

46、:break;</p><p>  default:printf("錯誤選擇!請重選");break;</p><p><b>  }</b></p><p>  }while(i!=9);</p><p><b>  return 0;</b></p><p

47、><b>  }</b></p><p>  void Insert()</p><p><b>  {</b></p><p>  int i,k=0;</p><p>  for(i=0;i<80;i++)</p><p><b>  {</b

48、></p><p>  if(StudentList[i].time==0) //檢測機房是否有空機位</p><p><b>  k=1;</b></p><p><b>  }</b></p><p><b>  if(k==0)</b&

49、gt;</p><p>  {printf("機房已滿!");return;}</p><p>  printf("請輸入機號:");</p><p>  scanf("%d",&i);</p><p><b>  if(i>=80)</b><

50、;/p><p>  {printf("請輸入小于80的整數(shù)");return;}</p><p>  if(StudentList[i].time!=0)</p><p>  {printf("已經(jīng)有人正在操作此機:");return;}</p><p>  printf("請輸入上機者姓名:&q

51、uot;);</p><p>  scanf("%s",StudentList[i].name);</p><p>  printf("請輸入上機者學(xué)號:");</p><p>  scanf("%ld",&StudentList[i].stu_num);</p><p> 

52、 printf("請輸入上機時間:");</p><p>  scanf("%d",&StudentList[i].time);</p><p><b>  }</b></p><p>  void Empty()</p><p><b>  {</b>

53、;</p><p>  int i,k=0;</p><p>  printf("空機號為:\n");</p><p>  for(i=0;i<80;i++) //檢測空機號并將其輸出</p><p><b>  {</b></p&g

54、t;<p>  if(StudentList[i].time==0)</p><p>  {printf("%d\t",i);</p><p><b>  k=1;</b></p><p><b>  }</b></p><p><b>  }</b

55、></p><p><b>  if(k==0)</b></p><p>  {printf("無空機位!");return;}</p><p><b>  }</b></p><p>  void Search()</p><p><b>

56、;  {int i;</b></p><p>  printf("請輸入要查詢的機號:");</p><p>  scanf("%d",&i);</p><p>  if(StudentList[i].time!=0) //判斷標準,檢索到則輸出 </p>

57、<p>  {printf("姓名:%s\t",StudentList[i].name);</p><p>  printf("學(xué)號:%ld\t",StudentList[i].stu_num);</p><p>  printf("上機時間:%d\t",StudentList[i].time);</p>

58、<p><b>  }</b></p><p><b>  else</b></p><p>  printf("沒有查詢到!");</p><p><b>  }</b></p><p>  void Update()</p>&l

59、t;p><b>  {int i;</b></p><p>  printf("請輸入要修改數(shù)據(jù)的機號:");</p><p>  scanf("%d",&i);</p><p>  if(StudentList[i].time!=0) //判斷標準,檢索

60、到則輸出</p><p><b>  { </b></p><p>  printf("請輸入姓名:");</p><p>  scanf("%s",StudentList[i].name);</p><p>  printf("請輸入學(xué)號:");</

61、p><p>  scanf("%ld",&StudentList[i].stu_num);</p><p>  printf("請輸入上機時間:");</p><p>  scanf("%d",&StudentList[i].time);</p><p><b>

62、;  }</b></p><p><b>  else</b></p><p>  printf("沒有查詢到可以修改的數(shù)據(jù)!");</p><p><b>  }</b></p><p>  void Delete()</p><p><

63、;b>  {int i;</b></p><p>  printf("請輸入要刪除信息的機號:");</p><p>  scanf("%d",&i);</p><p>  if(StudentList[i].time==0)</p><p>  printf("無需

64、修改!");</p><p>  StudentList[i].time=0;</p><p>  strcpy(StudentList[i].name,"");</p><p><b>  }</b></p><p>  void Dispallmoney()</p><

65、;p>  {int i,money;</p><p>  printf("請輸入結(jié)賬機號:");</p><p>  scanf("%d",&i);</p><p>  money=2*StudentList[i].time;//計費采用公式:時間*每次的費用,簡單計算</p><p> 

66、 printf("您的上機費用為:%d",money);}</p><p>  void Show()</p><p><b>  {int i;</b></p><p>  printf("\n");</p><p>  printf("機號\t姓名\t學(xué)號\t\t上機

67、時間\n");</p><p>  for(i=0;i<80;i++)</p><p>  if(StudentList[i].time!=0) //判斷標準,檢索到則輸出 </p><p>  {printf("

68、;%d\t",StudentList[i].seat);</p><p>  printf("%s\t",StudentList[i].name);</p><p>  printf("%ld\t\t",StudentList[i].stu_num);</p><p>  printf("%d\n"

69、;,StudentList[i].time);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Class()</p><p><b>  {</b></p><p><b>  i

70、nt i,n;</b></p><p>  printf("請輸入上課時間:\n");</p><p>  scanf("%d",&n);</p><p>  for(i=0;i<80;i++) //給所有機子上機時間統(tǒng)一賦值,所有機子開啟</p><p>&

71、lt;b>  {</b></p><p>  StudentList[i].time=n;</p><p>  StudentList[i].stu_num=0;</p><p>  strcpy(StudentList[i].name,"");</p><p><b>  }</b>

72、;</p><p><b>  }</b></p><p>  二:各模塊運行結(jié)果截圖</p><p><b>  1.主菜單界面</b></p><p>  2.學(xué)生信息輸入界面</p><p><b>  空機號查詢界面</b></p>

73、<p> ?。ㄗ⒁猓篗ike所上的12號機已經(jīng)沒有顯示。)</p><p><b>  查詢上機信息界面</b></p><p><b>  修改上機信息界面</b></p><p> ?。ㄗ⒁猓簭乃貓D中可看出12號機信息已經(jīng)修改成功。)</p><p><b>  刪除上機

74、信息界面</b></p><p>  (注意:從所截圖中可看出12號機信息已經(jīng)成功刪除。)</p><p>  顯示學(xué)生上機費用界面</p><p>  顯示所有上機信息界面</p><p><b>  上課模式界面</b></p><p> ?。ㄗ⒁猓簭慕貓D中可以看出機房成功開啟上課

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論