收藏 分销(赏)

java万年历专业课程设计方案报告.doc

上传人:w****g 文档编号:2658997 上传时间:2024-06-04 格式:DOC 页数:13 大小:106.04KB
下载 相关 举报
java万年历专业课程设计方案报告.doc_第1页
第1页 / 共13页
java万年历专业课程设计方案报告.doc_第2页
第2页 / 共13页
java万年历专业课程设计方案报告.doc_第3页
第3页 / 共13页
java万年历专业课程设计方案报告.doc_第4页
第4页 / 共13页
java万年历专业课程设计方案报告.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、 西安科技大学程序设计综合实训课程设计汇报 题目: 万 年 历 班级: 学号: 姓名: 2112月 目 录1 绪论11.1选题目标及意义11.2 系统概述 11.3 人员组成及分工12 需求分析13 总体设计14 具体设计15 系统实现2 5.1 开发环境3 5.2 关键技术36.运行结果67.软件测试78.总结79 参考文件8 1.绪论1.1选题目标及意义选题目标:此次课程设计为书本后设计题目任选一题进行设计。思索一段时间后,我们组决定做一个万年历设计。关键考虑到以前时间少课程内容多,JAVA课程基础内容掌握并不是很抓实,而对于设计一个万年历程序,因为其功效简单设计也相对较易,对于我们组每个

2、人学习情况比较适宜,而且经过设计这么一个日历小组件,也能使自己对JAVA部分基础知识掌握愈加牢靠。 1.2 系统概述 伴随电子技术不停发展,大家不停创新,万年历已经不再局限于书本形式,而是以电脑软件或电子产品形式出现。让其愈加便捷。在学习了JAVA课程后,将以JAVA形式编译出一个简易万年历。 1.3 人员组成及分工付 磊:负责搜集查找资料王杜超:调试程序两人共同负责程序编写和修改2.需求分析本程序要求为:1.使用图形用户界面;2.本程序能够实现日期和星期查询。3.能够添加或删除日志3.总体设计(1)能够经过图形界面显示日历。(2)能以月历形式显示日期和星期。 (3)支持用户自己输入年份,能够

3、经过上十二个月,下十二个月等按钮来选择年份和月份。(4)能够添加或删除而且点击对应日期显示日志。4.具体设计1. 总天数算法:首先用if语句判定定义年到输入年之间每十二个月是否为闰年,是闰年,该年总天数为366,不然,为365。然后判定输入年是否为定义年,若是,令总天数S=1,不然,用累加法计算出定义年到输入年之间总天数,再把输入年一月到要输出月份之间天数累加起来,若该月是闰年中月份而且该月还大于二月,再使总天数加1,不然,不加,既算出从定义年一月一日到输出年该月一日总天数。2. 输出月份第一天为星期几算法:使总天数除以7取余得几既为星期几,若是0,则为星期日。3. 算出输出月份第一天为星期几

4、算法:算出输出月份第一天为星期几后,把该日期以前位置用空格补上,并总该日起一次输出天数直到月底,该月中天数加上该月一日为星期几数字再除以7得0换行,即可完整输出该月日历。4. 查询年份必需为四位有效数字,不然不予显示。5.显示系统时间。程序初始化获取目前系统时间年份等数据提交年月变更数据 是否输入年份或选择月份开始计算,绘制屏幕结束 6.步骤图 步骤图5.系统实现5.1 开发环境myeclipse-8.5.0-win325.2 关键技术(1)界面绘制和显示 public class wannianli extends JFrame implements ActionListener, Mous

5、eListener 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 bLastYea

6、r = 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月份显示文本框 priva

7、te 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 JB

8、utton(删除日志); 背景颜色,字体显示 table.setGridColor(Color.GRAY); /星期之间网格线是灰色 table.setColumnSelectionAllowed(true); table.setSelectionBackground(Color.BLACK);/当选定某一天时这一天背景黑色 table.setSelectionForeground(Color.GREEN);/选定日期字体是绿色 table.setBackground(new Color(184,207,229);/日期显示表格颜色浅蓝色 table.setFont(new Font(黑体,F

9、ont.BOLD,24);/日期数字字体格式 table.setRowHeight(30);/表格高度 table.addMouseListener(this); /鼠标监听器 (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 |

10、Month = 9 | Month = 11) return 30; if(year%4 = 0 & year%100 != 0 | year%400 = 0)/闰年 return 29; 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()

11、jta.setText(日志删除成功); else jta.setText(日志删除失败); 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/控制输入年份正确,异常控制

12、 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 ex

13、tends 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) this.lt = lt; public void run() while (true) try if

14、 (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.运行结果7.软件测试 年份输入错误显示 闰年2月份演示和日志保留8.总结对于本程序设计,首先考虑其功效有哪些,需要显示什么,怎样进行窗体构建布局,需要用哪些知识点,如相关类和对象等。最终,就是依据初步设计功效和布局构架,考虑用源代码进行实现了。经过了长时间反复编写调试,书本和网上查阅相

15、关资料相关文章,最终完成了整个课程设计。在这个过程中,在把书本上知识给系统复习了一下同时,同时也发觉了自己太多不足,对JAVA语言整体知识构架不够熟悉,不能灵活地利用所学知识点。自己编程方法也不是太标准,常常出现代码写错而调试很久低级错误情况出现。 经过这次课程设计,我明白了编写程序,不仅要求对书本知识有较深刻了解,同时要求程序设计者有较强思维和动手能力。还要熟悉常见编程技巧和编程思想,不能只关心程序运行结果,更要重视程序代码结构,编程者更要有严谨地态度。还有经过设计过程中大量地查阅网络文章,对部分关键知识点逐一地了解并处理相关问题。所以网络这个强大工具,确实是我们学习之中能够借助一个很好帮手。网络是我们学习最好老师之一。有问题,问网络,是一个很好习惯。9.参考文件1. 赤金 聂松 JavaApplet实例编程2.部分资料起源于网络

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服