




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 山西大学山西大学 JavaJava 课程设计报告课程设计报告 题目 题目 万万 年年 历历 班级 班级 1414 班班 学号 学号 姓名 姓名 20162016 年年 1212 月月 2 目目 录录 1 绪论 1 1 1 选题目的及意义 1 1 2 系统概述 1 1 3 人员组成及分工 1 2 需求分析 1 3 总体设计 1 4 详细设计 1 5 系统实现 2 5 1 开发环境 3 5 2 关键技术 3 6 运行结果 6 7 软件测试 7 8 总结 7 9 参考文献 8 3 1 绪论 1 11 1 选题目的及意义选题目的及意义 选题目的 本次课程设计为课本后设计题目任选一题进行设计 思考一段时间后 我们组决定做一个万年历的设计 主要考虑到以前时间少课程内容多 JAVA 课程基础内容 掌握并不是很抓实 而对于设计一个万年历程序 由于其功能简单设计也相对较易 对于 我们每个人的学习情况比较合适 并且通过设计这样的一个日历小组件 也能使自己对 JAVA 的一些基础知识掌握的更加牢固 1 21 2 系统概述系统概述 随着电子技术的不断发展 人们的不断创新 万年历已经不再局限于书本形式 而 是以电脑软件或者电子产品的形式出现 让其更加便捷 在学习了 JAVA 课程后 将以 JAVA 形式编译出一个简易的万年历 1 31 3 人员组成及分工人员组成及分工 负责搜集查找资料 调试程序 最后进行程序的编写与修改 2 需求分析 本程序的要求为 1 使用图形用户界面 2 本程序能够实现日期与星期的查询 3 可以添加或者删除日志 3 总体设计 1 可以通过图形界面显示日历 2 能以月历形式显示日期与星期 3 支持用户自己输入年份 可以通过上一年 下一年等按钮来选择年份和月份 4 可以添加或者删除并且点击对应日期显示日志 4 详细设计 1 总天数的算法 首先用 if 语句判断定义年到输入年之间每一年是否为闰年 4 是闰年 该年的总天数为 366 否则 为 365 然后判断输入的年是否为定义年 若是 令总天数 S 1 否则 用累加法计算出定义年到输入年之间的总天数 再把输入年的 一月到要输出的月份之间的天数累加起来 若该月是闰年中的月份并且该月还大于二 月 再使总天数加 1 否则 不加 既算出从定义年一月一日到输出年的该月一日的 总天数 2 输出月份第一天为星期几的算法 使总天数除以 7 取余得几既为星期几 若是 0 则为星期日 3 算出输出月份第一天为星期几的算法 算出输出月份第一天为星期几后 把该 日期以前的位置用空格补上 并总该日起一次输出天数直到月底 该月中的天数加上 该月一日为星期几的数字再除以 7 得 0 换行 即可完整的输出该月的日历 4 查询年份必须为四位有效数字 否则不予显示 5 显示系统时间 6 流程图 流程图 程序初始化 获取当前系统时间年份 等数据 提交年月变更数据 是否输入年份或 选择月份 开始 计算 绘制屏幕 结束 5 5 系统实现 5 15 1 开发环境开发环境 myeclipse 8 5 0 win32 5 25 2 关键技术关键技术 1 1 界面的绘制与显示 界面的绘制与显示 public class wannianli extends JFrame implements ActionListener MouseListener private Calendar cld Calendar getInstance private String astr 星期一 星期二 星期三 星期四 星 期五 星期六 星期日 private DefaultTableModel dtm new DefaultTableModel null astr private JTable table new JTable dtm 装日期的表 格 private JScrollPane sp new JScrollPane table private JButton bLastYear new JButton 上一年 private JButton bNextYear new JButton 下一年 private JButton bLastMonth new JButton 上月 private JButton bNextMonth new JButton 下月 private JTextField jtfYear new JTextField 5 jtfYear年份显示和 输入文本框 private JTextField jtfMonth new JTextField 2 jtfMonth月份显示 文本框 private JPanel p1 new JPanel 装入控制日期按钮的模块 private JPanel p2 new JPanel private JPanel p3 new JPanel new BorderLayout private JPanel p4 new JPanel new GridLayout 2 1 private JPanel p5 new JPanel new BorderLayout private JButton bAdd new JButton 保存日志 private JButton bDel new JButton 删除日志 背景颜色 字体的显示 table setGridColor Color GRAY 星期之间的网格线是灰色的 table setColumnSelectionAllowed true table setSelectionBackground Color BLACK 当选定某一天时这一天背 景黑色 6 table setSelectionForeground Color GREEN 选定的日期字体是绿色的 table setBackground new Color 184 207 229 日期显示表格颜色浅 蓝色 table setFont new Font 黑体 Font BOLD 24 日期数字字体格式 table setRowHeight 30 表格的高度 table addMouseListener this 鼠标监听器 2 2 根据月份判断每个月的天数以及判断是否为闰年判断 根据月份判断每个月的天数以及判断是否为闰年判断 2 2 月的天数月的天数 public int getDaysOfMonth int year int Month 显示所选月份的天数 if Month 1 Month 3 Month 5 Month 7 Month 8 Month 10 Month 12 return 31 if Month 4 Month 6 Month 9 Month 11 return 30 if year 4 0 else return 28 3 日志的添加与删除 日志的添加与删除 if e getSource bDel int r table getSelectedRow int c table getSelectedColumn File filedel new File ld getText txt if filedel exists if filedel delete jta setText 日志删除成功 else jta setText 日志删除失败 7 else jta setText 没有找到日志文件 4 判断年份输入是否正确 判断年份输入是否正确 public void actionPerformed ActionEvent e if e getSource jtfYear e getSource bLastYear e getSource bNextYear e getSource bLastMonth e getSource bNextMonth int m y try 控制输入的年份正确 异常控制 if jtfYear getText length 4 throw new NumberFormatException y Integer parseInt jtfYear getText m Integer parseInt jtfMonth getText catch NumberFormatException ex JOptionPane showMessageDialog this 请输入4位0 9的数字 年份有误 JOptionPane ERROR MESSAGE return 5 显示系统时间 显示系统时间 lass Timer extends Thread 显示系统时间 private JLabel lt private SimpleDateFormat fy new SimpleDateFormat yyyy MM dd G at HH mm ss z private SimpleDateFormat fn new SimpleDateFormat yyyy MM dd G at HH mm ss z private boolean b true public Timer JLabel lt 8 this lt lt public void run while true try if b lt setText fy format new Date else lt setText fn format new Date b b this sleep 500 catch InterruptedException ex ex printStackTrace 6 运行结果 9 7 软件测试 年份输入错误显示 闰年 2 月份演示以及日志保存 8 总结 10 对于本程序的设计 首先考虑其功能有哪些 需要显示什么 如何进行窗体构建布局 需要用哪些知识点 如相关的类和对象等 最后 就是根据初步设计的功能和布局构架 考虑用源代码进行实现了 经过了长时间的反复编写调试 课本和网上查阅相关资料相关文章 终于完成了整个 课程设计 在这个过程中 在把书本上的知识给系统的复习了一下的同时 同时也发现了 自己的太多不足 对 JAVA 语言整体知识构架不够熟悉 不能灵活地运用所学的知识点 自己的编程方式也不是太标准 经常出现代码写错而调试很久的低级错误情况出现 通过这次课程设计 我明白了编写程序 不仅要求对课本知识有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论