課程管理系統設計
⑴ 課程管理系統分析報告與設計報告書怎麼寫
一.需求描述 1、系統設計的背景信息 教務管理是大學的主要日常管理工作之一,涉及到校、系、師、生的諸多方面,隨著教學體制的不斷改革,尤其是學分制、選課制的展開和深入,教務日常管理工作日趨繁重、復雜。迫切需要研製開發一款基於Internet網的綜合網上教育管理軟體。傳統的手工操作方式,易發生數據丟失,統計錯誤,勞動強度高,且速度慢。使用計算機可以高速,快捷地完成以上工作。在計算機聯網後,數據在網上傳遞,可以實現數據共享,避免重復勞動,規范教學管理行為,從而提高了管理效率和水平。教務管理系統以計算機為工具,通過對教務管理所需的信息管理,把管理人員從繁瑣的數據計算處理中解脫出來,使其有更多的精力從事教務管理政策的研究實施,教學計劃的制定執行和教學質量的監督檢查,從而全面提高教學質量。目前還有一些單位和部門還是使用傳統人工的方式公務員之家管理文件檔案,這種管理方式存在著許多缺點,如:效率低、保密性差,另外時間一長,將產生大量的文件和數據,這對於查找、更新和維護都帶來了不少的困難。同時隨著學校的規模不斷擴大,學生數量急劇增加,有關教務的各種信息量也成倍增長。所以教務信息管理系統的可運行性和功能效用的多少就顯得尤為重要了。 2、需求分析 描述對系統的功能需求、信息需求和系統性能要求等。 教務管理系統(Ecati0nal Administrati0n Man— agement System)~ 個學校管理系統的一個重點。從 業務角度來分析.高校的教務管理系統應滿足以下需 求: (1)通過智能化資源調配管理優化高校教學資源,高效調配和合理利用教師、教室、實驗室、時間等.解決高校資源緊缺、多校區、院系兩級管理狀況下排課、排實驗室、排考場難等問題; (2)隨著學分制的教學改革.大部分高校正在由傳統的學年制向學分制過渡.系統在設計時考慮了學年制、學年學分制、學分制以及過渡時期等不同階段教學管理軟體銜接的需求.從而解決了學校課程庫、 成績庫、學生庫等的數據遷移問題 (3)強化基於Intemet/Intranet面向師生的服務和互動管理.使高校教學管理工作效率大大提高.同時 也方便了學生 如通過計算機快速高質的選課管理給學生的課表隨機派位.讓學生根據自己的意願在較短的時間內完成課程的選擇(4)系統嚴格遵循教育部的學籍學歷規范和有關信息標准,規范課程代碼、教師代碼、學號等編碼,避免代碼重復等不合理現象發生
⑵ 課程管理系統moodle是基於什麼而設計的
Mood1e是由澳大利亞MartinDougiamas博士主持開發的課程管理系統(CMS),該系統是一套基於「社會建構主義理論」設計開發的開放源代碼的軟體,能夠幫助教師高質量創建和管理的在線課程。魔燈不僅僅是一個技術平台,而是體驗了新的教育理念的操作平台,不僅僅是一個先進的「課程管理系統」(CMS),更是一個將教育理論與實踐相結合的,支持教師和學生組織實施教學活動的「學習管理系統」(LMS)。Moodle平台主要特點有: 1.理念先進,功能全面 Moodle以「社會建構主義理論」為其設計基礎, Moodle特別強調的是其教育哲學理念,它強調程序設計的基本思想是社會建構主義教育,對於其他的CMS系統來說,這是個創新。因為其他的CMS系統僅僅是提供一堆工具而已,卻並沒有教育法融入其中。所以,我們可以認為,Moodle則是一個以學習中心的系統,而多數CMS只是個商業的工具集合罷了。 Moodle主要功能大致分為網站管理功能、學習管理功能、課程管理三大部分,其中課程管理中有靈活、豐富的課程活動:論壇、測驗、資源、投票、問卷調查、作業、聊天室、Blog和Kiwi等。 2.相容性高,技術門檻底,易於使用 Moodle的在線教學模塊採用可自由組合的動態模塊化設計,教師搭建在線課程時就像搭積木一樣簡單有趣。支持多種教學模式,可以幫助教師學生在一個積極協作的在線環境中進行交流;在線活動記錄能夠詳細呈現;課程可以被壓縮成SCORM包做為備份或者供其他學習內容管理平台安裝使用;提供嵌入式的所見即所得的網頁編輯器,教師能夠很方便地編輯課程內容。 3.開源性和免費性 所謂軟體的開源性,指的是,軟體源代碼是公開的,用戶可以了解這個設計功能是如何實現的,修改它的源代碼等。Moodle作為一個開放源代碼的自由軟體它的開發與發布是遵循CPL協議,即允許任何人免費使用和修改源代碼,但必須保留原作者的版權許可聲明。Moodle的社群中除了開發者,更有大量的教師和學生用戶,來自他們的反饋和建議,正是Moodle的開源性促使其不斷完善和發展。 其次,與價格昂貴的CMS系統不同的是,Moodle是免費的軟體。你可以自由下載,然後安裝使用它。你不會被強迫升級,不會被強迫調整一些你不需要的模塊功能。開發者不會從用戶那裡強迫拿走你的代碼,但如果有某個人不想在開發Moodle的時候,沒關系,一定還會有其他的熱衷於Moodle開發的人繼續下去。而這就是moodle的開源性和免費帶來的好處。 Moodle的主要特點 (1) Moodle充分體現了建構主義的學習理論。社會建構主義強調過程中學習者之間的對話、協作、互動等社會性互動對個人及群體意義建構的作用。Miidle正是一個以社會建構主義為基礎的平台,它允許師生或學生彼此間共同思考,合作解決問題,最終實現集體智慧的碰撞與共享。 (2) Moodle是一個開放源代碼的自由軟體。Moodle遵循GPL協議,在不修改或刪除原有許可協議和版權的前提下,用戶可以免費拷貝、使用和修改,這吸引了一大批開發者,使其迅速成長、更新。 (3) 模塊化的結構設計。Moodle採用模塊化面向對象的設計方法,本身具有極好的靈活性和可擴展性,修改和擴充十分方便。系統的管理也是模塊化的,大致有系統設置、文件備份、編輯設定、用戶管理、課程管理及活動記錄。Moodle為就是提供了支持建構主義教學設計理念的十幾種課程活動,包括討論區、聊天室、在線調查等。作為可自行修改和編輯的模塊,Moodle為使用者、管理員和開發者提供了極大的選擇空間。 (4)快速安裝、低技術門檻。Moodle的搭建基於PHP與SQL資料庫,教師能夠在如何 搭建環境的計算機上建立Moodle,按照說明,快速完成安裝。由於Moodle體現了Web2.0核心產品的易用性,因此,教師和學生只要花一定的時間熟悉操作,便能夠無障礙使用。
⑶ 選修課程管理系統設計,要求需要有系統分析,背景等等,
選修課程管理系統設計,要求需要有系統分析
一直都在線
你隨時找我
⑷ 課程設計管理系統
課程設計進行管理
完全按照你的要求做。
來吧。。
⑸ c++ 課程管理系統設計與實現
這個做過好久了,找不到當時成型的那個了,給你這個看看吧,沒運行,你把沒用的刪掉,改改,自己運行試試
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
int savedTag=0;
struct student
{ char name[20];
int num;
char sex[4];
float math,english,history,SQL,C;
float sum;
float avg;
int order;
};
typedef struct Node
{ struct data;
struct Node *next;
}Node,*Link;
void menu()
{printf (「*******************************************************************\n」);
printf (「\t\t\t\t\t\t1增加學生資料\t\t\t\t\t\t\t\t\t\2刪除學生資料\n」);
printf (「\t\t\t\t\t\t3查詢學生資料\t\t\t\t\t\t\t\t\t\4修改學生資料\n」);
printf (「\t\t\t\t\t\t5保存學生資料\t\t\t\t\t\t\t\t\t\6顯示學生資料\n」);
printf (「\t\t\t\t\t\t7對學生資料進行分類\t\t\t\t\t\t\8從記錄文件中讀取學生資料\n」)
printf (「\t\t\t\t\t\t9新建學生資料文件\t\t\t\t\t\t\t\0推出系統\n」);
printf (「*******************************************************************\n」);
}
void printstart()
{printf("--------------------------------------------------------------------\n");}
void Wrong()
{printf("\n====>提示:輸入錯誤!\n");}
void Nofind()
{printf("\n====>提示:沒有找到該學生!\n");}
void printc()
{printf("學號\t姓名\t性別\t數學成績\t英語成績\t歷史成績\t專業成績\tC語言成績\t總分\t平均分\t名次\n");}
void printe()
{printf("%-12s%\t%s\s%s\s%f\t%f\t%f\t%f\t%f\t%f\t%f\t%d\n",
p->data.num,p->data.name,p->data.sex,p->data.math,p->data.english,p->data.history,p->data.SQL,p->data.C,p->data.sum,p->data.avg,p->data.order);}
Node *Locate(Link1,char findmess[],char nameornum[])
/*該指針函數用於定位鏈表中符合要求的節點,並返回指針(即從鏈表的某個當前節點查找跟findmess中名字相同的信息節點)*/
/*第一個參數l表示指向的當前節點*/
{Node *r; /* 指向鏈表中的某個節點 */
if(strcmp(nameornum,"name")==0) /* 按姓名查詢 */ /*核對本函數傳入的第三個參數(數組)是否為字元串"name" */
{
r=l->next; /*指向(當前節點的)下一個節點 */
while(r!=NULL) /*如果下個節點不為空*/
{
if(strcmp(r->data.name,findmess)==0) /比較"下個"節點的數據域的"名字"是否為傳入的第二個參數指定的名字*/
return r; /*如果找到了匹配的名字則返回該節點*/
r=r->next; /*否則繼續查找下個節點,直到鏈表的結尾*/
}
}
【else if(strcmp(nameornum,"num")==0)]】 【到底是那個語句?? 類型不對能行嗎?是要跟「num」比較,還是跟num的數值比較? 】
else if(num==(int)nameornum) /*按學號查詢*/
{r=1->next;
while(r!=NULL)
{if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
【if(strcmp(nameornum,"order")==0) 】
else if(order==(int)nameiornum) /*按名次查詢*/
{r=1->next;
while(r!=NULL)
{if(strcmp(r->data.order,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}
void Add(Link l) /* 增加學生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /*否則繼續查找下個節點,直到鏈表的結尾(將指針置於最末尾 )*/
while(1)
{
printf("請你輸入學號(以'0'返回上一級菜單");
scanf("%s",num);
if(num==0) /*學號輸入遇0結束*/
break;
while(s)
{
if(s->data.num==num)
{
printf("=====>提示:學號為'%s'的學生已經存在,若要修改請你選擇'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next; /*否則繼續查找下個節點,直到鏈表的結尾(將指針置於最末尾 )*/
}
p=(Node *)malloc(sizeof(Node)); /*動態分配內存*/
p->data.num=num
printf("請你輸入姓名:");
scanf("%s",p->data.name);
getchar();
printf("請你輸入性別:");
scanf("%s",p->data.sex);
getchar();
printf("請你輸入數學成績:");
scanf("%f",&p->data.math);
getchar();
printf("請你輸入英語成績:");
scanf("%f",&p->data.english);
getchar();
printf("請你輸入歷史成績:");
scanf("%f",&p->data.history);
getchar();
printf("請輸入資料成績:");
scanf("%f",&p->data.SQL);
getchar();
printf("請輸入專業成績:");
scanf("%f",&p->data.C);
getchar(); /* 信息輸入已經完成 */
s->sum=s->math+s->english+s->SQL+s->C+s->history; /*求總成績*/
s->avg=s->sum/5; /*求平均值*/
p->next=NULL;
r->next=p;
r=p;
savedTag=1; /*改變存儲標志*/
}
}
void Qur(Link l) /* 查詢學生 */
{
int sel;
char findmess[20]; 【這里定義的這個findmess跟前面的指針函數沒關系吧?】
Node *p;
if(!l->next)
{
printf("\n=====>提示:沒有資料可以查詢!\n");
return;
}
printf("\n=====>1按學號查找\n=====>2按姓名查找\n====>3按名次查找\n");
scanf("%d",&sel);
if(sel==1) /* 按學號 查找*/
{
printf("請你輸入要查找的學號:");
scanf("%d",&(int)findmess); 【學號是int類型的,所以把findmess轉換為int類型】
p=Locate(l,findmess,"num"); 【原函數中的第三個參數的類型為char,那麼這里寫「num」對嗎?
加了雙引號,代表代表這里是字元串而不是num的int類型的數值,是么?】
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) /* 按姓名查找 */
{
printf("請你輸入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==3) /* 按名次查找 */
{
printf("請你輸入要查找的名次:");
scanf("%d",&(int)findmess);
p=Locate(l,findmess,"order");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();
}
void Del(Link l) /* 刪除學生信息 */
{
int sel,s;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以刪除!\n");
return;
}
printf("\n=====>1按學號刪除\n=====>2按姓名刪除\n====>3按名次刪除\n");
scanf("%d",&sel);
if(sel==1)
{
printf("請你輸入要刪除的學號:");
scanf("%s",findmess);
printf("\n====>警告:確定刪除信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
savedTag=1;
}
else
Nofind();
}
else exit(0);
}
else if(sel==2)
{
printf("請你輸入要刪除的姓名:");
scanf("%s",findmess);
printf("\n====>警告:確定刪除信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
savedTag=1;
}
else
Nofind();
}
else exit(0);
}
else if(sel==3)
{
printf("請你輸入要刪除的名次:");
scanf("%d",&findmess);
printf("\n====>警告:確定刪除信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"order");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
savedTag=1;
}
else
Nofind();
}
else exit(0);
}
else
Wrong();
}
void Modify(Link l)
{ int sel,s;
Node *p;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以修改!\n");
return;
}
printf("\n=====>1按學號修改\n=====>2按姓名修改\n====>3按名次修改\n");
scanf("%d",&sel);
if(sel==1)
{printf("請你輸入要修改的學生學號:");
scanf("%d",&(int)findmess);
printf("\n====>警告:確定修改信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"num");
if(p)
{
printf("請你輸入新學號:");
scanf("%d",&p->data.num);
printf("請你輸入新姓名:");
scanf("%s",p->data.name);
getchar();
printf("請你輸入新性別:");
scanf("%s",p->data.sex);
printf("請你輸入新的數學成績:");
scanf("%f",&p->data.math);
getchar();
printf("請你輸入新的英語成績:");
scanf("%f",&p->data.english);
getchar();
printf("請你輸入新的歷史成績:");
scanf("%f",&p->data.history);
printf("請輸入新的資料成績:");
scanf("%f",&p->data.SQL);
printf("請你輸入新的專業成績:");
scanf("%f",&p->data.C);
printf("\n=====>提示:資料修改成功!\n");
s->sum=s->math+s->english+s->SQL+s->C+s->history;
s->avg=s->sum/5;
savedTag=1;
}
else
Nofind();
}
else exit(0) ;
}
else if(sel==2)
{printf("請你輸入要修改的學生姓名:");
scanf("%s",findmess);
printf("\n====>警告:確定修改信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"name");
if(p)
{
printf("請你輸入新姓名:");
scanf("%s",p->data.name);
getchar();
printf("請你輸入新學號:");
scanf("%d",&p->data.num);
printf("請你輸入新性別:");
scanf("%s",p->data.sex);
printf("請你輸入新的數學成績:");
scanf("%f",&p->data.math);
getchar();
printf("請你輸入新的英語成績:");
scanf("%f",&p->data.english);
getchar();
printf("請你輸入新的歷史成績:");
scanf("%f",&p->data.history);
printf("請輸入新的資料成績:");
scanf("%f",&p->data.SQL);
printf("請你輸入新的專業成績:");
scanf("%f",&p->data.C);
printf("\n=====>提示:資料修改成功!\n");
s->sum=s->math+s->english+s->SQL+s->C+s->history;
s->avg=s->sum/5;
savedTag=1;
}
else
Nofind();
}
else exit(0) ;
}
else if(sel==3)
{printf("請你輸入要修改的學生名次:");
scanf("%d",&(int)findmess);
printf("\n====>警告:確定修改信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"order");
if(p)
{
printf("請你輸入新學號:");
scanf("%d",&p->data.num);
printf("請你輸入新姓名:");
scanf("%s",p->data.name);
getchar();
printf("請你輸入新性別:");
scanf("%s",p->data.sex);
printf("請你輸入新的數學成績:");
scanf("%f",&p->data.math);
getchar();
printf("請你輸入新的英語成績:");
scanf("%f",&p->data.english);
getchar();
printf("請你輸入新的歷史成績:");
scanf("%f",&p->data.history);
printf("請輸入新的資料成績:");
scanf("%f",&p->data.SQL);
printf("請你輸入新的專業成績:");
scanf("%f",&p->data.C);
printf("\n=====>提示:資料修改成功!\n");
s->sum=s->math+s->english+s->SQL+s->C+s->history;
s->avg=s->sum/5;
savedTag=1;
}
else
Nofind();
}
else exit(0) ;
}
}
/*************************************************************************************/
void Disp(Link l)
{
int count=0;
Node *p;
p=l->next;
if(!p)
{
printf("\n=====>提示:沒有資料可以顯示!\n");
return;
}
printf("\t\t\t\t顯示結果\n");
printstart();
printc();
printf("\n");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("\n");
}
/*************************************************************************************/
void Tongji(Link l)
{
Node *pm,*pe,*pc; /* 用於指向分數最高的接點 */
Node *r=l->next;
if(!r)
{
printf("\n=====>提示:沒有資料可以統計!\n");
return ;
}
pm=pe=pc=r;
while(r!=NULL)
{
if(r->data.age>=pc->data.age)
pc=r;
if(r->data.birth>=pm->data.birth)
pm=r;
if(r->data.tele>=pe->data.tele)
pe=r;
r=r->next;
}
}
/*************************************************************************************/
void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;
ll=(Link)malloc(sizeof(Node)); /* 用於做新的連表 */
ll->next=NULL;
if(l->next==NULL)
{
printf("\n=====>提示:沒有資料可以排序!\n");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); /* 新建接點用於保存信息 */
s->data=p->data;
s->next=NULL;
rr=ll;
while(rr->next!=NULL )
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("\n=====>提示:排序已經完成!\n");
}
/*************************************************************************************/
void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打開文件時發生錯誤!\n");
exit(1);
}
p=l->next;
while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:文件保存成功.(有%d條記錄已經保存.)\n",count);
shoudsave=0;
}
fclose(fp);
}
/*************************************************************************************/
void main()
{
Link l;/* 連表 */
FILE *fp; /* 文件指針 */
int sel;
char ch;
char jian;
int count=0;
Node *p,*r;
printf("\t\t\t\t學生成績管理系統\n\t\t\t\t-------信息工程學院通信XXX\n");
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;
fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件還不存在,是否創建?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
printf("\n=====>提示:文件已經打開,正在導入記錄......\n");
while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)) /* 將文件的內容放入接點中 */
{
p->next=NULL;
r->next=p;
r=p; /* 將該接點掛入連中 */
count++;
}
}
fclose(fp); /* 關閉文件 */
printf("\n=====>提示:記錄導入完畢,共導入%d條記錄.\n",count);
while(1)
{
menu();
printf("請你選擇操作:");
scanf("%d",&sel);
if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("\n=====>提示:資料已經改動,是否將改動保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("\n=====>提示:你已經退出系統,再見!\n");
break;
}
switch(sel)
{
case 1:Add(l);break; /* 增加學生 */
case 2el(l);break;/* 刪除學生 */
case 3ur(l);break;/* 查詢學生 */
case 4:Modify(l);break;/* 修改學生 */
case 5:Save(l);break;/* 保存學生 */
case 9:printf("\t\t\t==========幫助信息==========\n");break;
default: Wrong();getchar();break;
}
}
}
⑹ C++課程設計 設計學校課程管理系統
《C++課程設計》
課程設計題目:學生成績管理系統
學生班級:*****
學生姓名:*****
學生學號:*****
(2)學生成績管理系統需求與功能分析
學生成績的錄入、統計、查詢、修改、刪除、輸出。 畫出功能結構圖。
(3)學生成績管理系統的數據結構表
序號 成員名(欄位名) 數據類型 長度 欄位含義
1 class_0 char 20 班級
2 num int 學號
3 name char 8 姓名
4 elec flaot 電子技術
5 c_prog float C 程序設計
6 media flaot 多媒體技術
7 eng float 大學英語
8 math float 高等數學
9 sport float 大學體育
10 polity float 馬克思主義政治經濟學
11 ave float 平均成績
12 order int 名次
(4)學生成績管理系統測試數據表
class_0 num name elec c_prog media eng math sport polity ave order
網路30331 3033101 馬雲飛 80 70 60 70 70 60 80 表中其餘數據自己編造。
(5)使用鏈表編寫程序(手寫源程序代碼,並給出註解)
0)定義鏈表結點
1)主函數main():定義鏈表頭指針,調用錄入、統計等函數對成績表進行處理;
2)建立鏈表函數Create():輸入班級到政治課成績信息;
3)統計函數Statistic():計算平均成績;
4)查詢函數Lookup():查詢指定學號學生成績記錄;
5)修改函數Modify():修改指定學號學生成績記錄;
6)刪除函數Delete():刪除指定學號學生記錄;
7)輸出函數Output():輸出班級所有學生成績記錄;
8)插入函數Insert():按平均分順序插入新結點。
9) 排序函數Sort():按平均分對學生成績記錄項進行降序排序;
程序如下:
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct Node//定義鏈表結點
{
char* class_0;//班級
int number;
char* name;//姓名
float elec;//電子技術成績
float c_prog;//C程序設計成績
float media;//多媒體技術成績
float eng;//大學英語成績
float math;//高等數學成績
float sport;//大學體育成績
float polity;//馬克思主義政治經濟學成績
float ave;//平均成績
int order;//名次
Node* link;
Node(){link=NULL;}
Node(int _number,char* _class_0,char* _name,float _elec,
float _c_prog,float _media,float _eng,float _math,
float _sport,float _polity,float _ave,int _order,Node* next)
{
number=_number;
class_0=new char[21];
strcpy(class_0,_class_0);
name=new char[9];
strcpy(name,_name);
elec=_elec;
c_prog=_c_prog;
media=_media;
eng=_eng;
math=_math;
sport=_sport;
polity=_polity;
ave=_ave;
order=_order;
link=next;
}
~Node()
{
delete []class_0;
delete []name;
}
};
class StudentScore
{
private:
Node* first;//鏈表的頭指針
int choice;//選擇數據的讀入方式
int fileNum;//當前文件數減一
int fileLoc;//定位當前文件
string* fileName;
int operChoice;
int RecordLength;
public:
StudentScore();
void Save();
void BuildList();//手工建立成績鏈表
void ReadInfo(int k);//從內存中讀入學生信息
void ClearList();
void Statistic();
void Sort();
void Add();
void Delete();
void PrintList();
void Menu();
};
StudentScore::StudentScore()
{
RecordLength=0;
operChoice=0;
first=NULL;
choice=0;
fileLoc=0;
fileNum=0;
fileName=new string[10];//最多可以存10個文件
}
int GetOrder(Node* first,float ave);
void StudentScore::BuildList()
{
int _number;//學號
char* _class_0=new char[21];//班級
char* _name=new char[9];//姓名
float _elec;//電子技術成績
float _c_prog;//C程序設計成績
float _media;//多媒體技術成績
float _eng;//大學英語成績
float _math;//高等數學成績
float _sport;//大學體育成績
float _polity;//馬克思主義政治經濟學成績
float _ave;//平均成績
int _order;//名次
char c;
Node *p,*r=NULL;
first=NULL;
cout<<"您要輸入學生成績信息?"<<endl;
while((c=getchar())=='n');
while(tolower(c)!='n')
{
cin>>_class_0;//班級
cin>>_number;
cin>>_name;//姓名
cin>>_elec;
cin>>_c_prog;
cin>>_media;
cin>>_eng;
cin>>_math;
cin>>_sport;
cin>>_polity;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//求得平均成績
_order=GetOrder(first,_ave);
p=new Node(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);//建立一個新的結點儲存信息
if(first!=NULL)
r->link=p;
else first=p;
r=p;
RecordLength++;
cout<<"您要輸入學生成績信息?"<<endl;
while((c=getchar())=='n');
}
}
int GetOrder(Node* first,float ave)//名次記錄有嚴重問題
⑺ :設計一個課程管理系統.系統具有查詢,輸入,保存,排序等功能.系統有一個菜單界面,可供功能選擇.
課程管理系統。。俺會做的。