學(xué)生選修課程系統(tǒng)設(shè)計C語言版(共56頁)_第1頁
學(xué)生選修課程系統(tǒng)設(shè)計C語言版(共56頁)_第2頁
學(xué)生選修課程系統(tǒng)設(shè)計C語言版(共56頁)_第3頁
學(xué)生選修課程系統(tǒng)設(shè)計C語言版(共56頁)_第4頁
學(xué)生選修課程系統(tǒng)設(shè)計C語言版(共56頁)_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上2015年(春/秋)程序設(shè)計基礎(chǔ) 題目:電子生詞庫軟件 姓名:朱 強(qiáng) 學(xué)號: 專業(yè)班級:2013級物聯(lián)網(wǎng)工程1班 指導(dǎo)老師:龔翔/馬生菊專心-專注-專業(yè)C語言程序設(shè)計實(shí)訓(xùn)任務(wù)書題目:學(xué)生選修課程系統(tǒng)學(xué)生姓名: 朱 強(qiáng) 學(xué)號: 班級: 13物聯(lián)網(wǎng)工程1班 題目類型:軟件工程(R) 指導(dǎo)教師: 龔翔/馬生菊 一、設(shè)計目的1.進(jìn)一步掌握和利用C語言進(jìn)行程序設(shè)計的能力;2.進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計的思想和方法;3.初步掌握開發(fā)一個小型實(shí)用系統(tǒng)的基本方法;4.學(xué)會調(diào)試一個較長程序的基本方法;5.學(xué)會利用流程圖或N-S圖表示算法;6.掌握書寫實(shí)訓(xùn)開發(fā)文檔的能力(書寫實(shí)訓(xùn)報告

2、)二、設(shè)計任務(wù)及內(nèi)容假定有n門課程,每門課程有課程編號,課程名稱,課程性質(zhì),總學(xué)時,授課學(xué)時,實(shí)驗或上機(jī)學(xué)時,學(xué)分,開課學(xué)期等信息,學(xué)生可按要求(如總學(xué)分不得少于60)自由選課。試設(shè)計一選修課程系統(tǒng),使之能提供以下功能:1.系統(tǒng)以菜單方式工作2.課程信息錄入功能輸入3.課程信息瀏覽功能輸出4.查詢功能:算法(選一)1)按學(xué)分查詢課程信息2)按課程性質(zhì)查詢課程信息5.學(xué)生選修課程6.按課程編號順序插入一門課程信息7.按課程名稱刪除一門課程信息8.按課程名稱的字典順序輸出所有課程信息。三、設(shè)計要求1.用C語言實(shí)現(xiàn)系統(tǒng);2.利用結(jié)構(gòu)體、數(shù)組等實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)設(shè)計;3.系統(tǒng)具有增加、查詢、插入、排序等基本

3、功能;4.系統(tǒng)的各個功能模塊要求用函數(shù)的形式實(shí)現(xiàn);5.文檔:實(shí)訓(xùn)說明書每個學(xué)生一份,并裝在統(tǒng)一的資料盒中; 6.光盤:每個學(xué)生文檔和程序資料分別建在一個以自己學(xué)號和姓名命名的文件夾下,并要求每班負(fù)責(zé)人匯總每個學(xué)生的文件放在以班級姓名命名的文件夾下,刻錄成一張光盤,放在一個專門的資料袋中。四、提交的成果1. 設(shè)計任務(wù)書一份(學(xué)校統(tǒng)一格式)2. 設(shè)計說明書一份,內(nèi)容包括:1) 中文摘要100字,關(guān)鍵詞3-5個。2) 實(shí)訓(xùn)題目、內(nèi)容、要求。3)總體設(shè)計(包含幾大功能模塊)。4)詳細(xì)設(shè)計(各功能模塊的具體實(shí)現(xiàn)算法流程圖)5)數(shù)據(jù)結(jié)構(gòu)設(shè)計描述,各模塊(函數(shù))的功能介紹,參數(shù)說明等。6)調(diào)試分析(包含各模

4、塊的測試用例,及測試結(jié)果。)7)總結(jié)(實(shí)訓(xùn)完成了哪些功能,還有哪些地方需要改進(jìn),及通過實(shí)訓(xùn)有何收獲,調(diào)試程序的體會等)8) 參考文獻(xiàn)、致謝等。五、主要參考資料1. 王連相.C/C+程序設(shè)計 武漢大學(xué)出版社.2013.72. 譚浩強(qiáng)C語言程序設(shè)計(第2版)學(xué)習(xí)指導(dǎo)清華大學(xué)出版社.2012.12 3. 楊莉,龔義建C語言程序設(shè)計實(shí)訓(xùn)指導(dǎo)教程華中科技大學(xué)出版.2009.64. 張小東,鄭宏珍C語言程序設(shè)計與應(yīng)用人民郵電出版社.2009.45. 郭翠英C語言課程設(shè)計案例精編中國水利水電出版社 2004.03.016郭有強(qiáng)C語言程序設(shè)計清華大學(xué)出版社 2009.02.017李丹程,劉瑩,那俊C語言程序設(shè)

5、計案例實(shí)踐清華大學(xué)出版社2009.02.018李麗娟C語言程序設(shè)計教程人民郵電出版社2013.01.019武雅麗,王永玲,解亞利C語言程序設(shè)計清華大學(xué)出版社2009.02.01六、各階段時間安排(共1周)日期內(nèi)容地點(diǎn)完成情況教師簽字星期一教師講解設(shè)計要求,準(zhǔn)備參考資料教室星期二分析系統(tǒng),方案設(shè)計教室星期三方案設(shè)計,編程教室星期四調(diào)試程序,書寫實(shí)訓(xùn)說明書教室星期五完成實(shí)訓(xùn)說明書,答辯教室摘 要20世紀(jì)末,隨著計算機(jī)科學(xué)的發(fā)展,網(wǎng)絡(luò)的應(yīng)用越來越廣泛,為廣大用戶提供了更加周到和人性化的服務(wù)。本文研究了以一種基于文件存儲的學(xué)生選修課程系統(tǒng)。本系統(tǒng)是根據(jù)現(xiàn)代化校園的發(fā)展而設(shè)計的學(xué)生學(xué)修課程系統(tǒng),本系統(tǒng)方

6、便老師、家長來學(xué)校查找學(xué)生成績、最近獎罰等多種情況。隨著教育改革的不斷深入和素質(zhì)教育的加強(qiáng)完全學(xué)分制的實(shí)施,選修課在一個學(xué)生的培養(yǎng)計劃中站的比重越來越大!使用了網(wǎng)上選課系統(tǒng)以后,可以在開課前就在網(wǎng)上選課,每個學(xué)生的課程在開課前就確定好,不用浪費(fèi)體力去選課,還可以使教學(xué)資源合理平均地分配。關(guān)鍵詞:學(xué)生選課;C語言;文件存儲 目 錄 1緒 論1.1基本內(nèi)容隨著教育改革的不斷深入和素質(zhì)教育的加強(qiáng)完全學(xué)分制的實(shí)施,選修課在一個學(xué)生的培養(yǎng)計劃中站的比重越來越大!學(xué)生在選課時要查看各個課程的詳細(xì)信息,還有選擇一些感興趣的課程,需要生成課表,在發(fā)現(xiàn)課程有沖突后能夠修改先前選擇的信息。各高校課程改革的不斷深入

7、,學(xué)校規(guī)模不斷擴(kuò)大、課程項目不斷增多,為了解決學(xué)生選課管理上的復(fù)雜繁瑣的人工操作,制作一個選修課程系統(tǒng)已經(jīng)迫在眉睫了。全校性選修課的目的在于擴(kuò)大學(xué)生的知識面,加強(qiáng)學(xué)生素質(zhì)教育,培養(yǎng)復(fù)合型高級人才,具有不可替代的重要性!1.2發(fā)展趨勢對于復(fù)雜的信息管理,計算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計算機(jī)進(jìn)行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好學(xué)生選課信息而設(shè)計的。當(dāng)今時代是飛速發(fā)展的信息時代,在各行各業(yè)中離不開信息處理,這正是計算機(jī)被廣泛應(yīng)用于信息系統(tǒng)的環(huán)境。計算機(jī)的最到好處的于利用它能夠進(jìn)行信息管理,使用計算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高

8、了其安全性?;谶@個問題,我認(rèn)為有必要建立一個學(xué)生選課系統(tǒng),使學(xué)生選課信息管理工作規(guī)范化、系統(tǒng)化、程序化,避免學(xué)生選課管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時、準(zhǔn)確、有效的查詢和修改選課情況。1.3用途及特點(diǎn)現(xiàn)代的社會是信息化的社會,信息無所不在。在生產(chǎn)領(lǐng)域、流通領(lǐng)域、各個部門每天都和信息打交道,如何處理如此多的信息成為了一個重要的課題。學(xué)生在學(xué)期開始選課是教學(xué)活動中的一個重要環(huán)節(jié),該環(huán)節(jié)如果能管理好,它不僅能加快學(xué)生的選課速度,也提高了整個活動工作的效率。大學(xué)一般都有上萬名學(xué)生,每學(xué)期開始學(xué)生都要選課,因而產(chǎn)生了大量的課程信息。考慮到用戶使用的方便和處理的信息量系統(tǒng)要完成錄入,保存

9、,查詢,修改和刪除課程信息的各種過程,能打印出課程信息表。系統(tǒng)的主要使用對象是需要選課的學(xué)生。需要隨學(xué)生選課選課的變化,計算相應(yīng)的總學(xué)分。在全部選定后打印報表。系統(tǒng)還需要管理員來查看和修改學(xué)生的總體選課情況課程信息和學(xué)生信息。此系統(tǒng)系統(tǒng)選課方便、快捷,用簡單的界面來展示學(xué)生的選課信息,應(yīng)用簡單明了、存儲量大、可靠性高、保密性好、壽命長、成本低等優(yōu)點(diǎn),可以極大的提高對學(xué)生信息管理的效率。利用C語言開發(fā),實(shí)現(xiàn)了簡單的學(xué)生課程信息的錄入、修改、查詢、刪除等操作,并且能夠利用文件系統(tǒng)長久的保留原始數(shù)據(jù)。2問題需求分析2.1問題的提出 隨著教育的改革,各高校的大規(guī)模擴(kuò)展,專業(yè)的劇增,以老師授課為主的傳統(tǒng)

10、的教育模式已不再適應(yīng)當(dāng)今中國的各高校的現(xiàn)狀。并且,在課表的編排上市意向十分復(fù)雜、棘手的工作。在派克過程中,除了滿足大量的制約條件外,還必須解決許多沖突域矛盾。因此,利用網(wǎng)絡(luò)進(jìn)行選課和對學(xué)生的授課,應(yīng)經(jīng)成為名正言順的事,并且必不可少了。那么如何創(chuàng)建一個網(wǎng)絡(luò)選修課程系統(tǒng)呢?如何實(shí)現(xiàn)學(xué)生網(wǎng)上根據(jù)自己的時間安排,隨時隨地的學(xué)習(xí)呢?這成了研究網(wǎng)絡(luò)選修課程人員的一大問題了。2.2問題的分析大學(xué)期間總會有很多公共選修課,以往的選課方法是隨堂報名。這種方法雖然直接,但是造成選課的盲目性,有些課堂選課時人滿為患,有些課堂無人選課。原因是傳統(tǒng)的選課方法沒有預(yù)見性,大家沒有事先協(xié)調(diào)好。這種局面是長期以來在高校中產(chǎn)生

11、的,短時間內(nèi)根本無法改變這個現(xiàn)狀。使用了網(wǎng)上選課系統(tǒng)以后,可以在開課前就在網(wǎng)上選課,每個學(xué)生的課程在開課前就確定好,不用浪費(fèi)體力去選課,還可以使教學(xué)資源合理平均地分配。 本系統(tǒng)開發(fā)的目的是采用信息化和網(wǎng)絡(luò)化的手段,幫助學(xué)生和學(xué)校信息化的管理選課教學(xué)任務(wù)。教育制度的改革,學(xué)生數(shù)量的劇增,無疑給網(wǎng)絡(luò)選修課程提供了一個前所未有的機(jī)會。為方便用戶根據(jù)自己時間隨時隨地的學(xué)習(xí),特開發(fā)此系統(tǒng)。為學(xué)校將老師的授課視頻直接放在學(xué)校官網(wǎng)上,學(xué)生通過官網(wǎng),隨心所欲地在學(xué)生選課系統(tǒng)進(jìn)行學(xué)習(xí)。這樣不僅節(jié)省了學(xué)生們的時間,更為學(xué)校省下了許多師資資源。學(xué)校可以將這部分省下來的師資資源用在學(xué)術(shù)研究方面、教育方式研究等方面。

12、當(dāng)前大部分學(xué)校沒有一個完善的學(xué)生選修課程系統(tǒng),計算機(jī)使用主要基于microsoft office,不能發(fā)揮有效的作用,而且隨著我國教育的改革,學(xué)生可以選擇科目多樣化,使得學(xué)校對學(xué)生選修課程管理趨于繁瑣、復(fù)雜,工作量大,這種傳統(tǒng)的學(xué)校選修課程模式已不能滿足當(dāng)前的發(fā)展。實(shí)現(xiàn)學(xué)生選修課程的系統(tǒng)化、規(guī)范化、自動化以及全面的、相對集中化,為學(xué)生提供全面的選課數(shù)據(jù)信息,為有效的控制選課提供有力的幫助;為學(xué)校做到及時、準(zhǔn)確地掌握選課情況,為選修課程做好部署工作。本系統(tǒng)是為高校學(xué)院制定的個人選課及管理的現(xiàn)代化信息平臺,學(xué)生能過瀏覽器進(jìn)行網(wǎng)上選課和并且可以查詢自己的選課計劃及所選課程進(jìn)度。同時,管理員可以通過游

13、覽器進(jìn)行課程添加、刪除和修改。這無論對于學(xué)生和教師管理員來說都節(jié)省了大量的工作量。充分利用網(wǎng)上選課系統(tǒng)來提高教學(xué)選課管理的效率,實(shí)現(xiàn)全面網(wǎng)絡(luò)化、規(guī)范化和集成化。3總體設(shè)計3.1總體設(shè)計思路通過對課題的分析,程序的要求是設(shè)計選修課管理系統(tǒng),對選修課程能夠進(jìn)行錄入和修改操作等,要求有主界面和退出功能。首先,考慮到程序的數(shù)據(jù)輸入,可以設(shè)置一個管理員登陸選項,通過該界面,進(jìn)行選修課的錄入和修改操作,最后將錄入的課程存到相應(yīng)的文件中。然后定義各種函數(shù)的功能包括:查看、查詢、刪除等。另一個為學(xué)生登陸界面,該界面學(xué)生可以進(jìn)行課程選擇和瀏覽查詢等操作。在進(jìn)行該操作之前需要對管理員保存的文件進(jìn)行讀取,然后對其中

14、的東西進(jìn)行查詢等。在學(xué)生選好課程以后,可以將選好的課程保存于相應(yīng)的文件中,以便下次進(jìn)行修改。通過函數(shù)的層層調(diào)用來實(shí)現(xiàn)程序的邏輯結(jié)構(gòu)。中間通過文件的打開和關(guān)閉實(shí)現(xiàn)對文件內(nèi)部所包含的數(shù)據(jù)操作。然后通過對課題的分析,必須實(shí)現(xiàn)的功能有主線程對四大線程的隨機(jī)調(diào)度以及輸出結(jié)果顯示等。我們?yōu)榱朔奖阌脩艨刂乒芾恚痔砑恿艘恍└诵曰墓δ苋缛斯ふ{(diào)試,運(yùn)行配置等功能。主要運(yùn)用了順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)等多種基本結(jié)構(gòu),同時文件存儲信息的方式更是簡化了程序結(jié)構(gòu),使程序讀起來更容易懂。除此之外,本系統(tǒng)采用分塊實(shí)現(xiàn)功能,將要實(shí)現(xiàn)的增加課程信息、修改課程信息、刪除課程信息、增加學(xué)生信息和修改學(xué)生信息等功能分別用不同的

15、子程序來完成,這樣不僅方便了我們程序調(diào)試,更提高了程序的移植性。 為了方便用戶控制管理,本系統(tǒng)添加了一些更人性化的功能如人工調(diào)試,運(yùn)行配置等功能。主要運(yùn)用了順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)等多種基本結(jié)構(gòu),同時文件存儲信息的方式更是簡化了程序結(jié)構(gòu),使程序讀起來更容易懂。除此之外,本系統(tǒng)采用分塊實(shí)現(xiàn)功能,將要實(shí)現(xiàn)的增加課程信息、修改課程信息、刪除課程信息、增加學(xué)生信息和修改學(xué)生信息等功能分別用不同的子程序來完成,這樣不僅方便了我們程序調(diào)試,更提高了程序的移植性。3.2總體設(shè)計模塊介紹及框圖本系統(tǒng)由一個主模塊和多個子模塊組成,主模塊有管理員和學(xué)生兩個模塊。管理員模塊主要功能是添加課程信息、刪除課程信息等

16、,而學(xué)生模塊則主要管理學(xué)生信息及選課問題等。主模塊管理員模塊學(xué)生模塊瀏覽課程查詢課程添加課程刪除課程瀏覽所有課程查詢課程信息選擇選修課程瀏覽所選課程刪除錯選課程 圖3-1 總體模塊框圖4詳細(xì)設(shè)計4.1各模塊流程圖4.1.1主函數(shù)模塊主函數(shù)設(shè)計地比較簡潔,只是提供一個主菜單和幾個函數(shù)的調(diào)用以及顯示函數(shù)。switch語句將整個程序分為三個大的功能模塊。其具體流程圖如下:開始選課系統(tǒng)以管理員身份登錄以學(xué)生身份登錄退出系統(tǒng) 圖4-1 主函數(shù)模塊圖4.1.2管理員模塊管理員的功能一共有四個功能:瀏覽,查詢,添加,刪除課程,運(yùn)用字符串處理函數(shù)處理密碼的問題,若密碼正確,則可以進(jìn)入管理員模塊。否則重新輸入名

17、,當(dāng)密碼輸入錯誤達(dá)到3次,則不能進(jìn)入管理員模塊。密碼次數(shù)用了一個int型的變量來計數(shù)。用一個switch語句實(shí)現(xiàn)函數(shù)的調(diào)用: 輸入密碼進(jìn)入系統(tǒng)密碼次數(shù)3開始結(jié)束 是否 圖4-2 管理員模塊流程圖 4.1.3 學(xué)生模塊 學(xué)生的功能一共有四個功能:瀏覽所有課程信息、查詢課程信息、選擇選修課程、瀏覽所選課程、刪除錯選課程等。用一個switch語句實(shí)現(xiàn)函數(shù)的調(diào)用:開始輸入是否為2查詢課程信息break輸入是否為1瀏覽所有課程break結(jié)束輸入是否為3選擇選修課程break輸入是否為4瀏覽所選課程break輸入是否為5刪除錯選課程break輸入是否為6返回主菜單break是否是否是否是 否是否是否 圖4

18、-3 學(xué)生模塊流程圖4.1.4 創(chuàng)建鏈表模塊 利用鏈表的創(chuàng)建、插入、刪除和查詢等功能。以菜單選項形式體現(xiàn)出來,實(shí)現(xiàn)課程信息的增加、學(xué)生信息的增加、課程信息的刪除以及學(xué)生信息的修改等等。運(yùn)用鏈表實(shí)現(xiàn)這些功能可以與用戶良好的交互。Scanf(num,name,kind,&stime,&ttime,&etime,&score,&term);Tail->next=NULL;Return head;開始輸入選修課程信息Num1!=0為結(jié)構(gòu)體的每個元素都創(chuàng)建一個鏈表Num1!=0Tail->next=p;Tail=p;Head=p創(chuàng)建失敗創(chuàng)建成功創(chuàng)建失敗

19、 圖4-4 鏈表創(chuàng)建流程圖4.1.5 瀏覽模塊瀏覽模塊主要用管理員中的“瀏覽課程”和學(xué)生功能中的“瀏覽所有所有課程”,將所有的課程信息輸出,即將2.txt文件里面的內(nèi)容全部輸出: 瀏覽所有課程SUB *ptr;head=NULL;readfile();Head=NULLPrintf(NO RECORDS);Return;輸出課程信息結(jié)束是否 圖4-5 瀏覽模塊流程圖4.1.6 查詢模塊查詢模塊主要用于管理員功能中的“查詢課程”和學(xué)生功能模塊中的“查詢所有課程”,查詢模塊共分為三個查詢方法:按課程名稱查找,按課程性質(zhì)查找和按學(xué)分查找switch語句中,每一個case語句就是一中查詢方法:開始輸入

20、是否為1按課程性質(zhì)查找break輸入是否為2按學(xué)分查找break結(jié)束輸入是否為0按學(xué)分查找break 圖4-6 查詢模塊流程圖4.1.7插入鏈表模塊插入鏈表操作主要用于添加課程,在整個課程信息中加入一些新課程,它在添加模塊中被調(diào)用:否是 是 是插入失敗是否否是是否插入鏈表模塊SUB *p1,*p2;p1=subj;head=NULLhead=p1;head->next=NULL;p2=head;p2;p2=p2->next;p2->next=NULLp2->next=subj;subj->next=NULL;break;eturn head 結(jié)束 圖4-7 插入鏈

21、接模塊流程圖4.1.8 添加模塊添加模塊主要用于增加課程信息,采用鏈表的操作:是否插入課程信息SUB *ptr,*subj;int size=sizeof(SUB);char ch,ch1;ch!='0'輸入(課程信息、課程編號、課程名稱、課程性質(zhì)、總學(xué)分、授課學(xué)分、實(shí)踐或上機(jī)學(xué)時)ch1=getchar();ch=getchar();Return head;myInsert(subj);printf("nn繼續(xù)插入請按回車n");printf("n結(jié)束添加課程按 0 ")結(jié)束 圖4-8添加模塊流程圖4.1.9 刪除模塊刪除模塊主要用于管

22、理員刪除課程信息學(xué)生刪除自己的選課,全部采用刪除鏈表中的某一個節(jié)點(diǎn)的操作:開始輸入想要刪除編號進(jìn)行編號查找并刪除繼續(xù)刪除結(jié)束刪除是否 圖4-9刪除模塊流程圖4.1.10 選修課程模塊選修課程模塊采用插入鏈表的操作:開始輸入有要選課程編號對輸入的信息進(jìn)行查找判斷有此課程信息選課成功無此課程信息開始 圖4-10選修課程模塊流程圖4.1.11 讀取文件模塊讀取文件模塊是用來讀出文件內(nèi)容,并將內(nèi)容輸出到內(nèi)存中,當(dāng)輸入文件名時,就能打開指定的文件,當(dāng)輸入all_sub.txt時,打開所有課程信息的文件,當(dāng)輸入my_sub.txt時,就是瀏覽學(xué)生選修的課程信息。開始輸入課程信息文件夾名稱!feof(fp)

23、newSub=(SUB*)malloc(sizeof(SUB);fscanf(fp,&newSub->num,newSub->name,newSub->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term);myInsert(newSub);關(guān)閉文件結(jié)束打開文件失敗否是 圖4-11讀取文件模塊流程圖4.1.12 保存文件模塊保存文件模塊共分為兩個子程序,將修改的信息保存到2.txt文件中,開始系統(tǒng)

24、檢測要保存的文件p=head;p=p->next將修改后的文件保存關(guān)閉文件結(jié)束保存失敗 圖4-12 保存文件模塊流程圖 4.2函數(shù)功能具體實(shí)現(xiàn)及算法4.2.1各函數(shù)的具體功能 int main() 程序主函數(shù),程序入口 void Mangers() 管理員主菜單,管理員入口 Void SUB *create_form() 創(chuàng)建鏈表結(jié)構(gòu) void savefile() 將新增加的課程信息保存到文件中 void savefile1() 將修改后的課程信息文件保存到文件中 void readfile() 閱讀文件 void prin() 瀏覽所有課程 void prin1() 瀏覽所有選修課程

25、 void *myInsert( SUB *subj) 鏈表插入操作 void *insert() 插入課程信息 void *del() 刪除課程 void choose() 選新課程-學(xué)生選課函數(shù) void search() 課程信息查詢 void Students() 學(xué)生登錄入口4.2.1各函數(shù)的實(shí)現(xiàn)的具體算法 本系統(tǒng)程序中主要用到的算法有:二分法、冒泡排序法等算法。其中,在新增課程信息,查找課程信息,修改課程信息,瀏覽可選課程等多種以管理員方式進(jìn)入的課程信息操作都運(yùn)用了二分法。以學(xué)生身份登錄的進(jìn)入的課程信息操作則主要運(yùn)用了冒泡排序法。冒泡排序法和二分法作為C語言中最為基礎(chǔ)的算法,運(yùn)用卻

26、相當(dāng)?shù)膹V泛,本系統(tǒng)主要運(yùn)用了二分法和冒泡排序法的查找功能。5.調(diào)試及分析過程5.1各模塊運(yùn)行結(jié)果 5.1.1開始運(yùn)行 程序開始運(yùn)行進(jìn)入登錄界面,輸入1:以管理員身份登錄輸入密碼1,輸入2:以學(xué)生身份登錄,輸入3:退出登錄界面。圖5-1 運(yùn)行結(jié)果圖 5.1.2管理員菜單 進(jìn)入管理員菜單。輸入1:錄入所有要選擇的課程,輸入2:瀏覽所有錄入的課程,輸入3:查詢錄入的課程,輸入4:刪除錄入的課程,輸入5:返回主菜單。圖5-2 管理員菜單圖 5.1.3按1進(jìn)入錄入課程模塊 進(jìn)入錄入課程界面,輸入課程編號、課程名稱、課程性質(zhì)、總學(xué)時、授課學(xué)時、實(shí)踐或上機(jī)學(xué)時、學(xué)分、開課學(xué)期,添加完畢后點(diǎn)擊回車?yán)^續(xù)添加,輸

27、入0結(jié)束添加。圖5-3 錄入課程模塊運(yùn)行結(jié)果圖 5.1.4輸完課程信息后進(jìn)入管理員瀏覽模塊 輸入完課程信息程序?qū)⒆詣訉φn程編號進(jìn)行排序,將錄入的課程信息結(jié)果表示出來,按任意鍵退出此界面。圖5-4 輸完課程信息運(yùn)行結(jié)果圖 5.1.5按課程性質(zhì)查詢 進(jìn)入課程查詢界面,選擇查詢方式選擇1按課程性質(zhì)查找,將所有課程性質(zhì)相同的課程查找出來,選擇3退出查找界面。圖5-5 進(jìn)入管理員瀏覽模塊運(yùn)行結(jié)果圖 5.1.6按課程學(xué)分查詢 進(jìn)入課程查詢界面,選擇查詢方式選擇2按課程學(xué)分查找,將所有課程學(xué)分相同的課程查找出來,選擇3退出查找界面。 圖5-6 按課程性質(zhì)查詢運(yùn)行結(jié)果圖 5.1.7按4進(jìn)行管理員刪除模塊 在管

28、理員菜單欄中輸入4進(jìn)行課程刪除,將要刪除的課程編號輸入完成刪除課程,按回車?yán)^續(xù)刪除,按0結(jié)束刪除課程。圖5-7 管理員刪除模塊運(yùn)行結(jié)果圖 5.1.8學(xué)生菜單 進(jìn)入學(xué)生菜單欄,選擇1瀏覽可選的所有課程,選擇2查詢所有課程的信息,選擇3選擇自己需要選修的課程,選擇4瀏覽自己所選修的課程,選擇5刪除自己在選課時選錯的課程,選擇6返回主菜單 。圖5-8 學(xué)生菜單運(yùn)行結(jié)果圖 5.1.9按1學(xué)生瀏覽所有課程 進(jìn)入學(xué)生菜單,選擇1進(jìn)入瀏覽所有課程界面,可以查看所選擇的課程信息。圖5-9 學(xué)生瀏覽所有課程運(yùn)行結(jié)果圖 5.1.10按學(xué)分查詢課程 進(jìn)入學(xué)生查詢界面選擇2按學(xué)分查找,開始查找需要修習(xí)的課程。圖5-1

29、0 按學(xué)分查詢運(yùn)行結(jié)果圖 5.1.11按3進(jìn)入選修課程模塊 在學(xué)生菜單中選擇3進(jìn)入選擇選修課程界面,將需要選修的課程的編號輸入按0確認(rèn)所選修的課程,成功選擇課程。將選擇的課程的信息保存到3.txt文檔中。按任意鍵繼續(xù)。圖5-11 進(jìn)入選修課程模塊運(yùn)行結(jié)果圖5.1.12按4進(jìn)入瀏覽已選修的課程 在學(xué)生菜單中選擇4進(jìn)入瀏覽我選修的課程界面,將會將所有已選修的課程信息展示出來,按任意鍵繼續(xù)。圖5-12 進(jìn)入瀏覽已選修的課程運(yùn)行結(jié)果圖5.1.13按5進(jìn)入刪除錯選課程模塊 在學(xué)生菜單中選擇5進(jìn)入刪除錯選課程界面,將錯選的課程的編號成功刪除錯選課程,如果繼續(xù)刪除錯選課程請按enter,按0結(jié)束刪除錯選課程

30、菜單,刪除錯選的課程的信息保存到3.txt文檔中。按任意鍵繼續(xù)。 圖5-12 刪除錯選課程模塊運(yùn)行結(jié)果圖5.2調(diào)試過程中出現(xiàn)的問題5.2.1問題的提出 程序編寫完成后,都需要經(jīng)過調(diào)試,看其是否達(dá)到了指定的功能。但主要還是修改其中出現(xiàn)的大大小小的問題。本次設(shè)計中出現(xiàn)的問題有: 1.調(diào)試過程中無法讀取文txt文件。 2.密碼不能用戶自定義。 3.一旦關(guān)閉這個變異環(huán)境后,所增加的課程信息,學(xué)生信息不能長久保存。5.2.2問題分析 1. txt 無法讀取,輸入路徑后沒有文件顯示。解決辦法是,向老師求助。最后,在老師細(xì)心的指導(dǎo)下,才知道是自己的計算機(jī)操作水平緣故,沒有很好的了解計算機(jī)路徑結(jié)構(gòu),最后做出了

31、一定的修改,才得以實(shí)現(xiàn)。 2.密碼問題,是由于編寫程序的時候就已經(jīng)將密碼定死了。用戶無法通過系統(tǒng)平臺改變密碼值。因此,這樣的密碼形同虛設(shè),簡直就沒有什么用。 3.出現(xiàn)這個問題的原因,是因為信息量的存儲設(shè)置不太好,運(yùn)用文件存儲的方式存儲信息方便,但是要調(diào)用信息就不太方便。5.2.3問題解決建議 運(yùn)用數(shù)據(jù)庫將密碼信息存儲起來,然后用switch語句控制密碼輸入錯誤次數(shù),當(dāng)輸入密碼錯誤達(dá)到3次,就使用一個密碼重置申請函數(shù)。再將新密碼存入數(shù)據(jù)庫,并將以前設(shè)置的密碼覆蓋掉。建議運(yùn)用數(shù)據(jù)庫來存儲信息,用數(shù)據(jù)庫存儲信息比文件存儲更加穩(wěn)定。6總結(jié) 通過本次課程設(shè)計,我們把已經(jīng)快遺忘的C語言知識重新復(fù)習(xí)了一遍,

32、這也讓我們認(rèn)識到了經(jīng)??偨Y(jié)之前學(xué)到知識的重要性。這次看似簡單的課程設(shè)計,將我們身上的很多不足之處都暴露了出來,也讓我們認(rèn)識到了自己想要提高自己需要往哪方面繼續(xù)努力。 本次課設(shè)是我們團(tuán)隊一起完成的,大家都有明確的分工,當(dāng)然在這個過程中我們遇到了很多問題,并不是一個人去埋頭苦干,而是提出來大家一起幫忙想辦法去解決的。編程過程結(jié)構(gòu)體有float型數(shù)據(jù)時系統(tǒng)提示有錯誤,用int或char型代替然后定義可解決。在調(diào)試沒運(yùn)行完自動跳出主界面:主要可能遇到float型數(shù)據(jù)時系統(tǒng)錯誤。插入鏈表閱讀和輸出文件不熟悉;不熟悉如何使形參與實(shí)參一一對應(yīng)。經(jīng)過查詢資料和老師同學(xué)們的幫忙基本解決。經(jīng)過這樣不斷的發(fā)現(xiàn)錯誤,

33、改正錯誤,不斷領(lǐng)悟,不斷獲取終于順利完成課程設(shè)計。 通過這一周的的C 語言程序設(shè)計實(shí)訓(xùn),不僅鞏固了自己之前掌握的C 程序的設(shè)計基礎(chǔ),而且彌補(bǔ)了在上課期間沒有學(xué)會的知識;也讓我們的對抽象理論有了具體的認(rèn)知。認(rèn)識到了C 語言的用途是非常廣的,功能也非常強(qiáng)大,是學(xué)計算機(jī)不可缺少的語言。更重要的是,讓我學(xué)到了很多知識,增強(qiáng)了動手能力,積累了經(jīng)驗。同時也我發(fā)現(xiàn)了自己的許多不足之處,有待在以后的學(xué)習(xí)中進(jìn)一步完善,掌握和運(yùn)用更多的知識。最重要的是此次實(shí)訓(xùn),讓我認(rèn)識到團(tuán)隊合作的強(qiáng)大力量,自身的嚴(yán)重不足,更激發(fā)了我對C語言程序設(shè)計的興趣。C語言中蘊(yùn)含著強(qiáng)大的奧妙,等著我們?nèi)ヌ剿鳌?課程設(shè)計是在老師指導(dǎo)下完成的,

34、讓我對學(xué)生選課系統(tǒng)有了較深的認(rèn)識,也具備了一定的實(shí)踐經(jīng)驗。此次課設(shè)讓我認(rèn)識到:團(tuán)隊的不可替代性,知識的重要性,以及遇到問題積極的動腦、動手,樂于向他人討教不懂的問題。7設(shè)計優(yōu)缺點(diǎn)7.1不足之處與改進(jìn)之處經(jīng)過測試,這個系統(tǒng)已經(jīng)達(dá)到了題目中的全部要求。這個程序有很多優(yōu)點(diǎn)有一個是界面簡明,簡潔明了的程序菜單;一個是智能化的模塊設(shè)計,減少了許多人工操作,如功能模塊操作結(jié)束后,均會返回主菜單進(jìn)行下一模板的運(yùn)行,并提示是否再進(jìn)行類似的操作,這樣給用戶帶來了操作的方便,大大提高了學(xué)生選課的效率還有就是提示語言既簡潔又明確,層次分明等等;當(dāng)然也有缺點(diǎn)如程序仍然存在不合理的地方,例如程序某些部分輸入錯誤不能立刻

35、返回改正;信息表達(dá)方式不豐富,比較單一,缺少圖片、音樂等元化表達(dá)方式。 編程過程結(jié)構(gòu)體有float型數(shù)據(jù)時系統(tǒng)提示有錯誤,用int或char型代替然后定義可解決。在調(diào)試沒運(yùn)行完自動跳出主界面:主要可能遇到float型數(shù)據(jù)時系統(tǒng)錯誤。有些字母輸入錯誤,仔細(xì)查找就可解決;插入鏈表閱讀和輸出文件不熟悉;不熟悉如何使形參與實(shí)參一一對應(yīng)。經(jīng)過查詢資料和老師同學(xué)們的幫忙基本解決了。 通過這一周的的C 語言課程實(shí)訓(xùn),不僅鞏固了自己之前掌握的C 程序的設(shè)計基礎(chǔ),還學(xué)彌補(bǔ)了在上課期間沒有學(xué)會的知識。經(jīng)過這次課設(shè),我充分認(rèn)識到了C 語言的用途是非常廣的,功能也非常強(qiáng)大,是學(xué)計算機(jī)不可缺少的語言。更重要的是,在這次

36、編程中熟悉了編寫一個比較復(fù)雜程序的流程,以及發(fā)現(xiàn)問題、解決問題的能力,為下一步計算機(jī)語言的學(xué)習(xí)做了準(zhǔn)備。之前感覺遙不可及的功能,現(xiàn)在可以實(shí)現(xiàn)了,非常感謝老師和同學(xué)的熱心幫助,這是我得以及時完成這個程序的重要因素。7.2收獲與總結(jié) 總之,這次設(shè)計程序讓我受益良多,我會好好珍惜像這種難得的機(jī)會。感謝老師這段時間來對我的教導(dǎo)。雖然在這次試訓(xùn)中我遇到了很多困難,但在老師的幫助下都克服了過去。也讓我真正學(xué)到了平時上理論課時學(xué)不到的一些實(shí)踐性的東西。我會珍惜這次的經(jīng)歷的。再次感謝您對我的教導(dǎo)!7.3程序的優(yōu)缺點(diǎn)功能上的優(yōu)點(diǎn): 1.簡潔明了的程序菜單。程序主要采用了六組層次不同的菜單,相互獨(dú)立又相互聯(lián)系,巧

37、妙相接,符合用戶的使用習(xí)慣與思維。 2.人性化的程序提示語言,程序提示語言較人性化,不僅大多為祈使語句、疑問句,而且提示明確,具有較強(qiáng)的明確的指導(dǎo)作用。程序提示不僅層次分明,提示方式多樣,而且提示信息井然有序,更加有利于用戶順利、準(zhǔn)確地進(jìn)行程序的操作。3.智能化的模塊設(shè)計。程序的智能化主要體現(xiàn)在減少了許多人工操作。如功能模塊操作結(jié)束后,均會返回主菜單進(jìn)行下一模板的運(yùn)行,并提示是否再進(jìn)行類似的操作,這樣給用戶帶來了操作的方便,大大提高了學(xué)生選課的效率。程序的缺點(diǎn):1.程序雖然經(jīng)過多次精簡,但僅僅是形式上、小范圍的精簡,仍未得到本質(zhì)上的精簡,即未找到更加簡單、更加高效、更加合理、更小占用的資源的算

38、法。2.程序仍然存在不合理的地方,例如程序某些部分輸入錯誤會導(dǎo)致程序中止或轉(zhuǎn)向其他功能模塊,即程序建議用戶注意提示,進(jìn)行合理的準(zhǔn)確的輸入,這樣更有利于管理工作。3.程序功能仍然不夠完善。例如信息表達(dá)方式不豐富,比較單一,缺少圖片、音樂等元化表達(dá)方式。參考文獻(xiàn)1. 王連相.C/C+程序設(shè)計 武漢大學(xué)出版社.2013.72. 譚浩強(qiáng)C語言程序設(shè)計(第2版)學(xué)習(xí)指導(dǎo)清華大學(xué)出版社.2012.12 3. 楊莉,龔義建C語言程序設(shè)計實(shí)訓(xùn)指導(dǎo)教程華中科技大學(xué)出版.2009.64. 張小東,鄭宏珍C語言程序設(shè)計與應(yīng)用人民郵電出版社.2009.45. 郭翠英C語言課程設(shè)計案例精編中國水利水電出版社 2004.

39、03.016郭有強(qiáng)C語言程序設(shè)計清華大學(xué)出版社 2009.02.017李丹程,劉瑩,那俊C語言程序設(shè)計案例實(shí)踐清華大學(xué)出版社2009.02.018李麗娟C語言程序設(shè)計教程人民郵電出版社2013.01.019武雅麗,王永玲,解亞利C語言程序設(shè)計清華大學(xué)出版社2009.02.01致 謝本次課程實(shí)訓(xùn)過程中,得到了指導(dǎo)老師的指導(dǎo)與支持。在此特別感謝謝老師的大力幫助。指導(dǎo)老師在總體結(jié)構(gòu)、功能的把握上給予了非常大的幫助,同時為我們提供了非常優(yōu)越的設(shè)計環(huán)境,并對我在編程、算法設(shè)計等細(xì)節(jié)工作上給予了耐心的指導(dǎo),對于我順利完成這次課程設(shè)計起到了關(guān)鍵性的作用。轉(zhuǎn)眼間,一周的課程實(shí)訓(xùn)結(jié)束了,感謝老師為我們提供的每周

40、數(shù)次的到教室上機(jī)調(diào)試的機(jī)會,在那里,老師為我們解決各種難題,同學(xué)之間也可以相互討論,這才有了今天的成果,特別是老師的寶貴的意見,給了我很大的啟示,同時也要感謝那些給予過我?guī)椭^我的同學(xué)們。同時,感謝校方給予我這樣一次機(jī)會,能夠獨(dú)立地完成一次課程設(shè)計,并在這個過程當(dāng)中,給予我們各種方便,使我們在這學(xué)期快要結(jié)束的時候,能夠?qū)W(xué)到的知識應(yīng)用到實(shí)踐中,增強(qiáng)了我們實(shí)踐操作和動手應(yīng)用能力,提高了獨(dú)立思考的能力。 感謝所有任課老師和所有同學(xué)在這兩年來給自己的指導(dǎo)和幫助,是他們教會了我專業(yè)知識,教會了我如何學(xué)習(xí)。正是由于他們,我才能在各方面取得顯著的進(jìn)步,在此向他們表示我由衷的謝意。附錄:源程序代碼

41、#include "stdio.h"#include "string.h"#include "stdlib.h"#include "malloc.h"void prin1();void choose();typedef struct subjectsint num;char name20;char kind10; /課程編號 /課程名稱 /課程性質(zhì)int stime; /總學(xué)時int ttime; /授課學(xué)時int etime; /實(shí)驗或上機(jī)學(xué)時int score; /學(xué)分int term; /開課學(xué)期struct

42、 subjects *next;SUB;SUB *head=NULL;SUB *create_form() /創(chuàng)建鏈表SUB *head,*tail,*p;int num,stime,ttime;int etime,score,term;char name20,kind10;int size=sizeof(SUB);head=tail=NULL;printf("輸入選修課程信息:n");scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&sco

43、re,&term);while(num!=0)p=(SUB *)malloc(size);p->num=num;strcpy(p->name,name);strcpy(p->kind,kind);p->stime=stime;p->ttime=ttime;p->etime=etime;p->score=score;p->term=term;if(head=NULL)head=p;elsetail->next=p;tail=p;scanf("%d%s%s%d%d%d%d%d",&num,name,kind,

44、&stime,&ttime,&etime,&score,&term);tail->next=NULL;return head;void savefile() /保存文件SUB *p;FILE *fp;fp=fopen("2.txt","w");if(fp=NULL)exit(0);printf("課程編號 課程名稱 課程性質(zhì) 總學(xué)時授課學(xué)時 實(shí)驗或上機(jī)學(xué)時 學(xué)分 開課學(xué)期n");for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d

45、%9d%11d%11d%7dn",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);printf("創(chuàng)建后的信息已放入'2.txt'文件中n");system("pause");void savefile1() /保存文件SUB *p;FILE *fp;fp=fopen("3.txt","w");if(fp=NULL)exit(0);f

46、or(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7dn",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);printf("創(chuàng)建后的信息已放入'3.txt'文件中n");system("pause");void readfile() /閱讀文件void *myInsert(SUB*);SUB

47、 *newSub; /新課程int num,stime,ttime,etime;int score,term;char cname20,kind10,fname20;FILE *fp;fp=fopen("2.txt","r");while(!feof(fp)newSub=(SUB*)malloc(sizeof(SUB);fscanf(fp,"%d%s%s%d%d%d%d%dn",&newSub->num,newSub->name,newSub->kind,&newSub->stime,&

48、newSub->ttime,&newSub->etime,&newSub->score,&newSub->term); myInsert(newSub);fclose(fp);void prin() /瀏覽所有課程SUB *ptr;head=NULL;readfile();if(head=NULL)printf("nnt*NO RECORDS!*n");return;printf("課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時實(shí)踐或上機(jī)學(xué)時 學(xué)分 開課學(xué)期n");for(ptr=head;ptr;ptr=

49、ptr->next)printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); system("pause");void prin1() /瀏覽所有選修課程SUB *ptr;FILE *fp;if(fp=fopen("3.txt","r")=NULL)printf("C

50、annot open file.n");choose();printf("課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時實(shí)踐或上機(jī)學(xué)時 學(xué)分 開課學(xué)期n");while(!feof(fp)ptr=(SUB*)malloc(sizeof(SUB);fscanf(fp,"%d%s%s%d%d%d%d%dn",&ptr->num,ptr->name,ptr->kind, &ptr->stime,&ptr->ttime,&ptr->etime,&ptr->score,&a

51、mp;ptr->term); printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); fclose(fp);system("pause");void *myInsert( SUB *subj) /鏈表插入操作SUB *ptr,*ptr2;ptr=subj;if(head=NULL)head=ptr;head->

52、;next=NULL;elsefor(ptr2=head;ptr2;ptr2=ptr2->next)if(ptr2->next=NULL)ptr2->next=subj;subj->next=NULL;break;return head;void *insert()/插入課程信息SUB *ptr,*subj;int size=sizeof(SUB);char ch,ch1;while(ch!='0')subj=(SUB *)malloc(size);ptr=subj;printf("輸入要插入的課程信息:n");printf("ntt請輸入課程編號:");scanf("%d",&subj->num);printf("ntt請輸入課程名稱:");scanf("%s",&subj->name);printf("ntt請輸入課程性質(zhì):");scanf("%s",&subj->kind);printf("ntt請輸入總學(xué)時:");scanf("%d",&subj->stime);printf(&qu

溫馨提示

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

評論

0/150

提交評論