Java面向对象程序设计课程设计报告.docx
《Java面向对象程序设计课程设计报告.docx》由会员分享,可在线阅读,更多相关《Java面向对象程序设计课程设计报告.docx(37页珍藏版)》请在冰豆网上搜索。
Java面向对象程序设计课程设计报告
2016-2017学年第2学期经济管理学院实践教学
成绩评定表
实践教学项目
面向对象程序设计
专业
信息管理与信息系统
学生姓名
班级学号
评
语
成绩
日期
课程实践任务书
学院
经济管理学院
专业
信息管理与信息系统
姓名
学号
15040602
15040602
1504060222
课程名称
面向对象程序设计
设计题目
学生信息管理系统
程序设计
设计要求与任务:
使用任意一款JAVA开发工具开发一个实用的应用系统,如记事本、计算器、绘图软件、JSP网站或者MIS。
可以采取B/S或者C/S模式。
此次设计的具体要求还包括:
(1)根据课程设计时间选择适当规模大小的设计题目,分小组进行设计。
(2)小组组长为组员分配任务,根据合理的安排,按照软件开发的流程及方法,踏实地开展课程设计活动.
(3)课程设计包括开发编码和撰写相关文档。
最后提交详细的课程设计报告。
(4)开发出可上机运行的JAVA应用,并上机测试。
工作计划与进度安排:
第1-3天:
布置任务、分组、粗略调查、选题、可行性研究、系统规划。
第4—6天:
深入调研、系统分析、建立数据逻辑模型、系统设计、建立数据物理模型
第7—9天:
系统实施、程序设计、系统调试。
第9-10天:
应用测试、整理资料、撰写报告、准备验收
指导教师(签字):
年月日
专业负责人(签字):
年月日
学院院长(签字):
年月日
摘要
信息技术的快速发展的同时也带来了社会各个行业的发展.它的发展已经深入到社会的各个角落。
作为社会发展的前沿技术,各行各业只要对其合理的进行运用,必将会带来巨大的便捷.成功的运用信息技术将为各类学校学生信息管理带来无限便利.作为计算机应用的一部分,使用学生信息管理系统对学生档案进行管理,有着手工管理所无法比拟的优点,如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,大地提高学生档案管理的效率。
本文介绍了系统开发的全过程。
该系统以Windows为操作平台,Java为开发语言,Access为数据库,Eclipse为开发工具,使用JDBC技术进行连接,实现了在可视化的基础上,利用数据库进行后台管理。
系统由学生和老师基本信息添加、学生和老师基本信息查询、学生和老师基本信息删除、学生和老师基本信息修改及退出系统等功能模块组成,基本功能较全面.用户界面友好、清晰、操作简便,易学易用;系统可读性好,易于维护、更新,安全性较好。
采用传统下拉菜单功能选择,方便、快捷、一目了然,并且在一个窗体中进行操作,可视化强。
采用链入数据库进行存储,可动态进行查看、操作,这样的系统可修改性较强。
关键字:
面向对象;Eclipse;JDBC
1前言
1.1课题简介
学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。
近几年来,国家政策的调整,我国高等院校大规模扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。
其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高。
目前我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,中、小学对学生档案的管理更是落后,这样的管理机制严重浪费人力和物力,已经不能适应时代发展的要求.
计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。
这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代.作为计算机应用的一部分,使用学生信息管理系统对学生档案进行管理,有着手工管理所无法比拟的优点,如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件.
1。
2设计目的
对学生信息管理系统,目的是为了对学校的学生信息管理工作进行系统的管理,以提高工作效率.通过程序设计,开发出学生信息管理系统代替相应的手工管理.学生信息管理系统可为用户提供充足的信息和快捷的查询手段,不但可以实现教师、学生的信息录入、修改与删除,而且可以实现学生成绩的信息录入、修改与删除,同时可以对所有的信息进行查询,实现学校的规范化管理。
2需求分析
2.1业务需求分析
开发一个系统前,首先应该对该系统要实现的功能进行整体的分析和规划,确保在开发过程中不会出现重大缺陷和漏洞.因此,在软件开发的过程中应严格按照软件工程的流程进行系统的分析与设计。
该系统是学生管理系统,应以学生信息为中心,组织相关程序结构。
通过分析可知,学生信息管理系统的主要业务应有:
学生基本信息管理、教师基本信息管理、学生成绩管理、用户管理等。
2.2功能需求分析
通过业务需求分析可知,该系统主要有三类用户:
学生,教师和系统管理员.因此,该系统的功能可分为学生信息管理、教师信息管理和成绩管理,具体有以下几个方面:
(1)学生:
可以对每个学生的信息进行添加、修改、删除和查询。
(2)成绩:
可以对每个学生所学科目的成绩进行添加、删除、修改和查询。
(3)教师:
可以对每个教师的信息进行添加、删除、修改和查询.
2。
2.1学生信息
学生信息主要存储了学生的基本情况,包括学号、姓名、性别、所在班级、所在学院等信息.一个学号可唯一确定一名学生。
学生信息集中进行管理,方便进行相关基本信息的查询、修改、删除等活动,大大简化了手续。
2.2.2教师信息
教师信息主要存储了教师的基本情况,包括教师编号、姓名、性别、职称、所在学院等信息。
一个教师编号可唯一确定一名教师。
教师信息集中进行管理,方便进行查询、修改、删除和人事变动等活动,大大简化了手续.
2.2.3成绩管理
成绩管理的对象是学生所学科目的相应成绩,对成绩进行集中管理,方便了学生查询成绩、教师添加、查询和修改成绩,加快了查询速度,提高了准确率,大大简化了手续。
图2-1学生信息管理系统功能模块图
3数据库设计
3。
1Java连接数据库
3。
1。
1关系数据库概述
关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,用二维表格形式来表述实体与实体之间关系。
有3种完整性约束:
实体完整性、参照完整性和用户自定义完整性,其中实体完整性和参照完整性是关系数据库中必不可少的完整性条件,分别表述为主属性不为空和一表或多表之间具有某种对应关系、相互制约。
3。
1.2通过JDBC访问数据库
JDBC由Java编程语言编写的类和接口组成,是实现Java与各种数据库连接的关键,提供了将Java与数据库连接起来的程序接口,使用户可以以SQL的形式编写访问请求,然后传给数据库,其结果再由这一接口返回,从而实现对数据库中数据操作的目的.
3。
2数据库与基本表设计
由于该系统数据量不大,采用了Access作为数据库,所建的系统数据库名为“student1”。
通过需求分析、概念设计与逻辑设计,可知该系统数据库应涉及到以下基本表:
班级表、学生表、教师表,具体结构如下:
(1)班级表(班级编号,班级名称,所属学院,班级人数)
该表用于保存班级信息,其数据字典如表3—1所示:
表3—1班级表数据字典
字段名称
数据类型
说明
班级编号
varchar(20)
主键
班级名称
varchar(20)
所属学院
varchar(20)
班级人数
int
(2)学生表(学号,姓名,性别,出生日期,班级编号)
该表用于存储学生的基本信息,其数据字典如表3—2所示:
表3-2学生表数据字典
字段名称
数据类型
说明
学号
varchar(20)
主键
姓名
varchar(20)
性别
varchar(20)
属性域为“男”,“女"
出生日期
data
班级编号
varchar(20)
外键,参照班级表中
班级编号
(3)教师表(教师编号,姓名,性别,职称,所属学院,出生日期)
该表用于存储教师的基本信息,其数据字典如表3—3所示:
表3-3教师表数据字典
字段名称
数据类型
说明
教师编号
varchar(20)
主键
姓名
varchar(20)
性别
varchar(20)
属性域为“男”,“女"
出生日期
data
职称
varchar(20)
所属学院
varchar(20)
(4)课程表(课程号,课程名,学分)
该表用于存储学生可学课程的基本信息,其数据字典如表3—4所示:
表3—4课程表数据字典
字段名称
数据类型
说明
课程号
varchar(20)
主键
课程名
varchar(20)
学分
int
(5)成绩表(学号,课程号,成绩,教师编号)
该表用于存储学生可学课程的成绩情况,其数据字典如表3-5所示:
表3-5课程表数据字典
字段名称
数据类型
说明
学号
varchar(20)
外键,参照学生表中
学号
课程号
varchar(20)
外键,参照课程表中
课程编号
成绩
int
教师编号
varchar(20)
外键,参照教师表中
教师编号
4系统设计与实施
4。
1EclipseJavaNeon3
出于稳定性与便利性的考量,本设计选用了EclipseJavaNeon3作为程序的开发环境,Eclipse是著名的跨平台的自由集成开发环境(IDE),最初由OTI和IBM两家公司的IDE产品开发组创建,它本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
使用时可清楚的发现错误,并能根据相应规则进行修改,大大简化了程序检查工作.由于packageexplorer的存在,使得随时查找文件变得十分方便。
同时又提供有很便利的数据库连接方式。
EclipseJavaNeon3具有以下四大优点:
(1)从编写、查错、编译、帮助等等各方面为Java语言贴身定做。
(2)可无限扩展的强大插件功能。
(3)众多公司、厂商、组织支持。
(4)开放,自由,免费。
4.2结构设计
该系统用于对学生的基本信息与学生的成绩进行管理,主要包括添加、修改和删除学生与教师基本信息,录入、修改和删除学生的成绩,查询学生和教师的基本信息,为了方便,全部操作均在界面中完成。
由此,将该系统结构设计为登录模块、学生模块、教师模块,对应于学生与教师这两类主要用户。
由于涉及界面设计,因此调用了java.awt.*、java.awt。
event。
*、javax。
swing。
*、java。
util.*、javax.swing.event。
*、java。
sql。
*等包。
4.3文件组织结构
学生信息管理系统中使用的根目录文件夹是“nnn”,其文件组织结构图如图4-1所示:
图4-1项目文件组织结构图
4。
4登录模块
登录模块使进入学生信息管理系统的第一个界面,相当于一个网站的主页。
4.4.1设计构想
该系统是学生信息管理系统,用户为三类:
学生、教师和系统管理员,可在相应的权限范围内查询和更新系统数据。
因此,不同的用户在登录时需有不同的角色选项,此外,还应有各自的用户名和密码。
4.4。
2实现登录模块
(1)要生成一个界面,可应用AWT知识。
设置其名字为学生信息管理系统;设置布局管理器为(null)布局管理器,这样方便往其中放组件;设置窗口大小和位置,还要设置窗口可见性。
(2)生成界面后,接下来就需要实现每个功能,在设计构想中提到的第一个功能就是要对操作对象的身份进行选择,这里要用下拉列表的形式进行选择,也可以用单选按钮来完成这个功能。
在这项功能中,首先要选择身份,所以要定义一个JLabel来说明,定义完JLabel后,就需要定义一个JComoBox,也就是下拉列表框。
(3)输入用户名和密码。
需要用两个JLabel来指明需要输入用户名和密码。
输入用户名需要定义一个JTextField,也就是单文本框.同时输入文本,但输入密码和输入用户名是不一样的,它需要定义成JPasswordField,它的输出结果为“*****”这样的形式。
(4)创建两个按钮,一个是登录按钮,另一个是取消登录按钮,用来输入的用户名和密码及选择的身份进行提交。
当然要对登录按钮事件进行事件监听,首先要验证用户名和密码是否正确并对上,然后根据选择的身份来选择需要进入那个界面,其代码如下:
publicclassInfo_ManageextendsFrameimplementsActionListener{
JLabelJLUserName=newJLabel(”用户名”);
JLabelJLPaw=newJLabel("密码");
JLabelJLP=newJLabel("角色");
JTextFieldJTUserName=newJTextField();
JPasswordFieldJPsw=newJPasswordField();
JTextFieldjt=newJTextField(10);
Stringstr[]={”学生",”教师”,”管理者”};
JComboBoxJCB=newJComboBox(str);
JButtonJB1=newJButton(”登录”);
JButtonJB2=newJButton(”取消”);
publicInfo_Manage(){
this.setTitle(”学生信息管理系统”);
this。
setLayout(null);
JLUserName.setBounds(100,40,100,20);
this.add(JLUserName);
JTUserName.setBounds(200,40,100,20);
this.add(JTUserName);
JLPaw.setBounds(100,100,100,20);
this.add(JLPaw);
JPsw.setBounds(200,100,80,20);
this。
add(JPsw);
JCB.setBounds(200,150,100,20);
this。
add(JCB);
JLP.setBounds(100,150,100,20);
this。
add(JLP);
JB1。
setBounds(100,200,60,20);
this.add(JB1);
JB1。
addActionListener(this);
JB2.setBounds(200,200,60,20);
this。
add(JB2);
JB2。
addActionListener(this);
this。
setVisible(true);
this.setBounds(10,10,400,250);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System。
exit(0);
}
});
JCB.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
inth=JCB。
getSelectedIndex();
if(h==0)student_managesm=newstudent_manage();
elseif(h==1)teacher_managetm=newteacher_manage();
}
});
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==JB1){
Stringname=JTUserName。
getText();
Stringpassword=newString(JPsw.getPassword());
if((name!
=null&&(name.equals("1")))
&&(password!
=null&&(password。
equals(”1")))){
newstudent_manage();}
else{
}
}
}
}
其运行结果如图4-2所示:
图4—2Info_Manage。
java的显示结果
4.5学生信息模块
当选择“学生”时,单击“登录"按钮就可以进入学生信息管理系统了,其信息量很大,具体如下所述:
4。
5.1设计构想
进入了学生信息管理系统,就可以对摸个学生的信息进行输入、修改和删除,也能对同学的信息进行查询和对程序进行查询。
当打算离开时,还要有一个选项用来退出学生信息管理系统。
4.5.2实现学生信息模块主界面
根据设计构想,首先要搭建一个界面,然后吧学生信息操作的每一部分分为3大块,分别是信息、查询、和其他,并把他们做成菜单形式,最后将对信息的输入,修改和删除做成子菜单添加到信息菜单下;将查询信息和查询成绩添加到查询菜单下;将突出添加到其他菜单下,并把他做成子菜单放在一个菜单下,这样做是为了如果以后需要更多的功能,可以很方便的进行添加。
创建菜单需要的定义JMenu,创建子菜单需要定义JMenuItem,并且要指明是添加到哪个菜单下面,下面是学生管理模块主界面的部分代码
classstudent_manageextendsJFrameimplementsActionListener{
JMenuBarjm=newJMenuBar();
JMenujm1=newJMenu("信息");
JMenuItemjmi1=newJMenuItem(”增加信息”);
JMenuItemjmi2=newJMenuItem("删除信息");
JMenuItemjmi3=newJMenuItem(”修改信息”);
JMenujm2=newJMenu(”查询”);
JMenuItemjmi21=newJMenuItem("基本信息查询");
JMenuItemjm22=newJMenuItem(”成绩查询”);
JMenujm3=newJMenu("其他");
JMenuItemjmi31=newJMenuItem("退出");
//添加组件与设置位置部分代码与Info_Manage.java类似
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jmi1)newAddStudent();
if(e。
getSource()==jmi2)newDeleteStudent();
if(e.getSource()==jmi3)newGetStudent();
if(e.getSource()==jmi21)newSetStudent();
if(e。
getSource()==jmi31)newUsingExit()。
setVisible(true);
if(e。
getSource()==jm22)newSetGrade();
}
}
其运行结果如图4-3所示:
图4-3student_manage。
java的显示结果
4.5.3添加信息
每个子菜单都对应着一个操作界面,接下来对每一个子菜单进行讲解。
当选择信息菜单下的“增加信息"子菜单时,将弹出如图所示的界面,它调用了AddStudent.java类实现该功能。
通过对“增加信息"这一子菜单设置监听,弹出界面.AddStudent.java的代码如下:
classAddStudentextendsJFrameimplementsActionListener{
JLabelJL=newJLabel(”添加基本信息",JLabel.CENTER);
JLabelJLNumber=newJLabel(”学号”);
JTextFieldJTNumber=newJTextField();
JLabelJLName=newJLabel(”姓名”);
JTextFieldJTName=newJTextField();
JLabelJLClass=newJLabel(”班级”);
JTextFieldJTClass=newJTextField();
JLabelJLsex=newJLabel("性别”);
ButtonGroupBG=newButtonGroup();
JRadioButtonJRB1=newJRadioButton("男”);
JRadioButtonJRB2=newJRadioButton("女”);
JLabelJL1=newJLabel("学院");
JTextFieldJT1=newJTextField();
JLabelJL2=newJLabel("生日”);
JTextFieldJT2=newJTextField();
JButtonJBAdd=newJButton("添加");
JButtonJBNext=newJButton("重置”);
JButtonJBExit=newJButton("退出");
Stringsql=”";
//添加组件与设置位置部分代码与Info_Manage.java类似
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==JBAdd){
Stringsnumber=JTNumber.getText();
Stringsname=JTName.getText();
Stringsclass=JTClass.getText();
Stringssex=”女";
if(JRB1.isSelected())
ssex="男";
Stringscollect=JT1。
getText();
Stringsbir=JT2。
getText();
sql=”select*fromstudentwhereid=’"+snumber+"'”;
try{
Class.forName(”sun。
jdbc。
odbc。
JdbcOdbcDriver”);
Connectioncot=DriverManager.getConnection(
”jdbc:
odbc:
student1",”",”");
Statementstm=cot.createStatement();
ResultSetrs=stm.execu