下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 河北科技大学 课程设计报告 学生姓名: 学号: 专业班级: 课程名称: Java 程序设计课程设计 学年学期: 2 014 2 015 学年第 2 学期 指导教师: 刘伟 2 0 年 月 课程设计成绩评定表 学生姓名 学号 成绩 专业班级 起止时间 设计题目 计 指 导 教 师 评 语 学习态度:端正 较端正 一般 较差口 学习纪律:好 较好 一般 较差口 出勤情况:好 较好 一般 较差口 程序设计:好 较好 一般 较差口 动手能力:强 较强 一般 较差口 团队精神:好 较好 一般 较差口 创新意识:强 较强 一般 较差口 课程设计完成情况:优秀口 好 一般 较差口 课程设计报告完成情况:优
2、秀 好 一般 较差口 指导教师: 年 月 日 目?录 1. 的? . 课 . 1? 程 设 计 目 2. 需 求 分 析 . . 1? 3. 总 体 设 1? 11 4. 计 . . 1? 详 细 设 5. 软 件 测 试 . . 10 6. 课 程 设 计 总 结 . 一、课程设计目的 (1) 熟练使用 java 语言编写程序,解决实际问题。 ? (2) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和 技能 ;? (3) 学会自己调试程序的方法并掌握一定的技巧。 二、需求分析 本程序的要求为: 1. 使用图形用户界面 ;? 2. 本程序能够实现日期与星期的查询。 三、总
3、体设计 ? (1)可以通过图形界面显示日历。 ? (2)能以月历形式显示日期与星期。 ? ( 3)支持用户自己输入年份, 可以通过上一年, 下一年等按钮来选择年份和月份。 ? 四、详细设计 ? 1. 总天数的算法:首先用 if 语句判断定义年到输入年之间每一年是否为闰年,是 闰年,该年的总天数为 366,否则,为 365。 2.输出月份第一天为星期几的算法: 使总天数除以 7 取余得几既为星期几, 若是 0, 则为星期日。 ? 3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日 期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月 一日为星期几
4、的数字再除以 7 得 0 换行,即可完整的输出该月的日历。 ? 4. 查询年份必须为四位有效数字,否则不予显示。 程序源代码: import import import import import import 的表格 private JScrollPane sp = new JScrollPane( table ); private JButton bLastYear = new JButton( 上一年); private JButton bNextYear = new JButton( 下一年); private JButton bLastM on th = =new JButt on(
5、 上月); private JButton bNextMo nth = =new JButt on( 下月); private JTextField Year = new JTextField(4); /jtfYear 年份显示和输 import import import import import import import import java.awt.*; import import java.text.*; import import java.util.*; import javax.sw in g.*; import import javax.sw in g.*; public
6、 class wannianli extends JFrame implements ActionListener private Cale ndar cal = Calendar. getInstanee (); private String str = 星期一,星期二,星期三, 星期四, 星期五, 星期六, 星期日; private DefaultTableModel dtm = newDefaultTableModel( null , str ); private JTable table = newJTable( dtm); /装日期 入文本 private JLabel jla =n
7、ew JLabel( 年); private JTextField month = new JTextField(4); private JLabel jla1 =new JLabel( 月); private JTextField jtfMonth = newJTextField(2); /jtfMonth 月份显 示文本框 private JComboBox comb; private JPanel p1 = new JPanel(); / 装入控制日期按钮的模块 private JPanel p2 = newJPanel(); private JPanel p3 = new JPanel
8、( newGridLayout(2,1); private JPanel p4 = new JPanel(); private JPanel p5 new JPanel(); private JLabel l = new JLabel( 文本框中可直接键入要查找的年份 , 以 提高查询效率 ); private JLabel lt = new JLabel(); private JLabel com= new JLabel( 请选择月份 : ); private int lastTime ; private wannianli() super ( 万年历 ); / 框架命名 this .set
9、DefaultCloseOperation(JFrame. EXIT_ON_CLOS);E/ 窗口关闭函数 table .setGridColor(Color. GRA)Y; / 星期之间的网格线是灰色的 table .setColumnSelectionAllowed( true ); table .setSelectionBackground(Color. BLACK); / 当选定某一天时这一天背景黑 色 table .setSelectionForeground(Color. GREE)N; / 选定的日期字体是绿色的 table .setBackground( newColor(18
10、4,207,229); / 日期显示表格颜色浅蓝色 table .setFont( newFont( 黑体 ,Font. BOLD,24); / 日期数字字体格式 table .setRowHeight(30); / 表格的高度 Year.addActionListener( this ); / 可输入年份的文本框 /month.addActionListener(this);/ 可输入年份的文本框 按钮添加监听函数 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ; comb= newJComboBox(str); p1.add( bLastYear ); p1.
11、add( Year); / 年份输入文本框 p1.add( jla ); p1.add( month); / 年份输入文本框 p1.add( jla1 ); p1.add( bNextYear ); p1.add( bLastMonth ); p1.add( jtfMonth ); p1.add( bNextMonth); p1.add( com); p1.add( comb); p2.setLayout( newFlowLayout(); p2.add( p4,BorderLayout. EAST); p2.add( sp,BorderLayout. CENTE)R; p2.add( p5,
12、BorderLayout. WES)T; p3.add( l ); p3.add( lt ); this .add( p3, BorderLayout. SOUT)H; this .add( p2, BorderLayout. CENTE)R; this .add( p1, BorderLayout. NORT)H; String strDate = DateFormat. getDateInstance ().format( new- ); cal .set(Integer. parseInt (strDate0), Integer. parseInt (strDate1)-1, 0); /
13、 为各个 bLastYear .addActionListener( bNextYear .addActionListener( bLastMonth .addActionListener( bNextMonth.addActionListener( this ); this ); this ); this ); / 将按钮添加到 String str= showCalendar(Integer. parseInt (strDate0), Integer. parseInt (strDate1), cal ); jtfMonth .setEditable( false ); / 设置月份的文本
14、框为不可编辑 Year.setText(strDate0); month.setText(strDate1); comb.setToolTipText(strDate1); comb.addItemListener( newItemListener() public void itemStateChanged(ItemEvent e) jtfMonth .setText(String) comb.getSelectedItem(); month.setText(String) comb.getSelectedItem() ; int m, y; try / 控制输入的年份正确,异常控制 if
15、( Year.getText().length() != 4) throw newNumberFormatException(); y = Integer. parseInt ( Year.getText(); m = Integer. parseInt ( jtfMonth .getText(); catch (NumberFormatException ex) / JOptionPane.showMessageDialog(this, 请输入 4 位 0-9 的数字! , 年份有误 , JOptionPane.ERROR_MESSAGE); return ; for ( int i = 0
16、; i lastTime +1; i+) dtm.removeRow(0); cal .set(y, m-1, 0); showCalendar(y, m, cal ); ); jtfMonth .setText( 1 ); month.setText( 1 ); this .setBounds(200,200,700,320); this .setResizable( false ); this .setVisible( true ); public static void main(String args) new wannianli(); public void showCalendar
17、( int localYear, int localMonth, Calendar cld) int Days = getDaysOfMonth(localYear, localMonth) + cld.get(Calendar. DAY_OF_WE)E-K2; Object ai = new Object7; lastTime = 0; for ( int i = cld.get(Calendar. DAY_OF_WE)E-1K; i = Days; i+) aii%7 = String. valueOf (i-(cld.get(Calendar. DAY_OF_WE)E-2K); if (
18、i%7 = 6) dtm.addRow(ai); ai = new Object7; lastTime +; dtm.addRow(ai); 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 (y
19、ear%4 = 0 & year%100 != 0 | year%400 = 0) / 闰年 return 29; else return 28; public void actionPerformed(ActionEvent e) if (e.getSource() = Year | e.getSource() = e.getSource() = bNextYear | e.getSource() = bLastMonth | e.getSource() = bNextMonth) int m, y; try / 控制输入的年份正确,异常控制 if ( Year.getText().
20、length() != 4) throw new NumberFormatException(); y = Integer. parseInt ( Year.getText(); m = Integer. parseInt ( jtfMonth .getText(); catch (NumberFormatException ex) bLastYear | JOptionPane. showMessageDialog( this , 请输入 4 位 0-9 的 数字!, 年份有误 , JOptionPane. ERROR_MESS)A; GE return ; for ( int i = 0;
21、 i lastTime +1; i+) dtm.removeRow(0); if (e.getSource() = bLastYear ) Year.setText(String. valueOf (-y); if (e.getSource() = bNextYear ) Year.setText(String. valueOf (+y); if (e.getSource() = bLastMonth ) if (m = 1) Year.setText(String. valueOf (-y); m = 12; jtfMonth .setText(String. valueOf (m); el
22、se jtfMonth .setText(String. valueOf (-m); if (e.getSource() = bNextMonth) if (m = 12) Year.setText(String. valueOf (+y); m = 1; jtfMonth .setText(String valueOf (m); else jtfMonth .setText(String. valueOf (+m); cal .set(y, m-1, 0); showCalendar(y, m, cal ); month.setText(String. valueOf (m); / comb
23、.setToolTipText(String.valueOf(m); 五、软件测试 图 1 界面图 图 2 界面图 下拉选择 2 月份 六、课程设计总结 本次 Java 课程设计我们这组做的课题是万年历,刚开始拿到题目我们组员都不知 如何下手,经过小组成员一起查找资料,并且开会讨论,我们确定了设计的设计目标以 及具体实现方式,包括如何将 Java 的思想运用到实际系统的详细设计之中。 实验过程中,首先要将系统要实现的功能分为几大模块,然后每个组员分别完成, 在此过程中使我加深了对 Java 的理解,以及如何进行团队工作的划分,学会发现各组 员的长处并将其发挥出来。虽然大家没怎么学过 Java,
24、但大家都有 C 语言基础,所以通 过努力实验,进一步培养我们利用 Java 语言进行编程和调试程序的能力,同时使我们 能够学会将 C 语言与Java 语言结合起来编写较复杂具有实际意义和算法复杂度较小的 程序。与此同时熟练掌握 Java 语言的编辑,编译,调试程序,并将算法转变为程序实 现。正确理解各种数据结构的逻辑特性和存储表示和基本操作的算法实现。掌握算法的 时间分析和空间分析的技术。针对问题的特点选择合适的数据结构,设计实用高效的算 法,提高大家的算法设计的能力和动手实验的技能。 通过这次课程设计,使我灵活应用所学 Java 知识,独立完成问题分析,结合数据 结构理论知识, 编写程序求解指定问题。 初步掌握软件开发过程的问题分析、 系统设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国电信股份有限公司亳州分公司外包岗位招聘参考考试试题及答案解析
- 2026中国极地研究中心(中国极地研究所)招聘20人笔试备考题库及答案解析
- 达州市大巴山文化旅游发展有限公司面向社会公开招聘正式员工(7人)考试参考试题及答案解析
- 2025贵州省法院系统招聘聘用制书记员282人笔试参考题库及答案解析
- 2025福建福州市润楼教育科技集团有限公司招聘1人考试参考题库及答案解析
- 2026年煤气方面安全试题及答案
- 河段长协议书
- 婚内协议书财产归谁所有
- 法律判的离婚协议书
- 果园护栏网使用协议书
- 2026年湖南电气职业技术学院单招综合素质考试题库含答案详解
- 2025年度护士个人工作总结与展望
- 2025秋人教版(新教材)初中美术八年级上册知识点及期末测试卷及答案
- 医院副院长年度工作述职报告范文
- DB50∕T 867.76-2025 安全生产技术规范 第76部分:汽车制造企业
- 2026年保安员考试题库500道附完整答案(历年真题)
- 工地给水管预埋施工方案
- 地理试卷(26-138B)+答案河北省邢台市卓越联盟2025-2026学年第一学期高二12月期中考试(12.4-12.5)
- 2025至2030中国司法鉴定行业发展研究与产业战略规划分析评估报告
- 2025年粮油质量检验员知识竞赛考试题库500题(含答案)
- 膝关节韧带损伤康复课件
评论
0/150
提交评论