C語言程序的設計報告學生選修課系統方案_第1頁
C語言程序的設計報告學生選修課系統方案_第2頁
C語言程序的設計報告學生選修課系統方案_第3頁
C語言程序的設計報告學生選修課系統方案_第4頁
已閱讀5頁,還剩16頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

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

3、)系統以菜單方式工作模塊;2)課程信息與學生選課信息錄入功能模塊;3)課程信息瀏覽功能模塊;4)查詢模塊;5)按學分查詢模塊;6)某些課程學生選修情況模塊。.專業專注.工資信息管理系統系統課程課程查按某些以菜信息信息詢學課程單方與學瀏覽模分學生式 工生選功能塊查選修作 模課信模 塊詢情況塊息錄模模 塊入 功塊能 模塊4 詳細設計:#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結束判斷.專業專注.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);.專業專注.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;.專業專注.FILE *fp;輸出fp=fopen("subjects.txt","w");寫入文件并儲存輸入結束

7、fprintf(fp,"課程編號課程名稱課程性質總學時授課學時實驗或上 機 學 時學 分開 課 學 期 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 savefileadd(SUB *head)SUB *p;FILE *fp;fp=f

8、open("subjectsadd.txt","w");fprintf(fp,"課程編號課程名稱課程性質總學時授課學時實驗或上 機 學 時學 分開 課 學 期 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");.專業專注.fprintf(fp,"課程編號課程名稱課程性質總學時授課學時實驗或上 機 學 時學 分開 課 學 期 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;.專業專注.printf("課程編號課程名稱課程性質總學時授課學時實踐或上機 學 時學 分開 課 學 期 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)打開文件查看學生選課信息int a,num;判斷查詢方法2int t=1;char type10;char ch='a',ch1;1SUB *ptr ;按課程性質按學分查輸入結束.專業專注.while(ch!=' ')printf("若 要 按 課 程 性 質 查 找 請 輸 入 1 , 若 要 按 學 分 查 找 請 輸 入 2:

12、n");scanf("%d",&a);switch(a)case 1:printf("請 輸 入 要 查 找 的 課 程 的 性 質 :n");scanf("%s",type);printf("課程編號課程名稱課程性質總學時授課學時實踐或上 機 學 時學 分開 課 學 期 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;.專業專注.break;case 2:printf("輸 入 要 查 找 的 課 程 的 學 分 n");scanf("%d",&num);printf("課程編號課程名稱課程性質總學時授課學時實踐或上 機 學 時學 分開 課 學 期

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("繼 續 查 找 請 按 回 車 鍵 ,結 束

15、請 按 空 格 鍵 :n");ch1=getchar();/ 將回車鍵賦給CH1,否則 CASE 里面最后輸入的回車鍵會賦給 CH,因此用 CH1填補。ch=getchar();.專業專注.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).專業專注.if(ptr2->next=NULL)ptr2->next=subj;su

17、bj->next=NULL;break;printf("繼 續 插 入 請 按 回 車 , 結 束 請 按 空 格 :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);.專業專注.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("繼 續 刪 除 請 按 回 車 , 結 束 請 按 空 格 :n"

19、;);ch1=getchar();/ 將回車鍵賦給CH1 ,否則num 輸 完 后 再 輸 入 的 回 車 鍵 會 賦 給 CH , 因 此 用 CH1填 補 。ch=getchar();開始輸入、選課return head;判斷是否是要選的課程Nvoid choose(SUB *head)選定、輸出結束SUB *p,*q;int a5;int num,total=0,i=0,j;printf("輸入要選修的課程的編號,編號之間以空格分開,輸完后以0結束.專業專注.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("選 修 總 學 分 未 達 到 60, 選 修 失 敗 !n");else printf("選 修 成 功 !n");printf("您 選 修 的 課 程 為 :n");for(j=0;j<i;j+)for(q=head;q;q=q->next).專業專注.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);/注 意 此 處 的 必 要 性 函 數insert的 的 返 回 值 重 新 賦 給head!savefileadd(head);.專業專注.printf("修 改 后 的 信 息 為 :n");prin(head);head=del(head);/ 注 意 此 處 的 必 要 性 ,數del的

溫馨提示

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

評論

0/150

提交評論