java课程设计报告.docx
《java课程设计报告.docx》由会员分享,可在线阅读,更多相关《java课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。
java课程设计报告
程序设计
课程设计报告
设计题目:
java面向对象程序设计
专业班级:
学号:
姓名:
指导教师:
时间:
2013.06.8-2012.06.21
Java课程设计:
信息录入显示系统
摘要:
本信息录入显示系统主要依托java程序设计和Access数据库,使得其有简单的信息录入、显示及查询功能,并且可以对数据进行分类的指定查询。
系统使用Java进行编写操作的界面,美观而有显出人性化设计的好处。
关键字:
信息录入信息显示信息查询退出
一、课题概述
1、设计目的
运用JAVA、JDBC及Access设计一个完整的信息录入显示系统。
2、设计要求
信息录入显示系统要求有四个界面:
主界面、录入界面、显示界面和查询界面。
通过JAVA程序连接到数据库,根据相对应的操作要求完成一系列的操作,包括:
学生信息的录入、显示,查询等操作。
二、设计思路及采取方案
1、设计主表
进入Access数据库创建一个名字为java.mdb的数据库文件,其中含有一个表info,如下图所示。
2、连接数据库
通过JDBC完成与Access数据库建立连接。
创建一个ODBC数据源,控制面板-管理工具-数据源(ODBC),在弹出的对话框中选择相应的操作。
3、界面设计思路及取得结果
信息录入显示系统有四个界面:
主界面、录入界面、显示界面和查询界面,分别使用四个panel。
菜单栏使用MenuBar()方法,按钮input、show、search、exid添加到工具条JToorBar上,如图所示。
主界面:
面板Panel上加入标签Label,在标签山将标签设置为居中显示。
代码:
panel=newPanel();
label=newLabel("欢迎使用",Label.CENTER);
label.setForeground(Color.black);//设置字体颜色
label.setFont(newFont("宋体",1,50));//设置字体大小
panel.setBackground(Color.cyan);
panel.setLayout(card);
panel.add("1",label);
add(panel,BorderLayout.CENTER);
card.show(panel,"1");//主界面
录入界面:
创建五个Box,将标签、文本框和按钮分别放在box1、box2、box3中,将box1和box2添加到basebox中,把basebox和box3添加boxh中并设置basebox和box3的位置,把boxh添加到面板上,运用BorderLayout使其居中显示。
代码:
box1=Box.createVerticalBox();
box1.add(newLabel("学号"));
box1.add(Box.createVerticalStrut(10));
box1.add(newLabel("姓名"));
box1.add(Box.createVerticalStrut(10));
box1.add(newLabel("专业"));
box1.add(Box.createVerticalStrut(10));
box2=Box.createVerticalBox();
t1=newTextField(12);
box2.add(t1);
box2.add(Box.createVerticalStrut(10));
t2=newTextField(12);
box2.add(t2);
box2.add(Box.createVerticalStrut(10));
t3=newTextField(12);
box2.add(t3);
box2.add(Box.createVerticalStrut(10));
basebox=Box.createHorizontalBox();
basebox.add(box1);
basebox.add(box2);
box3=Box.createHorizontalBox();
button5=newJButton("录入");
button5.addActionListener(this);
box3.add(button5);
box3.add(Box.createVerticalStrut(12));
button6=newJButton("重置");
button6.addActionListener(this);
box3.add(button6);
box3.add(Box.createVerticalStrut(12));
button7=newJButton("结束");
button7.addActionListener(this);
box3.add(button7);
box3.add(Box.createVerticalStrut(12));
boxh=Box.createVerticalBox();
boxh.add(basebox);
boxh.add(Box.createVerticalStrut(10));
boxh.add(box3);
panelinput=newPanel();
panelinput.add(boxh,BorderLayout.CENTER);
panel.add("2",panelinput);
显示界面:
面板panel上创建表格table和按钮button,点击“返回”按钮后返回主界面。
显示界面要与数据库相连接。
代码:
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione){
System.out.println();
}
try{
con=DriverManager.getConnection("jdbc:
odbc:
TestDB","admin","admin");
sql=con.createStatement();
rs=sql.executeQuery("select*frominfo");
while(rs.next()&&i<30){
a[i][0]=rs.getString("iNum");
a[i][1]=rs.getString("iName");
a[i][2]=rs.getString("iMajor");
i++;
}
con.close();
}catch(SQLExceptione){}
button8=newJButton("返回");
button8.addActionListener(this);
table=newJTable(a,name);
panelshow=newPanel();
panelshow.setLayout(newBorderLayout());
panelshow.add(newJScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
panelshow.add(button8,BorderLayout.SOUTH);
panel.add("3",panelshow);//show
查询界面:
创建两个面板panel,其中一个面板上添加下拉列表、文本框和标签并连同表格一起添加到另一个面板上。
代码:
JTabletable,tablesearch;
Objectb[][]=newObject[30][3];
inti=0;intp=0;
Objectname[]={"iNum","iName","iMajor"};
Stringinum;Stringiname;Stringimajor;
Stringrecode,insertStr;
Labellabelsearch=newLabel("查询条件");
TextFieldt4=newTextField(12);
Choicech=newChoice();
ch.add("iNum");ch.add("iName");ch.add("iMajor");
ch.addItemListener(this);
t4.addActionListener(this);
panelsearch=newPanel();
panelsearch.setLayout(newBorderLayout());
panelsearch1=newPanel();
panelsearch1.add(labelsearch);
panelsearch1.add(t4);
panelsearch1.add(ch);
panelsearch1.setBackground(Color.pink);
tablesearch=newJTable(b,name);
panelsearch.add(newJScrollPane(tablesearch,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
panelsearch.add(panelsearch1,BorderLayout.SOUTH);
panel.add("4",panelsearch);
三、设计总结与体会
遇到问题及解决方法:
1、面板上的元素有覆盖现象
运用BorderLayout布局设置元素位置。
2、面板的切换
CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,每层可以利用Panel来实现复杂的用户界面。
使用CardLayout的一般步骤如下:
(1)创建CardLayout对象作为布局,如:
CardLayoutcard=newCardLayout();
(2)使用容器的setLayout()方法为容器设置布局,如:
con.setLayout(card);
(3)调用容器的方法add(Strings,Componentb)将组件b加入容器,并给出了显示该组件的代号s。
组件的代号是另外给的,和组件的名字没有必然联系。
不同的组件代号不同。
最先加入con的是第一张,依次排序。
(4)创建的布局card用CardLayout类提供的show(方法),根据容器名字con和其中的组件的代号s显示这一组件:
mycard.show(con,s);
3、stmt=Con.createStatement(),代码编译没有报错,但是运行却抛出异常的问题
要注意语句中文本型和整型赋值的区别,引号的用法,取结果集并处理ResultSet的next()方法。
4、表格中录入数据后在显示界面不能显示
表格对象调用repaint()方法进行数据刷新。
设计体会:
这次设计实验要求要连接到Access数据库,并且可以对数据执行查询,添加,修改,删除等一些操作。
首先要做好一个数据库,然后要创建一个ODBC数据源,控制面板-管理工具-数据源(ODBC),在弹出的对话框中选择相应的操作。
本信息录入显示系统主要依托java程序设计和Access数据库,使得其有简单的信息录入、显示及查询功能,并且可以对数据进行分类的指定查询。
系统使用Java进行编写操作的界面,美观而有显出人性化设计的好处。
通过本次实践课程,我熟悉了Access数据库的基本操作如:
创建数据库、表,以及对相关表的添加、删除、修改、查询等操作。
在本次实验设计中,主要用到了java面向用户程序设计,学会了在java语言中实现对数据库的应用,能够在图形窗口下进行数据的管理。
当然,由于我自身对编程知识的掌握及运用存在不足,使得系统还存在一定的缺陷,还望老师指正。
最后在实践过程中得到了老师和同学的帮助,在这里表示感谢。
四、主要参考文献
Java2实用教程(第三版)
五、附录
importjavax.swing.*;
importjava.awt.*;
importjavax.swing.border.*;
importjava.awt.event.*;
importjava.sql.*;
classwindowextendsFrameimplementsItemListener,ActionListener
{Frameframe;
JButtonb1,b2,b3,b4,b5,b6,b7,b8;
JToolBartoolBar;
Panelpanel,panel1,panel2,panel3,panel4;
Labellabel;
MenuBarmb=newMenuBar();
Menum=newMenu("功能选择");
MenuIteminput=newMenuItem("录入");
MenuItemshow=newMenuItem("显示");
MenuItemsearch=newMenuItem("查询");
MenuItemexit=newMenuItem("退出");
CardLayoutcard=newCardLayout();
Boxbasebox,box1,box2,box3,boxh;
TextFieldt1,t2,t3;
Connectioncon;
Statementsql;
ResultSetrs;
JTabletablesearch;
Objecta[][]=newObject[30][3];
Objectb[][]=newObject[30][3];
inti=0;intp=0;
Objectname[]={"iNum","iName","iMajor"};
JTabletable=newJTable(a,name);
Stringinum;Stringiname;Stringimajor;
Stringrecode,insertStr;
Labellabelsearch=newLabel("查询条件");
TextFieldt4=newTextField(12);
Choicech=newChoice();
window()
{frame=newFrame("信息录入显示系统");
mb.add(m);
setMenuBar(mb);
m.add(input);
input.addActionListener(this);
m.add(show);
show.addActionListener(this);
m.add(search);
search.addActionListener(this);
m.addSeparator();
m.add(exit);
exit.addActionListener(this);
b1=newJButton("input",newImageIcon("01.jpg"));
b1.addActionListener(this);
b2=newJButton("show",newImageIcon("02.jpg"));
b2.addActionListener(this);
b3=newJButton("search",newImageIcon("03.jpg"));
b3.addActionListener(this);
b4=newJButton("exit",newImageIcon("04.jpg"));
b4.addActionListener(this);
toolBar=newJToolBar();
toolBar.add(b1);
toolBar.add(b2);
toolBar.add(b3);
toolBar.add(b4);
this.add(toolBar,BorderLayout.NORTH);
panel=newPanel();
label=newLabel("欢迎使用",Label.CENTER);
label.setForeground(Color.black);//设置字体颜色
label.setFont(newFont("宋体",1,50));//设置字体大小
panel.setBackground(Color.cyan);
panel.setLayout(card);
panel.add("1",label);
add(panel,BorderLayout.CENTER);
card.show(panel,"1");//主界面
box1=Box.createVerticalBox();
box1.add(newLabel("学号"));
box1.add(Box.createVerticalStrut(10));
box1.add(newLabel("姓名"));
box1.add(Box.createVerticalStrut(10));
box1.add(newLabel("专业"));
box1.add(Box.createVerticalStrut(10));
box2=Box.createVerticalBox();
t1=newTextField(12);
box2.add(t1);
box2.add(Box.createVerticalStrut(10));
t2=newTextField(12);
box2.add(t2);
box2.add(Box.createVerticalStrut(10));
t3=newTextField(12);
box2.add(t3);
box2.add(Box.createVerticalStrut(10));
basebox=Box.createHorizontalBox();
basebox.add(box1);
basebox.add(box2);
box3=Box.createHorizontalBox();
b5=newJButton("录入");
b5.addActionListener(this);
box3.add(b5);
box3.add(Box.createVerticalStrut(12));
b6=newJButton("重置");
b6.addActionListener(this);
box3.add(b6);
box3.add(Box.createVerticalStrut(12));
b7=newJButton("结束");
b7.addActionListener(this);
box3.add(b7);
box3.add(Box.createVerticalStrut(12));
boxh=Box.createVerticalBox();
boxh.add(basebox);
boxh.add(Box.createVerticalStrut(10));
boxh.add(box3);
panel1=newPanel();
panel1.add(boxh,BorderLayout.CENTER);
panel.add("2",panel1);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente)
{System.exit(0);}
}
);//input
b8=newJButton("返回");
b8.addActionListener(this);
panel2=newPanel();
panel2.setLayout(newBorderLayout());
panel2.add(newJScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
panel2.add(b8,BorderLayout.SOUTH);
panel.add("3",panel2);//show
ch.add("iNum");
ch.add("iName");
ch.add("iMajor");
ch.addItemListener(this);
t4.addActionListener(this);
panel3=newPanel();
panel3.setLayout(newBorderLayout());
panel4=newPanel();
panel4.add(labelsearch);
panel4.add(t4);
panel4.add(ch);
panel4.setBackground(Color.pink);
tablesearch=newJTable(b,name);
panel3.add(newJScrollPane(tablesearch,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
panel3.add(panel4,BorderLayout.SOUTH);
panel.add("4",panel3);//SEARCH
setBounds(50,50,600,600);
setVisible(true);
validate();
}
publicvoidactionPerformed(ActionEvente)
{if(e.getSource()==b1||e.getSource()==input)
card.show(panel,"2");
if(e.getSource()==b2||e.getSource()==show){
try{
Class.forName("sun.