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

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

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

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

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

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

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

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

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.ERROR_MESSAGE);

}

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

//学院的JComboBox的事件

privatevoidcollegeJComboBoxItemStateChanged(ItemEvente){

collegenumber=collegeJComboBox.getSelectedIndex();

subject(collegenumber);

//相应的subject方法

publicintsubject(intt){

inti;

subjectJComboBox.removeAllItems();

subjectJComboBox.updateUI();

for(i=0;

i<

subjectName[t].length;

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;

=columnCount;

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

rs.close();

//从表里获取信息

s=newString[columnCount];

while(rs.next()){

for(inti=1;

columnCount+1;

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