版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、題目一、學生選課管理系統(tǒng)目錄第一部分:課程設(shè)計名稱、目的、要求第二部分:程序總體設(shè)計思路第三部分:程序功能劃分、圖示及流程圖第四部分:程序設(shè)計數(shù)據(jù)、運行結(jié)果第五部分:程序的優(yōu)缺點第六部分:心得體會第七部分:附錄(源程序)第八部分:附錄(參考文獻)第一部分:課程設(shè)計名稱、目的、要求名稱:學生選修課程系統(tǒng)設(shè)計目的:運用C語言提高解決實際問題的能力實驗環(huán)境:Microsoft Visual C+ 6.0內(nèi)容:假定有n門課程,每門課程有課程編號,課程名稱,課程性質(zhì),總學時,授課學時,實驗或上機學時,學分,開課學期等信息,學生可按要求(如總學分不得少于60)自由選課。【功能】系統(tǒng)以菜單方式工作v課程信息
2、錄入功能(課程信息用文件保存)輸入v課程信息瀏覽功能輸出v查詢功能:(至少一種查詢方式)算法v按學分查詢l按課程性質(zhì)查詢l學生選修課程(可選項)v第二部分:程序總體設(shè)計思路由于C語言是面對過程的語言,故我的設(shè)計思路是根據(jù)目標程序運行的過程來編寫的。具體的設(shè)計思路如下:程序的要求是設(shè)計學生選修課管理系統(tǒng),對選修課程能夠進行錄入和修改操作等,要求有菜單界面和退出功能。首先,考慮到程序的數(shù)據(jù)輸入,可以設(shè)置一個管理員登陸選項,通過該選項進入管理員界面,進行選修課的錄入和修改操作,最后將錄入的課程保存到相應的文件中。然后定義各種函數(shù)的功能包括查看,查詢,刪除等。另一個為學生登陸界面,該界面學生可以進行課
3、程選擇和瀏覽查詢等操作。在進行該操作之前需要對管理員保存的文件進行讀取,然后對其中的內(nèi)容進行查詢等,在學生選好課程以后,可以將其選好的課程保存于相應的文件中,以便下次進行修改。通過函數(shù)的層層調(diào)用來實現(xiàn)程序的邏輯結(jié)構(gòu)。中間通過文件的打開和關(guān)閉實現(xiàn)對文件內(nèi)部所包含的數(shù)據(jù)的操作。整個程序的設(shè)計思路到此結(jié)束。第三部分:程序功能劃分、圖示及流程圖【功能模塊劃分及其流程圖】本程序功能模塊根據(jù)程序設(shè)計的需求,綜合程序的實用性、人性化、智能化的考慮,將程序劃分為6個部分分別編寫,程序主體功能將由這9個部分來完成。這9個部分依次是:1. 登錄界面函數(shù);void login()2. 學生登錄界面據(jù)函數(shù):void
4、stu_login()3. 管理員登錄界面函數(shù):void man_login()4. 退出界面函數(shù):void bye_sys()5. 課程選擇函數(shù):void c_select()6. 課程瀏覽函數(shù):void c_view()7. 課程查詢函數(shù):void c_search()8. 課程增加函數(shù):void c_add()9. 課程刪除函數(shù):void c_delete()10. 菜單函數(shù):void index()11. 主函數(shù)部分; main()總體設(shè)計:系統(tǒng)功能模塊圖部分函數(shù)流程圖:1、 課程選擇函數(shù):2、 課程查詢函數(shù)3、 課程增加函數(shù)4、課程刪除函數(shù)第四部分:程序設(shè)計數(shù)據(jù)、運行結(jié)果本程序是一款
5、應用軟件,故數(shù)據(jù)設(shè)計、程序運行結(jié)果應在程序的運用中得以體現(xiàn),現(xiàn)在通過一個程序的運用事例來對程序運行結(jié)果進行演示與實現(xiàn)。【軟件運用舉例】1、程序開始界面如下:選擇某個選項,如進行管理員登錄,進行課程的增加進入管理員界面:2、再選擇所要進行的操作,如進行課程增加,結(jié)果如下:下面可以進行繼續(xù)增加課程或者退出:3、選擇課程瀏覽,可以分頁查看相應的課程信息:第一頁:第二頁:4、課程查詢查找結(jié)果:4、 管理員課程刪除操作:刪除后可以進行瀏覽,觀察刪除后的結(jié)果:可見刪除后只有一條記錄。刪除操作完成正確。下面進行學生操作的使用方法:1、學生登陸界面:2、選擇學生選課選項:3、學生登陸也可進行課程瀏覽和查詢函數(shù)
6、,其結(jié)果與管理員登陸相同,不再演示。第五部分:程序的優(yōu)缺點【程序的優(yōu)點】算法是程序的靈魂,程序的優(yōu)點首先表現(xiàn)在算法上的優(yōu)點,其次才是功能上的。算法上的優(yōu)點主要體現(xiàn)在以下三點:1. 程序采用main主函數(shù)方式設(shè)計,程序的主體的功能大都由該功能完成。程序如此設(shè)計有利于程序的進一步改進及有助于程序執(zhí)行效率的提高。2. 程序?qū)ξ募?shù)據(jù)的讀寫采用了fread和fwrite塊讀寫函數(shù),能夠?qū)⑽募械臄?shù)據(jù)完全讀出,然后賦到定義的數(shù)組中,再在相應的數(shù)組中進行一系列操作,最終再寫入文件。3. 插入操作在本程序中將課程信息直接插入數(shù)組最后一個節(jié)點,從而減少了數(shù)據(jù)的相互移動,節(jié)省了時間。功能上的優(yōu)點主要體現(xiàn)在以下兩
7、點: 簡潔明了的程序菜單。程序主要采用了層次不同的菜單,相互獨立又相互聯(lián)系,巧妙相接,符合用戶的使用習慣與思維。 人性化的程序提示語言,程序提示語言較人性化,不僅大多為祈使語句、疑問句,而且提示明確,具有較強的明確的指導作用。程序提示不僅層次分明,提示方式多樣,而且提示信息井然有序,更加有利于用戶順利、準確地看懂程序并進行操作。【程序的缺點】主要表現(xiàn)在以下兩點:1、 本程序沒有進行相應的密碼操作,所以對于使用者來說可能存在比較大的不保密性。需要改善。2、 本程序沒有使用文本讀寫函數(shù)fscanf和fprintf,所以的到的課程文件和選課文件都是二進制形式。第六部分:心得體會選課系統(tǒng)程序比起通訊錄
8、程序來講好寫一些,由于本程序用到了數(shù)組,對于數(shù)組的操作掌握的比較熟練,所以在編寫程序的時候困難沒有那么多。本程序在編寫的過程中用到了許多通訊錄中的模塊化設(shè)計和函數(shù)互相調(diào)用的思想,使得編寫比較方便和好用。通過該系統(tǒng)的課程設(shè)計分析,我掌握了模塊化設(shè)計的方法,理解和運用了結(jié)構(gòu)化程序設(shè)計的思想和方法,掌握和提高了運用C語言進行程序設(shè)計的能力。程序設(shè)計的過程,實際上是確定解決問題的詳細步驟,而這個步驟通常叫做流程,在程序設(shè)計過程中理清楚整個問題的流程很重要,然后采取逐步細化的方法實現(xiàn)整個程序。對于一個較大的應用程序,一般不可能一次就設(shè)計出一個很完善的系統(tǒng)。通常要先設(shè)計滿足基本要求的系統(tǒng),然后再測試或者在
9、使用的過程中不斷完善,慢慢地做成一個功能很完善選修課程管理系統(tǒng)。所以在進行調(diào)試的時候需要對許多變量理解和掌握其變化規(guī)律等,這對于我更好的掌握visual C中調(diào)試的工具有很大的幫助。總之經(jīng)過這次課程設(shè)計,我對c語言的使用和理解都有了很大的加深,對于編程的思想也有了很多新的理解和感受。第七部分:附錄一、參考文獻:1、李麗娟主編 ,C語言程序設(shè)計教程(第二版),人民郵電出版社2、嚴蔚敏主編,數(shù)據(jù)結(jié)構(gòu)(C語言),清華大學出版社3、崔單主編,C語言程序設(shè)計案例精粹,電子工業(yè)出版社4、譚浩強主編,程序設(shè)計(第三版),清華大學出版社二、源程序#include"stdio.h"#incl
10、ude"stdlib.h"#include"windows.h"#include"string.h"void index();/首頁void login();void bye_sys();/退出界面void stu_login();/學生登錄菜單 void c_select();void c_view();/課程瀏覽 void c_add();/增加課程void c_delete();void c_searchs();/學生查詢函數(shù)void c_searchm();/管理員查詢函數(shù)void c_viewm();/管理員瀏覽函數(shù)void
11、 c_views();/學生瀏覽函數(shù)struct course/定義課程結(jié)構(gòu)體 int c_num; char c_name20; int c_score; int c_nelepeo;/課程已選人數(shù) int c_melepeo;/課程人數(shù)上限;struct student char s_number10; char s_password10;struct manager char m_name10; char m_password10;void index()/首頁 char input; printf("nnttt*n"); printf("ttt 湖南大學學
12、生選課系統(tǒng)n"); printf("ttt*nnn"); printf("ttt*nnn"); printf("ttt*nnn"); printf("ttt*nnn"); printf("ttt*設(shè)計者:劉曉斌*nnn"); input=getchar(); system("cls");void login()/登陸界面 void stu_login(); void man_login(); void bye_sys(); int input; do system(
13、"cls"); printf("nnnt1.學生登錄n"); printf("t2.管理員登陸n"); printf("t3.退出本系統(tǒng)n"); printf("t請選擇服務類別:"); scanf("%d",&input); if (input!=1&&input!=2&&input!=3) /輸入數(shù)不等于選項的時候打印畫面 printf("nt輸入出錯!請重新選擇n"); printf("nt按任意鍵返
14、回選擇頁面nt"); getchar();getchar(); system("cls"); if(input=3)/如果輸入3退出系統(tǒng) bye_sys(); while(input!=1&&input!=2&&input!=3); switch(input) case 1:stu_login();break; case 2:man_login();break; void bye_sys()/退出界面exit(0);void man_login() void c_add(); void c_delete(); void c_view
15、(); void c_searchm(); int in; do system("cls"); printf("nnt1.新增課程n"); printf("t2.刪除課程n"); printf("t3.課程瀏覽n"); printf("t4.課程查詢n"); printf("t5.退出n"); printf("nnt請選擇服務種類:"); scanf("%d",&in); if(in!=1&&in!=2&
16、&in!=3&&in!=4&&in!=5) printf("nt沒有這項服務t按任意重新選擇"); getchar();getchar(); while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5); switch(in) case 1:c_add();break; case 2:c_delete();break; case 3:c_viewm();break; case 4:c_searchm();break;case 5:login();bre
17、ak; void stu_login()/學生登錄菜單 void c_select(); void c_view(); void c_searchs(); void login(); int input; do system("cls"); printf("nnnt-學生登陸-"); printf("nnt1.學生選課n"); printf("t2.課程瀏覽n"); printf("t3.課程查詢n"); printf("t4.退出n"); scanf("%d&qu
18、ot;,&input); if(input!=1&&input!=2&&input!=3&&input!=4) printf("nt沒有這項服務n"); printf("t按任意鍵重新選擇"); getchar(); getchar(); while(input!=1&&input!=2&&input!=3&&input!=4); switch(input) case 1:c_select();break; case 2:c_views();break
19、; case 3:c_searchs();break; case 4:login();break; void c_select() int n,in,i=0,j;int flag=0; FILE *fp; FILE *fp1; char input; struct course courses10; if(fp=fopen("course.dat","rb")=NULL) /判斷是否存在課程 printf("nnnt課程不存在nn"); printf("t<按任意鍵返回管理菜單>nt"); input=
20、getchar(); input=getchar(); stu_login();/進入學生登陸菜單 else/存在的話循環(huán)讀取文件中的信息直到文件指針到文件尾部 do fread(&coursesi,sizeof(struct course),1,fp); i=i+1; while(!feof(fp); fclose(fp);/文件讀完后關(guān)閉 printf("nntt請輸入你要選課程的編號:"); scanf("%d",&n); if(fp1=fopen("courseselect.dat","rb"
21、;)=NULL) fp1=fopen("courseselect.dat","wb"); else fclose(fp1); fp1=fopen("courseselect.dat","ab"); for(j=0;j<i;j+) if(coursesj.c_num=n) flag+; if(flag=0) printf("nntt不存在對應課程n"); printf("nntt繼續(xù)選課請按1,退出請按2:n"); scanf("%d",&in
22、); switch(in) case 1:c_select();break; case 2:stu_login();break; default: printf("輸入錯誤,將返回登錄界面!n"); login();break; else fwrite(&coursesj,sizeof(struct course),1,fp1); fclose(fp1); printf("nntt選課成功t請選擇:"); printf("nntt1.繼續(xù)選課"); printf("nntt2.退出,返回登錄界面!"); s
23、canf("%d",&in); switch(in) case 1:c_select();break; case 2:stu_login();break; default:break; void c_viewm()/課程瀏覽 void stu_login(); void c_view() ; int inp,i=0,n=0; FILE *fp; char input; struct course courseview10; if(fp=fopen("course.dat","rb")=NULL) /判斷是否存在課程 syste
24、m("cls"); printf("nnnt課程不存在nn"); printf("t<按任意鍵返回管理菜單>nt"); getchar();getchar(); stu_login();/進入學生登陸菜單 else/存在的話循環(huán)讀取文件中的信息直到文件指針到文件尾部 do fread(&courseviewi,sizeof(struct course),1,fp); i=i+1; while(!feof(fp); fclose(fp);/文件讀完后關(guān)閉 do system("cls"); if(
25、i=1) printf("nnnttt沒有記錄!n"); getchar();getchar(); man_login(); else printf("nt-共有%d條記錄-",i-1); printf("nnt課程編號: %dn",courseviewn.c_num); printf("nnt課程名字: %sn",courseviewn.c_name); printf("nnt課程學分: %dn",courseviewn.c_score); printf("nnt課程已選人數(shù): %d
26、n",courseviewn.c_nelepeo); printf("nnt課程人數(shù)上限: %dn",courseviewn.c_melepeo); printf("nnt1.上一頁t2.下一頁t3.回目錄"); printf("n請選擇:"); scanf ("%d",&inp); switch(inp) case 1: if(n=0) printf("nt已到達首頁 t按任意鍵返回"); input=getchar(); input=getchar(); else n=n-
27、1; break; case 2: if(n=i-2) printf("nt已到達尾頁t按人意見返回"); input=getchar(); input=getchar(); else n=n+1; break; case 3:man_login();break; default: printf("nt操作錯誤t按任意鍵返回"); getchar();getchar(); break; while(inp!=3); void c_views()/課程瀏覽 void stu_login(); void c_view() ; int inp,i=0,n=0;
28、 FILE *fp; char input; struct course courseview10; if(fp=fopen("course.dat","rb")=NULL) /判斷是否存在課程 system("cls"); printf("nnnt課程不存在nn"); printf("t<按任意鍵返回管理菜單>nt"); getchar();getchar(); stu_login();/進入學生登陸菜單 else/存在的話循環(huán)讀取文件中的信息直到文件指針到文件尾部 do frea
29、d(&courseviewi,sizeof(struct course),1,fp); i=i+1; while(!feof(fp); fclose(fp);/文件讀完后關(guān)閉 do system("cls"); if(i=1) printf("nnnttt沒有記錄!n"); getchar();getchar(); stu_login(); else printf("nt-共有%d條記錄-",i-1); printf("nnt課程編號: %dn",courseviewn.c_num); printf(&qu
30、ot;nnt課程名字: %sn",courseviewn.c_name); printf("nnt課程學分: %dn",courseviewn.c_score); printf("nnt課程已選人數(shù): %dn",courseviewn.c_nelepeo); printf("nnt課程人數(shù)上限: %dn",courseviewn.c_melepeo); printf("nnt1.上一頁t2.下一頁t3.回目錄"); printf("n請選擇:"); scanf ("%d&qu
31、ot;,&inp); switch(inp) case 1: if(n=0) printf("nt已到達首頁 t按任意鍵返回"); input=getchar(); input=getchar(); else n=n-1; break; case 2: if(n=i-2) printf("nt已到達尾頁t按人意見返回"); input=getchar(); input=getchar(); else n=n+1; break; case 3:stu_login();break; default: printf("nt操作錯誤t按任意鍵返
32、回"); getchar();getchar(); break; while(inp!=3); void c_searchs() void stu_login(); void c_searchs(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear10; if (fp=fopen("course.dat","rb")=NULL) /判斷課程信息是否存在 system("cls"); printf("nnt課程不存在t按任意鍵返回&
33、quot;); getchar();getchar(); stu_login(); else/存在的話循環(huán)讀取文件中的信息直到文件指針到文件尾部 do fread(&courseseari,sizeof(struct course),1,fp); i=i+1; while(!feof(fp); fclose(fp); system("cls"); printf("nnttt請輸入你要查詢的課程編號:"); scanf("%d",&id); do/檢查輸入是否符合要求 for(j=0;j<i-1;j+) if(id
34、=coursesearj.c_num) flag+; k=j; if(flag=1) system("cls"); printf("nnt課程編號:%dn",courseseark.c_num); printf("nnt課程名字:%sn",courseseark.c_name); printf("nnt課程學分:%dn",courseseark.c_score); printf("nnt課程已選人數(shù):%dn",courseseark.c_nelepeo); printf("nnt課程人
35、數(shù)上限:%dn",courseseark.c_melepeo); getchar();getchar(); printf("nnt1.回目錄繼續(xù)查詢t2.退出查詢系統(tǒng)n"); printf("請選擇:"); scanf("%d",&inp); switch(inp) case 1:c_searchs(); case 2:stu_login(); default: printf("nt沒有這項服務t請按任意鍵重新輸入"); getchar();getchar(); else system("
36、;cls"); printf("nnt不存在對應記錄n"); printf("nnt1.回目錄繼續(xù)查詢t2.退出查詢系統(tǒng)n"); printf("請選擇:"); scanf("%d",&inp); switch(inp) case 1:c_searchs(); case 2:stu_login(); default: printf("nt沒有這項服務t請按任意鍵重新輸入"); getchar();getchar(); while(inp!=1); void c_searchm(
37、) void stu_login(); void c_searchm(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear10; if (fp=fopen("course.dat","rb")=NULL) /判斷課程信息是否存在 system("cls"); printf("nnt課程不存在t按任意鍵返回"); getchar();getchar(); stu_login(); else/存在的話循環(huán)讀取文件中的信息直到文件指針到
38、文件尾部 do fread(&courseseari,sizeof(struct course),1,fp); i=i+1; while(!feof(fp); fclose(fp); system("cls"); printf("nnttt請輸入你要查詢的課程編號:"); scanf("%d",&id); do/檢查輸入是否符合要求 for(j=0;j<i-1;j+) if(id=coursesearj.c_num) flag+; k=j; if(flag=1) system("cls");
39、printf("nnt課程編號:%dn",courseseark.c_num); printf("nnt課程名字:%sn",courseseark.c_name); printf("nnt課程學分:%dn",courseseark.c_score); printf("nnt課程已選人數(shù):%dn",courseseark.c_nelepeo); printf("nnt課程人數(shù)上限:%dn",courseseark.c_melepeo); getchar();getchar(); printf("nnt1.回目錄繼續(xù)查詢t2.退出查詢系統(tǒng)n"); printf("
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 橋隧中級工考試題(含參考答案)
- 天津城市建設(shè)管理職業(yè)技術(shù)學院《醫(yī)用生物學》2023-2024學年第一學期期末試卷
- 二零二五年度船舶抵押借款合同范本3篇
- 2024第三方擔保公司擔保合同范本
- 2024網(wǎng)絡(luò)游戲開發(fā)商與運營商之間的游戲運營合同
- 二零二五年度工程勞務分包合同稅率變動及稅務爭議解決機制3篇
- 2024版家用空調(diào)清洗服務合作協(xié)議樣本版B版
- 二零二五年度房地產(chǎn)銷售代理勞動合同附屬協(xié)議書3篇
- 二零二五年度智能供應鏈商務招標-2025版國際貿(mào)易合同3篇
- 2024知識產(chǎn)權(quán)許可與保護合同案例
- 中醫(yī)診療技術(shù)操作規(guī)程
- 樂理知識考試題庫130題(含答案)
- 2024年《多媒體技術(shù)與應用》 考試題庫及答案
- (完整)北京版小學英語1至6年級詞匯(帶音標)
- 終止合同告知函 委婉
- 0-3歲嬰幼兒基礎(chǔ)護理智慧樹知到期末考試答案章節(jié)答案2024年杭州師范大學
- 面包烘焙原料供應采購合同案例
- 工商企業(yè)管理畢業(yè)論文范文(篇一)
- 基于mRNA-LNP技術(shù)的(細胞)免疫治療產(chǎn)品開發(fā)指南
- 電動叉車充電區(qū)安全規(guī)程
- 手術(shù)室中心吸引突然停止的應急預案
評論
0/150
提交評論