學(xué)生成績記錄簿管理系統(tǒng)課程設(shè)計(jì)_第1頁
學(xué)生成績記錄簿管理系統(tǒng)課程設(shè)計(jì)_第2頁
學(xué)生成績記錄簿管理系統(tǒng)課程設(shè)計(jì)_第3頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1 需求分析研究背景教育信息化必將涉及許多具體的技術(shù)和機(jī)器在教育中的應(yīng)用, 它使得一些人 往往以技術(shù)論, 機(jī)器論的觀點(diǎn)來認(rèn)識教育信息化的目的, 認(rèn)為教育信息化就是以 機(jī)器代替教師講課,代替教育寫板書 ,就是以電子教材代替印刷教材,就是實(shí) 現(xiàn)網(wǎng)上學(xué)習(xí),并以代替性、省力性、順利性、效率性作為評價(jià)教育信息化的 尺度。而成績管理系統(tǒng)將大大的提高老師的管理效率, 使得老師可以針對學(xué)生的 具體情況進(jìn)行深入教育, 培養(yǎng)跨世紀(jì)的創(chuàng)新人才, 是實(shí)現(xiàn)教育的現(xiàn)代化。 教育信 息化應(yīng)以新的教育思想、 教育觀念指導(dǎo)信息技術(shù)在教育的各個(gè)部門、 各個(gè)領(lǐng)域廣 泛應(yīng)用,應(yīng)根據(jù)創(chuàng)新人才培養(yǎng)的要求,利用信息技術(shù),探索新的教育模式,

2、促進(jìn) 教育現(xiàn)代化。 只有在這樣的基礎(chǔ)上指導(dǎo)信息技術(shù)的教育應(yīng)用, 才是我們所需要的 教育信息化。也就相應(yīng)產(chǎn)生了對學(xué)生成績的高效管理。課題研究的目的及意義 現(xiàn)在我國各院高校的學(xué)生成績管理水平普遍不高,有的還停留在紙質(zhì)基礎(chǔ) 上,這種管理手段已不能適應(yīng)時(shí)代的發(fā)展, 因?yàn)樗速M(fèi)了許多的人力和物力。 在 當(dāng)今信息時(shí)代這種傳統(tǒng)的管理方法必然會(huì)被計(jì)算機(jī)為基礎(chǔ)的信息管理系統(tǒng)所代 替。成績管理系統(tǒng)提供了強(qiáng)大的管理功能, 方便管理員對考試成績等信息的添加、 修改、刪除、查詢、分類等操作。 本系統(tǒng)將提高管理人員的工作效率和工作質(zhì)量。如今,計(jì)算機(jī)網(wǎng)絡(luò)帶動(dòng)了全球信息化得進(jìn)程。 在高校中, 信息化帶來的傳統(tǒng) 教學(xué)、科研模式

3、的變化,需要新的管理機(jī)制:以信息技術(shù)為手段的校務(wù)管理,也 需要新的機(jī)制,即需要一個(gè)數(shù)字化的校園( Digital Campus )。數(shù)字校園的建設(shè) 也是高校信息化的重要組成部分。成績管理是學(xué)校管理中的異常重要的一個(gè)環(huán)節(jié), 作為學(xué)校, 除了育人,就是 與育知,學(xué)生成績管理的計(jì)算機(jī)化是整個(gè)學(xué)校教務(wù)管理中的重要一部分, 能否實(shí)現(xiàn)這一步關(guān)系到學(xué)校辦學(xué)整體效率的高低, 在于它的重要性, 學(xué)生成績管理系統(tǒng) 的開發(fā)與應(yīng)用就逐漸提入議程,并占著重要的分量運(yùn)用成績管理系統(tǒng)可以減輕學(xué)院教學(xué)人員的工作量, 加快查詢速度, 加強(qiáng)管 理,以及國家各部門關(guān)于信息化的步伐, 是各項(xiàng)管理更加規(guī)范化。 同時(shí)也可以是 學(xué)生能夠盡

4、快知道自己的考試成績, 投入新的課程的學(xué)習(xí)或復(fù)習(xí)。 并且也可為高 校教育在未來市場的競爭力的提高打下堅(jiān)實(shí)的基礎(chǔ)。課題要求1. 以線性鏈表存儲(chǔ)包括學(xué)號、姓名、 c 語言成績的學(xué)生信息。2. 在程序執(zhí)行過程中, 根據(jù)輸出的提示信息, 通過鍵盤輸入程序中的運(yùn)算命 令;相應(yīng)的輸入數(shù)據(jù)和運(yùn)算結(jié)果顯示在其后。3. 程序執(zhí)行命令包括:<1>.輸入學(xué)生信息<2>.顯示全部信息<3>.查詢學(xué)生信息<4>.刪除學(xué)生信息<5>.插入學(xué)生信息<6>.修改學(xué)生信息<7>. 顯示分類信息<0>. 退出系統(tǒng)2 概要設(shè)計(jì)抽象數(shù)據(jù)類

5、型定義 為實(shí)現(xiàn)上述程序功能,以線性鏈表為存儲(chǔ)結(jié)構(gòu),為此,進(jìn)行抽象數(shù)據(jù)類型定 義:ADT Student數(shù)據(jù)對象: D=e1,e2,e3|e1,e2,e3 student( 儲(chǔ)存學(xué)生信息的結(jié)構(gòu)體 )數(shù)據(jù)關(guān)系: R=<e1,e2,e3> 基本操作 P:creatList(&L)操作結(jié)果:構(gòu)造一個(gè)空的線性鏈表。getelem(L,e ,&p);初始條件:線性鏈表 L 已存在。操作結(jié)果:在 L 中查找含有 e 元素的 p 節(jié)點(diǎn)是否存在,若存在則返回 OK,否則返 回 ERRO。Rinput(&L);初始條件:線性鏈表 L 已存在。操作結(jié)果:向鏈表尾插入新節(jié)點(diǎn)信息。a

6、ll(&L);初始條件:線性鏈表 L 已存在。操作結(jié)果 : 顯示線性鏈表 L的所有節(jié)點(diǎn)信息。list(&L);初始條件:線性鏈表 L 已存在。操作結(jié)果:查詢是否存在給定信息的節(jié)點(diǎn),若存在則返回OK,否則返回 ERRO。Rdele(&L);初始條件:線性鏈表 L 已存在。操作結(jié)果:刪除給定信息的節(jié)點(diǎn),若成功則返回OK,否則返回 ERRO。Rappend(&L);初始條件:線性鏈表 L 已存在。操作結(jié)果:在給定的信息節(jié)點(diǎn)后插入所輸入的信息節(jié)點(diǎn),若成功則返回返回 ERRO。ROK,否則modify(&L);初始條件:線性鏈表 L 已存在。操作結(jié)果:查詢所輸入的

7、信息結(jié)點(diǎn),并修改其信息。 classify(&L);初始條件:線性鏈表 L 已存在。操作結(jié)果:按照給定的條件將所有結(jié)點(diǎn)信息分類,并輸出各類別信息。 ADT Student程序流程圖開始NO輸入 學(xué)生 信息3 詳細(xì)設(shè)計(jì)存儲(chǔ)結(jié)構(gòu)及方式本系統(tǒng)得學(xué)生信息采用結(jié)構(gòu)體 student 定義,并用單鏈表存儲(chǔ): typedef struct studentchar num13; 本程序的運(yùn)行環(huán)境為WINDOWS操作系統(tǒng),運(yùn)行軟件為Microsoft Visual C+ ;2. 開始運(yùn)行程序,輸入登錄密碼“ ting ”, 開始進(jìn)入主菜單。3. 若用戶首次登陸 , 則應(yīng)首先進(jìn)行學(xué)生信息錄入 , 否則即可

8、按照主菜單的選項(xiàng)選 擇所要執(zhí)行功能,須進(jìn)行合法的數(shù)據(jù)輸入。4. 當(dāng)輸入 1,則進(jìn)行學(xué)生信息輸入操作,按要求輸入學(xué)號(小于12 位整數(shù)),姓名(小于 15 的字符串),每次均用回車鍵結(jié)束輸入。5. 當(dāng)輸入 2,則顯示已錄入全部學(xué)生信息。6. 當(dāng)輸入 3,則進(jìn)行學(xué)生信息查詢操作,用戶需要輸入所要查詢學(xué)生的學(xué)號或 姓名,若該學(xué)生信息存在,則系統(tǒng)會(huì)顯示該學(xué)生的全部信息。7. 當(dāng)輸入 4,則進(jìn)行刪除學(xué)生信息操作,用戶需要輸入所要?jiǎng)h除的學(xué)生學(xué)號, 若該學(xué)號存在,系統(tǒng)會(huì)將其刪除。8. 當(dāng)輸入 5,則進(jìn)行插入學(xué)生信息操作,該操作是在已經(jīng)錄入的一位學(xué)生后插 入新學(xué)生信息。用戶需要首先輸入該已錄入的學(xué)生學(xué)號,后輸

9、入新學(xué)生信息。9. 當(dāng)輸入 6,則進(jìn)行修改學(xué)生信息操作,用戶需要輸入需要修改的學(xué)生學(xué)號或 姓名,若該學(xué)生信息存在,則會(huì)提示繼續(xù)輸入修改信息,否則退出返回主菜單。10. 當(dāng)輸入 7,則按照 c 語言成績將學(xué)生信息以 60分以下、 6079分、8089 分、90 分以上等級別進(jìn)行分類并顯示。11. 當(dāng)輸入 0,則退出系統(tǒng),并保存最終的所有學(xué)生信息,程序運(yùn)行完畢。6 測試數(shù)據(jù)及結(jié)果1,使用密碼,首次進(jìn)入學(xué)生記錄簿信息管理系統(tǒng):2,進(jìn)入系統(tǒng)界面 , 對不合法輸入做出判斷:3,選擇 1,輸入學(xué)生信息 , 并對不合法輸入作出判斷4,顯示全部信息:5,查詢學(xué)生信息:6,刪除學(xué)生信息,并對不合法輸入作出判斷

10、, 后顯示結(jié)果:7,插入學(xué)生信息,后顯示結(jié)果:8,修改學(xué)生信息,對不合法輸入做出判斷,后顯示結(jié)果:9,顯示分類信息:10,退出系統(tǒng)并保存信息,所輸入信息將保存在 C 盤下的 sort 文件下參考文獻(xiàn)1 嚴(yán)蔚敏,吳偉民編著 . 數(shù)據(jù)結(jié)構(gòu) (C 語言版 ). 北京:清華大學(xué)出版社,2 孟愛國,左利芳,謝中科等編著 .C 語言程序設(shè)計(jì) . 上海:復(fù)旦大學(xué)出版社,3 馬春江 , 李慧勇, 孟繁軍編著 . 新編數(shù)據(jù)結(jié)構(gòu)教程 . 北京: 中國電力出版 社,20064 孫淑霞,肖陽春,魏琴等 .C/C+程序設(shè)計(jì)教程(第 2 版)。北京:電子工業(yè) 出版社,5 譚浩強(qiáng)。 C+程序設(shè)計(jì)。北京:清華大學(xué)出版社, 2

11、004,066 朱戰(zhàn)立編著 .數(shù)據(jù)結(jié)構(gòu)使用 C+語言. 西安:西安電子科技大學(xué)出版社,7 繆淮扣,顧訓(xùn)穰,沈俊編著 .數(shù)據(jù)結(jié)構(gòu): C+實(shí)現(xiàn).北京:科學(xué)出版社, 2002附錄 源代碼程序#include <>#include ""#include ""#include <>#include ""#include ""#define ERROR 0#define OK 1#define N 2 typedef int Status;typedef struct studentchar num13

12、; 入學(xué)生信息 "<<endl<<endl;cout<<setw(26)<<""<<n+<<".顯示全部信息 "<<endl<<endl;cout<<setw(26)<<""<<n+<<".查詢學(xué)生信息 "<<endl<<endl;cout<<setw(26)<<""<<n+<&

13、lt;".刪除學(xué)生信息 "<<endl<<endl;cout<<setw(26)<<""<<n+<<".插入學(xué)生信息 "<<endl<<endl;cout<<setw(26)<<""<<n+<<".修改學(xué)生信息 "<<endl<<endl;cout<<setw(26)<<""<&l

14、t;n+<<".顯示分類信息 "<<endl<<endl;cout<<setw(26)<<""<<"0. 退出系統(tǒng) "<<endl<<endl<<endl;cout<<setw(22)<<""<<" 請選擇: "cin>>select; if(select>='0'&&select<='7&

15、#39;);elsecout<<endl<<setw(26)<<" 非法數(shù)據(jù)!請重新輸入! system("pause");select=menu();return select;char Exit()/退出系統(tǒng)system("cls");char s;cout<<setw(36)<<" 確定退出系統(tǒng)請輸入 "Y" 或"y" "<<endl; cin>>s;return s;void creatList

16、(pstunode &head)/ 建立帶表頭空鏈表head=(pstunode)malloc(sizeof(stunode);if(!head) exit(0); head->next=NULL;Status input(pstunode &head)/ 輸入學(xué)生信息system("cls");char m;char s50;int i,k;pstunode p,q,frist,last;for(q=head;q->next;q=q->next);last=q;do frist=( pstunode)malloc(sizeof(stuno

17、de);if(!frist) return ERROR;cout<<setw(25)<<" 請輸入學(xué)生學(xué)號: "do/ 學(xué)號過長或?yàn)榉钦麛?shù)時(shí)則重新輸入k=1;cin>>s;if(strlen(s)<=12) strcpy(frist->,s);else k=0;cout<<" 您輸入的學(xué)號過長 ( 小于 12 位) ,請重新輸入: " / 學(xué) 號 過長則重新輸入for(i=0;si!=0;i+)if(si>='0'&&si<='9')

18、continue;else k=0;cout<<" 您輸入的學(xué)號為非整數(shù),請重新輸入: "break;while(k=0);for(p=head->next;p;p=p->next)if(strcmp(frist->,p->=0)/ 如果學(xué)號輸入重復(fù)則退出 free(frist);cout<<" 該學(xué)號已存在! "<<endl;system("pause");return ERROR;cout<<setw(25)<<" 請輸入學(xué)生姓名: &q

19、uot;do/ 姓名過長則重新輸入k=1;cin>>s;if(strlen(s)<=15)strcpy(frist->,s);elsek=0;cout<<" 您輸入的姓名過長 (小于 15 位) ,請重新輸入: "while(k=0);cout<<setw(25)<<" 請輸入該學(xué)生 c 語言成績: cin>>frist->frist->next=NULL;last->next=frist;last=frist;cout<<endl<<endl;cou

20、t<<" 繼續(xù)輸入請按 "y"或 "Y" ,否則按任意鍵結(jié)束輸入:"<<endl;m=getch();cout<<m<<endl;while(m='y'|m='Y');return OK;顯示全部信息Status all(pstunode &head)/system("cls"); pstunode p;p=head->next;if(!head->next) cout<<"該系統(tǒng)學(xué)生信息為空!

21、 "<<endl;system("pause"); returnERROR;else while(p)cout<<" 學(xué) 號:"<<setiosflags(ios:left)<<setw(13)<<p-><<"名 :"<<setw(15)<<p-><<" 該學(xué)生的 c 語言成績?yōu)椋?"<<p-><<endl;ERROR;returnp=p->next;

22、cout<<endl<<endl;system("pause");return OK;Status all2(pstunode &head)/顯示全部信息 , 為 classify() 所特殊調(diào)用pstunode p;p=head->next;if(!head->next) cout<<" 該類學(xué)生信息為空! "<<endl<<endl<<endl; return else while(p)cout<<" 學(xué) 號 :"<<

23、;setiosflags(ios:left)<<setw(13)<<p-><<"名 :"<<setw(15)<<p-><<" 該學(xué)生的 c 語言成績?yōu)椋?"<<p-><<endl;p=p->next;cout<<endl;cout<<endl<<endl;return OK;Status list(pstunode &head)/ 查詢學(xué)生信息system("cls");c

24、har num313;pstunode p;if(!head->next) cout<<" 該系統(tǒng)學(xué)生信息為空! "<<endl;system("pause"); ERROR;cout<<" 請輸入您想查詢的學(xué)生學(xué)號或者姓名 :"<<endl;cin>>num3;查找,若不成功則退出if(!getelem(head,num3,p) return ERROR;/cout<<" 該學(xué)生學(xué)號是: "<<p-><<e

25、ndl;cout<<" 該學(xué)生姓名是: "<<p-><<endl;cout<<" 該學(xué)生 c 語言成績?yōu)椋?"<<p-><<endl;cout<<endl;system("pause");return OK;Status dele(pstunode &head)/ 刪除學(xué)生信息system("cls");char num113;"<<endl;system("pause"

26、);pstunode p1,p2;/p1 為要?jiǎng)h除的節(jié)點(diǎn), p2 為其前一個(gè)節(jié)點(diǎn) if(!head->next) cout<<" 該 系 統(tǒng) 學(xué) 生信息 為 空 ! return ERROR;cout<<" 請輸入要?jiǎng)h除的學(xué)生學(xué)號 "<<endl;cin>>num1;p1=head->next;while(strcmp(p1->,num1)!=0&&p1->next!=NULL)p2=p1;p1=p1->next ;if(strcmp(p1->,num1)=0)if

27、(p1=head->next)head->next=p1->next;elsep2->next=p1->next;free(p1);cout<<" 學(xué)號為 "<<num1<<" 的學(xué)生的信息已刪除! "<<endl;elsecout<<" 學(xué)號 "<<num1<<"不存在! "<<endl;system("pause");return ERROR; system(&quo

28、t;pause");return OK;Status append(pstunode &head)/ 插入學(xué)生信息system("cls");char num13;char s50;int i,k;if(!head->next) cout<<" 該系統(tǒng)學(xué)生信息為空! "<<endl;system("pause"); return ERROR;pstunode p1,p2,p3;/p1 為指向要插入的前驅(qū)節(jié)點(diǎn), p2 指向要插入的新節(jié)點(diǎn), p3 用于 循環(huán)cout<<"

29、; 請輸入你要在該學(xué)生后插入新學(xué)生信息,則其學(xué)號為: "<<endl; cin>>num;cout<<endl;if(!getelem(head,num,p1) return ERROR;/ 查找,若不成功則退出 p2=(pstunode)malloc(sizeof(stunode);cout<<" 請輸入您想插入的學(xué)生學(xué)號,姓名, c+ 成績: "<<endl;do/ 學(xué)號過長或?yàn)榉钦麛?shù)時(shí)則重新輸入k=1;cin>>s;if(strlen(s)<=12)strcpy(p2->,s

30、);elsek=0;cout<<" 您輸入的學(xué)號過長 (小于 12 位) ,請重新輸入: "/ 學(xué)號過長則重新輸入for(i=0;si!=0;i+)if(si>='0'&&si<='9') continue;else k=0;cout<<" 您輸入的學(xué)號為非整數(shù),請重新輸入: "break; while(k=0);for(p3=head->next;p3;p3=p3->next)/ 如果學(xué)號輸入重復(fù)則退出 if(strcmp(p2->,p3->=0

31、)cout<<" 該學(xué)號已存在! "<<endl;system("pause");return ERROR;cout<<setw(25)<<" 請輸入學(xué)生姓名: "do/ 姓名過長則重新輸入k=1;cin>>s;if(strlen(s)<=15)strcpy(s,p2->else k=0;cout<<" 您輸入的姓名過長 ( 小于 15 位) ,請重新輸入: " while(k=0);cout<<setw(25)<

32、<" 請輸入該學(xué)生 c 語言成績: "cin>>p2-> p2->next=p1->next;p1->next=p2;system("pause");return OK;修改學(xué)生信息Status modify(pstunode &head)/system("cls");pstunode p;char num13;char s50;int i,k;if(!head->next) cout<<" 該系統(tǒng)學(xué)生信息為空! "<<endl;sys

33、tem("pause"); return ERROR;cout<<" 請輸入要修改的學(xué)生的學(xué)號或姓名: "cin>>num;if(!getelem(head,num,p) return ERROR; /查找,若不成功則退出cout<<" 請輸入該學(xué)生的學(xué)號: "do/ 學(xué)號過長或?yàn)榉钦麛?shù)時(shí)則重新輸入k=1;cin>>s;if(strlen(s)<=12)strcpy(s,p->elsek=0;cout<<" 您輸入的學(xué)號過長 (小于 12位) ,請重新輸

34、入: " / 學(xué)號過 長 則重新輸入for(i=0;si!=0;i+)if(si>='0'&&si<='9') continue;else k=0;cout<<" 您輸入的學(xué)號為非整數(shù),請重新輸入: "break;while(k=0);cout<<" 請輸入學(xué)生姓名: "do/ 姓名過長則重新輸入k=1;cin>>s;if(strlen(s)<=15)strcpy(p->,s);elsek=0;cout<<" 您輸入

35、的姓名過長 (小于 15 位) ,請重新輸入: "while(k=0);cout<<" 請輸入學(xué)生 c 語言成績: "cin>>p->system("pause");return OK;Status classify(pstunode &head)/顯示分類信息system("cls");pstunode p,q1,q2,q3,q4,s;pstunode L1,L2,L3,L4;creatList(L1);creatList(L2);creatList(L3);creatList(L4)

36、;q1=L1;q2=L2;q3=L3;q4=L4;if(!head->next) cout<<"該系統(tǒng)學(xué)生信息為空! "<<endl;system("pause"); returnERROR;for(s=head->next;s;s=s->next)p=( pstunode)malloc(sizeof(stunode);if(!p) return ERROR;if(s-><60)strcpy(p->,s->strcpy(p->,s->p->=s->/p->ne

37、xt=NULL;q1->next=p;q1=p;else if(s->>=60&&s-><80)strcpy(p->,s->strcpy(p->,s->p->=s->/ p->next=NULL;q2->next=p;q2=p;else if(s->>=80&&s-><90)strcpy(p->,s->strcpy(p->,s->p->=s->/p->next=NULL;q3->next=p;q3=p;else i

38、f(s->>=90)strcpy(p->,s->strcpy(p->,s->p->=s->/ p->next=NULL;q4->next=p;q4=p;cout<<"(1)60 分以下者學(xué)生信息: "<<endl<<endl;all2(L1);cout<<"(2)6079 分學(xué)生信息: "<<endl<<endl;all2(L2);cout<<"(3)8089 分學(xué)生信息: "<<endl<<endl;復(fù)制數(shù)據(jù)復(fù)制數(shù)據(jù)復(fù)制數(shù)據(jù)復(fù)制數(shù)據(jù)all2(L3);cout<<"(4)90 分以上者學(xué)生信息: "<<endl<<endl;all2(L4);system("pause");return OK;Status getelem(pstunode head,char number11,pstunode &p)/ 查找學(xué)生信息 p=head->next;while(p) if(strcmp(p->,number)!=0&&strcmp(p->,num

溫馨提示

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

評論

0/150

提交評論