




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、摘 要學(xué)生選課系統(tǒng)是一個針對高校學(xué)生選課而開發(fā)的學(xué)生選課信息管理系統(tǒng),是為學(xué)生選課提供安全、快捷、方便的服務(wù)而建立的應(yīng)用軟件。本系統(tǒng)是一個典型的學(xué)生選課系統(tǒng),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強、數(shù)據(jù)安全性好的庫。而對于后者則要求應(yīng)用程序功能完備,易使用等特點。另外,本文還著重論述了信息管理系統(tǒng)的系統(tǒng)功能與實現(xiàn),包括數(shù)據(jù)流程及存儲、學(xué)生課程設(shè)置、選課修改及刪除等。本系統(tǒng)可以使老師、學(xué)生更方便的選課。實現(xiàn)全校學(xué)生選課查詢。由于學(xué)生上課情況復(fù)雜,可以實現(xiàn)信息修改,及時調(diào)整學(xué)生的基本情況。切實的提高學(xué)校的管理的工作效率。關(guān)鍵字:學(xué)
2、生選課系統(tǒng);c+;管理員;學(xué)生;查詢abstractstudents in college course system is a course and development of student course students information management system, course is for studentsprovide safe, efficient and convenient services and applications. this system is a typical information management system, its develo
3、pment mainly bag cover the setting and maintenance of database and the programming of the frontend application. the former required consistency and integrality, and the security of data. for the latter request application function complete, easy to use, etc. in addition, this paper also focuses on t
4、he information management system of the system function and the realization, including the data flow and storage, student courses, students information,user registration, modification and deletion of online courses. this system can make teachers and students more convenient courses. realizing course
5、 in the chool,line of inquiry. due to the complex classes, can achieve information modification, adjust the basic situation of the students. to improve school the management of the work efficiency.keywords:the system of student course; c+; student management information system;student;目錄目錄第一章第一章 課題概
6、述課題概述 .1 11.1 應(yīng)用背景的分析 .11.1.1 學(xué)校管理系統(tǒng)的開發(fā)現(xiàn)狀及方法.11.1.2 學(xué)生選課系統(tǒng)的應(yīng)用價值.21.2 課題要求與提示.21.2.1 課題要求.31.2.2 課題提示 .3第二章第二章 設(shè)計簡介及系統(tǒng)大綱設(shè)計簡介及系統(tǒng)大綱 .42.1 設(shè)計簡介.42.1.1 學(xué)生端的設(shè)計 .42.1.2 管理端的設(shè)計 .42.2 系統(tǒng)流程 .5第三章第三章 詳細(xì)設(shè)計詳細(xì)設(shè)計 .6 63.1 主函數(shù),頭文件及結(jié)構(gòu)體聲明 .63.2 管理員功能模塊 .73.3 學(xué)生功能菜單 .103.4 創(chuàng)建鏈表模塊 .113.5 瀏覽模塊 .123.6 查詢模塊 .133.7 插入鏈表模塊 .
7、163.8 添加模塊 .163.9 刪除模塊 .173.10 選修課程模塊 .183.11 讀取文件模塊 .213.12 保存文件模塊 .22第四章第四章 設(shè)計結(jié)果及分析設(shè)計結(jié)果及分析 .244.1 學(xué)生選課結(jié)果及分析.244.1.1 學(xué)生選課實現(xiàn)功能.244.1.2 選課結(jié)果分析.2542 管理員結(jié)果及分析.254.2.1 管理員結(jié)果.2542.2 分析.25總總 結(jié)結(jié) .26致致 謝謝 .27參考文獻(xiàn)參考文獻(xiàn) .28附錄附錄 完整程序代碼完整程序代碼 .29西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告1第一章 課題概述1.1 應(yīng)用背景的分析1.1.1 學(xué)校管理系統(tǒng)的開發(fā)現(xiàn)狀及方法在高等學(xué)校的教務(wù)
8、管理工作中,課程表的編排是一項十分復(fù)雜、棘手的工作。在排課過程中除了滿足大量的制約條件以外,還必須解決許多沖突與矛盾,例如:兩位教師不能同一時間在同一班級上課、一位教師不能在同一時間上兩門課等等。利用計算機輔助進(jìn)行課表編排工作,既提高了排課工作的科學(xué)性,又可大大減輕管理人員的工作強度,提高工作效率,從而使學(xué)校教務(wù)管理現(xiàn)代化邁上了一個新臺階。我國不少高校都實行了學(xué)分制,它的核心是允許學(xué)生自由選課,即把學(xué)習(xí)的自主權(quán)交給學(xué)生。在這里,學(xué)生選課時的制約因素比較復(fù)雜,工作量也很大,而且往往需要在較短的時間內(nèi)完成。運用計算機輔助選課,即能實時地對大量選課數(shù)據(jù)進(jìn)行檢驗和統(tǒng)計,十分方便地輸出選課結(jié)果,同時也避
9、免了人工處理時容易產(chǎn)生的錯誤。從系統(tǒng)開發(fā)的復(fù)雜程度來看,計算機輔助排課與選課是高校教務(wù)系統(tǒng)中的兩個關(guān)鍵子系統(tǒng),目前不少教務(wù)系統(tǒng)尚未很好地解決排課與選課問題。本文主要對高校教務(wù)管理系統(tǒng)中計算機課表編排與選課子系統(tǒng)的基本功能、設(shè)計思想、需求分析以及實現(xiàn)技術(shù)進(jìn)行探討。我想大家肯定都經(jīng)歷過學(xué)生時代,也許很多人還對那個時候的選課記憶猶新,每個學(xué)期都要排著長長的隊伍去選?,F(xiàn)在,我們已經(jīng)進(jìn)入到internet 時代了,選課系統(tǒng)自然也要隨著更新。大學(xué)中,公選課較多,學(xué)生可根據(jù)自己的專業(yè)及興趣選擇公選課程進(jìn)行學(xué)習(xí),本系統(tǒng)將從教學(xué)部門的要求出發(fā),實現(xiàn)公選課的選擇、查詢與統(tǒng)計。數(shù)據(jù)庫是從60 年代初發(fā)展起來的計算機
10、技術(shù)。經(jīng)過四十來年的發(fā)展,數(shù)據(jù)庫技術(shù)己經(jīng)趨于成熟。web 數(shù)據(jù)庫在新的internet 環(huán)境中發(fā)生了很大的變化。就數(shù)據(jù)應(yīng)用而言呈現(xiàn)出多樣化的空間,如數(shù)字圖書館、電子出版物、電子商務(wù)、遠(yuǎn)程教育系統(tǒng)等的出現(xiàn),給web 數(shù)據(jù)庫技術(shù)提出了更多、更高的要求。同時,隨著國內(nèi)高校校園網(wǎng)的建設(shè),基于互聯(lián)網(wǎng)的應(yīng)用系統(tǒng)的開發(fā)正在蓬勃發(fā)展并發(fā)揮著較大的作用。例如,我國許多高校的網(wǎng)上招生系統(tǒng),學(xué)校的各種管理信息系統(tǒng),學(xué)校選課系統(tǒng),還有一些醫(yī)學(xué)院校開發(fā)出的網(wǎng)上診所、遠(yuǎn)程診斷系統(tǒng)等等,都是基于校園網(wǎng)的應(yīng)用系統(tǒng)。國外的教學(xué)科研軟件與國內(nèi)相比開發(fā)的早而且比較成熟。早在七十年代末,西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告2美國就
11、建成了nsfnet(國家科學(xué)基金網(wǎng)),其課題的申報及課題的進(jìn)展情況匯報都在網(wǎng)上進(jìn)行。其網(wǎng)上教學(xué)教務(wù)管理系統(tǒng)也十分完善,世界各地的學(xué)生可以坐在家里通過互聯(lián)網(wǎng)完成入學(xué)報名、選課、考試、畢業(yè)論文、取得學(xué)位這一學(xué)習(xí)生活的全過程。目前,國際上已具規(guī)模的遠(yuǎn)程教育學(xué)校就有數(shù)百所之多,網(wǎng)上教育正在各地發(fā)揮著巨大的作用,為世界各國培養(yǎng)出大批人才。所有這些都表明,基于internet 的校園網(wǎng)的應(yīng)用已深入到校園內(nèi)的各個方面。1.1.2學(xué)生選課系統(tǒng)的應(yīng)用價值這份可行性研究報告是對學(xué)生選課系統(tǒng)作的可行性研究分析及指出存在的必性。本報告的編寫目的在于研究選課系統(tǒng)軟件的開發(fā)途徑和應(yīng)用方法。當(dāng)今時代是飛速發(fā)展的信息時代。在
12、各行各業(yè)中離不開信息處理,這正是計算機被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計算機的最大好處在于利用它能夠進(jìn)行信息管理。使用計算機進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復(fù)雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。計算機進(jìn)行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好選課信息而設(shè)計的。學(xué)校作為一種信息資源的集散地,學(xué)生和課程繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的學(xué)校都是初步開始使用,甚至尚未使用計算機進(jìn)行信息管理。根據(jù)調(diào)查得知,他們以前對信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對于選課情況的統(tǒng)計和查詢等往往
13、采用對課程的人工檢查進(jìn)行,對學(xué)生的選課權(quán)限、以及選課代號等用人工計算、手抄進(jìn)行。數(shù)據(jù)信息處理工作量大,容易出錯;由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管學(xué)校都有計算機,但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)的基本環(huán)境。數(shù)據(jù)處理手工操作,工作量大,出錯率高,出錯后不易更改。學(xué)校采取手工方式對學(xué)生選課情況進(jìn)行人工管理,由于信息比較多,選課信息的管理工作混亂而又復(fù)雜;一般選課情況是記錄在文件上,課程的數(shù)目和代號也記錄在文件中,學(xué)校的工作人員也只是當(dāng)時對它比較清楚,時間長了,如再要進(jìn)行查詢,就得在眾多的資料中翻閱、查找
14、了,造成查詢費時、費力。如要對很長時間以前的選課進(jìn)行更改就更加困難了?;谶@些問題,我認(rèn)為有必要建立一個學(xué)生選課系統(tǒng),使選課管理工作規(guī)范化,系統(tǒng)化,程序化,避免選課管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時、準(zhǔn)確、有效的查詢和修改選課情況。西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告31.2 課題要求與提示1.2.1 課題要求 假定有 n 門課程,每門課程有課程編號,課程名稱,課程性質(zhì),總學(xué)時,授課學(xué)時,實驗或上機學(xué)時,學(xué)分,開課學(xué)期等信息,學(xué)生可按要求(如總學(xué)分不得少于 60)自由選課。試設(shè)計一個選修課程系統(tǒng),使之能提供以下功能:課程信息錄入功能(課程信息用文件保存),即輸入;課程信息瀏覽
15、功能,即輸出;查詢功能:(至少 2 種查詢方式),即算法;按學(xué)分查詢;按課程性質(zhì)查詢;學(xué)生選修課程(可選項,若完成可給予設(shè)計加分)。1.2.2 課題提示數(shù)據(jù)結(jié)構(gòu)可用結(jié)構(gòu)體,包括課程和選秀兩個結(jié)構(gòu)體,其中課程結(jié)構(gòu)體包括課程編號, 課程名稱,課程性質(zhì),總學(xué)時,授課學(xué)時,實驗或上機學(xué)時,學(xué)分,開課學(xué)期.選修結(jié)構(gòu)體成員包括學(xué)號,課程編號,該結(jié)構(gòu)體的建立主要是為了查詢某門課程學(xué)生選修情況. 西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告4第二章 設(shè)計簡介及系統(tǒng)大綱2.1 設(shè)計簡介本系統(tǒng)的實現(xiàn),全部采用鏈表這種數(shù)據(jù)結(jié)構(gòu),用鏈表實現(xiàn)課程的查找,添加,刪除,課程的選修,追加選修的課程.課程信息采用結(jié)構(gòu)體這種數(shù)據(jù)結(jié)構(gòu),
16、系統(tǒng)設(shè)計主要分為學(xué)生端設(shè)計和管理端設(shè)計。2.1.1 學(xué)生端的設(shè)計1-瀏覽所有課程2-查詢課程信息3-選擇選修課程4-瀏覽我選修的課程5-刪除錯選課程6-返回主菜單;2.1.2 管理端的設(shè)計1-瀏覽課程2-查詢課程3-添加課程4-刪除課程5-返回主菜單西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告52.2 系統(tǒng)流程主主 菜菜 單單管理員菜單管理員菜單瀏覽課程瀏覽課程查詢課程查詢課程添加課程添加課程刪除課程刪除課程學(xué)生菜單學(xué)生菜單瀏覽所有課程瀏覽所有課程查詢課程信息查詢課程信息選擇選修課程選擇選修課程瀏覽我選修的課程瀏覽我選修的課程刪除錯選的課程刪除錯選的課程西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告6圖 2
17、1 系統(tǒng)流程圖第三章 詳細(xì)設(shè)計3.1 主函數(shù),頭文件及結(jié)構(gòu)體聲明主函數(shù)設(shè)計地比較簡潔,只是提供一個主菜單,switch 語句將整個程序分為兩個大的功能模塊圖 3-1 主界面 程序程序 #include #include #include #include #include typedef struct subjects /課程結(jié)構(gòu)體課程結(jié)構(gòu)體 int num; /課程編號課程編號 char name20; /課程名稱課程名稱 char kind10; /課程性質(zhì)課程性質(zhì)西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告7 int stime; /總學(xué)時總學(xué)時 int ttime; /授課學(xué)時授課學(xué)時 in
18、t etime; /實驗或上機學(xué)時實驗或上機學(xué)時 int score; /學(xué)分學(xué)分 int term; /開課學(xué)期開課學(xué)期 struct subjects *next;sub;sub *head=null;int main()int n,w=1;do system(cls); puts(nntt*menu*nn);puts(tttt1.以管理員身份登錄n);puts(tttt2.以學(xué)生身份登錄n);puts(tttt3.退出);puts(nntt*n);printf(chiose your number(1-3): bb);scanf(%d,&n);switch(n)case 1:manger
19、s() ;break;case 2:students();break;case 3:w=0;break;default:; while(w=1); return 0;西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告83.2 管理員功能模塊管理員的功能一共有四個功能:瀏覽,查詢,添加,刪除課程.運用字符串處理函數(shù)處理密碼的問題,用一個 switch 語句實現(xiàn)函數(shù)的調(diào)用.圖 3-2 管理員菜單 程序程序 void mangers() /管理員登錄菜單管理員登錄菜單 int n,w=1,flag=0,i=3; char s8; char password=19901206; do printf(nnenter
20、 password:); j=0;while(1)a=getch();if(a=13)break;sj=a;西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告9j+;printf(*);sj=0; if(!strcmp(s,password) /進(jìn)行密碼匹配進(jìn)行密碼匹配驗證驗證 flag=1; break; else printf(nnerror! you only have %d times! enter again:n,i-1); i-; while(i0); if(!flag) printf(you have enter 3 times!); / /輸入密碼超過了輸入密碼超過了3 3 次!次! ex
21、it(0); /自動退出自動退出 do system(cls);puts(nntt*管理員菜單*nn);puts(tttt1-瀏覽課程n);puts(tttt2-查詢課程n);puts(tttt3-添加課程n);puts(tttt4-刪除課程n);puts(tttt5-返回主菜單); 西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告10puts(nntt*n);printf(chiose your number(1-5): bb);scanf(%d,&n); switch(n) case 1:prin();break; case 2:search();break; case 3:insert();sav
22、efile();break; case 4:del();savefile();break; case 5:return; default:; while(w=1);3.3 學(xué)生功能菜單學(xué)生功能菜單包括六個功能:瀏覽課程,查詢課程,選修課程,瀏覽我所選修的課程,添加選修課程,刪除錯選的課程,也是用到 switch 語句來調(diào)用函數(shù)圖 3-3 學(xué)生菜單 程序程序 void students() /學(xué)生登錄菜單學(xué)生登錄菜單西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告11int n,w=1; do system(cls); puts(nntt*學(xué)生菜單*nn); puts(tttt1-瀏覽所有課程n);put
23、s(tttt2-查詢課程信息n); puts(tttt3-選擇選修課程n); puts(tttt4-瀏覽我選修的課程n); puts(tttt5-刪除錯選課程n); puts(tttt6-返回主菜單);puts(nntt*n); printf(chiose your number(1-6): bb); scanf(%d,&n); switch(n) case 1:prin();break; case 2:search();break; case 3:choose();break; case 4:prin();break; case 5:del();savefile1();break; case
24、 6:return; default:; while(w=1);3.4 創(chuàng)建鏈表模塊 程序程序 sub *create_form() /創(chuàng)建鏈表創(chuàng)建鏈表 sub *head,*tail,*p; int num,stime,ttime; int etime,score,term;西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告12 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,&sc
25、ore,&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; else tail-next=p; tail=p;scanf(%d%s%s%d%d%d%d%d,&num,name,kind,&stime,&ttime,&etime,&score,&term); tail-
26、next=null; return head;3.5 瀏覽模塊瀏覽模塊主要用管理員中的”瀏覽課程”和學(xué)生功能中的”瀏覽所有所有課程”,將所有的課程信息輸出,即將 all_sub.txt 文件里面的內(nèi)容全部輸出 程序程序 void prin() /瀏覽所有課程瀏覽所有課程sub *ptr;西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告13head=null;readfile();if(head=null)printf(nnt*no records!*n);return;printf(課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期n);for(ptr=head;ptr;pt
27、r=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);3.6 查詢模塊查詢模塊主要用于管理員功能中的”查詢課程”和學(xué)生功能模塊中的”查詢所有課程”,查詢模塊共分為三個查詢方法:按課程名稱查找,按課程性質(zhì)查找和按學(xué)分查找.switch 語句中,每一個 case 語句就是一中查詢方法西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告14圖 3-4 查詢界面 程序程序 void search()
28、 /課程信息查詢課程信息查詢 int a,num; int t=1; char type10,min10; sub *ptr; l1:system(cls);printf(nntt*請選擇查詢方式*n); printf(nttt1-按課程名稱查找n); printf(nttt2-按課程性質(zhì)查找n); printf(nttt3-按學(xué)分查找n); printf(nttt4-退出查找n); printf(nntt*n); printf(nnchiose your number(1-4): bb); scanf(%d,&a); switch(a) casecase 1 1:printf(請輸入要查找的
29、課程的名稱:); /按課程名稱查找按課程名稱查找scanf(%s,min);printf(課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期n);for(ptr=head;ptr;ptr=ptr-next)if(strcmp(min,ptr-name)=0)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);t=0;if(t) printf(tn 未找到!n);t=1;system(pause);
30、西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告15goto l1; casecase 2 2:printf(請輸入要查找的課程的性質(zhì):); /按課程性質(zhì)查找按課程性質(zhì)查找scanf(%s,type);printf(課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期n);for(ptr=head;ptr;ptr=ptr-next)if(strcmp(type,ptr-kind)=0)printf(%5d%12s%9s%9d%9d%11d%11d%7dn,ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-sc
31、ore,ptr-term);t=0;if(t) printf(tn 未找到!n);t=1;system(pause);goto l1; casecase 3 3:printf(輸入要查找的課程的學(xué)分:); /按學(xué)分查找按學(xué)分查找 scanf(%d,&num);printf(課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期n);for(ptr=head;ptr;ptr=ptr-next)if(ptr-score=num)printf(%5d%12s%9s%9d%9d%11d%11d%7dn,ptr-num,ptr-name,ptr-kind,ptr-stime,pt
32、r-ttime,ptr-etime,ptr-score,ptr-term);t=0;if(t) printf(nt 未找到!n);t=1;system(pause);goto l1;西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告16casecase 4 4:break; /退出查找退出查找3.7 插入鏈表模塊插入鏈表操作主要用于添加課程,在整個課程信息中加入一些新課程,它在添加模塊中被調(diào)用 程序程序 void *myinsert(sub* subj) /鏈表插入操作鏈表插入操作 sub *p1,*p2;p1=subj; if(head=null) head=p1; head-next=null; el
33、se for(p2=head;p2;p2=p2-next)if(p2-next=null) p2-next=subj; subj-next=null; break; eturn head;3.8 添加模塊添加模塊主要用于增加課程信息,采用鏈表的操作 程序程序 void *insert() /插入課程信息插入課程信息 西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告17sub *ptr,*subj;int size=sizeof(sub);char ch,ch1;while(ch!=0)subj=(sub *)malloc(size);ptr=subj;printf(輸入要插入的課程信息:n);print
34、f(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(ntt 請輸入授課學(xué)時:);scanf(%d,&subj-ttime);printf(ntt 請輸入實踐或上機學(xué)時:);scanf(%d,&subj-etime);printf(ntt 請輸入學(xué)分:);scanf(%d,&subj-score);print
35、f(ntt 請輸入開課學(xué)期:);scanf(%d,&subj-term);myinsert(subj);printf(nn 繼續(xù)插入請按回車n);printf(n 結(jié)束添加課程按 0: bb);ch1=getchar(); /*/*將回車鍵賦給將回車鍵賦給 ch1ch1,否則,否則subj-termsubj-term 輸完后輸入的回車鍵會賦給輸完后輸入的回車鍵會賦給 chch,因此用,因此用 ch1ch1 填補。填補。*/*/ch=getchar(); return head;3.9 刪除模塊刪除模塊主要用于管理員刪除課程信息學(xué)生刪除自己的選課,全部采用刪除鏈表中的某一個節(jié)點的操作 程序程序
36、void *del() /刪除課程刪除課程-sub *p1,*p2;char ch,ch1;int num;西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告18while(ch!=0)printf(輸入想要刪除的課程編號: bbbbb);scanf(%d,&num);if(head-num=num)p2=head;head=head-next;free(p2);if(head=null)return null;p1=head;p2=head-next;while(p2)if(p2-num=num)p1-next=p2-next;free(p2);else p1=p2;p2=p1-next;printf(
37、n 繼續(xù)刪除請按回車n);printf(n 結(jié)束刪除課程按 0: bb);ch1=getchar(); /將回車鍵賦給將回車鍵賦給ch1ch1,否則,否則 numnum 輸完后再輸入的回車鍵會賦給輸完后再輸入的回車鍵會賦給 chch,因此用,因此用 ch1ch1 填補。填補。ch=getchar();return head;system(pause);3.10 選修課程模塊西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告19選修課程模塊采用插入鏈表的操作, 程序程序 void choose() /選新課程選新課程sub *p,*q;int a5;int num,total=0,i=0,j;printf(
38、輸入要選修的課程的編號,編號之間以空格分開n);scanf(%d,&num);printf(如果確認(rèn)輸入完要選修的課程的編號,請輸入 0: bb);while(num!=0)for(p=head;p;p=p-next)if(p-num=num)total=total+p-score;ai=num;i+;scanf(%d,&num);西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告20if(total60) printf(選修總學(xué)分為%d,未達(dá)到 60,選修失敗!n,total);system(pause);elsefile *fp;fp=fopen(my_sub.txt,w);fprintf(fp,課程
39、編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期n);for(j=0;jnext)if(q-num=aj)fprintf(fp,%5d%12s%9s%9d%9d%11d%11d%7dn,q-num,q-name,q-kind,q-stime,q-ttime,q-etime,q-score,q-term);fclose(fp);printf(ttn*選修成功!*n);printf(n 您選修的課程總學(xué)分為%d,課程分別為:西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告21n,total);printf(n 課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開
40、課學(xué)期n);for(j=0;jnext)if(q-num=aj)printf(%5d%12s%9s%9d%9d%11d%11d%7dn,q-num,q-name,q-kind,q-stime,q-ttime,q-etime,q-score,q-term);printf(n 以上信息全部保存在my_sub.txt中n);system(pause);3.11 讀取文件模塊讀取文件模塊是用來讀出文件內(nèi)容,并將內(nèi)容輸出到內(nèi)存中,當(dāng)輸入文件名時,就能打開指定的文件,當(dāng)輸入 all_sub.txt 時,打開所有課程信息的文件,當(dāng)輸入 my_sub.txt 時,就是瀏覽學(xué)生選修的課程信息 程序程序 void
41、 readfile() /閱讀文件閱讀文件 void *myinsert(sub*);sub *newsub; int num,stime,ttime,etime; int score,term; char c,name20,kind10,fname20; printf(請輸入課程信息所在的文件名稱:);scanf(%s,fname); 西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告22 file *fp;fp=fopen(fname,r); while(!feof(fp) if(c=fgetc(fp)=n)break; while(!feof(fp) newsub=(sub*)malloc(size
42、of(sub);fscanf(fp,%d%s%s%d%d%d%d%dn,&newsub-num,newsub-name,newsub-kind,&newsub-stime,&newsub-ttime,&newsub-etime,&newsub-score,&newsub-term); myinsert(newsub); fclose(fp);3.12 保存文件模塊保存文件模塊共分為兩個子程序,分別是將修改的信息保存到 all_sub.txt和 my_sub.txt 文件中. 程序程序 void savefile() /保存文件保存文件( (一一) ) sub *p; file *fp; fp=
43、fopen(all_sub.txt,w); if(fp=null)exit(0); fprintf(fp,課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實驗或上機學(xué)時 學(xué)分 開課學(xué)期n);for(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)建后的信息已放入all_sub.txt文件中n);西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告23 system(pause);
44、void savefile1() /保存文件保存文件( (二二) ) sub *p;file *fp;fp=fopen(my_sub.txt,w); if(fp=null)exit(0); fprintf(fp,課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實驗或上機學(xué)時 學(xué)分 開課學(xué)期n); for(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)建后的信息已放
45、入my_sub.txt文件中n); system(pause); 西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告24第四章 設(shè)計結(jié)果及分析4.1 學(xué)生選課結(jié)果及分析學(xué)生選課結(jié)果及分析 .1 學(xué)生選課實現(xiàn)功能學(xué)生選課實現(xiàn)功能 1.學(xué)生登錄界面 2.查看所有課程信息 3.查詢你想選的課程 4.選課 5.查看已選課程圖 41 查看課程信息 圖 42 管理員登錄界面西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告25 6.返回系統(tǒng).2 選課結(jié)果分析選課結(jié)果分析 系統(tǒng)實現(xiàn)了學(xué)生選課的功能,但是不完整,例如沒有實現(xiàn)二次選課的功能,沒有實現(xiàn)選課數(shù)目的限制等。4.2 管理員結(jié)果及分析管理員結(jié)果及
46、分析.1 管理員結(jié)果管理員結(jié)果1.管理員登錄界面 2. 查看所有課程信息 3.刪除一門課程 4. 增加一門課程 5.退出系統(tǒng) .2 分析分析 管理員模塊實現(xiàn)了課程信息的錄入,查看,刪除等功能,但是沒有實現(xiàn)學(xué)生選課情況的查看,學(xué)生成績的保存等功能,管理能力不強,還需要加以改進(jìn)以適應(yīng)更多的學(xué)生。 圖 43 管理員登錄界面西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告26總 結(jié)通過該系統(tǒng)的課程設(shè)計分析,掌握了模塊化設(shè)計的方法,理解和運用了結(jié)構(gòu)化程序設(shè)計的思想和方法.掌握和提高了運用 c 語言進(jìn)行程序設(shè)計的能力.程序設(shè)計的過程,實際上是確定解決問題的詳細(xì)步驟,而這個步驟通常叫做
47、流程,在程序設(shè)計過程中理清楚整個問題的流程很重要,然后采取逐步細(xì)化的方法實現(xiàn)整個程序?qū)τ谝粋€較大的應(yīng)用程序,我們一般不可能一次就設(shè)計出一個很完善的系統(tǒng).通常要先設(shè)計滿足基本要求的系統(tǒng).然后再測試或者在使用的過程中不斷完善.慢慢地做成一個功能很完善選修課程管理系統(tǒng).西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告27致 謝在本次課程設(shè)計中,我從指導(dǎo)老師老師身上學(xué)到了很多東西。老師認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我收益匪淺。他無論在理論上還是在實踐中,都給與我很大的幫助,使我得到不少的提高這對于我以后的工作和學(xué)習(xí)都有一種巨大的幫助,感謝他細(xì)心而又耐心的輔導(dǎo)。另外,在系統(tǒng)開發(fā)過程中計算機
48、系其他老師也給了我很大的幫助,幫助解決了不少的難點,使得系統(tǒng)能及時開發(fā)完成,還有同組的幾位同學(xué)的互相幫助,齊心協(xié)力,這里一并表示感謝。西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告28參考文獻(xiàn)1. 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)m.北京:高等教育出版社.2004;2. 譚浩強.c 語言程序設(shè)計m(第三版).北京:清華大學(xué)出版社.2010;3. 錢能.c+程序設(shè)計教程m(第二版).北京:清華大學(xué)出版社.2009.西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告29附錄 完整程序代碼#include #include #include #include #include typedef struct subjects i
49、nt num; /課程編號 char name20; /課程名稱 char kind10; /課程性質(zhì) int stime; /總學(xué)時 int ttime; /授課學(xué)時 int etime; /實驗或上機學(xué)時 int score; /學(xué)分 int term; /開課學(xué)期 struct 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
50、(sub); head=tail=null; printf(輸入選修課程信息:n); scanf(%d%s%s%d%d%d%d%d,&num,name,kind,&stime,&ttime,&etime,&score,&term);while(num!=0)西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告30 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;
51、if(head=null) head=p; else tail-next=p; tail=p; scanf(%d%s%s%d%d%d%d%d,&num,name,kind,&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); fprintf(fp,課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實驗或上機學(xué)時 學(xué)分 開課學(xué)期n); for(p=head;p;p=p-
52、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)建后的信息已放入2.txt文件中n); system(pause);void savefile1() /保存文件 sub *p;file *fp;西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告31fp=fopen(3.txt,w); if(fp=null)exit(0); fprintf(fp,課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實驗或上機學(xué)
53、時 學(xué)分 開課學(xué)期n); for(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 *newsub; /新課程 int num,stime,ttime,etime; int score,term; char
54、c,name20,kind10,fname20; printf(請輸入課程信息所在的文件名稱:);scanf(%s,fname); file *fp;fp=fopen(fname,r); while(!feof(fp) if(c=fgetc(fp)=n)break; 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,&newsub-ttime,&newsub-etime,&newsub-sco
55、re,&newsub-term); myinsert(newsub); fclose(fp);void prin() /瀏覽所有課程sub *ptr;西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告32head=null;readfile();if(head=null)printf(nnt*no records!*n);return;printf(課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期n);for(ptr=head;ptr;ptr=ptr-next)printf(%5d%12s%9s%9d%9d%11d%11d%7dn,ptr-num,ptr-name,ptr-k
56、ind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term);system(pause);void *myinsert(sub* subj) /鏈表插入操作 sub *ptr,*ptr2; ptr=subj; if(head=null) head=ptr; head-next=null; else for(ptr2=head;ptr2;ptr2=ptr2-next)if(ptr2-next=null) ptr2-next=subj; subj-next=null; break; return head;void *insert()/插入課程信息 西
57、安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告33 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,&
58、subj-stime);printf(ntt 請輸入授課學(xué)時:);scanf(%d,&subj-ttime); printf(ntt 請輸入實踐或上機學(xué)時:);scanf(%d,&subj-etime); printf(ntt 請輸入學(xué)分:);scanf(%d,&subj-score); printf(ntt 請輸入開課學(xué)期:);scanf(%d,&subj-term); myinsert(subj);printf(n 添加完畢,新信息存入文件中n);printf(n 繼續(xù)插入請按回車n);printf(n 結(jié)束添加課程按 0: bb);ch1=getchar(); /將回車鍵賦給ch1,否則
59、 subj-term 輸完后輸入的回車鍵會賦給 ch,因此用 ch1 填補。ch=getchar(); return head;void *del() /刪除課程sub *p1,*p2;char ch,ch1;int num;while(ch!=0)printf(輸入想要刪除的課程編號: bbbbb);scanf(%d,&num);if(head-num=num)p2=head;head=head-next;free(p2);西安文理學(xué)院計算機科學(xué)系 課程設(shè)計報告34if(head=null)return null;p1=head;p2=head-next;while(p2)if(p2-num
60、=num)p1-next=p2-next;free(p2);else p1=p2;p2=p1-next;printf(n 繼續(xù)刪除請按回車n);printf(n 結(jié)束刪除課程按 0: bb);ch1=getchar(); /將回車鍵賦給ch1,否則 num 輸完后再輸入的回車鍵會賦給 ch,因此用 ch1 填補。ch=getchar();printf(n 刪除完畢,新信息存入文件中n);system(pause); return head;system(pause);void choose()/選新課程-學(xué)生選課函數(shù)sub *p,*q;int a5;int num,total=0,i=0,j;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 利潤分成合同:2025年度新能源項目合作協(xié)議
- 現(xiàn)代生物科技在可持續(xù)農(nóng)業(yè)中的角色
- 二零二五年度房地產(chǎn)中介服務(wù)合同范本打造行業(yè)典范
- 二零二五年度舞蹈學(xué)校校長聘任協(xié)議
- 二零二五年度洗車工職業(yè)健康保險及服務(wù)合同
- 二零二五年度創(chuàng)業(yè)投資股權(quán)分紅與項目評估及退出協(xié)議
- 二零二五年度員工股份激勵與員工福利協(xié)議
- 現(xiàn)代服務(wù)業(yè)集聚區(qū)的人才培養(yǎng)與教育體系構(gòu)建
- 2025年大唐四川發(fā)電有限公司高校畢業(yè)生招聘筆試參考題庫附帶答案詳解
- 2025年度股東股份協(xié)議書:智能電網(wǎng)建設(shè)項目股權(quán)投資協(xié)議
- 《欣賞 中華人民共和國國歌(簡譜、五線譜)》課件
- 羽毛球教案18課時
- 初三化學(xué)一輪復(fù)習(xí)計劃
- 鏈家新人成長手冊10
- 成人重癥患者人工氣道濕化護(hù)理專家共識 解讀
- 關(guān)于進(jìn)一步加強路基路面施工質(zhì)量的通知
- 新版蘇教版六年級數(shù)學(xué)上冊全冊解析
- AQ/T 2080-2023 金屬非金屬地下礦山在用人員定位系統(tǒng)安全檢測檢驗規(guī)范(正式版)
- GB/T 36548-2024電化學(xué)儲能電站接入電網(wǎng)測試規(guī)程
- JTT 1499-2024 公路水運工程臨時用電技術(shù)規(guī)程(正式版)
- 2024年甘肅省天水市中考生物·地理試題卷(含答案)
評論
0/150
提交評論