C語言程序的設(shè)計報告學(xué)生選修課系統(tǒng)方案_第1頁
C語言程序的設(shè)計報告學(xué)生選修課系統(tǒng)方案_第2頁
C語言程序的設(shè)計報告學(xué)生選修課系統(tǒng)方案_第3頁
C語言程序的設(shè)計報告學(xué)生選修課系統(tǒng)方案_第4頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.C語言程序設(shè)計學(xué)校 :學(xué)院 :班級序號 :.專業(yè)專注.學(xué)號 :姓名 :指導(dǎo)老師 :C 語言程序設(shè)計報告一 、C 語言課程設(shè)計的目的:高級語言課程設(shè)計是學(xué)習(xí)完高級語言程序設(shè)計課程后進行的一次全面的綜合性上機實驗。其目的在于為同學(xué)提供了一個既動手又動腦,獨立實踐的機會,將課本上的理論知識和實際有機的結(jié)合起來,鍛煉同學(xué)的分析解決實際問題的能力。提高學(xué)生適應(yīng)實際,實踐編程的能力。二、題目學(xué)生選修課程系統(tǒng)設(shè)計假 定 有 n 門 課 程 ,每 門 課 程 有 課 程 編 號 、課 程 名 稱 、 課 程 性 質(zhì) 、總 學(xué) 時 、授課學(xué)時、實驗或商機學(xué)時、血粉、開課學(xué)期等信息,學(xué)生可按要求(如總學(xué)分不得少

2、于 60)自由選課。1、要求:試設(shè)計一個選修課程系統(tǒng),使之能提供以下功能:( 1)系統(tǒng)以菜單方式工作。( 2)課程信息和學(xué)生選課信息輸入功能(課程信息用文件保存)輸 入 。.專業(yè)專注.( 3)課程信息瀏覽功能 輸出。( 4)查詢功能(至少一種查詢方式) 算法。( 5)按學(xué)分查詢。( 6)某門課程學(xué)生選修情況(可選項)。2、分析:由于題目要求將學(xué)生的選課信息用結(jié)構(gòu)體形式輸入,并寫入文件中,所以應(yīng)提供文件的輸入輸出等操作:在過程中需有瀏覽、插入、修改、查找、刪除學(xué)生選課信息等操作,顧應(yīng)分別建立個功能模塊;另外還應(yīng)提供鍵盤式選擇菜單實現(xiàn)程序運行。3、總體設(shè)計:根據(jù)題目要求,可以將系統(tǒng)分為六個模塊:1

3、)系統(tǒng)以菜單方式工作模塊;2)課程信息與學(xué)生選課信息錄入功能模塊;3)課程信息瀏覽功能模塊;4)查詢模塊;5)按學(xué)分查詢模塊;6)某些課程學(xué)生選修情況模塊。.專業(yè)專注.工資信息管理系統(tǒng)系統(tǒng)課程課程查按某些以菜信息信息詢學(xué)課程單方與學(xué)瀏覽模分學(xué)生式 工生選功能塊查選修作 模課信模 塊詢情況塊息錄模模 塊入 功塊能 模塊4 詳細設(shè)計:#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct subjectsint num;char name20;char kind10;int s

4、time;int ttime;int etime;int score;int term;主流程圖:開始顯示一系列功能選擇N結(jié)束判斷.專業(yè)專注.struct subjects *next;SUB;SUB *create_form()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 %

5、d %d",&num,&name,&kind,&stime,&ttime,&etime,&score,&term);while(num!=0)p=(SUB *)malloc(size);p->num=num;strcpy(p->name,name);.專業(yè)專注.strcpy(p->kind,kind);p->stime=stime;p->ttime=ttime;p->etime=etime;p->score=score;p->term=term;if(head=NULL)h

6、ead=p;elsetail->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 *head)開始SUB *p;.專業(yè)專注.FILE *fp;輸出fp=fopen("subjects.txt","w");寫入文件并儲存輸入結(jié)束

7、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);.專業(yè)專注.fclose(fp);void savefileadd(SUB *head)SUB *p;FILE *fp;fp=f

8、open("subjectsadd.txt","w");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);void

9、savefiledel(SUB *head)SUB *p;FILE *fp;fp=fopen("subjectsdel.txt","w");.專業(yè)專注.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-&g

10、t;etime,p->score,p->term);fclose(fp);void prin(SUB *head)SUB *ptr;if(head=NULL)printf("沒 有 此 門 課 程 記 錄 !n");return;.專業(yè)專注.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->

11、name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);開始void search(SUB *head)打開文件查看學(xué)生選課信息int a,num;判斷查詢方法2int t=1;char type10;char ch='a',ch1;1SUB *ptr ;按課程性質(zhì)按學(xué)分查輸入結(jié)束.專業(yè)專注.while(ch!=' ')printf("若 要 按 課 程 性 質(zhì) 查 找 請 輸 入 1 , 若 要 按 學(xué) 分 查 找 請 輸 入 2:

12、n");scanf("%d",&a);switch(a)case 1:printf("請 輸 入 要 查 找 的 課 程 的 性 質(zhì) :n");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&quo

13、t;,ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);t=0;if(t) printf("未 找 到 !n");t=1;.專業(yè)專注.break;case 2:printf("輸 入 要 查 找 的 課 程 的 學(xué) 分 n");scanf("%d",&num);printf("課程編號課程名稱課程性質(zhì)總學(xué)時授課學(xué)時實踐或上 機 學(xué) 時學(xué) 分開 課 學(xué) 期

14、 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,ptr->ttime,ptr->etime,ptr->score,ptr->term);t=0;if(t) printf("未 找 到 !n");t=1;printf("繼 續(xù) 查 找 請 按 回 車 鍵 ,結(jié) 束

15、請 按 空 格 鍵 :n");ch1=getchar();/ 將回車鍵賦給CH1,否則 CASE 里面最后輸入的回車鍵會賦給 CH,因此用 CH1填補。ch=getchar();.專業(yè)專注.SUB *insert(SUB *head)SUB *ptr,*ptr2,*subj;int size=sizeof(SUB);char ch='a',ch1;while(ch!=' ')subj=(SUB *)malloc(size);ptr=subj;printf("輸 入 要 插 入 的 課 程 信 息 :n");scanf("%

16、d%s%s%d%d%d%d%d",&subj->num,subj->name,subj->kind,&subj->stime,&subj->ttime,&subj->etime,&subj->score,&subj->term);if(head=NULL)head=ptr;head->next=NULL;elsefor(ptr2=head;ptr2;ptr2=ptr2->next).專業(yè)專注.if(ptr2->next=NULL)ptr2->next=subj;su

17、bj->next=NULL;break;printf("繼 續(xù) 插 入 請 按 回 車 , 結(jié) 束 請 按 空 格 :n");ch1=getchar();/ 將回車鍵賦給CH1,否則 subj->term輸 完 后 輸 入 的 回 車 鍵 會 賦 給 CH ,因 此 用 CH1填 補 。ch=getchar();return head;SUB *del(SUB *head)SUB *p1,*p2;char ch='a',ch1;int num;while(ch!=' ')printf("輸 入 想 要 刪 除 的 課 程

18、 編 號 :n");scanf("%d",&num);.專業(yè)專注.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;.專業(yè)專注.p2=p1->next;printf("繼 續(xù) 刪 除 請 按 回 車 , 結(jié) 束 請 按 空 格 :n"

19、;);ch1=getchar();/ 將回車鍵賦給CH1 ,否則num 輸 完 后 再 輸 入 的 回 車 鍵 會 賦 給 CH , 因 此 用 CH1填 補 。ch=getchar();開始輸入、選課return head;判斷是否是要選的課程Nvoid choose(SUB *head)選定、輸出結(jié)束SUB *p,*q;int a5;int num,total=0,i=0,j;printf("輸入要選修的課程的編號,編號之間以空格分開,輸完后以0結(jié)束.專業(yè)專注.n");scanf("%d",&num);while(num!=0)for(p=h

20、ead;p;p=p->next)if(p->num=num)total=total+p->score;ai=num;i+;scanf("%d",&num);if(total<60) printf("選 修 總 學(xué) 分 未 達 到 60, 選 修 失 敗 !n");else printf("選 修 成 功 !n");printf("您 選 修 的 課 程 為 :n");for(j=0;j<i;j+)for(q=head;q;q=q->next).專業(yè)專注.if(q->

21、num=aj)printf("%s",q->name);printf("n");printf("*n");printf("*n");printf("*n");printf("*n");void main()SUB *head=create_form();savefile(head);prin(head);search(head);head=insert(head);/注 意 此 處 的 必 要 性 函 數(shù)insert的 的 返 回 值 重 新 賦 給head!savefileadd(head);.專業(yè)專注.printf("修 改 后 的 信 息 為 :n");prin(head);head=del(head);/ 注 意 此 處 的 必 要 性 ,數(shù)del的

溫馨提示

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

評論

0/150

提交評論