




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、徐 州 師 范 大 學 科 文 學 院本 科 生 課 程 設 計課 程 名 稱: 計算機程序設計c+ 題 目: 學生信息管理系統(tǒng) 專 業(yè) 班 級: 電子信息工程 學 生 姓 名: 學 生 學 號: 日 期: 2010-12-20 指 導 教 師: 科文學院教務部印制一、課程設計目的、任務和內(nèi)容要求:(1)使學生掌握c+編程的基本工作原理; (2)培養(yǎng)學生基本掌握c+應用編程的基本思路和方法; (3)使學生掌握c+應用調(diào)試的基本技能;(4)培養(yǎng)學生分析、解決問題的能力;(5)提高學生的科技論文寫作能力任務如下: 1進行需求分析和概要設計,給出流程圖。 2寫出詳細設計,熟悉其中采用的關(guān)鍵技術(shù)。3給
2、出具體的編碼實現(xiàn)并調(diào)試。4寫課程設計報告提交源程序。內(nèi)容要求:設計并完成軟件系統(tǒng)。要求:1應具有簡潔友好的用戶界面。2要求軟件系統(tǒng)的功能完整。3要求程序具備正確性,可讀性和運行的高效性。 二、進度安排:第2天: 查找資料,進行需求分析和概要設計;第25天: 各模塊的詳細設計;第510天: 軟件實現(xiàn)與調(diào)試;第1014天:寫課程設計報告并提交源程序。三、主要參考文獻:1. 劉覺夫 王更生等編著c+程序設計,北京郵電大學出版社2. 曾輝 王更生 李廣麗等編著c+程序設計實訓教程,北京郵電大學出版社3. 譚浩強編著c+面向?qū)ο蟪绦蛟O計,北京清華大學出版社4. 百度文庫(尋找c+課程設計的模版及簡易源代
3、碼)指導教師簽字: 年 月 日摘要5abstract61 概述71.1功能需求分析:71.11學生成績的讀入和寫出模塊71.12學生成績輸入刪除模塊71.13學生成績的查詢模塊71.14學生成績的分類匯總模塊71.2 環(huán)境需求分析71.3 方法需求分析72設計方案簡述82.1 系統(tǒng)功能模塊圖82.2 設計思想:83詳細設計93.1 設計原理93.2程序詳細代碼描述93.3系統(tǒng)界面214 設計結(jié)果及分析224.1調(diào)試過程224.2操作說明23總 結(jié)24參考文獻25摘要隨著科學技術(shù)的發(fā)展,計算機領域不斷取得新的研究成果。計算機在代替和延伸腦力勞動方面發(fā)揮越來越重要的作用,不僅在工業(yè)方面而且在日常生
4、活中也越來越離不開計算機。尤其是在學校里,要處理大量的學生數(shù)據(jù)。隨著科學技術(shù)的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用.作為計算機應用的一部分,使用計算機對學生成績信息進行管理,有著手工管理所無法比擬的優(yōu)點。學生成績管理系統(tǒng)能方便用戶迅速、準確處理學生的成績,得到想要的數(shù)據(jù)并能將學生的信息以文檔保存。本文介紹了簡易學生成績管理系統(tǒng)在microsoft visual c+ 6.0環(huán)境下的實現(xiàn)過程:系統(tǒng)的分析,功能模塊的設計,系統(tǒng)的調(diào)試和測試。此系統(tǒng)的主要管理的信息有:學生的班級,學號,姓名和三(可以更改)門課的成績。本系統(tǒng)的主
5、要功能有學生成績的添加、刪除、插入、顯示,能對學生成績按分數(shù)或?qū)W號進行排序,可以根據(jù)用戶的要求按班級,姓名,學號查詢學生的成績信息,計算每位學生的總分,分類匯總統(tǒng)計每門課的的總分均分能保存信息到文件以及從文件中讀取信息等功能。關(guān)鍵詞:學生成績管理系統(tǒng);功能模塊(函數(shù));指針;結(jié)構(gòu);鏈表;文件保存及讀取abstractwith the development of science and technology, computer field has made new research achievements. computer in replacing and extension of men
6、tal work plays more and more important role, not only in the industrial sector and in daily life, also more and more inseparable from the computer. especially in the school, to deal with large numbers of students data. along with the science and technology unceasing enhancement, the computer science
7、 is mature day after day, its formidable function hadprofoundly known for the people, it entered the human society eachdomain and plays a more and more important role. as a part of computer application, use the computer to students performance information management, with crafts incomparable advanta
8、ges.students performance management system can convenient user fast, accurate processing students scores, the desired data and students information according to the document preservation. this paper introduces the simple student performance management system in microsoft visual c + + 6.0 environment
9、 of realization process: system analysis, function module design, system commissioning and testing. the systems main management information are: student class, student id, name and three (can change) course grades. the systems main function of the students grade add, delete, insert, display, can acc
10、ording to the grades of student achievement or student id sorting, can according to the users requirements according to class, name, student id inquires the student performance information, calculate each students total score, collect classified per course total score alike can store information fro
11、m the document to the file and read information, and other functions.keywords:students performance management system; function module (function);pointers;structure;list;file save and load1 概述此系統(tǒng)的主要管理的信息有:學生的班級,學號,姓名和三(可以更改)門課的成績。本系統(tǒng)的主要功能有學生成績的添加、刪除、插入、顯示,能對學生成績按分數(shù)或?qū)W號進行排序,可以根據(jù)用戶的要求按班級,姓名,學號查詢學生的成績信息,
12、計算每位學生的總分,分類匯總統(tǒng)計每門課的的總分均分能保存信息到文件以及從文件中讀取信息等功能。1.1功能需求分析:簡易學生成績管理系統(tǒng)主要有4個大的模塊:學生成績從文件讀入和寫入,學生成績的輸入和刪除,學生成績信息的查詢,以及學生成績的分類匯總。1.11學生成績的讀入和寫出模塊主要功能是讀出要管理的成績文檔,保存修改后的成績文檔。實際生活中學生成績的文件主要以word或excel保存,為了方便操作我在調(diào)式本系統(tǒng)中成績文件采用了txt的文檔格式保存,當然以word文檔形式保存也是可以的。1.12學生成績輸入刪除模塊主要功能是輸入、追加、刪除學生成績的操作。添加操作是根據(jù)用戶的要求實現(xiàn)的。例如用戶
13、可以輸入要刪除學生的學號刪除學生的信息。1.13學生成績的查詢模塊主要功能是按照用戶的要求查詢學生的成績。其中用戶可以選擇查詢單個學生的成績還是某個班級的成績,成績查詢中包括個人學生的總分,。1.14學生成績的分類匯總模塊統(tǒng)計主要功能是某個班級的每門學科的總分。1.2 環(huán)境需求分析操作系統(tǒng): windows xp開發(fā)軟件: visual c+ 6.01.3 方法需求分析由于數(shù)組存放數(shù)據(jù)的時候要先確定數(shù)組的規(guī)模,不能動態(tài)的分配內(nèi)存空間,而單鏈表是非連續(xù)存放的,可以對內(nèi)存空間進行動態(tài)分配,此系統(tǒng)是用單鏈表完成的。然后定義鏈表的結(jié)點類型為結(jié)構(gòu)就可以實現(xiàn)對學生學號、姓名、成績、班級等學保存。2設計方案
14、簡述2.1 系統(tǒng)功能模塊圖 學 生 成 績 管 理 系 統(tǒng) 鏈表的初始化 輸入學生成績刪除學生成績顯示學生成績按姓名找學生保存學生成績讀取學生成績計算總分學生成績排序按學號查成績分類合計2.2 設計思想:學生成績管理系統(tǒng)是用面向?qū)ο蟮姆椒ㄔO計,由于數(shù)組的存放是連續(xù)的,而單鏈表是非連續(xù)存放的,是動態(tài)分配內(nèi)存空間,因此此系統(tǒng)采用單鏈表來完成。各個功能模塊的實現(xiàn)主要轉(zhuǎn)變到對單鏈表的遍歷,添加和刪除結(jié)點。3詳細設計3.1 設計原理 學生成績管理系統(tǒng)以菜單選擇,通過調(diào)用各個函數(shù),對單鏈表的遍歷,實現(xiàn)不同的功能,不同函數(shù)處理后返回的只是一個頭結(jié)點,但是通過頭結(jié)點可以找到所有鏈表中的信息,只要有函數(shù),找到頭
15、指針就能進行相應的操作,所以模塊化的程序方便以后添加或者刪除某些功能,程序中通過system(“cls”)清屏函數(shù)實現(xiàn)界面的轉(zhuǎn)換,主函數(shù)中的循環(huán)保證程序不會退出,一個循環(huán)和一個清屏函數(shù)實現(xiàn)了主菜單和各子畫面的切換(子函數(shù))。這樣的話各個子函數(shù)都可以調(diào)用一開始輸入的數(shù)據(jù),這樣就實現(xiàn)了各個不同函數(shù)調(diào)用時都能使用整個系統(tǒng)連續(xù)起來了。作為一個學生成績管理系統(tǒng),增加了文件的讀入和寫出功能,增加了程序的實用性。3.2程序詳細代碼描述#include #include #include #include using namespace std; #define max 100; class student
16、public: student *next; public: string name;/姓名 long num;/學號 int x,y,z;int aa;/總分 void play()coutname學生的學號是num,c+:x,微機原理:y,數(shù)字信號處理:z,總分:aanext; delete stu; stu=p; stu=0; void sadd(); /添加 void sremove(); /刪除 void samend(); /修改 void ssearch(); /查詢 void staxis(); /排序 void ssave(); /保存 void sload(); /讀取 /
17、排序函數(shù) void pxh(); void psx(); void pyw(); void pyy(); void paa(); private: student *stu; /頭接點 ; void cla:sadd()/添加 student *q; string name1; long num1; int x1,y1,z1; system(cls); coutn *增加的學生* nendl; cout請輸入學生的(中間用空格間隔) endl; cout姓名 學號 c+ 微機原理 數(shù)字信號處理:name1num1x1y1z1; q=new student(name1,num1,x1,y1,z1
18、); q-next=0; q-aa=x1+y1+z1; if(stu) student *t; t=stu; if(t-num=num1) cout學號已存在,請重新輸入next) if(t-num=num1) cout學號已存在,請重新輸入next; t-next=q; else stu=q; cout輸入完畢endl; void cla:sremove()/刪除 system(cls); int num1; coutn* 刪除學生信息 *n; coutnum1; /查找要刪除的結(jié)點 student *p1,*p2; p1=stu; while(p1) if(p1-num=num1) bre
19、ak; else p2=p1; p1=p1-next; /刪除結(jié)點 if(p1!=null)/若找到結(jié)點,則刪除 p1-play(); cout確定刪除嗎?y/nc; if(toupper(c)!=y) return; if(p1=stu) /若要刪除的結(jié)點是第一個結(jié)點 stu=p1-next; delete p1; else /若要刪除的結(jié)點是后續(xù)結(jié)點 p2-next=p1-next; delete p1; cout找到學號為num1的學生,并刪除n; else /未找到結(jié)點 cout未找到想要刪除的學生!n; void cla:samend()/修改 system(cls); long n
20、um1; coutn* 修改學生信息 *n; coutnum1; /查找要修改的結(jié)點 student *p1,*p2; p1=stu; while(p1) if(p1-num=num1) break; else p2=p1; p1=p1-next; if(p1!=null) cout學號是num1的學生的信息endl; cout姓名 namec+x微機原理y數(shù)字信號處理zendl; cout請輸入修改后的信息:姓名 c+成績 微機原理成績 數(shù)字信號處理成績p1-namep1-xp1-yp1-z; p1-aa=p1-x+p1-y+p1-z; cout修改成功endl; else /未找到接點 c
21、out未找到!n; void cla:ssearch()/查詢 system(cls); coutn* 查詢學生信息 *nendl; cout請輸入查詢方式:endl; cout1.按學號查詢endl; cout2.按姓名查詢endl; cout3.返回c; switch (c) case 1: long num1; cout要查詢的學號num1; /查找要查詢的結(jié)點 student *p1,*p2; p1=stu; while(p1) if(p1-num=num1) break; else p2=p1; p1=p1-next; if(p1!=null) cout學號是num1的學生的信息en
22、dl; cout姓名:name c+:x 微機原理:y 數(shù)字信號處理:zendl; cout查詢完畢.; else /未找到接點 cout未找到!n; break; case 2: string name1; cout要查詢的學生姓名name1; /查找要查詢的結(jié)點 student *p1,*p2; p1=stu; while(p1) if(p1-name=name1) break; else p2=p1; p1=p1-next; if(p1!=null) coutname1的學生的信息endl; cout學號:num c+:x 微機原理:y 數(shù)字信號處理:zendl; cout查詢完畢.;
23、else /未找到接點 coutnext) n+; p1=p1-next; cout共有n條信息.endl; int i; p1=stu; for(i=1;inump1-next-num) / 如果頭結(jié)點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結(jié)點交換 stu=p2; p1=stu; while(p1-next-next) /中間的交換 p2=p1; p1=p1-next; if(p1-nump1-next-num) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1
24、; p1=p2-next; /交換 p1=stu; do p1-play(); p1=p1-next; while(p1); void cla:psx()student *p1,*p2; int n; p1=stu; n=1; while(p1-next) n+; p1=p1-next; cout共有n條信息.endl; int i; p1=stu; for(i=1;ixp1-next-x) / 如果頭結(jié)點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結(jié)點交換 stu=p2; p1=stu; while(p1-next-next)
25、 /中間的交換 p2=p1; p1=p1-next; if(p1-xp1-next-x) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交換 p1=stu; do p1-play(); p1=p1-next; while(p1); void cla:pyw() student *p1,*p2; int n; p1=stu; n=1; while(p1-next) n+; p1=p1-next; cout共有n條信息.endl; int i; p1=stu; for(i=1;iyp1-next-y) /
26、如果頭結(jié)點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結(jié)點交換 stu=p2; p1=stu; while(p1-next-next) /中間的交換 p2=p1; p1=p1-next; if(p1-yp1-next-y) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交換 p1=stu; do p1-play(); p1=p1-next; while(p1); void cla:pyy() student *p1,*p2; int n;
27、 p1=stu; n=1; while(p1-next) n+; p1=p1-next; cout共有n條信息.endl; int i; p1=stu; for(i=1;izp1-next-z) / 如果頭結(jié)點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結(jié)點交換 stu=p2; p1=stu; while(p1-next-next) /中間的交換 p2=p1; p1=p1-next; if(p1-zp1-next-z) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1;
28、 p1=p2-next; /交換 p1=stu; do p1-play(); p1=p1-next; while(p1); void cla:paa()/按總分排序 student *p1,*p2; int n; p1=stu; n=1; while(p1-next) n+; p1=p1-next; cout共有n條信息.endl; int i; p1=stu; for(i=1;iaap1-next-aa) / 如果頭結(jié)點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結(jié)點交換 stu=p2; p1=stu; while(p1-ne
29、xt-next) /中間的交換 p2=p1; p1=p1-next; if(p1-aap1-next-aa) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交換 p1=stu; do p1-play(); p1=p1-next; while(p1); void cla:staxis()/排序 system(cls); char c; cout請選擇以何種方式排序:endl; cout1以學號排序endl; cout2以c+成績排序endl; cout3以微機原理成績排序endl; cout4以數(shù)字信號處
30、理成績排序endl; cout5以總分排序endl; cout6返回endl; cout請選擇(1-6)c; switch (c) case 1:pxh(); break; case 2:psx(); break; case 3:pyw(); break; case 4:pyy(); break; case 5:paa(); break; case 6:return; void cla:ssave() /保存到文件 system(cls); char c; coutc; if(toupper(c)!=y) return; ofstream tfile(date.txt,ios_base:bin
31、ary); student *p=stu; while(p)/ 寫入文件 tfilenametnumtxtytz; tfilenext; tfile.close(); cout保存完畢.next; delete p; p=stu; ifstream tfile(date.txt,ios_base:binary); string name1; long num1; int x1,y1,z1; tfilename1num1x1y1z1; while(tfile.good() /創(chuàng)建學生接點 student *s; s=stu; s=new student(name1,num1,x1,y1,z1);
32、 s-next=0; s-aa=x1+y1+z1; if(stu) /若已經(jīng)存在結(jié)點 student *p2; p2=stu; while(p2-next) /查找尾結(jié)點 p2=p2-next; p2-next=s; /連接 else /若不存在結(jié)點(表空) stu=s; /連接 tfilename1num1x1y1z1; tfile.close(); coutn學生信息已經(jīng)裝入.n; void main() char c; cla a; do coutn 學 生 成 績 管 理 系 統(tǒng) n; cout*n; cout 作者:08電信 吳龍 n; cout 1增加學生 n; cout 2刪除學
33、生 n; cout 3修改學生 n; cout 4查詢學生信息 n; cout 5排序 n; cout 6保存信息 n; cout 7讀取信息 n; cout 8退出 n; cout*n; coutc; switch(c) case 1: a.sadd();break; case 2: a.sremove();break; case 3: a.samend();break; case 4: a.ssearch();break; case 5: a.staxis();break; case 6: a.ssave();break; case 7: a.sload();break; while(c!
34、=8); 3.3系統(tǒng)界面系統(tǒng)主菜單列出了該程序的所有功能,學生個人的總分在輸入創(chuàng)建鏈表是就計算好并儲存好了,同時顯示學生信息是就一起顯示出來了,使用時該適當?shù)氖褂玫谝粋€初始化鏈表的功能,否則可能出現(xiàn)意想不到的錯誤。初始界面圖01:4 設計結(jié)果及分析4.1調(diào)試過程增加學生修改信息查詢方式排序方式保存信息 4.2操作說明一個成績管理系統(tǒng)如果不能進行文檔的讀出和寫入的操作,功能再多,程序關(guān)閉后,所做的操作都將沒有,這就失去了實際的意義。此系統(tǒng)當用戶退出系統(tǒng)時,用戶可以選擇是否保存已做的修改。當用戶任意選擇一個操作時,系統(tǒng)將會提示。此外在輸入成績時,輸入錯誤的數(shù)字系統(tǒng)可以提示錯誤,但是如果輸入標點和字
35、母時,系統(tǒng)將會出錯,因此輸入成績時不可以輸入字母和標點。此外,注意適當?shù)氖褂面湵沓跏蓟乐钩霈F(xiàn)意外錯誤,例如,一開始不初始化就顯示學生信息,由于鏈表還未創(chuàng)建,會出現(xiàn)內(nèi)存不能為read的錯誤。提示是否返回主菜單,如果不返回則自動提示退出系統(tǒng),選擇是的話返回主菜單。總結(jié)一開始知道課題后,以為很簡單,但我想如果用數(shù)組實現(xiàn)的話,在內(nèi)存中是以連續(xù)地址存放的,不方便操作,所以我選擇了使用鏈表,它可以實現(xiàn)無序的在內(nèi)存中存放,只要有一個頭結(jié)點,就可以對整個鏈表進行相關(guān)的操作,在調(diào)式時遇到了很多問題,最多的是指針問題引起的內(nèi)存不能為read,因此指針這一塊知識還得好好的加強,當我將學生成績管理系統(tǒng)的程序調(diào)試完畢后,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南門小學租房合同范本
- 架子班組勞務分包合同范本
- 合作建設開發(fā)合同范本
- 口罩機居間合同范本
- 農(nóng)村自建車庫合同范本
- 豐臺區(qū)供暖安裝合同范本
- 卡車賣買合同范本
- 上班工位安裝合同范本
- 手機分期電子合同范本
- 再生碎石加工承包合同范本
- 新能源汽車產(chǎn)業(yè)專利分析綜述
- 2010年4月自考00371公安決策學試題及答案含解析
- 實驗室儀器借用登記表
- 單肺通氣與肺保護通氣策略護理課件
- 規(guī)培出科小結(jié)呼吸內(nèi)科
- 《鋼鐵是怎樣煉成的》選擇題100題(含答案)
- 《房地產(chǎn)行政管理》課件
- 北京垃圾分類管理制度
- 人力資源招聘與企業(yè)培訓培訓資料
- 電工學(第8版)(上冊 電工技術(shù)) 課件全套 秦曾煌 第1-14章 電路的基本概念與基本定律- 傳感器
- 人員素質(zhì)測評 第2版 課件 第01章 人員素質(zhì)測評概論
評論
0/150
提交評論