java课程设计学生信息管理系统.docx
《java课程设计学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《java课程设计学生信息管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
![java课程设计学生信息管理系统.docx](https://file1.bdocx.com/fileroot1/2022-12/6/b548d5a2-c463-4242-b2f5-554850e97f74/b548d5a2-c463-4242-b2f5-554850e97f741.gif)
java课程设计学生信息管理系统
-本页仅作为预览文档封面,使用时请删除本页-
java课程设计——学生信息管理系统(总33页)
一.引言
1.1项目的名称
学生信息管理系统
1.2项目背景和目标
学生信息管理系主要对在校学生的个人基本信息以及成绩信息进行管理,对教师用户提供查询信息、增添信息、删除信息等操作功能;对学生用户提供成绩查询功能。
我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设
1.3项目的可行性研究
设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析。
根据目前所开设的课程,学生已经具备这样的知识,有能力综合java编程知识和数据库应用知识做出一个这样的学生信息管理系统
二、需求分析
2.1系统概述
此系统提供给教师用户和学生用户。
教师登陆后可以对学生基本信息表和学生成绩表进行查看、增添新记录和删除记录等操作。
学生登陆后能查询自己的成绩
2.2系统运行环境
Java运行在eclipse软件上,数据库用mysql数据库
2.3功能需求描述
学生信息管理系统要面对教师和学生用户。
对于教师,需要查询全部学生的基本信息和成绩信息,并且可以对其进行修改。
对于学生,不需要查询自己的基本信息,只需要查询成绩。
为了保护学生成绩隐私,每位学生登录系统后只能查询自己的成绩,而无法看到别人的成绩
三、系统设计
3.1开发与设计的总体思想
教师方面:
教师通过自己的用户名和密码登录后,进入教师主界面,在这个主界面里,可以选择要操作的类别,即查询功能还是修改功能。
在查询功能里面,可以选择是查询学生基本信息,还是查询学生成绩信息。
在查询学生基本信息时,可以从依据不同字段,即学生信息表的不同属性进行查找。
在查找学生成绩信息时,只能依据学生姓名和学号进行查找。
在修改功能里面,包括对学生基本信息表和学生成绩表进行增加和删除记录
学生方面:
学生通过自己的用户名和密码登录此系统后,可以查询自己本学期的各科成绩信息
3.2系统模块结构图
3.3数据库结构设计
为了支持此学生信息管理系统,创建数据库studentmanage。
在这个数据库中包含四个表:
student表,teacher表,studentlogin表和score表。
截图如下:
在student(学生基本信息)表中,有五个属性列,分别为:
num(学号),sname(学生姓名姓名),sex(性别),age(年龄),dept(系别)。
其基本数据类型分别为:
int,char,char,int,char。
当查询学生基本信息时,从此表中获取数据。
截图如下:
在teacher(教师登陆)表中,有两个属性列,分别为:
tname(教师姓名),password(登录密码)。
其基本数据类型分别为:
char,char。
当教师用户登陆此系统时,从该表获取数据。
截图如下:
在studentlogin(学生登录)表中,有两个属性列,分别为:
sname(学生姓名),password(登录密码)。
其基本数据类型分别为:
char,char。
当学生用户登陆此系统时,从该表获取数据。
截图如下:
在score(学生成绩)表中,有五个属性列,分别为:
num(学号),sname(学生姓名),course(课程名称),score(考试成绩),credit(学分)。
其基本数据类型分别为:
int,char,char,int,int。
当查询学生成绩信息时,从此表获取数据。
截图如下:
3.4模块设计
总主界面登陆后,可以选择用户,是学生用户或者教师用户。
如果选择学生用户,则进入学生登录界面,在这个界面上输入学生姓名和用户密码。
输入后单击“成绩查询”按钮,若密码正确,这显示该学生本人本学期成绩,若密码不正确,这提示密码错误。
如果选择教师用户,则进入教师登陆界面,在这个界面上输入教师姓名和用户密码,输入后单击“登录”按钮,则进入教师主界面。
在教师主界面可以选择进行查询操作还是修改操作。
在查询操作中包含查询学生基本信息和查询学生成绩信息。
若要查询学生基本信息,点击菜单项则进入学生基本信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“姓名”字段时,要键入某个学生姓名。
输入后,单击“检索”按钮,则开始数据库查询。
如果数据库检索到所需信息,这生成列表显示检索结构,如果没有所需信息,则列表中的内容为空。
若要查询学生成绩信息,则点击学生成绩查询菜单项,进入成绩查询界面。
在此界面的文本框中输入要查询成绩的学生姓名,然后单击检索按钮。
若数据库中有此学生的成绩信息,则生成列表显示成绩信息,若没有此记录,则列表内容为空。
如果教师要进行修改操作,则在教师主界面上选择修改菜单项,在此项中,选择要修改的具体内容,总共有四项修改操作:
增加新生信息,删除毕业生信息(这两个是对学生基本信息表的操作),增加成绩信息,删除成绩信息(这两个是对学生成绩信息表的操作)。
在增加信息操作中,按照标签提示一次输入要增添的记录值,输入完毕后,单击“添加”按钮,若输入成功,则提示成功,若输入失败,则提示失败。
在删除信息操作中,输入要删除信息的学生姓名,单击“删除”按钮,若删除成功,则提示成功,若删除失败则提示失败。
以上就是该学生信息管理系统的操作步骤。
3.5系统流程描述
四、系统实现
本系统保存在studentmanage包里
其中包含四个包:
connection包,dao包,model包,ui包
包中的类:
(1)DBconnection类:
此类设置程序与数据库的连接,通过设置驱动类型和数据源来确定要连接的数据库。
若连接成功,提示:
connectionsuccess,若连接失败,提示:
connectionfailure
DBconnection类源代码:
packageconnection;
importclassDBConnection{
publicstaticConnectioncon=null;
publicstaticConnectiongetConnection()
{
try{
StringdbDriver="";
(dbDriver);
"DriverSuceess");
}catch(ClassNotFoundExceptione){
"Drivernotfound");
();
}
try{
con=("jdbc:
age","root","root");
"ConnectionSuceess");
}catch(SQLExceptione){
"Connetionfailure");
();
}
returncon;
}
publicstaticvoidcloseConnection()
{
if(con!
=null)
try{
();
"databaseclosesuccess");
}catch(SQLExceptione){
"closefailure");
();
}
}
}
包中的类:
(1)StudentDao类:
此类中有四个方法,studentLogin,addStudent,deleteStudent,queryStuden,作用分别是控制学生登陆,增加学生基本信息,查询学生基本信息,删除学生基本信息。
studentLogin()方法中,有两个参数,分别传给select语句中的sname(学生姓名)和password(登录密码),利用select语句在studentlogin表中检索学生登录信息。
若存在此信息,返回true,否则返回false
addStudent()方法中,有五个参数,分别传给insert语句中的num(学号),sname(学生姓名),age(年龄),sex(性别)和dept(系别),利用insert语句向student学生基本信息表中插入学生记录。
若插入成功,返回true,否则返回false
deleteStudent()方法中,有一个参数,传给delete语句中的sname(学生姓名),利用delete语句,把student表中相关学生信息删除。
若删除成功,返回true,否则返回false
queryStuden()方法中,有两个参数,分别传给select语句中的field(查找方式)和key(查找内容),利用select语句,从student表中检索学生基本信息。
若存在此信息,则返回一个ArrayList类的对象lis(表格),否则,异常处理
StudentDao类源代码:
packagedao;
import;
import;
publicclassStudentDao{
publicbooleanstudentLogin(Stringsname,Stringpassword){
DBConnectiondb=newDBConnection();
Connectioncon=();
booleanisfound=false;
PreparedStatementpst;
try{
pst=("select*fromstudentloginwheresname=andpassword=");
(1,sname);
(2,password);
ResultSetrs=();
if())
isfound=true;
}catch(SQLExceptione){
();
}
returnisfound;
}
publicbooleanaddStudent(intnum,Stringsname,Stringsex,intage,
Stringdept){
Connectioncon=();
PreparedStatementpst;
try{
pst=("insertintostudentvalues(,,,,)");
(1,num);
(2,sname);
(3,sex);
(4,age);
(5,dept);
intcount=();etString(3),(4),(5));
(student);
}
}catch(SQLExceptione){
();
}
returnlis;
}
publicbooleandeleteStudent(Stringkey){
Connectioncon=();
Statementstm;
try{
stm=();
Stringsql="deletefromstudentwheresnamelike'%"
+key+"%'";
intcount=(sql);
if(count==1)
returntrue;
else
returnfalse;
}catch(SQLExceptione){
();
}
returnfalse;
}
}
(2)TeacherDao类:
此类中有一个方法:
queryTeacher,作用是控制教师登陆
queryTeacher()方法中,有两个参数,分别传给select语句中的tname(教师姓名)和password(登陆密码),利用select语句在teacher表中检索教师登陆信息。
若存在此信息,返回true,否则返回false
TeacherDao类源代码:
packagedao;
import;
publicclassTeacherDao{
publicbooleanqueryTeacher(Stringtname,Stringpassword){
DBConnectiondb=newDBConnection();
Connectioncon=();
booleanisfound=false;
PreparedStatementpst;
try{
pst=("select*fromteacherwheretname=andpassword=");
(1,tname);
(2,password);
ResultSetrs=();
if())
isfound=true;
}catch(SQLExceptione){
();
}
returnisfound;
}
publicstaticvoidmain(String[]args){
}
}
(3)ScoreDao类:
此类中有四个方法,queryScore,queryScore1,addScore,deleteScor
作用分别是为教师用户提供查询学生成绩信息功能,为学生用户提供
询本人成绩信息功能,添加成绩信息,删除成绩信息。
queryScore()方法中,有一个参数,传给select语句中的sname(学生姓名),利用select语句,查询学生成绩信息表中的内容。
若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理
queryScore1()方法中,有一个参数,传给传给select语句中的sname(学生姓名),这个sname的学生用户登录时输入的姓名。
即此类的作用是每个学生登陆只能查看本人成绩。
若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理
addScore()方法中,有五个参数,分别传给insert语句中的num(学号),sname(学生姓名),course(课程名称),score(成绩),credit(学分)。
利用insert语句,将这些记录写入score表中。
若插入成功返回true,否则返回false
deleteScore()方法中,有一个参数,传给delete语句中的sname(学生姓名),利用delete语句,把score表中相关学生信息删除。
若删除成功,返回true,否则返回false
ScoreDao类源代码:
packagedao;
import;
import;
import;
import;
publicclassScoreDao{
publicArrayListqueryScore(Stringkey){
ArrayListlis=newArrayList();
Connectioncon=();
Statementstm;
try{
stm=();
Stringsql="select*fromscorewheresnamelike'%"+key
+"%'";
ResultSetrs=(sql);
while()){
Scorescore=newScore
(1),
(2),rs
.getString(3),(4),(5));
(score);
}
}catch(SQLExceptione){
();
}
returnlis;
}
publicArrayListqueryScore1(Stringkey){
ArrayListlis=newArrayList();
Connectioncon=();
Statementstm;
try{
stm=();
Stringsql="select*fromscorewheresnamelike'%"+
+"%'";
ResultSetrs=(sql);
while()){
Scorescore=newScore
(1),
(2),rs
.getString(3),(4),(5));
(score);
}
}catch(SQLExceptione){
();
}
returnlis;
}
publicbooleanaddScore(intnum,Stringsname,Stringcourse,intscore,
intcredit){
Connectioncon=();
PreparedStatementpst;
try{
pst=("insertintoscorevalues(,,,,)");
(1,num);
(2,sname);
(3,course);
(4,score);
(5,credit);
intcount=();;
import.*;
publicclassLoginUIextendsJFrame{
JLabell1;
JButtonbt1,bt2;
Containercp;
publicLoginUI(){
l1=newJLabel("请选择用户类型");
bt1=newJButton("教师");
bt2=newJButton("学生");
JPanelp1=newJPanel();
(null);
(150,150,120,40);
(l1);
(120,230,80,30);
(bt1);
(220,230,80,30);
(bt2);
(newTeacherLoginActionListener());
;
import.*;
import;
publicclassStudentLoginUIextendsJFrame{
JLabell1,l2;
JTextFieldt1;
JPasswordFieldt2;
JButtonbt1,bt2;
Containercp;
publicstaticStringst1;
publicStringst2;
publicStudentLoginUI(){
l1=newJLabel("学生姓名");
l2=newJLabel("密码");
t1=newJTextField(12);
t2=newJPasswordField(12);
bt1=newJButton("成绩查询");
bt2=newJButton("退出");
JPanelp1=newJPanel();
(null);
(150,150,80,40);
(l1);
(250,150,80,30);
(t1);
(150,190,80,40);
(l2);
(250,190,80,30);
(t2);
(150,230,120,30);
(bt1);
(280,230,80,30);
(bt2);
(newLoginActionListener());
;
import.*;
import.*;
import;
import;
publicclassStudentScoreUIextendsJFrame{
Stringaa=;
JLabelselectionLabel;
JPaneltopPanel;
Containercontainer;
JTabletable;
JScrollPanebookScrollPane;
JPanelbottomPanel;
publicStudentScoreUI(){
container=();
selectionLabel=newJLabel(aa+"同学本学期成绩如下");
topPanel=newJPanel();
(newFlowLayout);
(selectionLabel);
topPanel);
table=newJTable();
bookScrollPane=newJScrollPane(table);
bookScrollPane);
bottomPanel=newJPanel();
bottomPanel);
("学生成绩查询");
(600,450);
(true);
ScoreDaooneScore=newScoreDao();
ArrayListlis=(aa);
Vectorhead=newVector();
("学号");
("姓名");
("学科");
("成绩");
("学分");
Vectorcontent=newVector();
for(inti=0;i<();i++){
Vectorrow=newVector();
ScoreoneScore1=(Score)(i);
());
());
());
());
());
(row);
}
DefaultTableModelmodel=newDefaultTableModel(content,head);
(model);
repaint();
}
}
执行截图如下:
(4)TeacherLoginUI类:
此类为教师登陆界面,在这个界面上有两个文本框,分别输入教师姓名和登录密码,还有两个按钮,登陆和退出。
输入后,从两个文本框中获取用户输入的内容,点击“登陆”按钮时,调用TeacherDao类中的queryTeacher()方法验证是否存在该用户。
若存在创建TeacherMainUI类的对象,即打开教师主界面,若不存在,则提示密码错误。
TeacherLoginUI类源代码:
packageui;
import.*;
import.*;
import;
publicclassTeacherLoginUIextendsJFrame{
JLabell1,