华东交通大学理工学院
课 程 设 计 报 告 书
所属课程名称 JAVA课程设计 题 目 学生通讯录系统
分 院 电 信 分 院
专业班级 11计科—1班 学 号 20110210440129 学生姓名 余小宝 指导教师 黄建华
20 12年 12月 28日
华东交通大学理工学院
课 程 设 计任 务 书
专 业 计算机科学与技术 班 级 1班 姓名 余小宝
一、课程设计题目 学生通讯录系统 二、课程设计工作:自 2012 年 12 月 18 日起至 2012 年 12 月 28 止。 三、课程设计的内容要求:
本例的目标是开发一个Java图形界面应用程序,能实现教学
测试。具体功能特点如下:
(1) 系统采用数据库存储学生通讯录信息;
(2)实现学生基本信息的按不同条件的查询;
(3)一个界面无法显示所有学生信息,可以实现多页面板
显示,并且可以翻动前后页面进行查;
(4)查询统计功能,能够按照姓名、学号、性别、籍贯、
专业等条件统计分析 ;
(5)系统设计包括规划数据的存储、应用界面、应用功能
华东交通大学理工学院课程设计报告
的实现等环节。
学生签名: 余小宝
20xx年12 月28 日
课程设计(论文)评阅意见
评阅人 职称
20 年 月 日
华东交通大学理工学院课程设计报告
目 录
第1章 课程设计内容及要求.............................................2
第2章 类方法的设计与实现.............................................5
第3章 程序界面 ...........................................................6--7
第4章
第5章
第6章
第7章 程序代码 .........................................................8--18 程序测试 ..................................................18--19 课程设计心得...................................................20--21 参考文献..................................................................22
华东交通大学理工学院课程设计报告
第2章 类方法的设计与实现
2.1测试主界面类tongxunlu
该类的设计包括两个方面:一是应用界面的设计、包括事件驱动;另一个方面就是数据的访问处理,如:学生信息的查询及对后台数据库的访问。
(1) 属性变量设计
Button bt1:查询按钮的初始化;
String Xinxi2[ ]: 用于存放学生信息数组;
Int s: 数组变量初始;
JLabel zh:欢迎界面标签;
JPanel in: 查询界面面板。
(2) 方法设计
构造方法tongxunlu :该方法主要实现界面的布局显示、注册事件监听,以及数据的初始化处理(包括调用xinxi1(ResultSet rt)方法读所有学生信息)。
Zhuye ( ): 实现欢迎界面;
Anniu ( ):按钮的事件处理,实现触发查询主界面窗口;
Xiage ( ): 显示查询主界面;
Duihua (final String name):显示查询对话框,实现按各类条件的查询; actionPerformed( ):动作事件处理,包括转换界面、查询等按钮。
xinxi1(ResultSet rt):调用数据库,实现信息的显示;
华东交通大学理工学院课程设计报告
第3章 程序界面
3.1:程序运行,进入欢迎界面;
3.2:点击“开始查询”按钮,进入查询选项界面;
华东交通大学理工学院课程设计报告
3.3:根据不同条件进行选择查询,比如:点击“按专业查询”按钮,进入如下对话框;
:
3.4:输入关键字,按“查询”,显示所查询的结果信息。
华东交通大学理工学院课程设计报告
第4章 程序代码
import java.awt.Button;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
/* 主类 */
public class tongxunlu extends Frame implements ActionListener{
protected static final ActionListener ActionListener = null; private JPanel in; Button bt1; JLabel lb1; JLabel lbx; JLabel zh; int s=0; int ye=0; /**image**/
ImageIcon tu_xuan=new ImageIcon("images\\xuan.jpg"); //创建加载图片
ImageIcon xian=new ImageIcon("images\\xian.jpg");//创建加载图片
public tongxunlu(){ zhuye();
华东交通大学理工学院课程设计报告
} this.setVisible(true); /*欢迎界面*/ public void zhuye(){ this.setTitle("学生通讯录系统"); this.setSize(500,430); this.setLocation(400,150); this.setLayout(null);
this.setResizable(false);
this.addWindowListener(new WindowAdapter(){ //关闭窗口的事件处理
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
zh=new JLabel (tu_xuan); //图片加载到面板 zh.setSize(this.getSize()); zh.setLocation(0, 0); zh.setVisible(true); this.add(zh);
lb1=new JLabel("欢迎进入学生通讯录系统!");
lb1.setSize(400, 50);
//lb1.setBackground(Color.BLUE);
lb1.setLocation((zh.getSize().width-lb1.getSize().width)/2,150); zh.add(lb1);
Font ziti=new Font("楷体",Font.BOLD,30);
lb1.setForeground(Color.blue);
lb1.setFont(ziti);
anniu();
} /*欢迎界面查询按扭 */ public void anniu(){
bt1=new Button("开始查询");
bt1.setSize(70,35);
bt1.setLocation(205,250);
// bt1.setVisible(true);
华东交通大学理工学院课程设计报告
bt1.setBackground(Color.green); zh.add(bt1);
bt1.addActionListener(this); }
@Override public void actionPerformed(ActionEvent e) { } /*查询主界面*/ public void xiage(){ in=new JPanel (); Button bt2[]=new Button[6]; final String f[]={"按姓名查询","按学号查询","按电话查询","按in.setSize(zh.getSize()); //获取欢迎界面大小 in.setLocation(0, 0); JLabel tu = new JLabel (xian); //图片加载到面板 tu.setSize(in.getSize()); tu.setLocation(0, 0); tu.setVisible(true); in.add(tu); /*按扭摆放位置*/ for(int i=0;i<6;i++){ else bt2[i]=new Button(f[i]); bt2[i].setSize(80,35); bt2[i].setBackground(Color.pink); if(i%2==0) zh.setVisible(false); xiage(); QQ查询","按专业查询","退出"}; bt2[i].setLocation((in.getSize().width-210)/2,100+(i/2)*60); bt2[i].setLocation((in.getSize().width-210)/2+130,100+(i/2)*6 } bt2[0].addActionListener(new ActionListener(){ //注册" @Override
第 10 页 共 21 页 0); in.add(bt2[i]); 按姓名查询"按扭监听器
华东交通大学理工学院课程设计报告
public void actionPerformed(ActionEvent e) { //"按姓名查询"按扭事件处理
扭监听器
事件处理
扭监听器
事件处理
扭监听器
事件处理
// TODO Auto-generated method stub duihua(f[0]); } }); bt2[1].addActionListener(new ActionListener(){ //注册按 @Override public void actionPerformed(ActionEvent e) { //按扭 // TODO Auto-generated method stub duihua(f[1]); } }); bt2[2].addActionListener(new ActionListener(){ //注册按 @Override public void actionPerformed(ActionEvent e) { //按扭 // TODO Auto-generated method stub duihua(f[2]); } }); bt2[3].addActionListener(new ActionListener(){ //注册按 @Override public void actionPerformed(ActionEvent e) { //按扭 // TODO Auto-generated method stub duihua(f[3]); }
华东交通大学理工学院课程设计报告
}); bt2[4].addActionListener(new ActionListener(){ //注册按 @Override public void actionPerformed(ActionEvent e) { //按扭 } // TODO Auto-generated method stub duihua(f[4]); 扭监听器 事件处理 }); bt2[5].addActionListener(new ActionListener(){ //注册按
@Override public void actionPerformed(ActionEvent e) { //按扭 } zh.setVisible(true); 扭监听器
事件处理 in.setVisible(false); }); in.setVisible(true); this.add(in); } /*对话框界面*/ public void duihua(final String name){ final JDialog tan =new JDialog(this,"查询"); //创建弹tan.setSize(250,200); 出对话框 tan.setLocation(this.getLocation().x+50,this.getLocation().y+ tan.setLayout(null); JLabel tishi=new JLabel("请输入tishi.setSize(tan.getSize().width,35);
第 12 页 共 21 页 50); "+name.charAt(1)+name.charAt(2)); //创建提示按扭面板
华东交通大学理工学院课程设计报告
tishi.setLayout(null); tishi.setLocation(2,25); tan.add(tishi); Button cha=new Button("查 询"); //创建查询按扭 cha.setSize(50, 20); final TextField text=new TextField(""); text.setSize(100, 20); text.setLocation(75, 5); cha.setLocation(text.getLocation().x+text.getSize().width+5, tishi.add(cha); tishi.add(text); tan.setVisible(true); tan.addWindowListener(new WindowAdapter(){ //注册弹出对text.getLocation().y); 话框监听器 @Override public void windowClosing(WindowEvent e) { //关闭弹
tan.dispose(); 出对话框事件处理
} }); cha.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }
第 13 页 共 21 页 try { Connection Statement stmt=conn.createStatement(); conn=DriverManager.getConnection("jdbc:odbc:通讯录");
华东交通大学理工学院课程设计报告
ResultSet rt=stmt.executeQuery("Select * from 通讯录 where "+name.charAt(1)+name.charAt(2)+" in
(\'"+text.getText()+"\')");
xinxi1(rt); } catch (SQLException e1) { System.out.println("数据库连接错误!");
e1.printStackTrace();
}
}
/*显示所查询的信息对话框*/
public void xinxi1(ResultSet rt){
JLabel XS=new JLabel(" 姓名
性别 专业 电话
地址
QQ");
XS.setSize(1000,50 );
final JDialog xs =new JDialog();
XS.setLocation(xs.getLocation().x+5,
xs.getLocation().y-5);
xs.setTitle("信息显示");
xs.setLayout(null);
xs.setSize(850,470);
xs.setLocation(180,30);
xs.setVisible(true);
xs.add(XS);
Button xia=new Button("下一页");
xia.setSize(70,35);
xia.setLocation(410,350);
xs.add(xia);
Button shang=new Button("上一页");
shang.setSize(70,35);
shang.setLocation(310,350);
xs.add(shang);
final xinxi2[] shu=new xinxi2[1000];
try {
s=0;
while(rt.next()){ 学号
华东交通大学理工学院课程设计报告
shu[s]=new xinxi2(rt.getString("姓名
"),rt.getString("学号"),rt.getString("性别"),rt.getString("专业"),rt.getString("电话"),rt.getString("地址"),rt.getString("QQ"));
shang.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(ye>=20){ ye-=10;
第 15 页 共 21 页 s++; } rt.close(); } catch (SQLException e) {} for(int i=0;i<s;i++){ } ye=10; xia.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { } if(ye<=s){ } ye+=10; for(int i=ye-10;(i<=ye-1&&i<s&&i>=0);i++) shu[i].setVisible(true); xs.add(shu[i]); shu[i].setVisible(false); shu[i].setLocation(5, 30+30*(i%10)); if(i>=10) shu[i].setVisible(false); xs.add(shu[i]); for(int i=ye;(i<ye+10&& i<s&&i>=0);i++){ } });
华东交通大学理工学院课程设计报告
} } for(int i=ye;(i<ye+10&& i>=0&& i<s);i++){ shu[i].setVisible(false); xs.add(shu[i]); } for(int i=ye-10;(i<=ye-1&&i>=0&& i<s);i++) shu[i].setVisible(true); } }); } }); } class xinxi2 extends JLabel{ private JLabel lbx; private JLabel 姓名; private JLabel 性别; private JLabel 专业; private JLabel 学号; private JLabel 电话; private JLabel 地址; private JLabel QQ; public xinxi2(String 姓名,String 学号,String 性别 ,String 专业,String 电话,String 地址,String QQ){
lbx=new JLabel(); this.姓名=new JLabel(); this.性别=new JLabel(); this.专业=new JLabel(); this.学号=new JLabel(); this.地址=new JLabel(); this.电话=new JLabel(); this.QQ=new JLabel(); lbx.setSize(1000, 40); lbx.setLayout(null); this.setSize(1000, 40); this.setLayout(null);
华东交通大学理工学院课程设计报告
} this.姓名.setSize(50,20); this.学号.setSize(110,20); this.性别.setSize(30,20); this.专业.setSize(110,20); this.电话.setSize(100,20); this.地址.setSize(330,20); this.QQ.setSize(100,20); this.姓名.setLocation(2,5 ); this.学号.setLocation(this.姓名.getLocation().x+this.姓this.性别.setLocation(this.学号.getLocation().x+this.学this.专业.setLocation(this.性别.getLocation().x+this.性this.电话.setLocation(this.专业.getLocation().x+this.专this.地址.setLocation(this.电话.getLocation().x+this.电this.QQ.setLocation(this.地址.getLocation().x+this.地 this.姓名.setText(姓名); this.性别.setText(性别); this.电话.setText(电话); this.专业.setText(专业); this.学号.setText(学号); this.地址.setText(地址); this.QQ.setText(QQ); chushi(); 名.getSize().width, 5); 号.getSize().width, 5); 别.getSize().width, 5); 业.getSize().width, 5); 话.getSize().width, 5); 址.getSize().width, 5); public void chushi(){ lbx.add(姓名); lbx.add(性别); lbx.add(专业); lbx.add(学号); lbx.add(地址);
华东交通大学理工学院课程设计报告
} } lbx.add(电话); lbx.add(QQ); this.add(lbx);
/*测试类*/
public class ceshi {
} public static void main(String[] args) { } // TODO Auto-generated method stub tongxunlu zhu=new tongxunlu();
第5章 程序测试
程序测试运行结果按照程序界面的步骤下来显示的结果如下:
华东交通大学理工学院课程设计报告
华东交通大学理工学院课程设计报告
第6章 课程设计心得
经过几天的努力,本次课程设计已圆满完成。在这期间,我深深地感受到设计成功的喜悦,也体味到失败的痛苦。好在前面的学习过程中,理论知识学得比较深刻,加之老师和同学的帮助,很快适应了软件开发的流程。课程设计确实能够锻炼一个人在遇到一个不懂的问题时候,怎样去查阅资料,使一个个疑难问题迎刃而解。这对我以后的工作有非常大的意义。在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,和同学们相互探讨,相互学习。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.
华东交通大学理工学院课程设计报告
第7章 参考文献(资料)
【1】《Java语言程序设计》 清华大学出版社 郎波编著
【2】《Java程序设计实践教程》清华大学出版社出版张思民、梁维娜编著
【3】《数据库基础与应用》 清华大学出版社 刘亚军 高莉莎编著[3]
【4】《Java语言程序设计与实践》 华中科技大学出版社 王薇 杜威主编