学生管理系统实训报告.docx

上传人:b****7 文档编号:9422205 上传时间:2023-02-04 格式:DOCX 页数:14 大小:1.54MB
下载 相关 举报
学生管理系统实训报告.docx_第1页
第1页 / 共14页
学生管理系统实训报告.docx_第2页
第2页 / 共14页
学生管理系统实训报告.docx_第3页
第3页 / 共14页
学生管理系统实训报告.docx_第4页
第4页 / 共14页
学生管理系统实训报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

学生管理系统实训报告.docx

《学生管理系统实训报告.docx》由会员分享,可在线阅读,更多相关《学生管理系统实训报告.docx(14页珍藏版)》请在冰豆网上搜索。

学生管理系统实训报告.docx

学生管理系统实训报告

学生管理系统

实训报告

 

姓名:

xxxx

学号:

xxxxxxxxxxx

班级:

软件外包

时间:

2011年6月26日

指导老师:

xxx

 

【目录】

一.设计需求分析……………………………………………3

二.概要设计…………………………………………………4

三.程序整体设计说明………………………………………5

四.程序部分代码与注释……………………………………6

五.测试结果…………………………………………………9

六.设计心得…………………………………………………12

 

【摘要】随着信息时代的发展,对于学生信息的管理已经不再局限于纸上的那些繁琐的记录,而是通过电脑软件程序对学生的信息进行管理,这样不但可以简化管理的复杂度,还可以提高管理过程中的准确性,因此有必要设计一款专门针对于学生信息管理的一个程序,于是设计了此学生信息管理系统。

该应用程序能够对每个学生的相关信息进行注册、储存、修改和删除等操作。

该系统要求按身份登陆,即学生、教师、管理员等不同身份进行访问。

该程序便于操作,面向广大群体,条理清晰,容易理解,容易修改。

【关键字】学生管理系统准确性操作访问

 

一.设计需求分析

随着学校规模的增大以及新增学生选课的影响,手工方式已经无法记录学生

的实时信息,应用学生管理系统软件能够简化管理的复杂度,也能够对学生的信息进行及时的更新修改等操作,主要的功能包括对学生信息的管理、对教师信息的管理、对课程信息的管理及对选课信息的管理。

设计需要满足以下的需求:

1.学生的信息的资料,应该包括学生的学号、姓名、所属学院、所属专业、所属班级、家庭地址,并且系统还能够修改输入错误的学生个人信息记录。

2.可以对学生的选课进行管理,包括可选课程和个人已选课信息,并进行相应的选课操作。

3.可以对课程进行管理,课程管理包括增加课程和删除课程,该课程包括任课教师和所属专业。

4.根据学号、姓名、班级查询学生信息。

根据课程、专业、学分查询课程的相关信息。

5.系统使用权限管理方式。

根据工作流程,系统有2种角色:

管理员、学生和教师。

管理员允许对课程信息、教师信息、学生信息的管理。

学生可以进行选课和查看课程信息的操作。

教师可以查看本人所售课程的学生信息。

 

二.概要设计

该应用程序要求用户按照数据库中的相关信息登陆界面,如若用户名或密码与数据库不符合,则无法登陆该应用程序的主界面。

当用户登录到主界面后可以对相关信息进行修改、删除等操作,该应用程序的数据与数据库的StudentManager的数据相连,每一次的修改、删除等操作都会被保存在该数据库的相应位置上。

该应用程序包含了管理员模块(包含学生管理子模块和课程管理子模块)、教师模块、学生模块和公共模块。

管理员模块是系统的核心,学生管理子系统实现对学生信息的添加、修改、删除操作,以输入条件进行条件查询。

课程管理子系统实现对课程的添加,添加时为其分配任课教师、上课时间、地点和课程详细信息,实现对课程的修改、删除,查看某个课程的详细信息等。

教师模块实现查看自己所教授的课程、课程有哪些学生选修,以及利用本系统提交学生的成绩。

学生模块实现学生的选课,查看、修改自己的选课信息。

公有模块实现用户的身份验证,密码修改,退出系统等功能。

在学生管理子系统包括学生信息和选课信息,要求对学生信息和选课信息的添加、删除、修改和查询,该模块中当学生修改信息时,对相关的组件添加了事件,相应的JComboBox添加了ItemStateChange的相关事件,对其进行了三级联动设计,利用形式参数进行传递一个int型的值,当点击相应的JComboBox时启动下一个相关的组件应用。

在课程查询时应用相应的JScorllPane组件显示所查询的相关信息。

教师模块中包含了对教师信息的相关内容还包括对课程的查询。

公共模块要求按照数据库相关信息的身份验证,包括学生、教师、管理员等不同的身份的登录,还包括密码的修改,管理员的添加及管理。

公共模块还包括退出系统。

整个学生管理系统的数据都是在数据库有存储信息的,因此在应用程序中要应用相应的SQLserver语句来对数据库添加、删除、修改相应信息。

SQLserver语句主要有update、insert、select语句。

 

三.程序整体设计说明

作为一个学生管理系统,本系统的设计主要包含:

系统登录、学生信息管理、班级管理、课程管理和用户管理。

学生管理系统框架主要结构如图所示:

LoginFrame界面主要为JTextField,利用JTextField的getText属性获取文本框里输入的相应的内容,然后应用SQLserver的select的语句来查询并验证密码是否与数据库一致,如若不一致则弹出一个MessageBox的信息提示框提示输入正确的密码。

在验证密码是应用了equals关键字,equals主要应用于字符的比较,而等号(=)主要应用于数据的比较。

MainFrame界面主要JMenu和JMenuItem组件,完成了主界面的菜单栏,并分别对每个JMenuItem添加了一个事件监听器,使点击时显示每个相应的Item界面,以便于对信息的操作。

学生信息管理主要包括学生信息和选课信息,完成了相应的信息注册、修改、查询和选课查询操作。

学生信息注册包含姓名、学号、省份证号、所属学院及专业和班级、家庭住址等信息。

数据库的Student表也添加了相应的列。

在学生信息注册和修改页面还应用了JComboBox的三级联动,使用参数传递,获取相应的JComboBox的getSelectedIndex来控制显示的内容。

班级信息录入和班级信息管理对各个班级的信息进行管理的界面,主要有JComboBox的二级联动和JRadioButton组件的应用。

班级信息管理界面中声明了displayButtonGroup用于控制三个JRadioButton组件。

用不同的方式查询班级信息,当点击修改时弹出一个修改的JFrame界面。

学生管理系统与数据库的连接:

该应用程序中封装了一个类linkdb,linkdb里的代码完成了数据库SQLserver与Eclipse的连接,以提高代码的复用性,是程序代码减少一部分。

在相应的Eclipse中的导入了sqljdbc完成应用程序的驱动。

只有导入了sqljdbc,数据库与应用程序才能顺利使用.连接数据库的相应的代码为:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

Stringurl="jdbc:

sqlserver:

//localhost:

1433;

databaseName=StudentManager";

 

四.学生管理系统部分应用程序的代码及注释

(1)LoginFrame界面的部分代码

//给界面添加一个背景图片

Stringpath=newFile(".").getAbsolutePath()

+"/image/20086140002110601921.jpg";

image=newImageIcon(path);

//设置图片大小

image.setImage(image.getImage().getScaledInstance(800,600,

Image.SCALE_DEFAULT));

contentPane=newJPanel(){

publicvoidpaintComponent(Graphicsg){

g.drawImage(image.getImage(),0,0,null);

super.paintComponent(g);

}

};

contentPane.setBorder(newEmptyBorder(5,5,5,5));

contentPane.setOpaque(false);

//给nameJTextField添加一个鼠标点击事件,当点击nameJTextField时清空里面原有的用户名

nameJTextField=newJTextField();

nameJTextField.addMouseListener(newMouseAdapter(){

@Override

publicvoidmouseClicked(MouseEvente){

nameJTextField.setText("");

//利用Select语句对数据库进行查询

sta=linkdb.getStatement();

Stringsql="Select*fromStudentwhere学生编号='"+admin+"'";

(2)MainFrame界面的部分代码

//利用setVisible属性将页面跳转到下一个页面中

privatevoidstudent_1JMenuItemactionPerformed(ActionEvente){

StudentInfoAddFrameFrame=newStudentInfoAddFrame();

Frame.setVisible(true);

sta=link.getStatement();

}

(3)StudentInfoAddFrame界面的部分代码

//声明实例变量sta和rs

privateStatementsta;

privateResultSetrs;

//获取各个JTextField中的信息,数据添加到数据库中并用提示框提醒添加成功

Stringclientname=clientJTextField.getText();//学生编号

Stringname=nameJTextField.getText();//学生姓名

Stringnumber=numberJTextField.getText();//学号

Stringid=textField.getText();//身份证号

Stringcollege=(String)collegeJComboBox.getSelectedItem();//学院

Stringsubject=(String)subjectJComboBox.getSelectedItem();//专业

Stringbanji=(String)classJComboBox.getSelectedItem();//班级

Stringadress=addressJTextField.getText();//家庭住址

//利用update语句对数据库进行数据修改

Stringsql="updateStudentset学生姓名='"+name+"',学院名称='"

+college+"',家庭住址='"+adress+"',身份证号='"+id

+"',班级名称='"+banji+"',专业名称='"+subject+"',学号='"+number+"'where学生编号='"+clientname+"'";

//将执行语句放到抛出异常中,一旦程序遇到错误无法运行时,就抛出异常

try{

inti=sta.executeUpdate(sql);

//对数据库的行影响为1时,显示信息添加成功

if(i==1){

JOptionPane.showMessageDialog(null,"信息添加成功!

","添加成功",JOptionPane.INFORMATION_MESSAGE);

}

}catch(SQLExceptionexception){

exception.printStackTrace();//打印出错误的原因

//信息添加失败

JOptionPane.showMessageDialog(null,"对不起,信息添加失败!

","添加失败",JOptionPane.ERROR_MESSAGE);

}

主页面的JcomboBox的三级联动主要体现:

//学院的JComboBox的事件

privatevoidcollegeJComboBoxItemStateChanged(ItemEvente){

collegenumber=collegeJComboBox.getSelectedIndex();

subject(collegenumber);

}

//相应的subject方法

publicintsubject(intt){

inti;

subjectJComboBox.removeAllItems();

subjectJComboBox.updateUI();

for(i=0;i

subjectJComboBox.addItem(subjectName[t][i]);

}

returnt;

}

//专业列表的itemStatechange事件

privatevoidsubjectJComboBoxitemChange(ItemEvente){

//TODOAuto-generatedmethodstub

intzhuanye_hao=subjectJComboBox.getSelectedIndex();

if(zhuanye_hao>=0){

banji_shezhi(zhuanye_hao);

}else{

}

}

(4)StudentInfoQuery界面的部分代码

importjavax.swing.table.DefaultTableModel;//用于向界面中插入表格

importjava.awt.event.MouseAdapter;//用于在界面中点击一行的监听器

importjava.awt.event.MouseEvent;//用于在界面中点击一行的事件

privateintcolumnCount;//表示获取的列数

Stringsql;//声明全局变量sql

Stringhuoqu;//声明全局变量huoqu

String[]s;//声明一个数组s

//用于显示表

DefaultTableModeldtm=newDefaultTableModel();

JTabletable=newJTable();

//从表中获取一行,添加一个鼠标点击事件

JScrollPane.setViewportView(table);//将表显示出来

table.addMouseListener(newMouseAdapter(){

publicvoidmouseClicked(MouseEventevent){

huoqu=table.getValueAt(table.getSelectedRow(),

0).toString();

}});

//获取数据库中表头

sta=linkdb.getStatement();

try{

rs=sta.executeQuery("select学生编号,学院名称,专业名称,班级名称,学生姓名,家庭住址,身份证号,学号fromStudent");

columnCount=rs.getMetaData().getColumnCount();

for(inti=1;i<=columnCount;i++){

dtm.addColumn(rs.getMetaData().getColumnName(i));

}

rs.close();

}catch(SQLExceptionexception){

exception.printStackTrace();}

//从表里获取信息

s=newString[columnCount];

try{

while(rs.next()){

for(inti=1;i

s[i-1]=rs.getString(i);

}

dtm.addRow(s);

}

}catch(SQLExceptione1){

//TODOAuto-generatedcatchblock

e1.printStackTrace();

}

五.测试结果

登录的主界面:

主界面:

学生信息查询界面及修改界面:

选课信息界面及删除信息是弹出的文本框:

删除用户界面及删除用户时弹出文本框:

六.设计心得

通过本次的实训作业的设计,我学会了许多东西,例如如何向一个界面中添加一个背景图片,在设计过程中学会了JComboBox的联动,实现方法是在第一个JComboBox上加一个监听,即ItemListener,然后实现监听器itemstateChange(),这样当地一个JComboBox变化时,程序就会知道,然后获取第一个JComboBox的值,拿着这个值查询数据库里的信息,rs=sql.executeQuery("select*fromxxxwherexxx")然后遍历rs每读取一行就在第二个JComboBox中添加一个item,即第二个JComboBox.addItem(rs.getString(x))。

还学会了如何向java界面中添加一个表即是利用DefaultTableModel来实现的,在此还要学会如何从数据库中读取一行或一列,来实现查询、修改等操作。

此外,其他相关组件也要进一步学习,能够对某一事件添加相应的程序代码来控制程序运行,能够对要求的结果进行简单的代码编写。

在写代码时提高程序代码的复用性,会使程序更简洁明了。

有关数据库学到的知识有:

execute(Stringsql)执行给定的SQL语句,该语句可能返回多个语句。

executeQuery(Stringsql)执行给定的SQL语句,给语句返回单个ResultSet对象;executeUpdate(Stringsql)执行给定的SQL语句,给语句可能为INSERT、UPDATE、DELETE语句,或者不返回任何内容的SQL语句(如SQLDDS语句);

前两种一般在查询中使用,最后一个在插入、更新、删除时使用。

在程序设计中最深的体会是一定要将程序的框架设计合理,如果框架设计的不合理接下来的工作很难进行。

程序框架不可能在一次规划中就能够成功,多次试验得出一个较好的更适合程序运行的。

在编程中的一个小细节就有可能使系统从头做起,所以编程中一定要细心,偶尔的一个字符错误都会导致程序运行报错,此外在编写代码时要把事件添加完整,否则会报出空指针之类的错误。

编程一定要有自己的思路,根据自己及客户的需要来编写,而且思路要开阔,不能只局限于一个方法,学会思考,下次遇到类似的问题能够很快的建立自己的思想构图。

通过本次的学生管理系统的设计,我对此管理系统有了更加深刻的了解,也加深了我对软件开发方面的了解,使得我对软件的开发更加充满兴趣,不但如此,我通过本次的实训设计,了解了自己在软件设计方面的优点和不足,能够对以后的软件开发提供更加丰富的经验,为以后的软件开发奠定了更好的基础。

总之,通过本次的实训设计,我对这类的管理系统有了更深刻的了解,我会在以后的时间里努力的学习,争取获得更加好的突破。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1