版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、动态基础程序设计课程设计班级:学生卡:姓名:主题:日历记事本导师:答复日期: 任务详情解释老师布置的题目、要求和最终结果。 (需与老师密切沟通)设计主题:日历记事本设计要求:1.类之间的关系如图1-1所示。 (添加类图)CalendarPadCalendarPad(主类)NotePadYearMonth图 1-1 类之间的关系2、java源文件及其功能如表1-1所示。表 1-1 java 源文件及其功能序列号文件名主要功能评论1CalendarPad.java程序主窗口创建实用万年历记事本包含主要方法2记事本.java该文件负责创建记事本3年份.java该文件负责创建管理年份的对象4月.jav
2、a该文件负责创建管理月份的类对象系统详细设计主类CalendarPad1.成员变量成员变量说明变量类型姓名年月日整数年、月、日用于保存日志的哈希表哈希表哈希表存储哈希表的文件文件文件演出日期JTextField表演日日历对象日历日历记事本对象记事本记事本月亮月负责任的变革月年年负责改年2.方法姓名功能评论日历垫创建程序的主窗口施工方法设置日历卡设置日历的年月安排按月排序鼠标按下处理 MouseEvent 事件接口方法面程序开始运行记事本记事本1.成员变量描述变量类型姓名文字输入区文本区域文本保存和删除日志的按钮按钮保存日志,删除日志用于保存日志的哈希表哈希表桌子保存哈希表的文件文件文件日志的年
3、月日整数年、月、日_2.方法姓名功能评论记事本创建记事本对象施工方法设置年设定年份获取年份获得年份设置月设置月份获取月份获得月份设置日设置日期获取日获取日期获取日志内容获取日志内容保存日志保存日志删除日志删除日志执行的动作处理 ActionEvent 事件接口方法年1.成员变量描述变量类型姓名表示年份的整数(负数表示 BC)整数年显示年份的文本栏JTextField演出年负责加减年份的按钮乌顿明年,去年2.方法姓名功能评论年创建一个“年份”对象施工方法设置年设定年份获取年份获得年份执行的动作处理 ActionEvent 事件接口方法月1.成员变量描述变量类型姓名代表月份的整数(负数代表 BC)
4、整数月显示月份的文本栏JTextField秀月负责加减月份的按钮乌顿上个月,下个月2.方法姓名功能评论月创建一个“月”对象施工方法设置月份设置月份获取月份获得月份执行的动作处理 ActionEvent 事件接口方法任务分析针对老师的题目,说说为实现题目内容而进行的分析。: 日历记事本的主类(Calendar;swing;awt;awt.event;io;Hashtable):笔记本(日历;swing;awt;awt.event;io;swing.event;):年(javax.swing;java.awt.java.awt.event):月亮(javax.swing;java.awt.java
5、.awt.event)任务解决过程和方法源程序列表主类 CalendarPad:CalendarPad.Java _ _导入 java.util.Calendar;导入 javax.swing.*;导入 java.awt.*;导入 java.awt.event.*;导入java.io.*;导入 java.util.Hashtable;公共类 CalendarPad 扩展 JFrame 实现 MouseListenerint 年、月、日;哈希表哈希表;档案档案;JTextField showDay;JLabel 标题;日历日历;int 星期几;记事本记事本=空;Month 负责更改月份;Year
6、 负责更改年份;String Week=星期日,星期一,星期二,星期三,星期四,星期五,星期六;JPanel 左面板,右面板;public CalendarPad(int year,int month,int day)leftPanel=新JPanel();JPanel leftCenter=new JPanel();JPanel leftNorth=new JPanel();leftCenter.setLayout(new GridLayout(7,7);右面板=新 JPanel();this.year=年;this.month=月;这天=天;负责更改年份 = new Year(this);
7、负责更改year.setYear(year);负责更改月份 = new Month(this);负责更改month.setMonth(month);标题=新的 JLabel7;showDay=新的 JTextField42;for(int j=0;j7;j+)标题j=新的 JLabel();标题j.setText(周j);标题j.setBorder(BorderFactory.createRaisedBevelBorder();leftCenter.add(titlej);标题0.setForeground(Color.red);标题6.setForeground(Color.blue);fo
8、r(int i=0;i42;i+)showDayi=new JTextField();showDayi.addMouseListener(this);showDayi.setEditable(false);leftCenter.add(showDayi);日历=Calendar.getInstance();Box box=Box.createHorizontalBox();box.add(负责改变年);box.add(负责改变月);leftNorth.add(box);leftPanel.setLayout(new BorderLayout();leftPanel.add(leftNorth,
9、BorderLayout.NORTH);leftPanel.add(leftCenter,BorderLayout.CENTER);leftPanel.add(new Label(请在年份输入框中输入您要查找的年份(负数表示BC),回车确认),边框布局.SOUTH) ;leftPanel.validate();容器 con=getContentPane();JSplitPane 拆分=新 JSplitPane(JSplitPane.HORIZONTAL_SPLIT,左面板,右面板);con.add(split,BorderLayout.CENTER);con.validate();哈希表=新哈
10、希表();file=new File(日历记事本.txt);if(!file.exists()尝试文件输出流输出=新文件输出流(文件);ObjectOutputStream objectOut=new ObjectOutputStream(out);objectOut.writeObject(哈希表);objectOut.close();out.close();捕获(IOException e)记事本=新记事本(本);rightPanel.add(记事本);日历设置牌(年、月);addWindowListener(new WindowAdapter() public void windowCl
11、osing(WindowEvent e)System.exit(0););设置可见(真);设置边界(100,50,524,285);证实();public void 设置日历卡片(int year,int month)Calendar.set(year,month-1,1);星期几 = calendar.get(Calendar.DAY_OF_WEEK)-1;if(月=1|月=2|月=3|月=5|月=7|月=8|月=10|月=12)数组(星期几,31);else if(月=4|月=6|月=9|月=11)数组(星期几,30);否则如果(月=2)if(年%4=0&年%100!=0)|(年%400=
12、0)数组(星期几,29);别的数组(星期几,28);公共无效数组(int 星期几,int 月份日期)for(int i=星期几, n=1; i星期几 + 月份日期; i+) showDayi.setText(+n);如果(n=天) showDayi.setForeground(Color.green);showDayi.setFont(new Font(TimesRoman,Font.BOLD,20);别的 showDayi.setFont(new Font(TimesRoman,Font.BOLD,12);showDayi.setForeground(Color.black);如果(i%7=
13、6) showDayi.setForeground(Color.blue);如果(i%7=0)showDayi.setForeground(Color.red);n+;for(int i=0;i几星期;i+)showDayi.setText();for(int i=几周几+月天数;i42;i+) showDayi.setText();公共 int getYear()返回年份;公共无效 setYear(int y)年=y;notepad.setYear(年);公共 int getMonth()返回月份;公共无效 setMonth(int m)月=m;notepad.setMonth(月);公共
14、int getDay()返回日;公共无效 setDay(int d)天=d;notepad.setDay(day);公共哈希表 getHashtable() 返回哈希表;公共文件获取文件()返回文件;public void mousePressed(MouseEvent e)JTextField 源=(JTextField)e.getSource();尝试day=Integer.parseInt(source.getText();notepad.setDay(day);notepad.set infobar(年,月,日);notepad.settextarea(null);notepad.获取
15、日志内容(年、月、日);捕获(异常 ee)public void mouseClicked(MouseEvent e)public void mouseReleased(MouseEvent e)public void mouseEntered(MouseEvent e)public void mouseExited(MouseEvent e)公共静态无效主(字符串参数 )日历日历=Calendar.getInstance();int y=calendar.get(Calendar.YEAR);int m=calendar.get(Calendar.MONTH)+1;int d=calenda
16、r.get(Calendar.DAY_OF_MONTH);新日历垫(y,m,d);记事本记事本:记事本.java导入 java.awt.*;导入 java.awt.event.*;导入 java.util.*;导入 javax.swing.*;导入 javax.swing.event.*;导入java.io.*;公共类 NotePad 扩展 JPanel 实现 ActionListenerJTextArea 文本;utton保存日志,删除日志;哈希表;JLabel 信息栏;int 年、月、日;档案档案;CalendarPad 日历;公共记事本(CalendarPad 日历)this.calen
17、dar=日历;年=日历.getYear();月=日历.getMonth();天=日历.getDay();表=日历.getHashtable();文件=日历.getFile();信息栏=new JLabel(+year+year+month+month+day+day,JLabel.CENTER);InfoBar.setFont(new Font(TimesRoman,Font.BOLD,16);infobar.setForeground(Color.blue);文本=新的 JTextArea(10,10);保存日志=new utton(保存日志);删除日志=new utton(删除日志);保存
18、 log.addActionListener(this);删除 log.addActionListener(this);设置布局(新边框布局();JPanel pSouth=新 JPanel();add(信息栏, BorderLayout.NORTH);pSouth.add(保存日志);pSouth.add(删除日志);添加(pSouth,BorderLayout.SOUTH);添加(新的 JScrollPane(文本),BorderLayout.CENTER);公共无效actionPerformed(ActionEvent e)if(e.getSource()=保存日志)保存日志(年、月、日
19、);else if(e.getSource()= 删除日志)删除日志(年、月、日);public void setYear(int year) this.year=year;公共 int getYear()返回年份;公共无效 setMonth(int 月) this.month=月;公共 int getMonth()返回月份;public void setDay(int day) this.day=day;公共 int getDay()返回日;public void 设置信息条(int year,int month,int day)信息栏.setText(+year+year+month+mo
20、nth+day+day);public void 设置文本区域(String s)text.setText(s);public void 获取日志内容(int year,int month,int day)String key=+year+month+day;尝试FileInputStream inOne=new FileInputStream(file);ObjectInputStream inTwo=new ObjectInputStream(inOne);table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();捕获(
21、异常 ee)if(table.containsKey(key) String m=+year+year+month+month+day+这天有日志记录,要不要看?;int ok=JOptionPane.showConfirmDialog(this,m,ask,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTION)text.setText(String)table.get(key);别的 text.setText();别的 text.setText(无记录);公共无效保存日志(in
22、t年,int月,int日)字符串日志内容=text.getText();字符串键=+年+月+日;String m=+year+year+month+month+day+保存日志?;int ok=JOptionPane.showConfirmDialog(this,m,ask,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTION)尝试FileInputStream inOne=new FileInputStream(file);ObjectInputStream inTwo=new
23、 ObjectInputStream(inOne);table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();table.put(key,日志容);文件输出流输出=新文件输出流(文件);ObjectOutputStream objectOut=new ObjectOutputStream(out);objectOut.writeObject(table);objectOut.close();out.close();捕获(异常 ee)公共无效删除日志(int年,int月,int日) String key=+year+month
24、+day;if(table.containsKey(key) String m=删除+year+year+month+month+day+day?的日志;int ok=JOptionPane.showConfirmDialog(this,m,ask,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTION)尝试FileInputStream inOne=new FileInputStream(file);ObjectInputStream inTwo=new ObjectInputS
25、tream(inOne);table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();table.remove(key);文件输出流输出=新文件输出流(文件);ObjectOutputStream objectOut=new ObjectOutputStream(out);objectOut.writeObject(table);objectOut.close();out.close();text.setText(null);捕获(异常 ee)别的 String m=+year+year+month+month+day+no
26、logging;JOptionPane.showMessageDialog(this,m,prompt,JOptionPane.WARNING_MESSAGE);年:年份.java导入 javax.swing.*;导入 java.awt.*;导入 java.awt.event.*;公共类 Year 扩展 Box 实现 ActionListenerint 年;JTextField showYear=null;明年乌顿,去年;CalendarPad 日历;公共年(CalendarPad 日历) 超级(BoxLayout.X_AXIS);showYear=新的 JTextField(4);showY
27、ear.setForeground(Color.blue);showYear.setFont(new Font(TimesRomn,Font.BOLD,14);this.calendar = 日历;年=日历.getYear();明年=新乌顿(“明年”);去年=新乌顿(“去年”);添加(去年);添加(显示年份);添加(明年);showYear.addActionListener(this);last.addActionListener(this);next.addActionListener(this);public void setYear(int year)this.year=年;showY
28、ear.setText(+年份);公共 int getYear()回归年份;公共无效actionPerformed(ActionEvent e) if(e.getSource()=last)年=年-1;showYear.setText(+年份);Calendar.setYear(年);日历。设置日历卡(年,日历。getMonth();else if(e.getSource()=明年)年=年+1;showYear.setText(+年份);Calendar.setYear(年);日历。设置日历卡(年,日历。getMonth();否则如果(e.getSource()=showYear) 尝试年=整
29、数.parseInt(showYear.getText();showYear.setText(+年份);Calendar.setYear(年);日历。设置日历卡(年,日历。getMonth();捕获(NumberFormatException ee)showYear.setText(+年);Calendar.setYear(年);日历。设置日历卡(年,日历。getMonth();月:月.java导入 javax.swing.*;导入 java.awt.*;导入 java.awt.event.*;公共类 Month 扩展 Box 实现 ActionListenerint 月;JTextField
30、 showMonth=null;utton 下个月,上个月;CalendarPad 日历;公共月份(CalendarPad 日历)超级(BoxLayout.X_AXIS);this.calendar = 日历;showMonth=新的 JTextField(2);月=日历.getMonth();showMonth.setEditable(false);showMonth.setForeground(Color.blue);showMonth.setFont(new Font(TimesRomn,Font.BOLD,16);下个月=new utton(下个月);上个月=new utton(上个月
31、);添加(上个月);添加(显示月);添加(下个月);上个月.addActionListener(this);下个月.addActionListener(this);showMonth.setText(+月);公共无效 setMonth(int 月)if(月=1)this.month=月;别的 this.month=1;showMonth.setText(+月);公共 int getMonth()返回月份;公共无效actionPerformed(ActionEvent e) if(e.getSource()= 上个月) 如果(月=2)月=月-1;Calendar.setMonth(月);日历。设
32、置日历卡片(Calendar.getYear(),month);否则如果(月=1)月=12;Calendar.setMonth(月);日历。设置日历卡片(Calendar.getYear(),month);showMonth.setText(+月);else if(e.getSource()=下个月) 如果(月12)月=月+1;Calendar.setMonth(月);日历。设置日历卡片(Calendar.getYear(),month);否则如果(月=12)月=1;Calendar.setMonth(月);日历。设置日历卡片(Calendar.getYear(),month);showMon
33、th.setText(+月);试运行结果如下:总结课程设计的总结和经验主要讲遇到的关键问题怎么解决,用什么方法,参考什么资料。:在这个为期一周的课程设计中,我们组的课题项目是日历记事本( CalendarPad.java )。作为组长,我亲自邀请了Ying写CalendarPad.java的代码,我们通过netbeans软件编写了这个项目。在编写代码的过程中,我们遇到了诸如此类的问题。我请老师一起讨论。虽然大家的Java学习没有想象中的那么好,但是大家都在尽全力去完成,尤其是最后。合并后我们发现可视化窗口底部的文字显示部分有一个很大的漏洞。我们查了好几遍源码,发现没有错误,也没有放弃。我们发现
34、问题可能出在编码上,于是尝试使用font.java类包进行修改,发现还是不行。然后我们开始考虑边框的大小,但还是以失败告终;最后问老师,发现只有netbeans的软件不支持这种编码,问题就轻松解决了。这门课程的设计让我明白了理论与实践相结合的重要性。仅有理论知识是不够的,团队之间的配合和成员之间的默契也很重要,这对我以后的工作养成良好的习惯非常重要。:通过一周的时间给CalendarPad写信。 Java ,此文件创建一个记事本,包括对记事本的输入,保存删除日志的按钮,保存日志哈希表和包含日志的年、月和日的文件。利用 java.awt 类的使用。使用类创建记事本,输入文本并保存日志,编辑日志的年月日,设置代码,进一步加深对java
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024土地估价师协会土地评估标准制定与实施合同3篇
- 2024年度智能穿戴设备生产与销售合同3篇
- 2025关于正规工业品买卖合同范本
- 2024年夹板买卖合同范本:涉及夹板产品生命周期管理与服务保障3篇
- 零售店铺设计师招聘协议模板
- 企业饮酒文化指南
- 煤质与经济效益
- 厂房消防改造工程协议
- 超市购物顾客证件管理办法
- 安徽省阜阳市颍上县2024-2025学年高一上学期期中考试历史试题(解析版)
- 证照使用借阅申请表
- 生态文明-撑起美丽中国梦学习通章节答案期末考试题库2023年
- 脑卒中言语障碍患者的康复护理
- 国开电大本科《人文英语4》机考真题(第十三套)
- 国开电大本科《管理英语3》机考真题(第八套)
- 内墙石膏砂浆抹灰施工工艺全
- 部编版五年级语文下册全套一课一练练习(精编含答案)-2020042809395412
- 仿生机械蝎子设计说明书
- 电力电子技术及应用题库含答案
- 总公司与子公司管理授权明细表
- 1-12年级3500个核心单词总结
评论
0/150
提交评论