1. 程式人生 > >Linux下的簡易的學生教務系統(C)

Linux下的簡易的學生教務系統(C)

 C語言的基礎工具學習完後,做了一個比較綜合的小程式,就是學生教務管理系統,(其實有兩個,這裡先說第一個)

  要求很簡單,共有6個功能,就是輸入、查詢、排名、修改、顯示所有成績、退出,就是把一些基礎的C工具運用到一起的一個小程式。

  首先要把介面先做好,因為要使程式一直在執行,所以這裡用while(1)來維持,做好介面以後,要讓終端輸入選項,因為只有6個選項,所以界定一下。


每個選項做一個函式,用switch的功能來選擇。這裡我用結構體陣列來做。  

 

主函式就是這樣,接下來進入第一個選項,插入。輸入函式的功能比較簡單,我用一個while(1)迴圈一直輸入,當你輸入end時就結束輸入回到主選單,當然,每個陣列元素都要先開闢一個定義的結構體大小的記憶體空間。

輸入完了資訊之後,就要進入查詢功能,我這裡通過查詢學生的姓名來查詢輸入的資訊,因為並不能確定輸入了多少條資訊,所以還是用到了while迴圈。


再來就是給輸入的資訊排序了,這裡我依然用自己熟悉的氣泡排序,道理很簡單,但寫起程式來還是有很多磕磕碰碰的地方。當用戶進入排名這一功能時,我會讓使用者選擇用哪一門的成績來排序,因為三種情況的編寫條理都一樣,所以我就以其中一種情況說明。


我就以語文成績排名來說明。當初寫的時候一直就卡在這裡,現在想想還蠻有趣的。


這裡先遍歷所有資訊,記下資訊的總條數,方便使用氣泡排序。因為輸入的時候是以end結尾,所以只要檢測到end資訊就輸入結束了。當初我一直都是冒泡這裡卡住,要麼段錯誤,要麼死迴圈,一直沒弄清楚問題到底出在哪了,除錯了好幾次,後來和同學討論發現,問題出在了賦值上,用過氣泡排序的同學都知道要用箇中間量來存較小(大)的值,一開始我用的是一箇中間結構體量,直接賦值,問題一大堆,先發現了字串不能傳遞,要用strcpy來覆蓋,結構體之間的成員變數未初始化也不能傳值,就一直卡這裡,其實只要另建一個int型的變數來存結構體中的int成員就可以了,用一個未初始化的結構體成員去接另一個結構體的同類型成員就會出錯,這裡搞好了,下面也就輕鬆了。


然後就是顯示了,把排好的資訊顯示出來。

  下一個功能就是修改了,同排名一樣,我也提供了3種修改,也同排名一樣,不要新建一個結構體利用新結構體的成員變數去改原來的結構體的成員變數,直接定義與結構體成員同類型的變數即可。


接下來就比較簡單了,


修改完了就是顯示所有資訊了,這也不難,遍歷列印就行了。


最後一項退出可以很簡單,在那個case6裡直接exit(1)就行了,當然你也可以做的美觀一些。因為是我的第一個小程式,所以還是加了些東西的。


總的來說,這個程式還是滿綜合的,也是對基礎的C語言工具做個小結吧。