C語言課程設計—學生選課系統(tǒng)_第1頁
C語言課程設計—學生選課系統(tǒng)_第2頁
C語言課程設計—學生選課系統(tǒng)_第3頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C語言課程設計一學生選課系統(tǒng)武漢理工大學華夏學院課程設計報告書課程名稱:C 課程設計題 目 : 學生選課系統(tǒng)程序設計 系 名: 信息工程系 專業(yè)班級:姓 名:學 號:指導教師 :成 績:2016 年 3 月 4 日課程設計任務書學生姓名:專業(yè)班級:指導教師:工作單位:設計題目 :學生選課系統(tǒng)程序設計初始條件:學生選課系統(tǒng)能提供學生選課, 以及學生和 課程信息管理等一系列功能。 要求完成的主要任務: (包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)1、任務描述假定有 n 門課程,每門課程有課程編號,課程名稱,課程性質,學時, 授課學時,實驗或上機學時,學分,開課學期等信息,學生可按要

2、求(如總 學分不得少于 15)自由選課。試設計一個選修課程系統(tǒng),使之能提供以下 功能:(1)系統(tǒng)以菜單方式工作(2)課程信息和學生選課信息錄入功能(課程信息用文件保存)(3)課程信息瀏覽功能(4)查詢功能(5)按學分查詢(6)某門課程學生選修情況(可選項)2、本課程涉及的知識點變量的定義、 輸入和輸出函數、 結構體類型 的定義、結構體數組、循環(huán)語句、選擇語句,文 件的操作等。設計報告撰寫格式要求: 一、課程設計說明書(或報告書)正文內容設計題目】例如:學生選課系統(tǒng)【開發(fā)環(huán)境】硬件環(huán)境:微機系列,內存在 1G 以上,軟件環(huán)境: Microsoft Windows XP 【開發(fā)工具】 Micros

3、oft Visual C+ 6.0 【完成時間】 【需求分析】分析闡述用戶的需要以及要實現(xiàn)的 程序應具有什么樣的功能?!鞠到y(tǒng)總體設計】在明確了所要解決的問題后, 很自然地就要 提出自己解決問題的思路和方案。 讓讀者了解方 案的總體設計和關鍵技術。要闡述自己的設計方案,說明為什么要選擇 或設計這樣的方案。具體包括: 系統(tǒng)總的設計思路, 功能模塊圖; 使用的設計軟硬件環(huán)境和開發(fā)技術和平臺 等?!鞠到y(tǒng)詳細設計】 在這部分中,應該具有相關關鍵實現(xiàn)技術(如使用什么庫函數,使用什么循環(huán)結構等) 。 【系統(tǒng)調試和測試】 調試:介紹設計過程中遇到的問題和解決方法。 測試:介紹如何測試系統(tǒng), 測試中發(fā)現(xiàn)的問題和

4、 解決方案?!窘Y束語】這部分篇幅不大, 對整個設計中做的工作、 獲得 的成果、心得體會等做一個簡單小結。【參考文獻】羅列在設計過程中查閱的文獻名稱 注意:參考文獻羅列的格式為資料編號 ?作者姓名 ?文獻或期刊名稱 ?出版社 名稱,文獻的出版時間或期刊的期號例如:文獻 1 譚浩強.,C 程序設計(第二版) M ,北京:清華大學出版社, 2001年期刊 2 于振海.office XP 網上數 據存取 .計算機應用文摘 J ,2003,24;69(頁)、課程設計說明書(或報告書)正文的書寫格式簡介一、正文標題層次 正文題序層次是文章結構 的框架,一般采用社會通用的論文書寫形式。 即章條序碼統(tǒng)一用阿拉

5、伯數字表示,題序層 次可以分為若干級, 各級號碼之間加小圓點, 末尾一級的后面不加小圓點,層次分級一般 不超過四級為宜,示例如下:第一級(章)123第二級1.12.13.1(條)1.22.2 3.2 第三級1.1.12.1.13.1.1(條)1.1.2 2.1.2 3.1.2 1.2.12.2.13.2.11.2.22.2.23.2.2二、表格 每個表格應有自己的表序與表題, 表序與表題間空一格。例如:表 1.1 XXXX ,且表題與表序應寫 在表格的上方正中處。三、插圖 插圖圖面要整齊、美觀,插圖應與 正文呼應,不能脫節(jié)。 每幅插圖應有圖序與 圖題,圖序編號要連續(xù), 圖序與圖題間空一 格且要

6、放在插圖下方居中處。四、公式 公式應另起一行寫在稿紙的中央 時間安排:周 次星期星期星期星期四星期五第第 1-4第 3-4第 1-4第第 1-42 周節(jié)節(jié)節(jié)1-2 節(jié)節(jié)地現(xiàn)教現(xiàn)教現(xiàn)教現(xiàn)教現(xiàn)教點221221221221221課程設計考核及評分標準1. 系統(tǒng)完成任務: 50 分2. 各種技術的綜合應用: 10 分3、回答提問情況: 20 分4. 設計報告: 20 分1 設計題目 1.2 開發(fā)環(huán)境 1.2.1硬件環(huán)境 1.2.2軟件環(huán)境 1.3 開發(fā)工具 1.4 完成時間 1.5 需求分析 1.6 系統(tǒng)總體設計 2.7 系統(tǒng)詳細設計 5.7.1 系統(tǒng)主菜單 5系統(tǒng)主菜單界面 錯 誤!未定 義書 簽。

7、系統(tǒng)功能模塊圖 錯 誤!未定 義書 簽。系統(tǒng)主菜單流程圖 錯誤!未定義書 簽。系統(tǒng)主菜單代碼 錯 誤!未定 義書 簽。7.2 錄入課程信息 1 17.2.1 錄入課程信息界面 錯誤!未定義書 簽。7.2.2 錄入課程信息模塊圖 錯誤!未定義 書簽。7.2.3 錄入課程信息流程圖 錯誤!未定義 書簽。7.2.4 錄入課程信息代碼 錯誤!未定義書 簽。7.3課程管理 1. 57.3.1 課程管理界面 錯誤!未定義書簽。課程管理模塊圖 錯 誤 ! 未 定 義書 簽。課程管理流程圖 錯 誤 ! 未 定 義書 簽。7.3.4 課程管理代碼 錯誤!未定義書簽。7.4 學生信息管理 2 07.4.1 學生信

8、息管理界面 錯誤!未定義書 簽。學生信息管理界面模塊圖 錯誤 !未 定義書簽。學生信息管理流程圖 錯誤 !未定義 書簽。7.5 學生選課7.4.4 學生信息管理代碼 錯誤!未定義書 簽。2. 77.5.1 學生選課界面 錯誤!未定義書簽。 學生選課模塊圖 錯 誤!未定 義書 簽。學生選課流程圖 錯 誤!未定 義書 簽。7.5.4 學生選課代碼 錯誤!未定義書簽。8 系統(tǒng)調試和測試 3. 88.1 調試3. 88.2 測試4. 1.4. 34. 49 結束語 10 參考文獻1 設計題目學生選課系統(tǒng)2 開發(fā)環(huán)境2.1 硬件環(huán)境微機系列,內存在 1G 以上2.2 軟件環(huán)境Win7 系統(tǒng)3 開發(fā)工具M

9、icrosoft Visual C+ 6.04 完成時間2016年 2月 29日 2016年3月 4日5 需求分析用戶需求如下:假定有 n 門課程,每門課程有課程編號, 課 程名稱,課程性質,學時,授課學時,實驗或上機學時,學分,開課學期等信息,學生可按要求(如總學分不得少于 15)自由選課。試設計一 個選修課程系統(tǒng)。故此,經過分析后我覺得程序應該具有以下 功能:(1)系統(tǒng)以菜單方式工作(2)課程信息和學生選課信息錄入功能(3)課程信息瀏覽功能(4)查詢功能(5)按學分查詢6 系統(tǒng)總體設計系統(tǒng)由哪幾個功能模塊構成, 給出功能模塊 圖。C 中模塊化的工具是函數根據上面的需求分 析,可以將這個系統(tǒng)

10、的設計分為如下六大模塊。選課模塊、按學分查找模塊、按編號查找模塊、 查看課程模塊、 查看選課情況模塊、 課程輸入模 塊、完成選擇模塊。模塊圖如下圖 1 所示。菜單選錄入課 程信息錄學生學退入信息生出完成選圖 1 系統(tǒng)功能模塊圖 另外,程序用了兩個結構體和五個全局變量 N1,N2,kk1,kk2,kk3 。五個全局變量是用來控制 輸入數據的循環(huán)的。 兩個結構體分別是課程信息 結構體:struct couse/ 課程信息結構體 int num1;/ 課程編號char name120;/ 課程名稱 char xinzhi30;/ 課程性質 int ztime;/ 課程總學時 int stime;/

11、授課學時 int shiyan;/ 實驗學時 int score;/ 學分 long int date;/ 開學學期 int nelepeo;/ 課程已選人數 int Melepeo;/ 課程人數上限 struct couse * next; 和存儲學生信息的結構體: struct student/ 學生信息結構體 int num2;char name220;int nelenum50;/ 已選課程編號 int nelen;/ 已選課程數量 struct student * next; void Ms() for(kk1=0;kk1<1100;kk1+)for(kk2=0;kk2<

12、1200;kk2+)for(kk3=0;kk3<1200;kk3+);7 系統(tǒng)詳細設計7.1 系統(tǒng)主菜單系統(tǒng)界面設計圖包括六個選項, 用戶可根據 自己的需求選擇不同的選項。 系統(tǒng)界面設計圖如圖 2 所示圖 2 系統(tǒng)界面設計圖 系統(tǒng)模塊圖分為六大模塊。 分別是錄入課程 信息模塊, 課程信息管理模塊, 錄入學生信息模塊,學生信息管理模塊, 學生選課模塊和退出系 統(tǒng)模塊。系統(tǒng)功能模塊圖如下圖 3 所示圖3錄入課程信課程信息管系錄統(tǒng)入功學能生模信塊圖菜學生信息管單學生選課退出系統(tǒng)圖3 主菜單設計模塊圖當用戶進入主菜單后, 會顯示有六個選項的 界面,需要用戶從 1-6 個選項中選擇一個選項來 進行

13、操作,若所選數非 1-6,則會退出系統(tǒng)。系 統(tǒng)主菜單流程圖如圖 4 所示。圖 4 系統(tǒng)總流程圖該程序實現(xiàn)代碼如下。int main()/ 主函數int i;start:printf("nttt 歡迎使用學生選課系統(tǒng) !n"); printf("n");printf("t 主菜單 :n");printf("t* * n");printf("t*n");printf("t*1.錄入課程信息*n");printf("t*2.課程信息管理*n");printf(&

14、quot;t*3.錄入學生信息*n");printf("t*4.學生信息管理*n");printf("t*5.學生選課*n");printf("t*6.退出系統(tǒng)*n");printf("t* *n");printf("t * n");printf("n 請輸入菜單選項 (16):"); scanf("%d",&i);if(i<1 | i>6)printf(" 輸入錯誤 ,請重輸 :n");goto star

15、t;switch(i)case 1:system("cls");inputc();goto start;break;case 2:system("cls"); managementc(); goto start; break;case 3:system("cls"); inputs(); goto start; break;case 4:system("cls"); managements(); goto start; break;case 5:system("cls");elective();

16、goto start;break;case 6:system("cls");printf(" 感謝使用本系統(tǒng) !nn 再見!n");return 0;7.2 錄入課程信息錄入課程信息有兩個選項, 錄入課程和返回主菜單。錄入課程信息界面設計如圖 5 所示。圖 5 錄入課程信息界當用戶進入錄入課程后, 會有兩個選項, 錄入課程和返回主菜單。 錄入課程信息流程圖如圖6 所示。開始結束圖 6 錄入課程信息流程圖實現(xiàn)該功能代碼如下。void keyboardc()/ 錄入課程子函數struct couse *p1,*p2;N1=0;p1=p2=(struct co

17、use*)malloc(sizeof(struct couse);printf(" 課程編號 課程名稱 課程性質 總學 時 授課學時 實驗學時 學分 開課學期 人數上 限n");scanf("%d%s%s%d%d%d%d%d",&p1->num1,p1->name1,&p1->xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,&p1->date,&p1- >Melepeo);p1-&g

18、t;nelepeo=0;head1=NULL;while(p1->num1!=0)N1=N1+1;if(N1=1)head1=p1;else p2->next=p1;p2=p1;p1=(struct couse * )malloc(sizeof(struct couse);scanf("%d%s%s%d%d%d%d%d",&p1->num1,p1->name1,&p1->xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,

19、&p1->date,&p1->Melepeo);p1->nelepeo=0;p2->next=NULL;void inputc()/ 錄入課程主函數int i;printf("ttt 錄入課程信息 n"); printf("n1. 錄入課程 n"); printf("2. 返回主菜單 n"); printf(" 請選擇 (12):n"); scanf("%d",&i);switch(i) case(1):keyboardc();break; cas

20、e(2):break;7.3 課程管理課程管理有三個選項, 新增課程, 刪除課程 和返回主菜單。課程管理界面設計如圖 7 所示圖7 課程管理界面課程管理可以選擇增添或刪除課程, 若輸入 課程格式錯誤會顯示錯誤, 用戶需要重新輸入程 管理流程圖如圖 8 所示。Y保結束圖 8 課程管理流程圖實現(xiàn)該功能代碼如下。void delc(int num1)/ 課程管理子函數 (刪除課程 ) struct couse *p1,*p2; if(head1=NULL)printf("n 沒有課程 ,無法刪除 !n"); goto end;p1=head1;&&while(nu

21、m1!=p1->num1 p1->next!=NULL)p2=p1; p1=p1->next;if(num1=p1->num1)if(p1=head1) head1=p1->next; else p2->next=p1->next; printf(" 已刪除該編號課程 !n"); N1=N1-1;else printf(" 無該編號的課程 !n");end:;void managementc()/ 課程管理主函數struct couse * incouse;int i,num1;printf("ttt

22、課程信息管理 n");printf("1. 新增課程 n");printf("2. 刪除課程 n");printf("3. 返回主菜單 n");printf(" 請選擇 (13):n"); scanf("%d",&i);switch(i)case(1):incouse=(struct cous *)malloc(sizeof(struct couse);printf(" 課程編號 課程名稱 課程 性質 總學時 授課學時 實驗學時 學分 開課學 期 人數上限 n&quo

23、t;);scanf("%dn%sn%sn%dn%dn%dn%dn% dn%dn",&incouse->num1,&incouse->name1, &incouse->xinzhi,&incouse->ztime,&incouse->s time,&incouse->score,&incouse->date,&incouse ->Melepeo); incouse->nelepeo=0; insertc(incouse); break;case(2):prin

24、tf(" 請輸入 要刪除課程的編 號:n");scanf("%d",&num1);delc(num1); break;case(3):break;7.4 學生信息管理學生信息管理可選新增或刪除學生信息, 若 都不操作則可選返回主菜單。 學生信息管理界面 設計如圖 9 所示。圖 9 學生信息管理界面 學生信息管理有增加和刪除學生信息, 若選 擇此項, 則會提示用戶輸出入相關信息, 若輸入 格式錯誤則會有提示錯誤信息, 當操作完成后會 退回主菜單界面。 學生信息管理界面流程圖如圖 10 所示。開始新增學生信息輸入姓名輸入錯 保存信退出結束圖 10 學

25、生信息管理界面流程圖 實現(xiàn)該功能代碼如下。void inserts(struct student * incouse)/學生信息 管理子函數 (填加學生信息 )struct student *p0,*p1,*p2;p1=head2;p0=incouse;if(head2=NULL)head2=p0;p0->next=NULL;else&&while(p0->num2 > p1->num2)(p1->next!=NULL)p2=p1; p1=p1->next;if(p0->num2 <= p1->num2) if(head2=

26、p1) head2=p0; else p2->next=p0; p0->next=p1;elsep1->next=p0; p0->next=NULL;N2=N2+1;void dels(int num2)/ 學生信息管理子函數(刪除 學生信息 )struct student *p1,*p2;if(head2=NULL)printf("n 沒有該學 生信息,無法刪除!n");goto end;p1=head2;while(num2!=p1->num2 && p1->next!=NULL)p2=p1;p1=p1->nex

27、t;if(num2=p1->num2)if(p1=head2) head2=p1->next; else p2->next=p1->next;printf(" 已刪除該學生信息 !n"); N2=N2-1;else printf(" 無該學號的學生 !n"); end:;void managements()/ 學生信息管理主函數 struct student * incouse;int i,num2;printf("ttt 學生信息管理 n");printf("1. 新增學生信息 n");p

28、rintf("2. 刪除學生信息 n"); printf("3. 返回主菜單 n"); printf(" 請選擇 (13):n"); scanf("%d",&i);switch(i)case(1):incouse=(struct student*)malloc(sizeof(struct student);incouse->nelen=0; incouse->nelenum0=0; printf(" 學生學號 t 學生姓名 n");scanf("%d%s"

29、,&incouse->num2,incouse->nam e2);inserts(incouse);break;case(2):printf(" 請輸入 要刪除學生的學 號:n");scanf("%d",&num2);dels(num2);break;case(3):break;7.5 學生選課學生選課可以查詢已選和可選課程, 此外還 有返回主菜單選項學生選課界面設計如圖 11 所 示。圖 11 學生選課界面進入選課選項則會提示用戶輸入學號然后 再進行選課。 若不選則可以退回主菜單。 學生選課流程圖如圖 12 所示學生選課輸入

30、n輸入nNY結束圖 12 學生選課流程圖 實現(xiàn)該功能代碼如下。選課程序如下。 用戶要選課時, 查詢可選課 程后會提示輸入所要選的課程的編號, 然后程序 會根據所選的課程編號將所選課程信息儲存。 void elect(struct student * s)/ 選課 struct couse * p; int num1,i;printf(" 請輸入要選課的編號 :n"); scanf("%d",&num1); for(i=0;s->nelenumi!=0;i+); s->nelenumi=num1;(s->nelen)+;p=hea

31、d1;while(p->num1!=num1) p=p->next;(p->nelepeo)+;void cheak()/ 學生選課子函數 (查詢可選課程 )char e;struct couse * c;struct student * s;int num2,i,j=0,t=0;printf(" 請輸入你的學號 :");scanf("%d",&num2);s=head2;while(s->num2!=num2 && s->next!=NULL) s=s->next;if(s->num2!

32、=num2)printf(" 不存在你的信息 ,請進入主菜單 錄入你的信息 !n");goto end;c=head1;printf(" 你的可選課程編號 :n"); while(c!=NULL)for(t=0,i=0;s->nelenumi!=0;i+)if(c->num1=s->nelenumi) t=1;if(t=0 && (c->nelepeo!=c->Melepeo)printf("%dn",c->num1);j+;c=c->next;if(j=0)printf(&q

33、uot; 你已選完所有課程,無法再多 選!n");goto end;printf(" 選課 (y/n)?:n");getchar();e=getchar();i=0;while(e='y')elect(s);printf(" 繼續(xù)選課 (y/n)?:n");getchar(); e=getchar();end:;退課程序如下。首先輸入要退掉課程的編 號,若該課程存在,則顯示退課成功, 若不存在, 則失敗。void back(struct student * p)/ 退課struct couse * p1;int num1,i,j

34、;printf(" 請輸入你要退掉的課程編號 :n"); scanf("%d",&num1);p1=head1; while(p1->num1!=num1) p1=p1->next;for(i=0;p->nelenumi!=num1;i+); for(j=i;p->nelenumj!=0;j+) p->nelenumj=p->nelenumj+1;p->nelenum-j=0;(p1->nelepeo)-;printf(" 退課成功 !n"); 查詢已選課程代碼如下。 首先輸入學

35、號, 若 系統(tǒng)中無記錄, 則會提示不存在該信息, 請用戶 錄入該信息,然后用 goto 語句跳轉到主菜單界 面。若有記錄,則繼續(xù)輸入課程編號,若未選此 課,則會提示你還沒有選這個課程。 void hcheak()/ 學生選課子函數(查詢已選課程 ) char c; struct couse * p0;struct student * p;int num2,i,f=0;printf(" 請輸入學號 :n"); scanf("%d",&num2);p=head2;while(p->num2!=num2 && p!=NULL) p

36、=p->next;if(p=NULL)printf(" 不存在你的信息 ,請回主菜單錄 入信息 :n");goto end;printf(" 已選課程編號 :n");if(p->nelenum0=0)printf(" 你還沒選課 !n");goto end;for(i=0;p->nelenumi!=0;i+)printf("%dn",p->nelenumi); p0=head1;while(p0->num1!=p->nelenumi) p0=p0->next;f=f+p0-

37、>score;printf(" 總學分 :%dn",f);printf(" 是否進行退課 (y/n)?");getchar();c=getchar();while(c='y')back(p);printf(" 繼續(xù)退課 (y/n)?");getchar();c=getchar();(p->nelen)-;end:;選課主界面程序如下。用 printf 輸出界面, 用 switch 語句選擇調用對應的函數以實現(xiàn)選擇 各種情況。void elective()/ 學生選課主函數int i;printf("

38、;ttt 學生選課 n");printf("1. 查詢可選課程 n");printf("2. 查詢已選課程 n");printf("3. 返回主菜單 n");printf(" 請輸入 (13):n"); scanf("%d",&i);switch(i)case(1):cheak();break; case(2):hcheak();break; case(3):break;8 系統(tǒng)調試和測試8.1 調試在調試程序的過程中, 一方面遇到了一些編 程序時的通病,比如經常性的漏掉了語句尾的分 號,還偶爾的漏掉大括號, 導致程序不能正常編 譯。另一方面在編寫函數模塊時, 由于之前設計 考慮得不足, 會有一些功能無

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論