收藏 分销(赏)

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

上传人:w****g 文档编号:2658997 上传时间:2024-06-04 格式:DOC 页数:13 大小:106.04KB 下载积分:8 金币
下载 相关 举报
java万年历专业课程设计方案报告.doc_第1页
第1页 / 共13页
java万年历专业课程设计方案报告.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
西安科技大学 程序设计综合实训课程设计汇报 题目: 万 年 历 班级: 学号: 姓名: 2112月 目 录 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 1.绪论 1.1选题目标及意义   选题目标:此次课程设计为书本后设计题目任选一题进行设计。思索一段时间后,我们组决定做一个万年历设计。关键考虑到以前时间少课程内容多,JAVA课程基础内容掌握并不是很抓实,而对于设计一个万年历程序,因为其功效简单设计也相对较易,对于我们组每个人学习情况比较适宜,而且经过设计这么一个日历小组件,也能使自己对JAVA部分基础知识掌握愈加牢靠。 1.2 系统概述 伴随电子技术不停发展,大家不停创新,万年历已经不再局限于书本形式,而是以电脑软件或电子产品形式出现。让其愈加便捷。在学习了JAVA课程后,将以JAVA形式编译出一个简易万年历。 1.3 人员组成及分工 付 磊:负责搜集查找资料 王杜超:调试程序 两人共同负责程序编写和修改 2.需求分析 本程序要求为:1.使用图形用户界面; 2.本程序能够实现日期和星期查询。 3.能够添加或删除日志 3.总体设计 (1)能够经过图形界面显示日历。 (2)能以月历形式显示日期和星期。 (3)支持用户自己输入年份,能够经过上十二个月,下十二个月等按钮来选择年份和月份。 (4)能够添加或删除而且点击对应日期显示日志。 4.具体设计 1. 总天数算法:首先用if语句判定定义年到输入年之间每十二个月是否为闰年,是闰年,该年总天数为366,不然,为365。然后判定输入年是否为定义年,若是,令总天数S=1,不然,用累加法计算出定义年到输入年之间总天数,再把输入年一月到要输出月份之间天数累加起来,若该月是闰年中月份而且该月还大于二月,再使总天数加1,不然,不加,既算出从定义年一月一日到输出年该月一日总天数。   2. 输出月份第一天为星期几算法:使总天数除以7取余得几既为星期几,若是0,则为星期日。 3. 算出输出月份第一天为星期几算法:算出输出月份第一天为星期几后,把该日期以前位置用空格补上,并总该日起一次输出天数直到月底,该月中天数加上该月一日为星期几数字再除以7得0换行,即可完整输出该月日历。 4. 查询年份必需为四位有效数字,不然不予显示。 5.显示系统时间。 程序初始化 获取目前系统时间年份等数据 提交年月变更数据 是否输入年份或选择月份 开始 计算,绘制屏幕 结束 6.步骤图 步骤图 5.系统实现 5.1 开发环境 myeclipse-8.5.0-win32 5.2 关键技术 (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);//当选定某一天时这一天背景黑色 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月天数 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 && 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()) { 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//控制输入年份正确,异常控制 { 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) { 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.运行结果 7.软件测试 年份输入错误显示 闰年2月份演示和日志保留 8.总结 对于本程序设计,首先考虑其功效有哪些,需要显示什么,怎样进行窗体构建布局,需要用哪些知识点,如相关类和对象等。最终,就是依据初步设计功效和布局构架,考虑用源代码进行实现了。 经过了长时间反复编写调试,书本和网上查阅相关资料相关文章,最终完成了整个课程设计。在这个过程中,在把书本上知识给系统复习了一下同时,同时也发觉了自己太多不足,对JAVA语言整体知识构架不够熟悉,不能灵活地利用所学知识点。自己编程方法也不是太标准,常常出现代码写错而调试很久低级错误情况出现。 经过这次课程设计,我明白了编写程序,不仅要求对书本知识有较深刻了解,同时要求程序设计者有较强思维和动手能力。还要熟悉常见编程技巧和编程思想,不能只关心程序运行结果,更要重视程序代码结构,编程者更要有严谨地态度。还有经过设计过程中大量地查阅网络文章,对部分关键知识点逐一地了解并处理相关问题。所以网络这个强大工具,确实是我们学习之中能够借助一个很好帮手。网络是我们学习最好老师之一。有问题,问网络,是一个很好习惯。 9.参考文件 1. 赤金 聂松 JavaApplet实例编程 2.部分资料起源于网络
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

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

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服