Ⅰ 山東省中小學學生信息管理系統是干什麼的
學生信息管理系統是針對山東省學校人事處的大量業嘩襪顫務處理工作而開發的管理軟體,是典型的管理信息系統。它是一個教育單位不可缺少的部分,它的內容對於學校的決策者和管理者來說都至關重要,它能夠為用戶提供充足的信息和快捷的查詢手段。能有效的幫助學校和老師掌握學生的情況,為學生提供成績跟課程方面的查詢。在人工進行學生信息管理,存在著較多的缺點,如:效率低,時間一長將產生大量的文件和數據,不便於查找,維護等。這些情況,令學校管理者對學生的信息管理帶好絕來了很大困難,嚴重影響了教育工作者的工作效率。使用計算機對學生信息進行現代化管理,具有許多的優點。例如:檢索迅速、查找方便、易修改、可靠性高、存儲量大、數據處理快捷、保密性好、壽命長、成本亂敗低、便於列印等。這些優點能夠極大地提高學生信息管理的效率,也是學校的科學化、正規化管理。用計算機製作的學生信息管理系統還可以通過功能強大的Internet網及時的向學生的家長傳遞該生在校的最新成績,有助於學校與家長的信息互動,為更好地把握學校的教育方針起到了一定的促進作用。
Ⅱ 學生信息管理系統
#include<stdio.h>/*我們也中昌做過的*/猜罩
#include<stdlib.h>
#include<string.h>
#define MAX_LEN 10
#define STU_NUM 30
#define COURSE_NUM 6
typedef struct student
{
long num;
char name[MAX_LEN];
float score[COURSE_NUM];
float sum;
float aver;
}STU;
int Menu(void);
void ReadScore(STU stu[],int n,int m);
void AverSumofEveryStudent(STU stu[],int n,int m);
void AverSumofEveryCourse(STU stu[],int n,int m);
void SortbyScore(STU stu[],int n,int m,int (*compare)(float a,float b));
int Ascending(float a,float b);
int Descending(float a,float b);
void SwapFloat(float *x,float *y);
void SwapLong(long *x,long *y);
void SwapChar(char x[],char y[]);
void AsSortbyNum(STU stu[],int n,int m);
void SortbyName(STU stu[],int n,int m);
void SearchbyNum(STU stu[],int n,int m);
void SearchbyName(STU stu[],int n,int m);
void StatisticAnalysis(STU stu[],int n,int m);
void PrintScore(STU stu[],int n,int m);
void WritetoFile(STU record[],int n,int m);
void ReadfromFile(STU record[],int *n,int *m);
int main()
{
char ch;
int n=0,m=0;
STU stu[STU_NUM];
while(1)
{
ch=Menu();
switch (ch)
{
case 1:printf("Input student number(n<=%d):",STU_NUM);
scanf("%d",&n);
printf("Input course number(m<賣兆扒=%d):",COURSE_NUM);
scanf("%d",&m);
ReadScore(stu,n,m);
break;
case 2:AverSumofEveryCourse(stu,n,m);
break;
case 3:AverSumofEveryStudent(stu,n,m);
break;
case 4:SortbyScore(stu,n,m,Descending);
printf("\nSort in descending order by score:\n");
PrintScore(stu,n,m);
break;
case 5:SortbyScore(stu,n,m,Ascending);
printf("\nSort in ascending order by score:\n");
PrintScore(stu,n,m);
break;
case 6:AsSortbyNum(stu,n,m);
printf("\nSort in ascending order by score:\n");
PrintScore(stu,n,m);
break;
case 7:SortbyName(stu,n,m);
printf("\nSort in dictionary order by score:\n");
PrintScore(stu,n,m);
break;
case 8:SearchbyNum(stu,n,m);
break;
case 9:SearchbyName(stu,n,m);
break;
case 10:StatisticAnalysis(stu,n,m);
break;
case 11:PrintScore(stu,n,m);
break;
case 12:WritetoFile(stu,n,m);
break;
case 13:ReadfromFile(stu,&n,&m);
break;
case 14:printf("End of program!\n");
exit(0);
default :printf("Input error!\n");
}
}
return 0;
}
/*函數功能:顯示菜單並獲得用戶鍵盤輸入的選項*/
int Menu(void)
{
int itemSelected;
printf("Management for Students' scores\n");
printf("1.Input record\n");
printf("2.Caculate total and average score of every course \n");
printf("3.Caculate total and average score of every student \n");
printf("4.Sort in descending order by score \n");
printf("5.Sort in ascending order by score \n");
printf("6.Sort in ascending order by number \n");
printf("7.Sort in dictionary order by name \n");
printf("8.Search by number \n");
printf("9.Search by name \n");
printf("10.Statistic analysis \n");
printf("11.List record \n");
printf("12.write to a file \n");
printf("13.read from a file \n");
printf("0.Exit \n");
printf("Please Input your choice:"); //讀入用戶輸入
scanf("%d",&itemSelected);
return itemSelected;
}
/*函數功能:輸入n個學生的m門課程成績*/
void ReadScore(STU stu[],int n,int m)
{
int i,j;
printf("Input students' ID,name and score:\n");
for(i=0;i<n;i++)
{
scanf("%ld%s",&stu[i].num,stu[i].name);
for(j=0;j<m;j++)
{
scanf("%f",&stu[i].score[j]);
}
}
}
/*函數功能:計算每個學生各門課程的總分和平均分*/
void AverSumofEveryStudent(STU stu[],int n,int m)
{
int i,j;
for(i=0;i<n;i++)
{
stu[i].sum=0;
for(j=0;j<m;j++)
{
stu[i].sum=stu[i].sum+stu[i].score[j];
}
stu[i].aver=m>0?stu[i].sum/m:-1;
printf("student %d: sum = %.0f,aver = %.0f\n",
i+1,stu[i].sum,stu[i].aver);
}
}
/*函數功能:計算每門課程的總分和平均分*/
void AverSumofEveryCourse(STU stu[],int n,int m)
{
int i,j;
float sum[COURSE_NUM],aver[COURSE_NUM];
for(j=0;j<m;j++)
{
sum[j]=0;
for(i=0;i<n;i++)
{
sum[j]=sum[j]+stu[i].score[j];
}
aver[j] = n>0 ? sum[j]/n:-1;
printf("course %d:sum = %.0f,aver = %.0f\n",j+1,sum[j],aver[j]);
}
}
/*函數功能:按選擇法將數組sum中的元素值排序*/
void SortbyScore(STU stu[],int n,int m,int (*compare)(float a,float b))
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if((*compare)(stu[j].sum,stu[k].sum)) k=j;
}
if(k!=i)
{
for(t=0;t<m;t++)
{
SwapFloat(&stu[k].score[t],&stu[i].score[t]);
}
SwapFloat(&stu[k].sum,&stu[i].sum);
SwapFloat(&stu[k].aver,&stu[i].aver);
SwapLong(&stu[k].num,&stu[i].num);
SwapChar(stu[k].name,stu[i].name);
}
}
}
/*使數據按升序排序*/
int Ascending(float a,float b)
{
return a<b;
}
/*使數據按降序排序*/
int Descending(float a,float b)
{
return a>b;
}
/*交換兩個單精度浮點型數據*/
void SwapFloat(float *x,float *y)
{
float temp;
temp=*x;
*x=*y;
*y=temp;
}
/*交換兩個長整形數據*/
void SwapLong(long *x,long *y)
{
long temp;
temp=*x;
*x=*y;
*y=temp;
}
/*交換兩個字元串*/
void SwapChar(char x[],char y[])
{
char temp[MAX_LEN];
strcpy(temp,x);
strcpy(x,y);
strcpy(y,temp);
}
/*函數功能:按選擇法將數組num的元素值按從低到排高序*/
void AsSortbyNum(STU stu[],int n,int m)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(stu[j].num < stu[k].num) k=j;
}
if(k!=i)
{
for(t=0;t<m;t++)
{
SwapFloat(&stu[k].score[t],&stu[i].score[t]);
}
SwapFloat(&stu[k].sum,&stu[i].sum);
SwapFloat(&stu[k].aver,&stu[i].aver);
SwapLong(&stu[k].num,&stu[i].num);
SwapChar(stu[k].name,stu[i].name);
}
}
}
/*函數功能:交換法實現字元串按字典順序排序*/
void SortbyName(STU stu[],int n,int m)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(stu[j].name, stu[i].name)<0)
{
for(t=0;t<m;t++)
{
SwapFloat(&stu[i].score[t],&stu[j].score[t]);
}
SwapFloat(&stu[i].sum,&stu[j].sum);
SwapFloat(&stu[i].aver,&stu[j].aver);
SwapLong(&stu[i].num,&stu[j].num);
SwapChar(stu[i].name,stu[j].name);
}
}
}
}
/*函數功能:按學號查找學生成績並顯示查找結果*/
void SearchbyNum(STU stu[],int n,int m)
{
long number;
int i,j;
printf("Input the number you want to search");
scanf("%ld",&number);
for(i=0;i<n;i++)
{
if(stu[i].num==number)
{
printf("%ld \t%s \t",stu[i].num,stu[i].name);
for(j=0;j<m;j++)
{
printf("%.0f \t",stu[i].score[j]);
}
printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver);
return;
}
}
printf("\n Not Found! \n");
}
/*函數功能:按姓名的字典順序排出成績表*/
void SearchbyName(STU stu[],int n,int m)
{
char x[MAX_LEN];
int i,j;
printf("Input the number you want to search");
scanf("%s",x);
for(i=0;i<n;i++)
{
if(strcmp(stu[i].name,x)==0)
{
printf("%ld \t%s \t",stu[i].num,stu[i].name);
for(j=0;j<m;j++)
{
printf("%.0f \t",stu[i].score[j]);
}
printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver);
return;
}
}
printf("\n Not Found! \n");
}
/*函數功能:統計各分數段的學生人數及所佔的百分比*/
void StatisticAnalysis(STU stu[],int n,int m)
{
int i,j,total,t[6];
for(j=0;j<m;j++)
{
printf("For course %d:\n",j+1);
memset(t,0,sizeof(t)); //將數組t的全部元素初始化為0
for(i=0;i<n;i++)
{
if(stu[i].score[j]>=0&&stu[i].score[j]<60) t[0]++;
else if (stu[i].score[j]<70) t[1]++;
else if (stu[i].score[j]<80) t[2]++;
else if (stu[i].score[j]<90) t[3]++;
else if (stu[i].score[j]<100) t[4]++;
else if (stu[i].score[j]=100) t[5]++;
}
for(total=0,i=0;i<=5;i++)
{
total=total+t[i];
}
for(i=0;i<=5;i++)
{
if(i==0) printf("<60\t%d\t%.2f%%\n",t[i],(float)t[i]/n*100);
else if(i==5)
printf("%d\t%d\t%.2f%%\n",(i+5)*10,t[i],(float)t[i]/n*100);
else
printf("%d-%d\t%d\t%.2f%%\n",(i+5)*10,(i+5)*10+9,t[i],(float)t[i]/n*100);
}
}
}
/*函數功能:列印學生成績*/
void PrintScore(STU stu[],int n,int m)
{
int i,j;
for(i=0;i<n;i++)
{
printf("%ld\t%s\t",stu[i].num,stu[i].name);
for(j=0;j<m;j++)
{
printf("%.0f\t",stu[i].score[j]);
}
printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver);
}
}
/*輸出n個學生的學號,姓名及m門課程的成績到文件student.txt中*/
void WritetoFile(STU stu[],int n,int m)
{
FILE *fp;
int i,j;
if((fp=fopen("student.txt","w"))==NULL)
{
printf("Failure to open score.txt!\n");
exit(0);
}
fprintf(fp,"%d\t%d\n",n,m); //將學生人數和課程門數寫入文件
for(i=0;i<n;i++)
{
fprintf(fp,"%10ld%10s",stu[i].num,stu[i].name);
for(j=0;j<m;j++)
{
fprintf(fp,"%10.0f",stu[i].score[j]);
}
fprintf(fp,"%10.0f%10.0f\n",stu[i].sum,stu[i].aver);
}
fclose(fp);
}
/*從文件中讀取學生的學號,姓名及成績等信息寫入到結構體數組stu中*/
void ReadfromFile(STU stu[],int *n,int *m)
{
FILE *fp;
int i,j;
if((fp=fopen("student.txt","r"))==NULL)
{
printf("Failure to open score.txt!\n");
exit(0);
}
fscanf(fp,"%d\t%d",n,m); //從文件中讀出學生人數和課程門數
for(i=0;i< *n;i++)
{
fscanf(fp,"%10ld",&stu[i].num);
fscanf(fp,"%10s",stu[i].name);
for(j=0;j< *m;j++)
{
fscanf(fp,"%10f",&stu[i].score[j]);
}
fscanf(fp,"%10f%10f",&stu[i].sum,&stu[i].aver); //不能用%10.0f
}
fclose(fp);
}
Ⅲ 學生管理信息系統和學生信息管理系統有什麼區別,他們分別有哪些功能和表
管理信息系統是一個以人為主導,利用計算機硬體、軟體、網路通信設備以及其他辦公設備,進行信息的收物衡羨集、傳輸、加工、儲存、更新和維護,以企業戰略競優、提高效益和效率為目的,支持企業的高層決策、中層控制、基層運作的集成化的人機系統。
管理信息系統除了具備信息系統的基本功能外,還具備預測、計劃、控制和輔助決策特有功能。具體是:(1)數據處理功能。包括數據收集和輸入、數據傳輸、數據存儲、數據加工和輸出;(2)預測功能。運用現攔液代數學方法、統計方法和模擬方法,根據過去的數據預測外來的情況;(3)計劃功能。根據企業提供的約束條件,合理地安排各職能部門的計劃,按照不同的管理層,提供不同的管理層,提供相應的計劃報告;(4)控制功能。根據各職能部門提供的數據,對計劃的執行情況進行檢測、檢測、比較執行與計劃的差異,對差異情況分析其原因;(5)輔助決策功能。採用各種數學模型和所存儲的大量數據,及時推倒出有關問題的最優解或滿意解,輔助各罩拍級管理人員進行決策,以期合理利用人財物和信息資源,取得較大的經濟效益。
Ⅳ 什麼是學生信息管理系統
學生信息管理系統就是一個集錄入,查首御詢,修改銷芹遲學生信息等功能的一個軟體虧李系統,此系統常用於各大高校,方便學校對學生信息進行管理!
Ⅳ 學生信息管理系統有什麼功能
學生信息檔案的管理對於學校的管理者來說至關重要,學生信息是高等學校非常重要的一項數據資源,是一個教育單位不可缺少一部分。隨著近幾年培訓市場的發展壯大,各種管理系統也層出不窮,就拿浪騰的管理系統來說,他的功能有:
1、檢索迅速、查找方便,提高學生檔案管理的效率
2、可靠性高、存儲量大
3、保密性好、壽命長、成本低等。
Ⅵ 學籍的管理系統
學籍信息管理系統摘要:隨著網路技術與計算機的廣泛普及,絕大部分的機構都對計算機管理系統進行了合理的運用,本設計通過Java面向對象語言完成對學生信息管理系統進行編寫,基於B/S模式,所用開發工具為Eclipse以及AndroidStudio,然後基於Mysql的資料庫基礎上,通過Adobe Photoshop CS6的圖像處理軟體美化界面,在系統開發過程中用到了Postman測試工具,在系統開發完成後進行了相關模塊的用例測試,所得系統有美觀、友好的界面,並且人機斗搏如信息比較安全可靠、靈活與方便等,這種系統可擴展性比較強。本文以學生信息管理系統為例說明JavaWeb在信息管理中的應用,主要實現了管理員模塊,老師模塊以及學生模塊,主要實現了管理員對於系統中教師,學生以及課程數據的增刪改查操作;以及教師對於學生相關信息的管理,例如學生的成績和考勤信息等;以及學生對於個空啟人信息的修改以及選課信息和課程成績的查看等功能。本系統功能完善,對開發管理信息系統提供了較高的理論指導和實際意義。關鍵詞:學生信息管理系統,Java Web,B/S模式,Mysq
畢業設計(論文)外文摘要Title : Student information ManagerAbstract:With the wide spread of network technology and computer, the vast majority of institutions have made reasonable use of the computer management system. Based on B / S mode, the development tools used are eclipse and Android studio. Then based on MySQL database, the interface is beautified by Adobe Photoshop CS6 image processing software. In the process of system development, postman test tool is used, After the completion of the system development, the use case test of related moles is carried out. The system has beautiful and friendly interface, and the man-machine information is safe, reliable, flexible and convenient. This system has strong scalability.This paper takes the student information management system as an example to illustrate the application of Java Web in information management, which provides higher theoretical guidance and practical significance for the development of management information system.keywords:Student information management system; Java Web; B/S;Mysql
目錄
1 緒論………………………1
1.1 研究背景及研究意義………………………1
1.2 研究狀況…………銀岩……………1
2 系統相關技術分析………………………2
2.1 java………………………2
2.2 javaweb………………………3
2.3 資料庫………………………4
3 可行性和需求性分析………………………4
3.1 可行性分析………………………4
3.2 總體需求分析………………………5
4 系統的設計………………………7
4.1 系統架構設計………………………7
4.2 系統功能模塊設計………………………8
4.3 系統資料庫設計………………………8
5 系統開發與實現………………………10
5.1 登錄界面的實現………………………10
5.2 教師管理的實現………………………14
5.3 學生管理的實現………………………16
5.4 課程管理的實現………………………17
5.5 老師模塊的實現………………………17
5.6 學生模塊的實現………………………20
6 系統測試………………………23
6.1 用戶登入功能測試………………………23
6.2 各項信息管理功能測試………………………23
6.3 Excel導出學生成績表功能測試………………………24
總結………………………25
致謝………………………26
參考文獻………………………27
1 緒論1.1 研究背景及研究意義
學生的信息,必須要實現安全,高效的管理,因此,學生信息管理系統對於一個學校來說是必不可少的組成部分。由於學生信息量比較龐大,對於那些需要記錄存檔的數據比較多的高校來說,系統化的管理統計更加方便。而且當查找某條記錄時只需要輸入該學生的有關信息便可以查詢到幾乎所有信息。
基於信息的學生信息管理系統可以有效解決傳統的手動文件管理的缺點,充分利用信息管理的優點,提高學生狀態管理的效率。學生信息管理系統對學生信息的管理更有效且方便。有效的信息管理學生的狀態,不僅保證學生的狀態有效率、有秩序的管理,而且使大學能夠達到一定程度的快速發展。
為了提高學生個人信息的管理效率,此設計一款學生信息管理系統將在很大程度上提升高校學生信息的管理效率。開發一個功能完善的學生信息管理系統可以使得高校學生的信息檔案管理效率。
1.2 研究現狀
我國高校中的信息管理員一般為年齡比較大一點的阿姨,叔叔,他們之中,不乏有一些人的文化程度較低,因此,存在使用學生信息管理系統的老宿管對計算機系統的操作並不熟悉,需要他人指導,甚至對該系統的接受程度較低,仍會選擇使用紙質的方式進行信息的記錄,如果學生的報修信息量大,就會存在問題解決不及時的問題。
因此,我國高校的信息管理系統未來的發展路線需要進一步的簡化信息管理系統的使用,使得系統的受眾變得更大,使得可以更多的人可以使用,從而更好的提高學生信息管理系統的效率和便捷性,以及提供更加系統的服務.
1.3 學生信息管理系統的必要
目前,人口數量在不斷飆升,學生數量更是急劇增加,這就給各大高校提供了大量學生信息統計的艱巨的挑戰。學生信息管理系統可以減輕學生信息統計的負擔,使得學生的信息統計和查詢更加的方便和快捷。本文研究的重點是WEB框架在學生信息管理系統中的應用,對學校長期的學生信息化建設,實現學生信息數據化有非常重要的意義。
2 系統相關技術分析
本系統採用現階段較為成熟的Java編程語言,運用了面向對象的思想。開發過程中使用了Java1.8、Eclipse集成開發環境、Tomcat7.0以及Mysql資料庫。
2.1 Java
Java是一種由Sun公司推出的面向對象編程語言,廣受全球開發人員的歡迎,占據著軟體開發領域的主要地位。Java語言具有功能強大、變成簡單、開發效率高、運行穩定、可以獨立運作等優勢。由於Java語言能夠獨立構建程序運行環境,因此不需要多強大的平台即可使用。與此同時,Java語言還支持多線程開發,可以和互聯網結合運用。
Java語言的設計集中於對象及其介面,它提供了簡單的類機制以及動態的介面模型。對象中封裝了它的狀態變數以及相應的方法,實現了模塊化和信息隱藏;而類則提供了一類對象的原型,並且通過繼承機制,子類可以使用父類所提供的方法,實現了代碼的復用。
Java不同於一般的編譯執行計算機語言和解釋執行計算機語言。它首先將源代碼編譯成二進制位元組碼(bytecode),然後依賴各種不同平台上的虛擬機來解釋執行位元組碼。從而實現了「一次編譯、到處執行」的跨平台特性。不過,每次的執行編譯後的位元組碼需要消耗一定的時間,這同時也在一定程度上降低了 Java 程序的性能。
2.2 JavaWeb
2.2.1 HTML
HTML5是用於取代1999年所制定的 HTML 4.01 和 XHTML 1.0 標準的 HTML 標准版本,現在仍處於發展階段,但大部分瀏覽器已經支持某些 HTML5 技術。HTML 5有兩大特點:首先,強化了 Web 網頁的表現性能。其次,追加了本地資料庫等 Web 應用的功能。廣義論及HTML5時,實際指的是包括HTML、CSS和JavaScript在內的一套技術組合。它希望能夠減少瀏覽器對於需要插件的豐富性網路應用服務(plug-in-based rich internet application,RIA),如Adobe Flash、Microsoft Silverlight,與Oracle JavaFX的需求,並且提供更多能有效增強網路應用的標准集。
HTML就是所謂的超文本標記語言,這種語言普遍存在與網路之中的各個網頁內,是開發網頁的基礎工具之一。HTML主要是藉助標簽來控制網頁中的圖像、視頻、文本等各種信息,從而實現預期的顯示效果。HTML語言產生的互聯網操作會受到http協議的制約,並且瀏覽器在運行HTML語言的時候同樣會受到約束。HTML之所以可以很快得到大規模應用,主要是因為採用了超文本技術,這樣就能夠和任何連接到網路中的計算機互相傳輸數據。所謂的「超文本」實質上指的是不包含文本的其他內容,例如視頻、音頻等等。
2.2.2 Servlet
Servlet是在JSP技術基礎上發展出的全新技術,主要應用於伺服器中,具有接收數據請求、轉發數據請求等功能。本質上來說,Servlet屬於Java程序的一個類型。Servlet主要遵循如下流程進行運作:伺服器在接收到Http請求之後,會立即分析接受的這些請求,並以此為基礎創建Servlet,緊接著藉助調用等各種手段向客戶端反饋請求信息,最後伺服器重啟並調用destroy。
瀏覽器提交的請求是滿足Http協議的文本,該文本是由伺服器容器,例如Tomcat接受並解析封裝成了HttpServletRequest類型的request,所有的HTTP頭數據都是可以通過request的對應方法查詢到(get),當需要輸出給客戶端瀏覽器時,Tomcat將輸出流文本封裝成HttpServletResponse的response對象,通過設置response的屬性,來控制輸出的內容。其中,Tomcat利用request和response做為參數,調用Servlet中的方法,例如doget(request,response);
2.2.3 JSP
JSP實際上屬於Java Servlet的分支技術之一,是基於B/S結構研發出的網頁開發技術,允許用戶和網頁進行交互,極大增強了網頁的擴展性。JSP主要遵循如下流程進行運作:利用JSP標簽把Java語言編寫的代碼插入到超文本標記語言開發的網頁中。標準的JSP標簽格式是:「<%內容%>」。
JSP技術主要起到了實現Java web用戶界面的作用。在進行JSP編程之前,應當把HTML、XHTML、XML三者有效結合運用。JSP技術通常是利用表單來實現各項需求的,比方說數據輸入、資料庫訪問等等需求。在得到全部信息後,便可以開始設計網頁。
JSP標簽能夠實現資料庫訪問等眾多功能與請求,此外,還能夠轉發、傳輸、共享各個網頁發送的信息,主要有請求、轉換、編譯、執行以及響應五個步驟。
第一步,客戶端將會發送出網頁請求;第二步,JSP Container將會對網頁請求進行轉換,將其轉換成Servlet文件;第三步,進一步對Servlet文件進行編譯,將其編譯成.class文件;第四步,執行網頁請求並產生Servlet實例;第五步,將網頁請求的Servlet實例返回至客戶端進行響應。
從整體角度來看,JSP執行過程裡面最核心的兩個階段應當是請求期和轉譯期。顧名思義,所謂的請求期指的是把.class文件返回給客戶端的過程,而所謂的轉譯期就是一步步把網頁請求轉換成.class文件的過程。
JSP擁有眾多性能方面的優勢。在應用JSP技術之後,程序開發者在程序設計時候面臨的編程工作復雜程度會顯著減少,並且能夠與可視化工具一同運用,進一步降低程序開發者的開發壓力。除此之外,由於JSP本身包含內置對象等特點,可以在很大程度上給servlet編程提供助力,有效提高了編程速度,降低了編程難度,程序開發者無須再人工翻譯網頁請求和外部信息。並且JSP囊括了Java的全部技術內容,所以只要是Java支持的插件包、工具包等等都可以被JSP調用,也不需要性能多強的運作平台。
2.2.4 B/S結構
B/S(Brower/Server)體系結構的優勢:
(1)程序基本建立在伺服器中,便於維護更新;
(2)能夠與客戶端有效區分進行邏輯處理、數據處理等操作,這樣的話,在維護客戶端之時,就無須更改其他內容。
B/S體系結構的交互模式:
B/S結構可以把網頁請求和返回響應連接起來,進而實現兩者間的實時交互,並且允許瀏覽器直接發送request請求,依靠伺服器來訪問系統伺服器和資料庫伺服器。從應用伺服器角度來說,應用伺服器可以從資料庫中獲得所需數據,隨後再向瀏覽器發送請求,最後,由瀏覽器對HTML文件進行處理。
2.3 Mysql資料庫
資料庫,簡而言之可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據運行新增、截取、更新、刪除等操作。所謂「資料庫」系以一定方式儲存在一起、能予多個用戶共享、具有盡可能小的冗餘度、與應用程序彼此獨立的數據集合資料庫管理系統(Database Management System,簡稱DBMS)是為管理資料庫而設計的電腦軟體系統,一般具有存儲、截取、安全保障、備份等基礎功能
資料庫管理系統主要分為以下兩類:關系資料庫(關系資料庫是創建在關系模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的數據。現實世界中的各種實體以及實體之間的各種聯系均用關系模型來表示。)非關系型資料庫 NoSQL( 非關系型資料庫是對不同於傳統的關系資料庫的資料庫管理系統的統稱。與關系資料庫最大的不同點是不使用SQL作為查詢語言。)。幾乎所有的資料庫管理系統都配備了一個開放式資料庫連接(ODBC)驅動程序,令各個資料庫之間得以互相集成。
Mysql 是一種廣泛使用且流行的資料庫伺服器,長時間存儲在計算機設備上的數據集合,由各種用戶和應用程序根據某些規則進行組織和通信,簡單地說就是數據文件存儲的大型倉庫。它功能強大,易於使用和管理,安全靠譜,跨平台界面,安全穩定的網路,適合大多數軟體和應用程序軟體資料庫的後端開發。另外,Mysql 資料庫允許用戶以多種語言編寫程序進行訪問,同時,開元也是該數據路最大的特點,可以在不同平台上工作,還可以應用於 Web 的開發站點以及其他程序的數據後端。
3 可行性和需求性分析
3.1 可行性分析
3.1.1 技術可行性分析
基於Java收集和監控系統設計的電腦產品價格沒有嚴格要求。只需熟練使用java和資料庫即可,不需要太多復雜的不同類型的語中,減輕了設計實現的復雜度。高成本性能;高安全性。
3.1.2 操作條件可行性分析
操作性主要是完成了用於收集商品價格的監視管理系統的設計,完成了用戶Experience的使用管理者總是通過系統方便管理相關數據信息用戶信息的請求和管理者管理數據和信息系統的操作不需要專家,可以直接對應操作管理的通用模塊系統的操作性完全可能。因為系統的操作也是用於登錄的介面窗口的使用,所以只要操作簡單,操作人員就可以完全操作。
3.2 總體需求分析
系統主要實現的是管理學生信息,管理員可以對學生、教師、課程進行直接的操作(添加,修改,刪除)具體有:
(1) 對新教師的添加;
(2) 系統資料庫中已經添加後、存在的教師的有關信息的修改;
(3) 學生信息管理系統中已經存在的教師數據的刪除;
(4) 對系統中已經存在的所有教師數據的查看等。
還有對課程數據的相關相關操作,具體包括:
(1) 對新課程數據的添加;
(2) 系統資料庫中已添加存在的課程數據的修改;
(3) 系統中已經添加後存在的課程數據的刪除;
(4) 對系統中已經存在的所有課程數據的查看等。
管理員對自己的操作:點擊修改個人信息按鈕,管理員可以對自己的密碼進行修改。
關於據庫中管理員的用例如圖3-1所示。
圖3-1 管理員用例圖
教師模塊的主要功能包括對於課程數據以及學生相關數據的修改,具體操作同管理員類似,教師模塊的用例圖如圖3-2所示。
圖3-2 教師角色用例圖
學生模塊主要的功能包括對於個人信息的修改查看以及成績的查看等,具體如圖3-3所示。
圖3-3 學生角色用例圖
4 系統的設計
4.1 系統架構設計
架構設計的目的是為了反映一個結構和其他元素之間的關系,抽象,通常用於指導大型軟體系統,數將模型層、視圖層和控制層。並且結合工廠模式整體設計思路,分別將數據訪問層,服務層每一層的最上方封裝一個工廠類,控制層通過服務層的工廠類調用相關服務,服務類再調用數據訪問層的工廠類來實現相關的數據訪問層操作,本系統的體系結構設計的詳情如圖4-1。
圖4-1 學生信息管理系統結構圖
4.2 系統功能模塊設計
本學生信息管理系統共設計了四個功能模塊,其為教師管理功能模塊、學生信息管理功能模塊、課程管理功能模塊和成績管理功能模塊等。系統的功能模塊設計圖如圖4-2所示。
圖4-2 系統功能模塊設計
4.3 系統資料庫設計
1.教師可以管理學生(學號、姓名、性別、出生日期)的所有信息以及課程和成績。
2.學生通過選課來選取課程,老師工作,授予學生所選課程並給予學生成績,學生擁有成績。如圖4-3所示。
圖4-3系統資料庫ER圖
系統中的管理員有用戶名和密碼兩個屬性,用來登錄系統,如圖4-1所示。
圖4-1管理員信息圖
學生信息表在資料庫中的表名定義為student,其共有七個欄位用來存儲學生的學號、姓名、班級、性別、身份證號、所在省份、電話信息。具體學生信息表欄位如圖4-2所示。
圖4-2學生信息圖
課程信息表在資料庫中的表名定義為course,其共有六個欄位用來存儲課程的課程編號、課程名、上課班級、任課教師、課時、課程學分信息。具體課程信息表欄位如圖4-3所示。
圖4-3課程信息圖
成績信息表在資料庫中的表名定義為grade,其共有8個欄位用來存儲成績的成績編號、學生學號、學生姓名、課程班級、課程編號、課程名、成績分數、成績類型。具體成績信息表欄位如圖4-4所示。
圖4-4成績信息圖
教師信息表在資料庫中的表名定義為teacher,其共有七個欄位用來存儲教師信息。具體教師信息表欄位如圖4-5所示。
圖4-5教師信息圖
5 系統開發與實現
5.1 登入界面的實現
登錄界面如圖5-1所示,在登錄界面需要選擇不同的登錄對象,選擇之後輸入對應的用戶名和密碼以及驗證碼,然後點擊確定按鈕即可登入學籍信息管理系統。
圖5-1 登錄界面
(1) 點擊登錄選項中的管理員登錄選項,輸入管理員賬戶和密碼可進行管理員登錄,管理員登錄部分代碼:
//管理員登錄
(2)點擊登錄選項中的學生登錄選項,輸入學生賬戶和密碼可進行學生端的登錄,學生端登錄後可進行自己的有關信息的修改(個人信息、密碼等)
學生端登錄部分代碼:
//學生端登錄
(3)點擊登錄選項中的教師登錄選項,輸入教師賬戶和密碼可進行教師端的登錄,
教師端登錄部分代碼:
//教師端登錄
登錄之後就可以看到系統的主界面,左側是導航菜單,不同的身份登錄後導航菜單的功能也不同:
學生登錄:學生可對自己的個人信息進行修改,可以選課、打卡、請假,也可以對自己的選課和成績進行查詢。
老師登錄:老師可以對學生的信息進行添加、修改、刪除、導出學生成績操作。
管理員登錄:管理員可以對學生和老師的信息進行添加、修改和刪除操作。
如圖5-2所示
圖5-2 系統主界面
5.2 教師管理的實現
管理員登錄成功之後可以完成系統中教師的管理,對教師數據進行修改和添加的簡單操作,添加教師如圖5-3所示。
圖5-3 添加教師
添加教師功能主要代碼如下:
教師添加成功之後可以查看已經添加的教師,並且仍能夠對已經添加的教師信息進行修改和刪除操作。如圖5-4所示。
圖5-4 教師列表查看
如果教師的相關信息需要修改,首先需要選中想要修改的教師,點擊修改,將信息修改即可,如圖5-5所示。
圖5-5 教師信息修改
教師信息修改部分代碼如下:
如果有教師的相關信息需要刪除,首先需要選中想要修改的教師,點擊刪除按鈕,即可將想要刪除的教師進行刪除操作,具體如圖5-6所示。
圖5-6教師的刪除
教師刪除功能主要代碼如下:
5.3 學生管理的實現
管理員登錄成功之後可以完成系統中學生的管理,對教師數據進行增刪改查操作,對學生的管理和對教師的管理類似,學生管理界面如圖5-7所示。
圖5-7 學生管理界面
5.4 課程管理的實現
管理員登錄成功之後可以完成系統中課程的管理,對課程數據進行增刪改查操作,對課程的管理類似,不再贅述,課程管理界面如圖5-8所示。
圖5-8 課程管理界面
5.5 老師模塊的實現
教師登錄到系統之後,可以對學生的考勤信息以及成績進行管理,學生成績的添加,點擊添加按鈕即可對學生的成績信息添加,選中一名學生,點擊修改,可對學生成績進行修改操作,如圖5-9所示。
圖5-9 學生成績的修改
學生成績修改功能部分代碼如下:
教師還可以對學生的成績進行統計,可以查看學生每門課程的所有成績的統計圖,據圖如圖5-10所示。
圖5-10 學生成績的統計
教師可以對學生的成績表進行導出操作,學生成績導出如圖5-11所示。
圖5-11 學生成績單導出
學生成績導出之後效果如圖5-12所示。
圖5-12 學生成績導出