JAVA程序设计报告学生信息管理系统.docx
《JAVA程序设计报告学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《JAVA程序设计报告学生信息管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
![JAVA程序设计报告学生信息管理系统.docx](https://file1.bdocx.com/fileroot1/2023-7/26/9920220d-ef4a-40c1-8629-ae8645f9d1ce/9920220d-ef4a-40c1-8629-ae8645f9d1ce1.gif)
JAVA程序设计报告学生信息管理系统
JAVA程序设计报告
----------------------------------------------------------------------------------------------------------------------------------------学生信息管理系统
辅导老师:
松敏
系别:
计算机系
专业:
软件技术
学号:
0640836
姓名:
夏中成
日期:
2008-6-13
目录
一需求分析。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
二功能分析。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
三模块设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
四软件设计分析。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
(一)数据库设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
(二)模块及窗体设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
1数据库模块设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
2用户登录识别模块。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
5
3用户信息管理模块。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
6
(1)密码修改。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
6
(2)用户信息添加和删除。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
8
4学生息管理模块。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
10
(1)添加信息。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
10
(2)信息查看。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
11
(3)信息修改。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
12
(4)删除信息。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
14
5系统管理模块。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
15
6主窗体菜单设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
15
五总结。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
15
参考资料:
.......................................................15
一需求分析
本系统的主要目的就是实现学生信息管理,使学生信息管理工作更加容易,从而提高工作效率,降低管理成本.
系统中需要对拥护身份进行管理,采取登陆进入系统的形式.
二功能分析
1用户登录信息管理
2用户信息管理
3学生信息管理
4系统管理
系统首页
用户
登陆
信息
管理
用户信息管理
学生信息管理
通过
身份
请求
添加
删除
用户
修改
密码
添加
查看
修改
删除
系统管理
重新
登陆
退出登陆
三模块设计
1数据库设计模块
2用户登录识别模块
3用户信息管理模块
4学生息管理模块
5系统管理模块
四软件设计分析
(一)数据库设计
数据库名称:
student
表名:
user,stud,grade
表user:
存放登陆用户的用户名和密码
表stud:
存放学生基本信息
表grade:
存放学生成绩信息
(二)模块及窗体设计
1数据库模块设计
将数据库的连接包装在一个database类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。
下表是他的基本属性
文件名
成员变量
成员方法
database.java
publicstaticConnection;
publicstaticStatementst;publicstaticResultSetrs;
publicstaticbooleanjoinDB()
publicstaticbooleanexecuteSQL(StringsqlString)
publicstaticbooleanquery(StringsqlString)
代码如下:
importjava.sql.*;//引入包
publicclassdatabase{
publicstaticConnection;//定义一个连接对象
publicstaticStatementst;//定义一个SQL语句对象
publicstaticResultSetrs;//定义一个数据集
publicstaticbooleanjoinDB(){//用来判断是否连接成功
booleanjoinFlag;
try{
joinFlag=true;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//通过调用java.lang中的Class类的forName方法来实现JDBC—ODBC桥接器
=DriverManager.getConnection("jdbc:
odbc:
student","sa","");//创建一个连接对象
.setCatalog("student");//加载数据库
System.out.println("数据库连接成功");
st=.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
//返回一个可滚动的结果集,数据库变化时结果集跟着变化;不能用结果集更新数据库中的表
returnjoinFlag;
}catch(SQLExceptionsqlEx){
System.out.println(sqlEx.getMessage());
joinFlag=false;
returnjoinFlag;
}catch(ClassNotFoundExceptionnotfoundEX){
System.out.println(notfoundEX.getMessage());
joinFlag=false;
returnjoinFlag;
}
}
publicstaticbooleanexecuteSQL(StringsqlString){
booleanexecuteFlag;
try{
st.execute(sqlString);
executeFlag=true;
}catch(Exceptione){
executeFlag=false;
System.out.println("sqlexception:
"+e.getMessage());
}
returnexecuteFlag;
}
publicstaticbooleanquery(StringsqlString){
try{
rs=null;
rs=st.executeQuery(sqlString);
}catch(ExceptionEx){
System.out.println("sqlexception:
"+Ex);
returnfalse;
}
returntrue;
}
}
2用户登录识别模块
代码封装在类Land里,所用到的信息保存在表user里
下表是他的基本属性
文件名
控件
成员方法
Land.java
JLabel:
labelname=newJLabel("用户名")
labelmima=newJLabel("密码")
Jbutton:
btenter=newJButton("确定");
btcancel=newJButton("清空");
privatevoidJudge(StringsqlString)
判断用户名和密码是否正确的成员方法代码:
privatevoidJudge(StringsqlString){
if(database.joinDB()){//如果数据库连接成功
if(database.query(sqlString))//如果SQL语句执行成功
try{
if(database.rs.isBeforeFirst()){//如果指向记录集的在第一条记录的前面
System.out.println("密码正确");
jf.setVisible(false);//窗体不可见
database..close();//关闭数据库连接
newMain();//主窗体
}
else{
System.out.println("错误");
newJOptionPane().showMessageDialog(null,"用户名或密码错误!
","",JOptionPane.ERROR_MESSAGE);
}
}catch(Exceptionex){
System.out.println(ex.getMessage());
}
}
else{
System.out.println("连接数据库不成功!
!
!
");
}
}
按钮“确定”的监听事件代码:
publicvoidactionPerformed(ActionEvente){
if(textname.getText().equals("")){
newJOptionPane().showMessageDialog(null,"用户名不能为空!
");
}
elseif(textmima.getText().equals("")){
newJOptionPane().showMessageDialog(null,"密码不能为空!
");
}
else{
Stringsql="select*fromuserwhereuser_id='"+textname.getText()+"'andpassword='"+textmima.getText()+"'";
System.out.println(sql);
Judge(sql);//调用成员方法,判断是否用户名和密码正确
}}
3用户信息管理模块
(1)密码修改
用户名将自动从表user里检索出来,供用户选择
以下是它的基本属性
文件名
控件名称
xgmima.java
Jlabel:
lbe2、lbe3、lbe4、lbe5
JcomboBox:
tf
JpasswordField:
pas1、pas2、pas3
Jbutton:
b1=newJButton("确定");
b2=newJButton("清空");
将所有用用户名读出来
database.joinDB();//连接数据库
Stringsql="select*fromuser";
try{
if(database.query(sql)){
while(database.rs.next()){//依次将用户名读出
Stringname=database.rs.getString("user_id");
tf.addItem(name);
}
}
}
catch(Exceptione){}
确定“按钮”的监听事件代码:
b1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringname=""+tf.getSelectedItem();
System.out.println(name);
Stringsql="select*fromuserwhereuser_id='"+name+"'";
System.out.println(sql);
try{
if(database.query(sql)){
database.rs.next();
Stringps1=pas1.getText();
Stringpassword=database.rs.getString("Password");
if(ps1.equals(password)){
if(pas2.getText().equals(pas3.getText())){
Stringsupdate="updateusersetpassword='"+pas3.getText()+"'whereuser_id='"+name+"'";
database.executeSQL(supdate);
newJOptionPane().showMessageDialog(null,"密码更改成功!
");
}
else{
newJOptionPane().showMessageDialog(null,"两次密码不同!
");
}
}
else{
newJOptionPane().showMessageDialog(null,"旧密码不正确!
");
}
}
}
catch(Exceptionel){
System.out.println(el);
}
}
});
(2)用户信息添加和删除
上半部分用来添加用户,下半部分用来删除用户
基本属性如下
文件名
控件名
AddDeleteUser.java
privateJButtonbutACancel,butDCancel,butDelete,butOk;
privateJComboBoxcbUserName;
privateJLabeljLabel1,jLabel2,jLabel3,jLabel4,jLabel5;
privateJPasswordFieldpas1,pas2,pas3;
privateJTextFieldtxtname;
//将所有用用户名读出来
database.joinDB();
Stringsql="select*fromuser";
try{
if(database.query(sql)){
while(database.rs.next()){//记录集若有记录则通过循环将数据依次读出
Stringname=database.rs.getString("user_id");
cbUserName.addItem(name);
}
}
}
catch(Exceptione){}
//为添加按钮加事件-----------------------------------------
butOk.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(txtname.getText().equals("")){//判断是否为空
newJOptionPane().showMessageDialog(null,"用户名不能为空!
");
}
elseif(pas1.getText().equals("")){
newJOptionPane().showMessageDialog(null,"密码不能为空!
");
}
elseif(pas1.getText().equals(pas2.getText())){
Stringsql="insertintouservalues('"+txtname.getText()+"','"+pas1.getText()+"')";
try{
if(database.executeSQL(sql)){//若SQL执行成功
newJOptionPane().showMessageDialog(null,"添加成功!
");
cbUserName.addItem(txtname.getText());
}
}
catch(Exceptionea){}
}
}
});
删除按钮监听事件代码
butDelete.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringname=""+cbUserName.getSelectedItem();//得到用户名
Stringsql="select*fromuserwhereuser_id='"+name+"'";
try{
if(database.query(sql)){
database.rs.next();
Stringpas=pas3.getText();
Stringpassword=database.rs.getString("Password");
System.out.println(password);
if(pas.equals(password)){//比较密码是否与记录集里对应一致
Stringsdelete="deletefromuserwhereuser_id='"+name+"'";
if(database.executeSQL(sdelete)){
newJOptionPane().showMessageDialog(null,"删除成功!
");
pas3.setText("");
cbUserName.removeAllItems();//将删除的条目从JcomboBox中删除
Stringsql1="select*fromuser";
if(database.query(sql1)){
while(database.rs.next()){//更新JcomboBox条目
Stringname1=database.rs.getString("user_id");
cbUserName.addItem(name1);
}}
}}
else{
newJOptionPane().showMessageDialog(null,"密码不正确!
");
}}
}
catch(Exceptionel){
System.out.println(el);
}}
});
4学生息管理模块
(1)添加信息
该添加是按照先添加学生信息,再添加学生成绩的次序进行的当学生信息添加完后,添加学生成绩窗口的学号会自动将学生信息里没有添加过成绩的成绩显示出来
添加学生信息中的“添加“按钮代码:
butOk.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(jtf1.getText().equals("")){
newJOptionPane().showMessageDialog(null,"学号不能为空");
}
elseif(jtf2.getText().equals("")){
newJOptionPane().showMessageDialog(null,"姓名不能为空");
}
elseif(jtf3.getText().equals("")){
newJOptionPane().showMessageDialog(null,"性别不能为空");
}
else{
Stringsql="insertintostudvalues('"+jtf1.getText()+"','"+jtf2.getText()+"','"+jtf3.getText()+"','"+jtf4.getText()+"','"+jtf5.getText()+"','"+jtf6.getText()+"','"+jtf7.getText()+"')";
try{
if(database.executeSQL(sql)){
newJOptionPane().showMessageDialog(null,"添加成功!
");
}
}
catch(Exceptionea){}
}
}
});
添加学生成绩信息读取学号信息
database.joinDB();
Stringsql="select学号fromstudwhere学号NOTIN(select学号fromgrade)";
try{
if(database.query(sql)){
while(database.rs.next()){
Stringname=database.rs.getString("学号");
jnum.addItem(name);
}
}
}
catch(Exceptionea){}
添加学生成绩信息“添加“