《java程序设计》课程设计报告_《Java程序设计》课程设计报告-万年历

41528d3028836879cd698677c3999917.gif《Java程序设计》课程设计报告-万年历

《Java程序设计》课程设计报告 题 目:万年历 学 院:数学与统计 专 业:信息与计算科学 学生姓名: 学 号: 指导教师: 2017年 7月 9 19 1需求分析 1.1需求分析 本程序的要求为: (1)能够显示实现1800-2100年的日期,包括公历、农历、星期、二十四节气。 (2)能够按照月份格式显示,或按照星期格式显示。 (3)能够显示系统时间。 (4) 能够设置闹钟。 (5)能够查询若干国际大城市(分布在不同时区)的时间。 1.2功能设计 本程序要构建的万年历程序,其功能有以下几个方面: 一、设计程序运行界面,具有显示各种功能的面板模块,并对各功能按钮就行时间监听; 二、程序需要显示1800年到2100年的日历,包括公历、农历、时间所对应的星期。要求系 统能够从界面上的操作获取公历日期,计算其所对应的星期和相应的农历并显示到界面上; 三、程序要求显示系统时间,并能设置闹铃。要求可以自己设置一个时间点,在这一时间点 做出相应的响应; 四、查询显示若干国际城市不同时区的时间,这里只需要调用Java的系统里就可以解决。 五、对时间的更新,日历显示要求关联系统时间,能在进入程序时显示系统时间对应的日历, 并能返回当天日历; 六、程序界面的美观设计和人性化结构,要求具有良好的人机交互,容易理解界面内容,易 操作; 七、就现在的水平来说,功能1、2、3、5是可以实现,功能4 有待研究,可能遇到的问题是 按钮对时间的监听处理可能难度较大,还有就是在公历转农历中可能比较难获取相应的公历 变化日期 。 2.概要设计 2.1程序设计思路 1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。 2. 输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。 3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 4.获取系统时间,计算当天农历日期并显示 2.2程序运行界面 程序初始化 获取当前系统时间年份等数据 提交年月变更数据 是否输入年份或选择月份 开始 计算,绘制屏幕 结束 2.3流程图 计算农历 3.各模块的功能及程序说明 3.1.初始化组件 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.text.Dateat; import java.text.SimpleDateat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; import java.util.TimeZone; 3.2.初始化数据 public class wannianli extends JFrame//窗体类 implements ActionListener//事件处理接口, MouseListener { private Calendar cld = Calendar.getInstance();//获取一个Calendar类的实例对象,Calendar类用于获取某个时间或日期 private String[] astr = { “星期一“, “星期二“, “星期三“, “星期四“, “星期五“, “星期六“, “星期日“ }; private DefaultTableModel dtm = new DefaultTableModel(null, astr); //创建了一个表格模型 private JTable table = new JTable(dtm); // JTable 用来显示和编辑常规二维单元表 private JScrollPane sp = new JScrollPane(table); // JScrollPane类可提供轻量级组件的 scrollable 视图。JScrollPane 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口。 private JButton bLastYear = new JButton(“上一年“); //建立一个“上一年“的按钮 private JButton bNextYear = new JButton(“下一年“); private JButton bLastMonth = new JButton(“上月“); private JButton bNextMonth = new JButton(“下月“); //JPanel 是 Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing 包中,是一种轻量级容器,可以加入到JFrame窗体中。JPanel默认的布局管理器是FlowLayout,其自身可以嵌套组合,在不同子容器中可包含其他组件(component),如JButton、JTextArea、JTextField 等 private JPanel p1 = new JPanel(); // 设立八个中间容器,装入布局控制日期的按钮模块 private JPanel p2 = new JPanel(new GridLayout(3,2));//网格布局 private JPanel p3 = new JPanel(new BorderLayout());//边界布局 private JPanel p4 = new JPanel(new GridLayout(2,1)); // 创建具有指定行数和列数的网格布局 private JPanel p5 = new JPanel(new BorderLayout

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、课程设计目的:1. 学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程。2. 进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java数据库编程等。3. 通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。二、 课程设计总体要求:1. 问题的描述与程序将要实现的具体功能。2. 程序功能实现的具体设计思路或框架,并检查流程设计。3. 代码实现。4. 程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。5. 设计小结(包括)三、 课程设计题目:1. 选做部分1) 利用Socket编程制作一个简单的C/S应用。其中,Client端为GUI程序,用于提供界面输入两个数,并有1个“发送”按钮,另外还有一个 TextField用于显示传来的计算结果;Server端用于监听连接请求、计算发送过来的两数的和、送回数据结果。2) 编一个多线程Applet,实现简单的动画。具体要求:自动出现由小到大变换的圆,位置与颜色随机,变到150直径时擦除,重新再出现圆;变换速度有HTML文件传入的参数控制(控制sleep时间)。3) 编写Applet,包含两个按钮,一个按钮用于放大Applet上的一串字符串,一个按钮用于缩小;连续点击可不断放大或缩小。4) 设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除混合运算。5) 编写生产者/消费者问题的应用程序。生产者以0~200ms的速度随机产生30个小写字母,消费者以0~2s的速度取出字母,并显示在屏幕上。2. 必做部分 根据自己的兴趣,结合实际情况,选取合适题目,利用所学JAVA知识开发一个小型的应用软件。要求:1) 阐述清楚应用程序实现的具体功能和设计思路。2) 所选课题难度不应太简单。3) 所有人的题目及设计不得类同。四、 课程设计报告内容:1) 目录2) 设计题目及具体要求 3) 总体设计思路(简要说明系统包含的java源程序及其功能,描述类之间的主要关系)4) 具体设计(以表格形式描述各个类含有的成员变量和方法,并对关键代码加以说明,显示程序运行界面)5) 总结(包括对本课程的建议)6) 参考资料。。。。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值