一、设计时间
2020-2021学年第二学期第17-18周
二、设计地点
三、设计目的
1.复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;
2.课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力。提高学生适应实际,实践编程的能力;
3.培养学生查阅资料、独立思考、创新意识及能力。
四、设计小组成员
五、指导老师
六、设计课题
选取选题(1)车票信息查询和购买系统的设计与实现。
理由:
1、整个系统适合程序练习增强自己的实力,运用多个系统进行操作。
2、代码编写涉及面广,利于提高综合应用能力。
3、设计页面并且做出每一个菜单的功能要用到很多知识,利于熟悉JAVA。
七、基本思路及关键问题的解决方法
基本思路:
先制作登录界面,对MySQL进行连接,默认布局,进行界面布局,将窗口中添加文本区域,各式的按钮添加上去,对登录按钮进行监控,然后跳转车票信息查询系统,中间添加列车的信息标签,加入查询按钮和下拉框进行查询,对照数据库中表的数据,正确就进行跳转列车运行信息,并且可以进行发票售票
关键问题的解决方法:
1、数据库的连接。对connection、statement和resultset进行对象创建,用statement对象执行SQL语句,将执行的语句返回resultset结果集,对这些语句进行try、catch最后关闭反顺序关闭resultset,statement,connection。
2、信息的对比和列车信息的输出。将数据库的返回值类型改成ArrayList<HashMap<String,String>>并对对比语句进行限制,只有值配对才能执行以下语句,利用封箱和拆箱将返回的信息值利用图形用户界面展现出来
3、利用for循环对比信息。将获取resultset结果集的值与下拉框进行对比,要将装箱的for循环写到其中。
八、算法及流程图

九、调试过程中出现的问题及相应解决办法
1、出现的问题:

  1. 下拉框信息无法与数据库进行对比
  2. 多线程无法停止并输出图形用户界面
  3. 无法取到数据库中的信息
  4. 系统自动修改从数据库中取出的信息
    2、解决办法:
  5. 将数据库的方法返回值换成ArrayList<HashMap<String,String>>
  6. 在执行多线程的类中添加图形用户界面,并在最后加入break;
  7. 使用封箱和拆箱的方法将信息进行对比后取出所需要的值
  8. 在数据库中将封箱代码放入获取结果集数值的for循环中

十、课程设计心得体会
1、完成这次程序设计以后,对多个项目的层层叠加,我的代码量比原来多了不少,一些不理解的概念就会慢慢理解,自己的认知会有一定的提升。
2、从面向过程到面向对象的转变。以前学习面向过程的编程语言时,总是一步一步分析问题,然后按步骤逐渐完成整个程序;现在学习面向对象的编程语言是,我们编程是利用类和对象的机制将数据和方法封装在一起,通过统一的接口与外界交互;通过类的继承机制实现代码重用。
3、面向对象的编程需要长期的练习以及熟悉设计模式的。学习编程语言,还是要多实践,多敲代码,在实践中发现问题,解决问题。

十一、源程序
int i = 0;
for (HashMap<String, String> train : trains) {
//拆箱从train中拿出信息
String loc = train.get(“loc”); //获取train集合中的本地信息
String arv = train.get(“arv”); //获取train集合中的目的地信息
String time = train.get(“time”); //获取train集合中的时间信息
String trinf = train.get(“trinf”); //获取train集合中的列车信息
//创建售票按钮
JButton jbu = new JButton(“开放售票”);
jbu.setBounds(160, 50+60*i, 90, 20); //设置按钮位置
//对文本域进行监听
jbu.addActionListener(new ActionListener() {
//创建售票监听
public void actionPerformed(ActionEvent e) {
//调用售票线程
TicketSold tic = new TicketSold();
tic.addWindow();}});
dia.add(jbu);
// 创建装载列车信息的文本域
JTextArea jta = new JTextArea();//创建与信息数量相同的文本域
jta.setLayout(new FlowLayout()); //设置文本域为流体布局
jta.setEditable(false); //设置文本域不可编辑
jta.setBounds(250, 50 + i * 60, 300, 20);
// 文本域中的信息摆放
String white = " 列车编号:"+trinf+" 发车时间:" + time + “”;
jta.append(loc); //文本域加入loc信息
jta.append(white); //文本域加入列车时间和编号
jta.append(arv); //文本域加入目的地
i++;
dia.add(jta);
System.out.println(loc + “” + arv); //输出本地和目的地
class MyThread implements Runnable {
private int tick = TicketSystem.ticket; //获取售票系统的票数
Object obj = new Object();
public void run() {
while (true) { //进行循环
synchronized (obj) {
if (tick > 0) {
String name = Thread.currentThread().getName(); //获取线程名字
int windows = Integer.parseInt(name.substring(7, name.length())); //获取窗口名字
try {Thread.sleep(100); //设置线程休眠时间
} catch (Exception e) {}
System.out.println(“第” + (windows+ 1) + “窗口卖出了第” + tick-- + “张票”);
} else if (tick == 0) {
JFrame jframe = new JFrame();
jframe.setLayout(null);
jframe.setLocation(600, 300);
jframe.setSize(200,180); //设置窗口位置
jframe.setVisible(true); //设置窗口可视化
JLabel jlabel = new JLabel(“票已经售完”);
jlabel.setBounds(58, 40, 100, 50); //设置跳出标签的位置
jframe.add(jlabel); //窗口加入标签
break;}}}}}
//创建多个窗口售票
public class TicketSold {
public void addWindow() {
MyThread mt = new MyThread();
Thread t1 = new Thread(mt);
t1.start(); //线程开始运行}}
// 登录按钮的监控
logining.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String qq = number.getText(); //获取qq账号
String pwd = password.getText(); //获取密码
DBS dao = new DBS(); //创建数据库对象
ArrayList<HashMap<String, String>> counts;
try {
counts = dao.method(qq, pwd); //调用数据库中的method方法
if (counts == null) {
throw new RegisterException(); //抛出自定义异常
} else {
for (HashMap<String, String> count : counts) {
String qqnum = count.get(“qq”); //将qq中的数据放入qqnum中
String pwdnum = count.get(“pwd”); //将pwd中的数据放在pwdnum中
if (qq.equals(qqnum) && pwd.equals(pwdnum)) {
TicketSystem ts = new TicketSystem(); //创建售票查询对象
ts.sst(); //调用查询对象的sst方法
}}}} catch (SQLException e1) {e1.printStackTrace();}}});
参考文献
[1] 温昱. 软件架构设计[M]. 北京:电子工业出版社,2007:157-177.
[2] 叶核亚. Java程序设计实用教程(第3版)[M]. 北京:电子工业出版社, 2010.
[3] 霍斯特曼. Java核心技术[M]. 北京: 机械工业出版社, 2008.
[4] Bruce Eckel. Java编程思想[M]. 北京: 机械工业出版社, 2009.
[5] 刘欣怡. 软件工程[M]. 北京: 清华大学出版社, 2007.
[6] 传智播客高教产品研发部. Java基础入门[M]. 北京: 清华大学出版社, 2017.

Java课程设计报告相关推荐

  1. Java课程设计报告--绩效考核信息管理系统

     Java课程设计报告 题目      绩效考核信息管理系统    学生姓名         学    号                   院    系        年级专业计算机科学与技术 班 ...

  2. 计算器java程序设计报告总体设计_计算器设计的java课程设计报告.doc

    计算器设计的java课程设计报告.doc 华东交通大学课程设计1华东交通大学课程设计课程:Java程序设计题目:计算器设计年级:2010级专业:信息一班学号:姓名:组员:指导教师:课程设计题目:计算器 ...

  3. Java课程设计报告—音乐播放器

    目录 Java课程设计报告 1.设计内容及要求 2.需求分析 3.总体设计 4.主要功能设计流程 5.系统实现及测试 6.总结与说明 Java课程设计报告 题目:java音乐播放器 姓    名    ...

  4. 关于java 计算器设计,Java课程设计报告---设计一个多功能计算器

    Java课程设计报告---设计一个多功能计算器 存档资料存档资料 成绩成绩 课课 程程 设设 计计 报报 告告 书书 2010-- 2011 年度第 2 学期 所属课程名称所属课程名称 JavaJav ...

  5. java计算机设计总结,java课程设计报告--计算器设计

    java课程设计报告--计算器设计 1 课 程 Java 程序设计 题 目 计算器设计 年 级 2010 级 专 业 信息一班 学 号 姓 名 组 员 指导教师 课程设计题目计算器设计 2 课程设计论 ...

  6. 华北科技学院java考试题_华北科技学院java课程设计报告简易计算器

    华北科技学院java课程设计报告简易计算器 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 Java程序设计B 实验学期 2011 至 2012 学年 第 1 学期 学生所在系部 计算机学院 ...

  7. java学生课程设计报告,Java课程设计报告学生管理系统

    Java课程设计报告学生管理系统 JAVAJAVA 程序设计程序设计 课程设计报告课程设计报告 课课 题题 学生信息管理系统学生信息管理系统 姓姓 名名 学学 号号 设计时间设计时间 2014.6.2 ...

  8. 万年历java课程设计报告_java《万年历系统》课程设计报告附源码.doc

    java<万年历系统>课程设计报告附源码.doc 学号<面向对象程序设计>课程设计报告题目:万年历系统专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:计算机与信息工程系 ...

  9. java课程设计报告连连看_连连看_java课程设计报告.doc

    连连看_java课程设计报告 <连连看> 项目设计报告 专 业: 软件工程 班 级: 07级2班 姓 名: 二00九 年 七 月 二十一 日 目 录 1.项目设计目的.意义-------- ...

  10. 万年历java课程设计报告_java万年历课程设计报告2010

    一.课程设计任务及要求 (1)设计任务: 编写一个Java 万年历程序,实现日期和星期的查询. (2)设计要求: 1.主界面采用边界布局,北面是一个设置年月的控制面板,中间是日历绘制区: 2.单击&q ...

最新文章

  1. 并发编程中的大坑:你的直觉有序性问题
  2. 从NCBI当中SRA数据库中下载高通量测序数据
  3. 计算首站到末站最小费用
  4. C++实现0-1-knapsack背包问题 (附完整源码)
  5. 数据库索引失效情况汇总
  6. 初步认识注册表(待续)
  7. 荆州水文水位查询_【心能源】天欣公司矿井水文自动观测系统投入使用
  8. VB100十月测试:360可牛凯歌高奏 金山失利瑞星缺席
  9. 用cookiecutter快速构建机器学习项目结构
  10. 百度邀您来听一场云存储的大戏!
  11. B树,B+树,红黑树应用场景AVL树,红黑树,B树,B+树,Trie树
  12. Java 数据库image型输出图片
  13. 均匀分布产生高斯分布
  14. 黑马程序员——面试题之银行业务调度系统
  15. Python三维绘图——Matplotlib
  16. app抓包服务器证书错误,Fiddler抓包iOS出现证书错误的解决办法
  17. 7个最佳博客名称生成器,可帮助您找到好的博客名称提示
  18. 紫罗兰永恒花园rust简谱_みちしるべ简谱-紫罗兰永恒花园ed
  19. IC验证面试必考-跨时钟域
  20. 国内知名插画培训机构有哪些

热门文章

  1. javascript无限弹窗_html恶搞之无限弹窗
  2. EA(Enterprise Architect)安装步骤及激活码
  3. MySql常用函数大全(详细)
  4. 超码、候选码、主码 与 外码
  5. (已更新)【全开源商城小程序源码】ThinkPHP 5.1+带后台商城源码程序+带详细安装使用文档
  6. JavaWeb网络考试系统
  7. vasp计算脚本放在服务器的位置,vasp计算所需服务器配置
  8. 2021年中国直播电商投融资情况及行业发展中存在的问题、发展趋势和对策分析[图]
  9. 【转载】世界上最牛的编辑器: Vim 3 (原创动图演示所有例子!)
  10. The Biggest Water Problem【牛客网】