第一篇:學(xué)生成績管理報告
寧波大紅鷹學(xué)院
項目名稱:項目組長:項目成員:班級名稱:專業(yè)名稱:完成時間:信息工程學(xué)院
課 程 設(shè) 計 報 告
學(xué)生成績管理系統(tǒng)
黃輪
蔡萍萍、邵芬芬、雷驍 09計科1、09計科2
計算機(jī)科學(xué)與技術(shù)
2010.11.3
信息工程學(xué)院制
目 錄
1課程設(shè)計過程概述 ……………………………………………………………………….1 2課程設(shè)計題目描述和基本設(shè)計要求……………………………………………………...1 2.1課程設(shè)計題目描述……………………………………………………………………..1 2.2基本設(shè)計要求…………………………………………………………………………..1.3系統(tǒng)需求分析與設(shè)計………………………………………………………………………1 3.1系統(tǒng)需求分析…………………………………………………………………………..1 3.2其他需求分析…………………………………………………………………………..1 3.3系統(tǒng)設(shè)計………………………………………………………………………………..1 4各功能模塊設(shè)計……………………………………………………………………………1 4.1學(xué)生成績管理系統(tǒng)錄入學(xué)生成績模塊設(shè)計…………………………………………..1 4.2求各門課程的平均分模塊設(shè)計………………………………………………………..2.4.3求各門課程的最高分模塊設(shè)計………………………………………………………..3 4.4求各門課程的最低分模塊設(shè)計………………………………………………………..4 4.5查詢所有學(xué)生信息的模塊設(shè)計………………………………………………………..5 4.6查詢個別學(xué)生成績的模塊設(shè)計………………………………………………………..5 4.7退出系統(tǒng)的模塊設(shè)計……………………………………………………………….….6 5系統(tǒng)總代碼……………………………………………………………………………..…..7 6課程設(shè)計總結(jié)……………………………………………………………………………...10.6.1遇到的問題及解決辦法……………………………………………………………….10 6.2心得體會……………………………………………………………………………….10.學(xué)生成績管理系統(tǒng)
1課程設(shè)計過程概述
在2010年11月,我們進(jìn)行了JAVA課程的第一個課程設(shè)計學(xué)生成績管理系統(tǒng),要求我們在課后完成,并且及時接受答辯。這次課程設(shè)計的主要目的是結(jié)合Java程序設(shè)計課程,培養(yǎng)我們的思維,提高用Java編程的實際動手能力并增強(qiáng)大家對JavaZ這門課程的了解。這次課程設(shè)計的主要內(nèi)容是獨(dú)立用Java語言開發(fā)一個小的應(yīng)用程序,學(xué)生成績管理系統(tǒng),從而深刻體會Java的應(yīng)用性及其作用。
2課程設(shè)計題目描述和基本設(shè)計要求
2.1課程設(shè)計題目描述
我們設(shè)計的是學(xué)生成績管理系統(tǒng)。主要用到的是做一個學(xué)生成績管理的界面,可以在很短的時間內(nèi)存儲學(xué)生信息,并且及時查到某個學(xué)生的相關(guān)信息。2.2基本設(shè)計要求
(1)系統(tǒng)安全、靈活、可靠;
(2)功能齊全;
(3)操作方便、簡單,界面友好;
3系統(tǒng)需求分析與設(shè)計
3.1系統(tǒng)需求分析
功能目標(biāo):
? 輸入班級n個同學(xué)的學(xué)號,姓名,四科成績(應(yīng)用數(shù)學(xué)、大學(xué)英語、Java程序設(shè)計、計算機(jī)應(yīng)用基礎(chǔ))
? 計算出每個學(xué)生四門課的平均成績,并輸出。
? 輸出全組各科平均分,最高分和最低分。? 輸入姓名查詢成績
3.2其他需求分析
技能要求:
? 通過定義學(xué)生類,建立學(xué)生對象,學(xué)會運(yùn)用面向?qū)ο笏枷脒M(jìn)行程序設(shè)計。
? 通過對學(xué)生信息的輸入/輸出,初步掌握J(rèn)ava基本輸入/輸出方法。? 通過菜單處理,掌握字符界面的菜單處理能力。? 了解復(fù)雜問題的分析、設(shè)計、規(guī)劃的一般流程。
3.3系統(tǒng)設(shè)計
要求學(xué)生成績管理系統(tǒng)用字符界面實現(xiàn)、也可用圖形界面實現(xiàn),并能實現(xiàn)客戶端的查閱。
4各功能模塊設(shè)計
4.1學(xué)生成績管理系統(tǒng)錄入學(xué)生成績模塊設(shè)計
錄入學(xué)生的成績,可以方便用戶管理更多的信息 主要的功能代碼:
case 1:
for(i=0;i System.out.print(“請輸入該生的學(xué)號:”);s[i].num=in.skip(“n”).nextLine();System.out.print(“請輸入該生的姓名:”);s[i].name=in.nextLine();System.out.print(“請輸入該生的應(yīng)用數(shù)學(xué)成績:”);s[i].Math_1=in.nextDouble();System.out.print(“請輸入該生的英語成績:”);s[i].English=in.nextDouble();System.out.print(“請輸入該生的java成績:”);s[i].Java_1=in.nextDouble();System.out.print(“請輸入該生的計算機(jī)成績:”);s[i].Computer=in.nextDouble(); } break;圖1 4.2求各門課程的平均分模塊設(shè)計 在這一界面我們要通過已有的數(shù)據(jù),得出各門學(xué)科的平均分 主要的功能代碼: case 2: double Math_1sum=0,Englishsum=0,Java_1sum=0,Computersum=0;double Math_1pj=0,Englishpj=0,Java_1pj=0,Computerpj=0;for(i=0;i Englishsum=Englishsum+s[i].English;Java_1sum=Java_1sum+s[i].Java_1;Computersum=Computersum+s[i].Computer;} Math_1pj=Math_1sum/i;Englishpj=Englishsum/i;Java_1pj=Java_1sum/i;Computerpj=Computersum/i;System.out.println(i+“位同學(xué)應(yīng)用數(shù)學(xué)的平均分為:”+Math_1pj);System.out.println(i+“位同學(xué)英語的平均分為:”+Englishpj);System.out.println(i+“位同學(xué)Java的平均分為:”+Java_1pj);System.out.println(i+“位同學(xué)計算機(jī)的平均分為:”+Computerpj);break; 圖2 4.3求各門課程的最高分模塊設(shè)計 在聊天界面中,用戶可以得出各門課程的最高分 主要的界面代碼為: case 3: double Math_1max=0,Englishmax=0,Java_1max=0,Computermax=0;for(i=0;i if(s[i].Math_1>Math_1max) Math_1max=s[i].Math_1;if(s[i].English>Englishmax) Englishmax=s[i].English;if(s[i].Java_1>Java_1max) Java_1max=s[i].Java_1;if(s[i].Computer>Computermax)Computermax=s[i].Computer; } System.out.println(“應(yīng)用數(shù)學(xué)最高分:”+Math_1max);System.out.println(“英語最高分:”+Englishmax);System.out.println(“Java最高分:”+Java_1max);System.out.println(“計算機(jī)最高分:”+Computermax);break;圖3 4.4求各門課程的最低分模塊設(shè)計 主要是能得出各門課程的最低分 主要的界面代碼為: case 4: double Math_1min=120,Englishmin=120,Java_1min=120,Computermin=120;for(i=0;i Math_1min=s[i].Math_1;if(s[i].English Englishmin=s[i].English; if(s[i].Java_1 Java_1min=s[i].Java_1;if(s[i].Computer } System.out.println(“應(yīng)用數(shù)學(xué)最低分:”+Math_1min);System.out.println(“英語最低分:”+Englishmin);System.out.println(“Java最低分:”+Java_1min);System.out.println(“計算機(jī)最低分:”+Computermin);break; 圖4 4.5查詢所有學(xué)生信息的模塊設(shè)計 主要是為了快速的查出所有學(xué)生的信息 主要的界面代碼為: case 5: for(i=0;i System.out.print(“姓名:”+s[i].name);System.out.print(“應(yīng)用數(shù)學(xué):”+s[i].Math_1);System.out.print(“英語:”+s[i].English);System.out.print(“Java:”+s[i].Java_1);System.out.println(“計算機(jī):”+s[i].Computer);} break;圖5 4.6查詢個別學(xué)生成績的模塊設(shè)計 主要是為了快速的查出個別學(xué)生的信息 主要的界面代碼為: case 6: System.out.print(“請輸入要查找的姓名:”);int j=0;String name=in.skip(“n”).nextLine();for(i=0;i System.out.println(“學(xué)號:”+s[i].num); System.out.println(“姓名:”+s[i].name); System.out.println(“應(yīng)用數(shù)學(xué):”+s[i].Math_1); System.out.println(“英語:”+s[i].English); System.out.println(“Java:”+s[i].Java_1); System.out.println(“計算機(jī):”+s[i].Computer); j=s.length;} } if(j==0) System.out.println(“沒有你要查找的人,請確認(rèn)后再查找!”); 圖6 break; 查無此人的情況下: 4.7退出系統(tǒng)的模塊設(shè)計 當(dāng)查詢結(jié)束的時候可以順利的退出。 主要的界面代碼為: case 7: System.out.println(“byebye!”); System.exit(0);default: System.out.println(“您輸入的數(shù)字有誤,應(yīng)為1~7”);圖7 5系統(tǒng)總代碼 import java.util.*;class Student{ String num; String name;double Math_1,English,Java_1,Computer; } public class StudentMassage{ public static void main(String[] args){ Student[]s=new Student[3];int i;for(i=0;i } while(true){ System.out.println(“**********學(xué)生成績管理系統(tǒng)**********”);System.out.println(“1.錄入學(xué)生成績”);System.out.println(“2.求各門課程的平均分”); System.out.println(“3.求各門課程的最高分”);System.out.println(“4.求各門課程的最低分”);System.out.println(“5.查詢所有學(xué)生信息”);System.out.println(“6.查詢個別學(xué)生成績”);System.out.println(“7.退出系統(tǒng)”);System.out.print(“請選擇:”);Scanner in=new Scanner(System.in);int x=in.nextInt(); switch(x){ case 1: for(i=0;i System.out.println(“請輸入第”+(i+1)+“個學(xué)生的成績信息”); System.out.print(“請輸入該生的學(xué)號:”); s[i].num=in.skip(“n”).nextLine();System.out.print(“請輸入該生的姓名:”);s[i].name=in.nextLine();System.out.print(“請輸入該生的應(yīng)用數(shù)學(xué)成績:”);s[i].Math_1=in.nextDouble();System.out.print(“請輸入該生的英語成績:”);s[i].English=in.nextDouble();System.out.print(“請輸入該生的java成績:”);s[i].Java_1=in.nextDouble();System.out.print(“請輸入該生的計算機(jī)成績:”);s[i].Computer=in.nextDouble();} break;case 2: double Math_1sum=0,Englishsum=0,Java_1sum=0,Computersum=0;double Math_1pj=0,Englishpj=0,Java_1pj=0,Computerpj=0; for(i=0;i Math_1sum=Math_1sum+s[i].Math_1;Englishsum=Englishsum+s[i].English;Java_1sum=Java_1sum+s[i].Java_1;Computersum=Computersum+s[i].Computer;} Math_1pj=Math_1sum/i;Englishpj=Englishsum/i;Java_1pj=Java_1sum/i;Computerpj=Computersum/i;System.out.println(i+“位同學(xué)應(yīng)用數(shù)學(xué)的平均分為:”+Math_1pj);System.out.println(i+“位同學(xué)英語的平均分為:”+Englishpj);System.out.println(i+“位同學(xué)Java的平均分為:”+Java_1pj);System.out.println(i+“位同學(xué)計算機(jī)的平均分為:”+Computerpj);break;case 3: double Math_1max=0,Englishmax=0,Java_1max=0,Computermax=0;for(i=0;i Math_1max=s[i].Math_1;if(s[i].English>Englishmax) Englishmax=s[i].English;if(s[i].Java_1>Java_1max) Java_1max=s[i].Java_1;if(s[i].Computer>Computermax)Computermax=s[i].Computer; } System.out.println(“應(yīng)用數(shù)學(xué)最高分:”+Math_1max);System.out.println(“英語最高分:”+Englishmax);System.out.println(“Java最高分:”+Java_1max);System.out.println(“計算機(jī)最高分:”+Computermax);break;case 4: double Math_1min=120,Englishmin=120,Java_1min=120,Computermin=120; for(i=0;i Math_1min=s[i].Math_1; if(s[i].English Englishmin=s[i].English;if(s[i].Java_1 Java_1min=s[i].Java_1;if(s[i].Computer } System.out.println(“應(yīng)用數(shù)學(xué)最低分:”+Math_1min);System.out.println(“英語最低分:”+Englishmin);System.out.println(“Java最低分:”+Java_1min);System.out.println(“計算機(jī)最低分:”+Computermin); } } } } break;case 5: for(i=0;i System.out.print(“學(xué)號:”+s[i].num); System.out.print(“姓名:”+s[i].name); System.out.print(“應(yīng)用數(shù)學(xué):”+s[i].Math_1); System.out.print(“英語:”+s[i].English); System.out.print(“Java:”+s[i].Java_1); System.out.println(“計算機(jī):”+s[i].Computer);} break;case 6: System.out.print(“請輸入要查找的姓名:”);int j=0;String name=in.skip(“n”).nextLine();for(i=0;i if(s[i].name.equals(name)){ System.out.println(“學(xué)號:”+s[i].num); System.out.println(“姓名:”+s[i].name); System.out.println(“應(yīng)用數(shù)學(xué):”+s[i].Math_1); System.out.println(“英語:”+s[i].English); System.out.println(“Java:”+s[i].Java_1); System.out.println(“計算機(jī):”+s[i].Computer); j=s.length;} } if(j==0)System.out.println(“沒有你要查找的人,請確認(rèn)后再查找!”);break;case 7: System.out.println(“byebye!”); System.exit(0);default: System.out.println(“您輸入的數(shù)字有誤,應(yīng)為1~7”);6課程設(shè)計總結(jié) 6.1遇到的問題及解決辦法 在此次課程設(shè)計中,我遇到了一些問題,如:不能很好的將C語言的代碼轉(zhuǎn)化成Java語言,對于Java語言,只學(xué)習(xí)到了一些最基本的知識,這導(dǎo)致編寫程序時經(jīng)常出現(xiàn)一些語法錯誤,而且要在短時間內(nèi)用Java語言來設(shè)計一個具體的系統(tǒng)是一個較大的挑戰(zhàn);自己感覺難以動手,這表明所學(xué)的知識不能靈活運(yùn)用到實際中。 對于以上的問題,自己有清楚的認(rèn)識,首先必須要對計算機(jī)產(chǎn)生興趣,多閱讀相關(guān)的書籍,多跟精通此方面的老師和同學(xué)交流、像他們學(xué)習(xí)。還有就是應(yīng)該多動手編程。6.2心得體會 由于對java這門課還未深入了解,這是第一次小組合作設(shè)計程序,剛開始我們對它真的是很無措的,不知道該從哪里入手;經(jīng)過指導(dǎo)老師的部分講解和演示,我們茅塞頓開,著手開始編寫代碼,可是寫著寫著就出現(xiàn)問題了,程序?qū)崿F(xiàn)不了,也改不出錯誤;后來無意中一位組員將字體改變了一下,程序錯誤變少了。檢查一發(fā)現(xiàn)我們程序中字體錯竟占絕大部分。再想想,這是因為我們寫的過程中不夠仔細(xì),對細(xì)節(jié)問題還不夠注重,以致最后的程序出現(xiàn)大批量的錯誤。不過在我們的后續(xù)檢查中,這一問題已經(jīng)完全解決了。當(dāng)然,寫的過程中遇到的問題肯定不止這樣的,但最后在指導(dǎo)師與我們齊心協(xié)力的修改后,這些難題將不是問題了。程序完成后,我們真的很開心,雖然困難重重,但我們最終還是有了一個很好的結(jié)束啊。 這個實驗讓我們對java有更進(jìn)一步的了解,也讓我們對它產(chǎn)生了極大地興趣,希望我們以后兩次的實驗也能順利完成。 學(xué)生成績管理系統(tǒng)分析報告 一、可行性分析報告 基于互聯(lián)網(wǎng)的學(xué)生成績管理系統(tǒng),在學(xué)生成績的規(guī)范管理、科學(xué)統(tǒng)計和快速查詢方面具有較大的實用意義,提高了信息的開放性和快速性。使學(xué)生信息更加系統(tǒng)化,信息更加精確化。使管理人員管理更加方便,能夠改動部分信息,最大化的滿足工作的需求。 1.系統(tǒng)簡述: ? ? ? 目標(biāo)系統(tǒng)的名稱:學(xué)生成績管理系統(tǒng) 用戶名稱:XXXX大學(xué) 學(xué)生成績信息管理系統(tǒng) 學(xué)生成績管理系統(tǒng)是整個學(xué)校工作系統(tǒng)的重要組成部分,其內(nèi) 容對于學(xué)校管理者和學(xué)生至關(guān)重要,所以學(xué)生成績管理系統(tǒng)應(yīng)該為用戶提供所需要的信息以及方便的管理平臺。現(xiàn)代成績查詢系統(tǒng)理論已經(jīng)不拘泥于傳統(tǒng)的理論基礎(chǔ),不強(qiáng)調(diào)對教學(xué)活動的嚴(yán)密控制,放棄了繁瑣的設(shè)計模式,開始注重教學(xué)設(shè)計的關(guān)系性和靈活性,并且提供人性化的服務(wù),這些優(yōu)點能夠極大的提高學(xué)生成績查詢的效率,從而更加有利于學(xué)生的管理和提高學(xué)生的主動性。 為方便編程采用C++實現(xiàn),同C類似,區(qū)別不大: (1)學(xué)號為負(fù)數(shù)時結(jié)束輸入: #include“stdafx.h” #define NULL 0 #include #include #include using namespace std; //聲明結(jié)構(gòu)體類型 typedef struct stnode { int id;//學(xué)號 char name[16];//姓名 intclass[4];//課程成績數(shù)組 float ave;//學(xué)生個人所有課程的平均成績struce stnode *next;//指針域 }Students; // 函數(shù)原型聲明 void PrintFailStudent(Student*head); void PrintSuccessStudent(Student*head);void DeleteLink(Student*head); Student*input_data(); void main() { Student*head=input_data(); Student*input_data();//調(diào)用input_data函數(shù),錄入學(xué)生信息 PrintFailStudent(head);//調(diào)用PrintFailStudent函數(shù),存在不及格的學(xué)生 void PrintSuccessStudent(Student*head);//打印平均分90分以上的學(xué)生 DeleteLink(head);//調(diào)用DeleteLink函數(shù),釋放內(nèi)存 } // { int id;// 定義一個整數(shù)變量,存放學(xué)號 string name;//學(xué)生姓名 int class;//課程號 int scores;//各科成績 int totl_score;//各科總成績 Student *head=NULL, *temp;// 定義兩個結(jié)構(gòu)體指針 cout<<”開始錄入學(xué)生成績:”; while(1){cout<<“請輸入學(xué)生學(xué)號:”;cin>>id;// 輸入學(xué)號 if(id<0){// 學(xué)號為負(fù)數(shù)時結(jié)束錄入break;錄入學(xué)生信息 Student*input_data() } temp=new Student;// 向內(nèi)存動態(tài)申請一個結(jié)構(gòu)體結(jié)點 cout<<“請輸入學(xué)生姓名:”; for(int a=0;a<=sizeof(a[0]);a++){temp->id=id;// 將輸入的學(xué)號存入結(jié)構(gòu)體結(jié)點的學(xué)號成員變量temp->name=name;// 存入學(xué)生姓名 cout<<“請輸入學(xué)生課程”+a+”的成績:”; cin>>scores;// 輸入學(xué)號 totl_score=totl_score+scores;//總成績 temp->class[a]=scores;// 課程1的成績錄入} ave=totl_score/sizeof(a[0]); } // 打印不及格學(xué)生信息 void PrintFailStudent(Student*head) { cout<<”存在不及格學(xué)生信息:”; cout<<“學(xué)號”< id< } } // 打印90平均分學(xué)生 void PrintSuccessStudent(Student*head){ } // 釋放鏈表中的所有到結(jié)點 void DeleteLink(Student*head){ } Student*p;while(head!=NULL)// 頭指針非空時循環(huán) {} p=head;// 記住當(dāng)前頭指針 head=head->next;//當(dāng)前頭指針移到下一個結(jié)點 delete p;// 刪除結(jié)點 for(Student*p=head;p!=NULL;p=p->next)cout<<”平均分為90分以上的學(xué)生學(xué)號:”+p->id;if(p->ave>=90){} 學(xué)生成績管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 一、課程設(shè)計的內(nèi)容與目的 利用所學(xué)數(shù)據(jù)結(jié)構(gòu)理論知識完成“學(xué)生成績管理系統(tǒng)”的設(shè)計。 通過課程設(shè)計提高學(xué)生的思維能力,促進(jìn)學(xué)生的綜合應(yīng)用能力和專業(yè)素質(zhì)的提高。具體包括: 了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,具備初步的獨(dú)立分析和設(shè)計能力; 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能; 提高綜合運(yùn)用所學(xué)的理論知識和方法獨(dú)立分析和解決問題的能力; 訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。 二、課程設(shè)計的要求與數(shù)據(jù) 1.系統(tǒng)功能需求分析: 1、輸入功能:可以輸入40位同學(xué)信息 2、增加功能,能增加學(xué)生的信息 3、瀏覽功能:完成對全部學(xué)生記錄瀏覽 4、查詢功能:采用散列查找完成按學(xué)號查找學(xué)生記錄 5、排序功能:采用直接選擇排序,將學(xué)生平均成績從低到高排序輸出 6、刪除功能:可以刪除學(xué)生信息 7、修改功能:可以對學(xué)生信息的各項信息進(jìn)行修改 8、插入功能:完成數(shù)據(jù)的插入 9、統(tǒng)計功能:統(tǒng)計出各分?jǐn)?shù)段學(xué)生人數(shù)(60分以下,60~70,71~80,...) 2.存儲結(jié)構(gòu)設(shè)計分析: 3.學(xué)生的信息:學(xué)生的信息采用結(jié)構(gòu)體類型定義,每個元素表示一個學(xué)生的信息,包括學(xué)號,姓名及數(shù)據(jù)結(jié)構(gòu)平均成績4個數(shù)據(jù)項: (1)struct student {char num[11];char name[20];int score[8];float ave;}stu[N];(2)散列表的結(jié)點類型定義: typedef struct node {unsigned long int key;struct node * link;}HNode;3.源程序如下: #include第二篇:學(xué)生成績管理系統(tǒng)分析報告
第三篇:學(xué)生成績管理
第四篇:學(xué)生成績管理數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告