摘 要:在Visual Studio上開發(fā)一個(gè)學(xué)生宿舍管理系統(tǒng)的軟件,由C語言實(shí)現(xiàn)整個(gè)系統(tǒng)。是將C語言運(yùn)用實(shí)際的一個(gè)完整的經(jīng)典案例,通過詳細(xì)講解該系統(tǒng)的實(shí)現(xiàn)方法手段,鞏固掌握并運(yùn)用C語言各種基本知識(shí),充分體現(xiàn)了學(xué)以致用的理念。
關(guān)鍵詞:學(xué)生宿舍管理數(shù)據(jù)庫(kù);Visual studio;C語言
中圖分類號(hào):TP311.52
學(xué)生宿舍管理是學(xué)校后勤的一個(gè)重要任務(wù),也與學(xué)生的日常生活學(xué)習(xí)有直接的關(guān)系。隨著學(xué)校發(fā)展,規(guī)模增大,生源增多,從效率和形式來看,管理已經(jīng)不能單純的由人工紙筆記錄形式來完成?,F(xiàn)代計(jì)算機(jī)技術(shù)的發(fā)展及應(yīng)用給人們的日常生活帶來了極大的便利。本文包括對(duì)學(xué)生宿舍管理系統(tǒng)的查詢,新生入學(xué)登記時(shí)學(xué)生宿舍信息數(shù)據(jù)庫(kù)的追加,學(xué)生畢業(yè)等原因?qū)?shù)據(jù)庫(kù)信息的刪除,以及常用的修改,統(tǒng)計(jì),排序等基本操作的具體C語言實(shí)現(xiàn),都是通過Visualstudio2010一步步實(shí)踐驗(yàn)證而來,保證了文章中涉及的流程圖等的正確性,對(duì)于已有C語言基礎(chǔ)的讀者,可通過實(shí)踐很容易的進(jìn)行驗(yàn)證,并能夠得到實(shí)際的收獲。
1 系統(tǒng)總體設(shè)計(jì)思路
1.1 總體功能設(shè)計(jì)及實(shí)現(xiàn)。學(xué)生宿舍管理系統(tǒng)存放了每個(gè)學(xué)生的各類信息的數(shù)據(jù)庫(kù),所有信息以個(gè)人為單位定義在一個(gè)結(jié)構(gòu)體變量中。
系統(tǒng)將具備顯示、追加、修改、刪除、查詢、統(tǒng)計(jì)、排序等功能,每種功能封裝為一個(gè)函數(shù),使用時(shí)方便調(diào)用。系統(tǒng)以菜單方式工作:通過提示用戶輸入一個(gè)數(shù)字選項(xiàng),通過主函數(shù)中的switch語句來調(diào)用相應(yīng)的功能函數(shù)。系統(tǒng)總體模塊框圖如圖1所示:
圖1 系統(tǒng)總體模塊框圖
1.2 各模塊功能設(shè)計(jì)及實(shí)現(xiàn)。在查詢、刪除、修改、統(tǒng)計(jì)功能模塊函數(shù)中,都會(huì)事先查找是否有該人,然后再進(jìn)行顯示、刪除、修改、統(tǒng)計(jì)等操作,當(dāng)找不到所要操作的記錄時(shí),出現(xiàn)提示信息“查無此人!”。可根據(jù)流程圖2來實(shí)現(xiàn),區(qū)別僅在于“其他操作…”,在各模塊中分別描述。
圖2 查詢、刪除、修改、統(tǒng)計(jì)功能模塊函數(shù)流程示意圖
1.2.1 顯示模塊。通過設(shè)計(jì)一個(gè)模塊,完成全部宿舍信息的顯示,顯示時(shí)按表格的形式,且有表頭,以便于瀏覽學(xué)生的信息。
程序通過一個(gè)printf函數(shù)把輸出信息的表頭打印出來,再通過一個(gè)for循環(huán)把每一個(gè)學(xué)生的信息輸出,在輸出的時(shí)候,通過調(diào)用Print函數(shù)(一個(gè)專門用來輸出的函數(shù),且是用指向結(jié)構(gòu)體數(shù)組的指針輸出學(xué)生信息)輸出所有學(xué)生信息。
1.2.2 追加模塊。通過設(shè)計(jì)一個(gè)模塊,完成一個(gè)(或多個(gè))學(xué)生入住宿舍的登記(追加記錄),在追加過程中有相應(yīng)的提示信息,完成追加后能重新顯示,從而實(shí)現(xiàn)新學(xué)生信息的加入。
結(jié)構(gòu)體中間的成員之間用空格來隔開輸入,通過回車鍵來實(shí)現(xiàn)追加。且追加一個(gè)學(xué)生信息后可選擇繼續(xù)追加或退出。
1.2.3 查詢模塊。通過設(shè)計(jì)一個(gè)模塊,按指定關(guān)鍵字進(jìn)行索引查詢,查詢的結(jié)果以表格的形式顯示,若查詢不到應(yīng)給出相應(yīng)的提示信息。
1.2.4 刪除模塊。通過設(shè)計(jì)一個(gè)模塊,可按指定的學(xué)號(hào)和指定的姓名兩種定位方式刪除學(xué)生在宿舍的記錄。當(dāng)輸入一個(gè)學(xué)生的學(xué)號(hào)或者姓名的時(shí)候,可以通過這個(gè)模塊,將輸入學(xué)號(hào)或者姓名的學(xué)生的所有信息從數(shù)據(jù)庫(kù)中刪除出去。以后,這個(gè)學(xué)生的信息將不再會(huì)出現(xiàn)再數(shù)據(jù)庫(kù)中。
如果含有此人的信息,則通過一個(gè)for循環(huán),把這個(gè)以后的信息依次前推來覆蓋這個(gè)人的信息,而實(shí)現(xiàn)此人信息的刪除。
1.2.5 修改模塊。通過設(shè)計(jì)一個(gè)模塊,當(dāng)某個(gè)人的信息發(fā)生變化的時(shí)候,能按學(xué)號(hào)或按姓名兩種定位方式,且可以按用戶要求修改記錄中除學(xué)號(hào)和姓名以外的指定內(nèi)容,并重新顯示。修改模塊時(shí)具有多級(jí)子菜單的摸塊。使用十分的方便、靈活。
如果含有此人的信息,則把此人的序號(hào)賦值給變量k。如果flag的值為1進(jìn)入下一級(jí)菜單,通過switch語句來選擇是修改這個(gè)人的宿舍棟號(hào)、房間號(hào)、性別、班級(jí)、電話號(hào)碼、校區(qū)還是宿舍類別。修改完成后通過調(diào)用Print函數(shù)輸出修改后的新的所有學(xué)生信息。
1.2.6 統(tǒng)計(jì)模塊。通過設(shè)計(jì)一個(gè)模塊,按指定關(guān)鍵字統(tǒng)計(jì)指定范圍的學(xué)生人數(shù),并能將統(tǒng)計(jì)的結(jié)果以及統(tǒng)計(jì)的人員的信息用表格顯示出來,使讀者一目了然。
程序通過輸入一個(gè)變量t來選擇是按校區(qū)、宿舍棟號(hào)統(tǒng)計(jì)該棟入住學(xué)生人數(shù)還是按班級(jí)統(tǒng)計(jì)入住某棟的人數(shù),或者退出統(tǒng)計(jì)模塊。當(dāng)每找到一個(gè)目標(biāo)信息的時(shí),用變量num累加人數(shù)并把此人信息賦給另一個(gè)結(jié)構(gòu)體成員。最后輸出統(tǒng)計(jì)的人數(shù)并通過for語句輸出這些學(xué)生的信息。
1.2.7 排序模塊。通過設(shè)計(jì)一個(gè)模塊,來實(shí)現(xiàn)數(shù)據(jù)庫(kù)的信息按指定關(guān)鍵字進(jìn)行順序排列。并顯示所有信息,使讀者一目了然。
常見的排序算法有冒泡排序、選擇排序、插入排序、快速排序等,不同的算法時(shí)間和空間復(fù)雜度不一樣,這里就不再詳細(xì)敘述。本文用到的排序算法是冒泡排序法。
2 結(jié)束語
該學(xué)生宿舍管理系統(tǒng)由C語言實(shí)現(xiàn),人機(jī)界面友好。該軟件開發(fā)周期較短,成本較低,易于維護(hù)。文章中所講解的基本方法是所有數(shù)據(jù)庫(kù)管理系統(tǒng)中都會(huì)用到的涉及的,具有極強(qiáng)的基礎(chǔ)性。
參考文獻(xiàn):
[1]楊頌華,熊海靈,楊明.C語言程序設(shè)計(jì):工程化方法[M].北京:機(jī)械工業(yè)出版社,2012.
[2]張曉民.VC++ 2010應(yīng)用開發(fā)技術(shù)/普通高等院校規(guī)劃教材[M].北京:機(jī)械工業(yè)出版社,2013.
作者簡(jiǎn)介:游虹(1993.01-),女,四川鄰水人,2011級(jí)本科在讀,研究方向:自動(dòng)化;吳近近(1992.01-),女,安徽淮北人,2011級(jí)本科在讀,研究方向:自動(dòng)化;郭春蕾(1992.04-),女,2011級(jí)本科在讀,研究方向:自動(dòng)化。
作者單位:西南大學(xué)計(jì)算機(jī)與信息科學(xué)學(xué)院,重慶 400715