1、 一、课程设计目的 本课程设计的目的是为了让学生在学习《JAVA基础》课程的基础上,进一步深入巩固所学理论知识、使理论与实际相结合的重要实践环节。本课程设计通过完成一些具有一定难度的程序的编写、调试、运行工作,掌握面向过程程序设计的基本方法,从而提高学生分析问题、解决问题的能力。 课程设计是教学中很重要的一项实践环节,它可以帮助学生充分理解课堂教学中的内容,对提高学生的实践认识和实际动手能力都有很重要的实际意义。学生应在一周的时间内,按照课程设计的要求,结合所学的理论知识,查找相关资料,完成好本次课程设计,提高程序编写的能力,为将来的实际工作取得一定的经验。 二、课程设
2、计题目及要求 1.所有题目都要求使用图形界面(Swing)。 2.编写全球通计费程序。 3. 要求:使用真实的全球通资费标准,模拟统计一个特定号码的一个月的实时话费。 能根据输入实现各种用户的话费的计算并显示月实时帐单。 三、程序设计与分析 1、在My SQL数据库中建立相应的表; 注:SQL语句 create database quan; use quan; create table quanqiutong( num varchar(20), pwd varchar(10), type varchar(10), yuezu float, ld
3、xianshi float, shihua float, gnmanyou float, cthuafei float, shihuasum float, changtusum float); +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ |
4、num | varchar(20) | YES | | NULL | | | pwd | varchar(10) | YES | | NULL | | | type | varchar(10) | YES | | NULL | | | yuezu | float | YES | | NULL | | | ldxianshi | float | YES | | NULL |
5、 | shihua | float | YES | | NULL | | | gnmanyou | float | YES | | NULL | | | cthuafei | float | YES | | NULL | | | shihuasum | float | YES | | NULL | | | changtusum | float | YES | | NULL |
6、 | +------------+-------------+------+-----+---------+-------+ 2、在My Eclipse中导入JDBC驱动包,并设置路径; 3、链接数据库; 4、界面使用流布局的方式。 四、运行结果 五、总结与思考 通过这次课程设计,加强了我动手、思考和解决问题的能力。在整个设计过程中,我总共想过两个方案,另一个方案弄了两天,结果总是实现不了题目的要求。所以我又花了一天的时间做出这个方案,这个相对另
7、一个方案比较简单,包括My SQL和My Eclipse的链接,数据库中表的建立,以及Java的界面划分,事件监听等。在做课程设计同时也是对课本知识的巩固和加强,平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。比如认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。故一个小小的课程设计,对我们的作用是如此之大。 六、源代码清单 程序源代码 import java.awt.*; import java.awt.Event.*; import javax.swing.*; import javax.swing.*;
8、import javax.swing.JPasswordField; import com.mysql.jdbc.PreparedStatement; import com.mysql.jdbc.ResultSet; import java.io.UnsupportedEncodingException; import java.sql.Connection; import java.sql.SQLException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public
9、class Quan { public Quan() { //手机用户登录 JFrame quan = new JFrame("全球通"); quan.setLayout(new FlowLayout(1,15,30)); quan.setBounds(200, 200, 250, 300); //添加控件 JLabel jl_welcom = new JLabel("欢迎来到全球通话费查询"); final JLabel jl_num = new JLabel("用户手机号"); final JLabel jl_pw
10、d = new JLabel("用户密码"); final JTextField jtf_num=new JTextField(10); //final JTextField jtf_pwd=new JTextField(10); final JButton jb_check=new JButton("登录"); final JButton jb_cancel=new JButton("取消"); final JPasswordField jtf_pwd=new JPasswordField(10); ((JPasswordField)
11、jtf_pwd).setEchoChar('*'); quan.add(jl_welcom); quan.add(jl_num); quan.add(jtf_num); quan.add(jl_pwd); quan.add(jtf_pwd); quan.add(jb_check); quan.add(jb_cancel); quan.setVisible(true); quan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //话费查询 //添加查询
12、按钮事件监听 jb_check.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { String num = jtf_num.getText(); String pwd = jtf_pwd.getText(); DbUtil util = new DbUtil(); try { final Connection con = util.getCon(); boolean
13、 loginFlag = util.login(con, num, pwd); if(loginFlag){ if(arg0.getSource()==jb_check) { JOptionPane.showMessageDialog(null, "登录成功"); final JFrame quan1=new JFrame("话费查询"); quan1.setLayout(new FlowLayout(1,15,15));
14、 quan1.setBounds(400, 200, 250, 450); //添加控件 JLabel jl号码=new JLabel(" 号码"); JLabel jl种类=new JLabel(" 种类"); JLabel jl月租=new JLabel(" 月租"); JLabel jl来电显示=new JLabel("来电显示"); JLabel jl市话=new JLabel(" 市话"); JLa
15、bel jl国内漫游=new JLabel("国内漫游"); JLabel jl长途费用=new JLabel("长途费"); JLabel jl市话总和=new JLabel("市话总和"); JLabel jl长途总和=new JLabel("长途总和"); final JTextField jtf号码=new JTextField(10); final JTextField jtf种类=new JTextField(10); final
16、 JTextField jtf月租=new JTextField(10); final JTextField jtf来电显示=new JTextField(10); final JTextField jtf市话=new JTextField(10); final JTextField jtf国内漫游=new JTextField(10); final JTextField jtf长途费用=new JTextField(10); final JTextField jtf市话总和=n
17、ew JTextField(10); jtf市话总和.setEditable(false); final JTextField jtf长途总和=new JTextField(10); jtf长途总和.setEditable(false); final JButton jb_check1=new JButton("查询"); JButton jb_cancel1=new JButton("取消"); final JButton jb_sum=new JButto
18、n("汇总"); quan1.add(jl号码); quan1.add(jtf号码); quan1.add(jl种类); quan1.add(jtf种类); quan1.add(jl月租); quan1.add(jtf月租); quan1.add(jl来电显示); quan1.add(jtf来电显示); quan1.add(jl市话); quan1.add(jtf市话); q
19、uan1.add(jl国内漫游); quan1.add(jtf国内漫游); quan1.add(jl长途费用); quan1.add(jtf长途费用); quan1.add(jb_check1); quan1.add(jb_cancel1); quan1.add(jb_sum); quan1.add(jtf市话总和); quan1.add(jtf长途总和); quan1.setVisible(tru
20、e); jb_check1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ String num =jtf号码.getText(); if(e.getSource()==jb_check1) { Connection con = null ;
21、 ResultSet rs=null; DbUtil util = new DbUtil(); //异常处理 try { con = util.getCon(); } catch (Exception e1) { e1.printStackTrace(); }
22、 try { rs=(ResultSet)util.quancheck(con, num); } catch (Exception e1) { e1.printStackTrace(); } try { rs=(ResultSet)util.quancheck(con, num); } catch (NumberFormatException
23、e2) { // TODO Auto-generated catch block e2.printStackTrace(); } catch (Exception e2) { // TODO Auto-generated catch block e2.printStackTrace(); } try { //读取数据库中的内容,
24、并放到相应文本框中 while(rs.next()) { jtf号码.setText(rs.getString("num")); jtf种类.setText(new String(rs.getString("type").getBytes("ISO-8859-1"),("GBK"))); jtf月租.setText(rs.getString("yuezu"));//把字节转换成中文 jtf来电显示.setTe
25、xt(rs.getString("ldxianshi")); jtf市话.setText(rs.getString("shihua")); jtf国内漫游.setText(rs.getString("gnmanyou")); jtf长途费用.setText(rs.getString("cthuafei")); } } catch (SQLException e1) { // TODO Aut
26、o-generated catch block e1.printStackTrace(); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }); //查询话费页面取消按钮 jb_can
27、cel1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); //汇总按钮 jb_sum.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){
28、 String num =jtf号码.getText(); if(e.getSource()==jb_sum) { Connection con = null ; ResultSet rs=null; DbUtil util = new DbUtil(); try { con = util.getCon(); } catch (Exc
29、eption e1) { e1.printStackTrace(); } try { rs=(ResultSet)util.sum(con,num); } catch (Exception e1) { e1.printStackTrace(); } try { rs=(Resul
30、tSet)util.sum(con,num); } catch (NumberFormatException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } catch (Exception e2) { // TODO Auto-generated catch block e2.printStackTrace(); }
31、 try { //汇总查询,读取数据库中的内容,并放到相应文本框中 while(rs.next()) { jtf号码.setText(rs.getString("num")); jtf种类.setText(new String(rs.getString("type").getBytes("ISO-8859-1"),("GBK"))); jtf月租
32、setText(rs.getString("yuezu"));//把字节转换成中文 jtf来电显示.setText(rs.getString("ldxianshi")); jtf市话.setText(rs.getString("shihua")); jtf国内漫游.setText(rs.getString("gnmanyou")); jtf长途费用.setText(rs.getString("cthuafei")); jtf市话总和.
33、setText(rs.getString("shihuasum")); jtf长途总和.setText(rs.getString("changtusum")); } } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (UnsupportedEncodingException e
34、1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }); } } else { JOptionPane.showMessageDialog(null, "登录失败"); } } catch (Exception e) {
35、 e.printStackTrace(); } } }); //登录页面取消按钮 jb_cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); } public static void main(String[] args) { // TODO Auto-generated method stub ne
36、w Quan(); } } 与数据库相连的代码 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class DbUtil { private String dbUrl = "jdbc:mysql://127.0.0.1:3306/quan"; // 数据库用户名 private String dbUser = "root"; /
37、/ 数据库密码 private String dbPwd = "sa"; // JDBC驱动名称 private String jdbcName = "com.mysql.jdbc.Driver"; // 获取数据库连接 public Connection getCon() throws Exception{ // 加载数据库驱动 Class.forName(jdbcName); // 创建数据库连接 Connection con = DriverManager.getConnection(dbUrl,dbUser,dbPwd);
38、 // 返回数据库连接对象 return con; } // 关闭数据库连接 public void closeCon(Connection con) throws Exception{ if(con!=null){ con.close(); } } //用户登录判断 public boolean login(Connection con,String num,String pwd) throws Exception{ String sql = "select * from quanqiutong where num=? a
39、nd pwd=?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, num); pstmt.setString(2, pwd); ResultSet rs = pstmt.executeQuery(); //if(rs.next()){ // return true; //}else{ //return false; //} return rs.next(); } //话费查询判断 public ResultSet quan
40、check(Connection con,String num) throws Exception{ String sql="select * from quanqiutong where num=?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1,num); ResultSet rs = pstmt.executeQuery(); return rs; } //汇总查询 public ResultSet sum(Connection con
41、String num) throws Exception{ String sql="select * from quanqiutong where num=?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1,num); ResultSet rs = pstmt.executeQuery(); return rs; } public static void main(String arg[]) throws Exception { DbUtil quancheck=new DbUtil(); } } 教师评语: 教师签名:______ 日 期: -13-
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818