java学生信息管理系统+代码Word文档格式.docx
《java学生信息管理系统+代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《java学生信息管理系统+代码Word文档格式.docx(98页珍藏版)》请在冰豆网上搜索。
4、成绩信息管理模块
成绩信息管理模块包括修改成绩、查询、显示全部等。
成绩信息管理模块结构图
5、用户信息管理模块
用户信息管理模块包括修改、查询、显示全部等。
用户信息管理模块结构图
3、数据库设计
在数据库student中共有4张数据表:
s(学生信息表)、c(课程信息表)、sc(选课信息表)、unpw(用户信息表),下面定义每张表的字段名称和数据类型。
s(学生信息表)
字段名称
数据类型
描述
sno
char(10)
学号,关键字
sn
char(20)
姓名
sa
int
年龄
ss
性别
sd
院系
c(课程信息表)
cno
课程号,关键字
cn
char(30)
课程名
pcno
先行课程号
sc(选课信息表)
g
成绩
unpw(用户信息表)
un
用户名,关键字
pw
密码
qx
角色
4、界面库设计
1、学生信息管理系统的登录
学生信息管理系统可由管理员和学生两种身份的人使用。
管理员和学生身份登录所能操作的功能有很大的区别。
系统初始化一个系统管理员,登录名:
admin密码:
admin
学生登录系统的登录名为学号,密码也为学号(如:
10001),登录后可以修改密码。
登录界面
管理员登录系统后的界面
学生登录系统后的界面
2、实现管理员和学生操作功能的界面
管理员的登录系统后可以进行学生信息管理、课程信息管理、选课信息管理、成绩信息管理、用户信息管理等功能操作,其具体界面设计如下图所示。
学生信息管理功能的界面
课程信息管理功能的界面
选课信息管理功能的界面
成绩信息管理功能的界面
用户信息管理功能的界面
学生的登录系统后可以进行学生信息查看、成绩信息查看、个人信息管理等功能操作,其具体界面设计如下图所示。
学生信息查看功能的界面
成绩信息查看功能的界面
个人信息管理功能的界面
5、程序类的设计
SimpleStudentManager主函数类
DLFrame登陆界面类
ManagerFrane管理员界面类
StudentFrame学生界面类
SM学生信息管理的类
SAdd用于学生信息管理中增加或修改某条记录的界面的类
SSelect用于学生基本信息管理中查询时输入学号的界面的类
CM课程信息管理的类
CAdd用于课程信息管理中增加或修改某条记录的界面的类
CSelect用于课程信息管理中查询时输入课程号的界面的类
SCM选课信息管理的类
SCSelect用于选课信息管理中查询时输入学号的界面的类
GM成绩信息管理的类
GAdd用于成绩信息管理中修改成绩的界面的类
GSelect用于成绩信息管理中查询时输入学号的界面的类
PM用户信息管理的类
UAdd用于用户信息管理中修改密码的界面的类
PSelect用于用户信息管理中查询时输入用户名的界面的类
StudentS用于学生信息查看时输入学号的界面的类
StudentSelect用于成绩信息查看时输入学号的界面的类
PPM个人信息管理的类
PPSelect用于个人信息管理查询时输入用户名的界面的类
程序类的具体代码实现见工程文件夹中的代码及注释
6、系统的使用说明及环境配置
学生信息管理系统提供了管理员和学生这两个角色登录系统,管理员通过用户名:
admin登录系统后可以进行相应的操作。
学生通过以自己的学号(如10001)作为用户名和密码登录系统后进行相应的学生权限范围内的操作。
数据库:
SQLServer2005
连接数据库的登录名:
sa密码:
123
代码:
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.*;
classCAddextendsJFrameimplementsActionListener{//用于课程信息管理中增加或修改某条记录的界面
JLabellcno=newJLabel("
课程号:
"
);
JLabellcname=newJLabel("
课程名:
JLabellpcno=newJLabel("
先行课程号:
JTextFieldtcno=newJTextField(10);
JTextFieldtcname=newJTextField(10);
JTextFieldtpcno=newJTextField(10);
JButtonbtnOK=newJButton("
确定"
JButtonbtnCancel=newJButton("
取消"
JPanelp=newJPanel();
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
booleanisNewsm=true;
//用于判断是否显示课程信息管理的界面
publicCAdd(){//构造方法
this.setTitle("
增加"
this.setBounds(200,200,146,235);
p.setLayout(newFlowLayout(FlowLayout.LEFT));
p.add(lcno);
p.add(tcno);
p.add(lcname);
p.add(tcname);
p.add(lpcno);
p.add(tpcno);
p.add(btnOK);
p.add(btnCancel);
this.add(p);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btnOK.addActionListener(this);
btnCancel.addActionListener(this);
this.show();
}
publicvoidconnDB(){//连接数据库
try{
Class.forName("
com.microsoft.sqlserver.jdbc.SQLServerDriver"
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
con=DriverManager.getConnection(
"
jdbc:
sqlserver:
//localhost:
1433;
DatabaseName=student"
sa"
"
123"
stmt=con.createStatement();
}catch(SQLExceptione){
publicvoidcloseDB()//关闭连接
{
stmt.close();
con.close();
publicvoidinsertst(){//插入记录
Stringkch=null;
Stringkcm=null;
Stringxxkch=null;
kch=tcno.getText();
kcm=tcname.getText();
xxkch=tpcno.getText();
if(this.getTitle()=="
修改"
){//如果是修改记录,先删除再增加
try{
this.connDB();
intrs1=stmt.executeUpdate("
deletefromcwherecno='
+kch+"
'
}catch(SQLExceptione){
e.printStackTrace();
}
}
Stringstr="
insertintocvalues('
+kch+"
'
+kcm+"
+xxkch+"
)"
;
this.connDB();
//连接数据库
try{
stmt.executeUpdate(str);
JOptionPane.showMessageDialog(null,this.getTitle()+"
成功!
"
提示"
JOptionPane.INFORMATION_MESSAGE,newImageIcon(
"
menu4.gif"
));
this.setVisible(false);
catch(SQLExceptione){
JOptionPane.showMessageDialog(null,"
课程号已存在!
tcno.setText("
publicvoidactionPerformed(ActionEvente){
if(e.getActionCommand()=="
){
this.insertst();
if(isNewsm){
newCM("
课程信息管理"
).display();
isNewsm=true;
this.setVisible(false);
newCM("
}
importjava.awt.Component;
importjava.awt.FlowLayout;
importjava.util.*;
importjavax.swing.table.TableCellRenderer;
classCMextendsJFrameimplementsActionListener{//课程信息管理
JButtonbtnAdd=newJButton("
JButtonbtnDelete=newJButton("
删除"
JButtonbtnAlter=newJButton("
JButtonbtnSearch=newJButton("
查询"
JButtonbtnDisplay=newJButton("
显示"
JMenuBarmb=newJMenuBar();
JPanelp1=newJPanel();
JTablesTable;
JScrollPanescroll;
Object[][]playerInfo;
CSelectcst;
Stringmkch=null;
booleanbstd=false;
CM(Stringtitle){//构造方法
super(title);
add("
South"
p);
this.add("
Center"
p1);
mb.add(btnAdd);
mb.add(btnDelete);
mb.add(btnAlter);
mb.add(btnSearch);
mb.add(btnDisplay);
this.connDB();
this.setBounds(200,200,400,260);
btnAdd.addActionListener(this);
btnDelete.addActionListener(this);
btnAlter.addActionListener(this);
btnSearch.addActionListener(this);
btnDisplay.addActionListener(this);
this.setJMenuBar(mb);
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
show();
CM(CSelectcst,Stringtitle){//构造方法
this.cst=cst;
bstd=true;
publicvoiddisplay(){//显示所有的课程信息
inti=0;
intj=0;
intk=0;
Listal=newArrayList();
rs=stmt.executeQuery("
select*fromc"
while(rs.next()){//找出表中的记录数赋给i
al.add(rs.getString("
cno"
cn"
pcno"
i++;
playerInfo=newObject[i][3];
String[]columnNames={"
课程号"
课程名"
先行课程号"
};
select*fromcorderbycno"
while(rs.next()){
playerInfo[j][0]=rs.getString("
playerInfo[j][1]=rs.getString("
playerInfo[j][2]=rs.getString("
j++;
sTable=newJTable(playerInfo,columnNames);
//创建网格
p1.add(sTable);
scroll=newJScrollPane(sTable);
this.add(scroll);
publicvoiddelete(){//删除某个课程信息
Stringxxkch=null;
introw=-1;
row=sTable.getSelectedRow();
if(row==-1){//判断要删除的信息是否被选中
JOptionPane.showMessageDialog(null,"
请选择要删除的记录!
}else{
if(!
bstd){//判断选择的是不是查询后的结果
intj1=0;
rs=stmt.executeQuery("
while(rs.next()&
&
j1<
=row){//找出当前被选中的记录在数据库中的对应
kch=rs.getString("
kcm=rs.getString("
xxkch=rs.getString("
j1++;
}
inti1=0;
//删除数据库中当前被选中的记录
JOptionPane.showMessageDialog(null,"
记录删除成功!
this.dispose();
newCM("
}else{
+mkch+"