时钟日历记事本软件的设计与实现
JAVA课程设计报告-日历记事本

东华理工大学信息工程学院《JAVA技术应用开发》课程设计报告日历记事本******学号:************同组成员:无完成日期:2015.7.3目录1.项目概述 (2)2.需求分析 (2)3.概要设计 (3)3.1功能结构 (3)3.2布局 (3)4.详细设计及功能实现 (4)4.1结构 (4)4.2主界面 (5)4.3日历模块 (8)4.4记事本模块 (9)4.5记事列表模块 (12)4.6提醒功能 (13)5.运行测试 (15)6.总结 (19)1.项目概述日历记事本是将日历和记事本结合在一起,用户可以任意选择某一天,保存这一天需要记录的记事,或者任意查看某一天已经记录的记事。
同时还应具备提醒功能,当到达提醒时间时会自动弹出提醒。
2.需求分析日历记事本大致分为日历和记事两个部分。
①日历部分首先,需要选择日期,用户可以通过点击按钮选择前一年或后一年,同样也可以选择前一个月或后一个月,当月份为1月时,用户点击前一个月,会自动跳转到前一年的12月,同理,在12月时点击后一个月,会自动跳转到下一年的1月。
另外,当选择跨度比较大时,需要多次点击按钮,很不方便,所以需要一个下拉框,可以直接选择某一年或某一个月。
当用户改变选择日期时,日历会自动显示出这一个月的日历,并且可以通过点击某一天,来进行添加记事的操作,鼠标经过日历或点击日历时,会有不同的效果以提示用户这是可以点击的。
②记事部分首先,需要一个文本域给用户编辑记事内容,记事和日历部分所选择的日期是相关的,当用户点击日历选择某一天,则记事本上端会显示出选择的日期信息。
同时,记事应该还具有设置提醒的功能,用户点击设置提醒按钮后,会弹出一个新的对话框,用来选择提醒时间。
为保存记事,应将记事以文件的形式存储在计算机上。
另外,当用户想查看所有记事,或者想搜索某一则记事时,可以将日历部分换成一个表格,列出所有的记事,或者符合搜索结果的记事。
3.概要设计3.1功能结构日历记事本以功能划分,大致分为日历、记事列表及记事本三个部分:3.2布局软件界面的大致布局如下图,可以通过点击按钮将日历切换为记事列表4.详细设计及功能实现4.1结构①类结构②文件存储结构程序第一次运行时,会在设定的位置自动创建路径:“.../日历记事本/data/”。
基于Android平台的日程记事器设计与实现

基于Android平台的日程记事器设计与实现【摘要】本文研究了在Android开发平台下日程记事器的设计与实现过程,实现对日程记事进行增删改查、自定义闹铃振动定时提醒功能、拍照记事和录像记事等功能,并且使用google的语音搜索功能添加记事,为用户提供方便快捷的操作。
【关键词】Android平台;日程记事器;手机软件1.引言随着智能手机技术的不断发展,它将成为人们日常生活记录日程必不可少的设备。
因此,Android平台记事器将会有很大的发展空间,WNotes日程手机应用软件就是其中之一。
它的设计开发是为了最大便捷的方便人们记录日常生活中一些重要的事情。
WNotes日程除了具备最基本的增删改查功能外,还拥有别具特色的闹铃实时提醒功能和多媒体拍照记事功能。
当然用户也可以根据自己的需要对日程记录进自定义排序,便于阅读。
本文将基于Android平台详述如何设计并实现一款功能完备的日程记事器。
2.系统总体设计2.1 功能设计通过对智能手机用户的问卷调查以及参照现有智能机中记事器的功能,本文将整个记事器功能设计如图1所示:2.2 数据库访问设计数据库选用SQLite,通过使用这些API便可实现数据库操作。
记事器要经常进行数据库操作,所以编写了DBAccess和DBUtil两个类进行专门的数据库操作,设计一个SQLiteOpenHelper类来对数据库进行基本操作,以实现数据库的访问等。
3.记事器的具体实现3.1 主界面模块实现主界面采用Android自带的ListView控件显示,并且继承ListActivity父类,这样可以很方便地显示日程记事,在记事为空的时候显示No data没有数据,在记事不为空的时候显示记事的ListView列表界面。
在整个主界面的最上方添加两个ImageView的按钮,一个是添加记事,另一个是查询记事,可以方便用户操作。
通过重写父类的onCreateOptionsMenu(Menu menu)方法创建menu菜单,点击menu菜单,弹出“设置”、“新建”、“排序”、“搜索”菜单选项。
日历记事本实验报告

题目:日历记事本一、实验内容用所学的Java知识,设计出日历记事本程序。
(其中:保存、读取和删除过程)二、需求分析◆建立日历记事本界面,其中包括时钟、日历和记事大部分操作、显示、清除◆所编写的程序可以正常运算;◆所编写的程序可以正确记事;三、实验目的★ 1、加深对Java语言的了解,增强Java的编写能力;★ 2、巩固专业知识,Java复习语言的类及其他基础内容;★ 3、增强学生的动手实践能力,开拓学生的视野;★ 4、丰富学生的想象力及独立思考能力。
四、组员及分工廖俊军:CalendarMessage、CalendarPad、NotePad刘伟才:CalendarWindow伍星:Clock五、系统总体设计:主要功能模块的算法设计思路如下:1、主类(CalendarWindow.java)主要功能介绍:(1)运行的标志;(2)调用包中的各种类。
(3)界面代码及主函数的书写(4)窗口的排版及按钮的位置摆放(5)实现各按钮和标签的创建和功能2、数据类(CalendarMessage.java)主要功能介绍:用来刻画和“日期”有关的数据。
3、数据显示和修改类(CalendarPad.java)主要功能介绍:用来表示“日历”,即负责显示和修改CalendarMessage对象中的日期数据。
4、记事本类(NotePad.java)主要功能介绍:创建以提供编辑、读取、保存和删除日志的功能。
5、时钟类(Clock.java)主要功能介绍:负责显示时钟。
6、图像类(CalendarImage.java)主要功能介绍:负责绘制图像。
六、程序详细设计:代码如下:1、主类(CalendarWindow.java)import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;public class CalendarWindow extends JFrame implements ActionListener, MouseListener,FocusListener{int year,month,day;CalendarMessage calendarMessage;CalendarPad calendarPad;NotePad notePad;JTextField showYear,showMonth;JTextField [] showDay;CalendarImage calendarImage;Clock clock;JButton nextYear,previousYear,nextMonth,previousMonth;JButton saveDailyRecord,deleteDailyRecord,readDailyRecord;File dir;Color backColor=Color.white;public CalendarWindow(){dir=new File("./dailyRecord");dir.mkdir();showDay=new JTextField[42];for(int i=0;i<showDay.length;i++){showDay[i]=new JTextField();showDay[i].setBackground(backColor);showDay[i].setLayout(new GridLayout(3,3));showDay[i].addMouseListener(this);showDay[i].addActionListener(this);showDay[i].addFocusListener(this);}calendarMessage=new CalendarMessage();calendarPad=new CalendarPad();notePad=new NotePad();Calendar calendar=Calendar.getInstance();calendar.setTime(new Date());year=calendar.get(Calendar.YEAR);month=calendar.get(Calendar.MONTH)+1;day=calendar.get(Calendar.DAY_OF_MONTH);calendarMessage.setYear(year);calendarMessage.setMonth(month);calendarMessage.setDay(day);calendarPad.setCalendarMessage(calendarMessage);calendarPad.setShowDayTextField(showDay);notePad.setShowMessage(year,month,day);calendarPad.showMonthCalendar();doMark(); //给有日志的号码做标记,见后面的doMark()方法calendarImage=new CalendarImage();calendarImage.setImageFile(new File("flower.jpg"));clock=new Clock();JSplitPane splitV1=newJSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarImage); JSplitPane splitV2=new JSplitPane(JSplitPane.VERTICAL_SPLIT,notePad,clock); JSplitPane splitH=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2);add(splitH,BorderLayout.CENTER);showYear=new JTextField(""+year,6);showYear.setFont(new Font("TimesRoman",Font.BOLD,12));showYear.setHorizontalAlignment(JTextField.CENTER);showMonth=new JTextField(" "+month,4);showMonth.setFont(new Font("TimesRoman",Font.BOLD,12));showMonth.setHorizontalAlignment(JTextField.CENTER);nextYear=new JButton("下年");previousYear=new JButton("上年");nextMonth=new JButton("下月");previousMonth=new JButton("上月");nextYear.addActionListener(this);previousYear.addActionListener(this);nextMonth.addActionListener(this);previousMonth.addActionListener(this);showYear.addActionListener(this);JPanel north=new JPanel();north.add(previousYear);north.add(showYear);north.add(nextYear);north.add(previousMonth);north.add(showMonth);north.add(nextMonth);add(north,BorderLayout.NORTH);saveDailyRecord=new JButton("保存日志") ;deleteDailyRecord=new JButton("删除日志");readDailyRecord=new JButton("读取日志");saveDailyRecord.addActionListener(this);deleteDailyRecord.addActionListener(this);readDailyRecord.addActionListener(this); //怎么实现的按钮上附加的日记读取功能???JPanel pSouth=new JPanel();pSouth.add(saveDailyRecord);pSouth.add(deleteDailyRecord);pSouth.add(readDailyRecord);add(pSouth,BorderLayout.SOUTH);setVisible(true);setBounds(60,60,660,480);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e){ //鼠标获取按钮内容的动作函数if(e.getSource()==nextYear){ //“下一年”year++;showYear.setText(""+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==previousYear){ //“上一年”year--;showYear.setText(""+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==nextMonth){ //“下一月”month++;if(month>12) month=1;showMonth.setText(" "+month);calendarMessage.setMonth(month);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==previousMonth){ //、“上一月”month--;if(month<1) month=12;showMonth.setText(" "+month);calendarMessage.setMonth(month);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==showYear){String s=showYear.getText().trim();char a[]=s.toCharArray();boolean boo=false;for(int i=0;i<a.length;i++)if(!(Character.isDigit(a[i])))boo=true;if(boo==true) //弹出“警告”消息对话框JOptionPane.showMessageDialog(this,"您输入了非法年份","警告",JOptionPane.WARNING_MESSAGE);else if(boo==false)year=Integer.parseInt(s);showYear.setText(""+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==saveDailyRecord){ //“保存日记”notePad.save(dir,year,month,day);doMark();}else if(e.getSource()==deleteDailyRecord){ //“删除日记”notePad.delete(dir,year,month,day);doMark();}else if(e.getSource()==readDailyRecord) //“读取日记”notePad.read(dir,year,month,day);}public void mousePressed(MouseEvent e){JTextField text=(JTextField)e.getSource();String str=text.getText().trim();try{ day=Integer.parseInt(str);}catch(NumberFormatException exp){}calendarMessage.setDay(day);notePad.setShowMessage(year,month,day);}public void mouseReleased(MouseEvent e){}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mouseClicked(MouseEvent e) {}public void focusGained(FocusEvent e){Component com=(Component)e.getSource();com.setBackground(Color.pink);}public void focusLost(FocusEvent e){ //此事件指示Component 不再是焦点所有者。
日历记事本课程设计报告

Java程序设计课程设计报告XXX日历记事本专业XXX学生XXX班级XXX学号XXX指导教师XXX完成日期XXX目录1概述 (1)1.1 课程设计目的 (1)1.2 课程设计容 (1)2 系统需求分析 (1)2.1 系统目标 (1)2.2 主体功能 (1)2.3开发环境 (1)3系统概要设计 (2)3.1 系统的功能模块划分与系统流程图 (2)4 系统详细设计 (2)5 测试 (4)5.1 测试方案 (4)5.2 测试结果 (4)6 小结 (6)参考文献 (7)附录 (8)附录1 源程序清单 (8)日历记事本1 概述1.1 课程设计目的1) 巩固和提高java编程技术。
2)培养掌握成学设计的基本思路和方法。
3)加强研发、调试程序的能力。
4)增强分析、解决问题的能力。
5)提高科技论文写作能力。
1.2 课程设计容设计GUI界面的日历记事本。
系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关容或查看某个日期的记录容。
2 系统需求分析2.1 系统目标1.系统界面的左侧是日历。
该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前日历的年份减一;当鼠标左键单击“下年”按钮,当前日历的年份加一。
2.该日历也可以在某年按月前后翻动。
当鼠标左键单击“上月”按钮时,当前日历的月份减一;当鼠标左键单击“下月”按钮时,当前日历的月份加一。
3.使用鼠标左键单击选定的日期,如已有记录容,系统将弹出对话框提示该日已有记录容,并询问用户是否用记事本显示该容。
4.用户选择具体日期后,可以将记事本的当前容保存起来,形成日志。
2.2 主体功能用户可以方便地在任何日期记录下有关容或查看某个日期的记录容。
通过按按钮“上年”和“下年”对年份进行翻页。
通过按按钮“上月”和“下月”对月份进行翻页。
用户可以通过输入年份来查看自己的日志。
2.3 开发环境Windows XP;jdk1.5.0-0-05;ultraedit开发工具3 系统概要设计3.1 系统的功能模块划分与系统流程图本日历记事本共有4个java源文件。
日历记事本设计(6个类)Java课程设计

Java语言与面向对象技术课程设计报告( 2013 -- 2014年度第1 学期)日历记事本专业软件工程学生姓名班级学号指导教师完成日期目录1 概述 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2 系统需求分析 (1)2.1 系统目标 (1)2.2 主体功能 (1)2.3 开发环境 (1)3 系统概要设计 (1)3.1 系统的功能模块划分 (1)3.2 系统流程图 (2)4系统详细设计 (2)5 测试 (5)5.1 测试方案 (11)5.2 测试结果 (12)6 小结 (14)参考文献 (15)附录 (16)附录1 源程序清单 (16)日历记事本1 概述1.1 课程设计目的1.学习Java程序开发的环境搭建与配置,并且在实际运用中学习和和掌握Java 程序开发的过程2.通过课程设计进一步掌握Java程序设计语言的基础内容,如用户图形界面设计等3.通过亲自设计,编写,调试程序来扩展知识面和动手操作能力4.加强研发、调试程序的能力;增强分析、解决问题的能力;提高科技论文写作能力1.2 课程设计内容设计GUI界面的日历记事本。
系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。
2 系统需求分析2.1 系统目标1.系统界面的左侧是日历。
该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前的日历的年份减一;当鼠标左键单击“下年”按钮,当前日历年份加一。
2.该日历也可以在某年内按月前后翻动,鼠标单击“上月”按钮时,当前的日历的月份减一;当鼠标左键单击“下月”按钮,当前日历月份加一。
3.使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日已有记录内容,并询问用户是否用记事本显示该内容。
2.2 主体功能1.用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。
2.通过按按钮“上年”和“下年”对年份进行翻页;通过按按钮“上月”和“下月”对月份进行翻页。
日历记事本的设计与实现

日历记事本的设计与实现课程设计报告(2013 2014年度第二学期)名称:软件设计与实践题目:日历记事本的设计与实现院系:计算机系班级:学号:学生姓名:指导教师:设计周数: 2 成绩:日期:年月日软件设计与实践任务书一、目的与要求目的:通过综合性实验的设计,使学生综合训练自己的需求分析、系统设计、编程、测试等各种能力,积累软件开发的经验,提高学生进行软件开发所需具备的专业素质以及团队协作能力。
要求:完成一个界面的日历记事本的分析、设计、编程、测试工作。
二、主要内容1.编写一个界面的日历记事本,结合两者的功能。
2.用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容;3.能够在对应的日期时间给用户以提醒;三、进度计划四、设计(实验)成果要求程序代码注释丰富,经过测试,运行正常、合理。
程序页面友好,使用方便。
五、考核方式1.平时成绩占10%。
2.综合实验完成情况占30%。
3.实验问答占20%4.实验报告占40%。
学生姓名:指导教师:软件设计与实践教学组年月日一、课程设计的目的与要求1.目的:通过综合性实验的设计,使学生综合训练自己的需求分析、系统设计、编程、测试等各种能力,积累软件开发的经验,提高学生进行软件开发所需具备的专业素质以及团队协作能力。
2.要求:完成一个界面的日历记事本的分析、设计、编程、测试工作。
二、设计正文1设计说明书1.1用例图1.2功能结构图日历记事本功能:(1) 添加事件:1)添加生日:出生日期、姓名2)添加行程:日期、时间、地点、内容、提示音、提示日期、提示时间3)添加纪念日:日期、时间、地点、内容(2) 管理事件:1)管理生日a)按条件查询:查询全部、按姓名查询,将相应的查询结果显示在列表框中b)删除选中的一条记录(从数据库中删除)c)清空全部记录(数据库和列表框中同时清空)2)管理行程a)按条件查询:查询全部、查询今日以前的记录、查询今日以后的记录、选择某一日期查询(缺省为今日),将相应的查询结果显示在列表框中b)删除选中的一条记录(从数据库和列表框中删除)c)清空全部记录(数据库和列表框中同时清空)3)管理纪念日a)查询全部记录并将其显示在列表框中b)删除选中的一条记录(从数据库中删除)c)清空全部记录(数据库和列表框中同时清空)(3) 便签:1)显示全部:将数据库中的便签算有记录显示在文本框中2)添加便签:将便签内容添加至数据库并将新添加的便签内容显示在文本框中3)定时删除:对于添加的任意一条便签,系统默认在数据库中保存一日,一日后系统自动从数据库中删除。
计算机专业课程设计报告--记事时钟

题目:微信小程序-记事时钟一、课题背景与意义1.项目背景(1)基于微信,使他天然就有着庞大的用户基数(2)即扫即用,合理地分配了自己的工作时间(3)代码量并不是很大,但是却是一个完整的web项目(4)它贴近生活,具有现实性(5)它能更好地促进我们的生活二、主要任务和预期目标1.主要任务及要求(1)实现一个微信打开就可以安排规划的程序(2)用微信web开发者工具完成所有编译调试工作(3)编程语言主要为html,css,javascript2.预期目标实现工作的能够按时间提示,完成任务目标。
三、设计方案1.设计思路小程序底部分为三个菜单栏,“主页”,“记录”,“设置”。
(1)主页主要负责设置任务名称以及工作内容。
(2)记录主要负责记录首页完成任务的结果,开始以及结束的过程。
(3)设置页面可以设置工作时间,休息时间主页和启用铃声。
2.实现过程分为三个页面index, logs, setting2.1 Index设计页面const util = require('../../utils/util.js')const defaultLogName = {work: '工作',rest: '休息'}const actionName = {stop: '停止',start: '开始'}const initDeg = {left: 45,right: -45,}Page({data: {remainTimeText: '',timerType: 'work',log: {},completed: false,isRuning: false,leftDeg: initDeg.left,rightDeg: initDeg.right},onShow: function() {if (this.data.isRuning) returnlet workTime = util.formatTime(wx.getStorageSync('workTime'), 'HH') let restTime = util.formatTime(wx.getStorageSync('restTime'), 'HH')this.setData({workTime: workTime,restTime: restTime,remainTimeText: workTime + ':00'})},startTimer: function(e) {let startTime = Date.now()let isRuning = this.data.isRuninglet timerType = e.target.dataset.typelet showTime = this.data[timerType + 'Time']let keepTime = showTime * 60 * 1000let logName = this.logName || defaultLogName[timerType]if (!isRuning) {this.timer = setInterval((function() {this.updateTimer()this.startNameAnimation()}).bind(this), 1000)} else {this.stopTimer()}this.setData({isRuning: !isRuning,completed: false,timerType: timerType,remainTimeText: showTime + ':00',taskName: logName})this.data.log = {name: logName,startTime: Date.now(),keepTime: keepTime,endTime: keepTime + startTime,action: actionName[isRuning ? 'stop' : 'start'],type: timerType}this.saveLog(this.data.log)},startNameAnimation: function() {let animation = wx.createAnimation({duration: 450})animation.opacity(0.2).step()animation.opacity(1).step()this.setData({nameAnimation: animation.export()})},stopTimer: function() {// reset circle progressthis.setData({leftDeg: initDeg.left,rightDeg: initDeg.right})// clear timerthis.timer && clearInterval(this.timer)},updateTimer: function() {let log = this.data.loglet now = Date.now()let remainingTime = Math.round((log.endTime - now) / 1000)let H = util.formatTime(Math.floor(remainingTime / (60 * 60)) % 24, 'HH')let M = util.formatTime(Math.floor(remainingTime / (60)) % 60, 'MM')let S = util.formatTime(Math.floor(remainingTime) % 60, 'SS')let halfTime// update textif (remainingTime > 0) {let remainTimeText = (H === "00" ? "" : (H + ":")) + M + ":" + Sthis.setData({remainTimeText: remainTimeText})} else if (remainingTime == 0) {this.setData({completed: true})this.stopTimer()return}// update circle progresshalfTime = log.keepTime / 2if ((remainingTime * 1000) > halfTime) {this.setData({leftDeg: initDeg.left - (180 * (now - log.startTime) / halfTime)})} else {this.setData({leftDeg: -135})this.setData({rightDeg: initDeg.right - (180 * (now - (log.startTime + halfTime)) / halfTime) })}},changeLogName: function(e) {this.logName = e.detail.value},saveLog: function(log) {var logs = wx.getStorageSync('logs') || []logs.unshift(log)wx.setStorageSync('logs', logs)}})2.2 logs页面设计var util = require('../../utils/util.js')Page({data: {logs: [],modalHidden: true,toastHidden: true},onShow: function() {wx.setNavigationBarTitle({title: '任务记录'})this.getLogs()},set: function() {},getLogs: function() {let logs = wx.getStorageSync('logs')logs.forEach(function(item, index, arry) {item.startTime = new Date(item.startTime).toLocaleString() })this.setData({logs: logs})},onLoad: function() {},switchModal: function() {this.setData({modalHidden: !this.data.modalHidden})},hideToast: function() {this.setData({toastHidden: true})},clearLog: function(e) {wx.setStorageSync('logs', [])this.switchModal()this.setData({toastHidden: false})this.getLogs()}})2.3 setting页面Page({onShow: function() {wx.setNavigationBarTitle({title: '设置'})this.setData({w orkTime: wx.getStorageSync('workTime'),r estTime: wx.getStorageSync('restTime')})},changeWorkTime: function(e) {wx.setStorage({key: 'workTime',data: e.detail.value})},changeRestTime: function(e) {wx.setStorage({key: 'restTime',data: e.detail.value})}})2.4 app.json页面{"pages": ["pages/index/index","pages/logs/logs","pages/setting/setting"],"window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#3197ed","navigationBarTitleText": "","navigationBarTextStyle": "white"},"tabBar": {"color": "#dddddd","selectedColor": "#3cc51f","borderStyle": "black","backgroundColor": "#ffffff","list": [{"pagePath": "pages/index/index","iconPath": "image/wechat.png","selectedIconPath": "image/wechatHL.png","text": "主页"}, {"pagePath": "pages/logs/logs","iconPath": "image/wechat.png","selectedIconPath": "image/wechatHL.png","text": "记录"}, {"pagePath": "pages/setting/setting","iconPath": "image/wechat.png","selectedIconPath": "image/wechatHL.png","text": "设置"}]}}3.设计中的关键问题与解决方法对于微信的wxml,json,js文件的操作不熟悉,有些参考资料阅读不顺利,只能花时间去学习它,研究它。
基于软件的实时日历时钟设计实训报告

本次实训任务是“基于软件的实时日历时钟设计”,可以显示年月日时分秒信息,具有可调整日期和时间功能。
实时日历和时钟显示的设计过程在硬件与软件方面进行同步设计。
硬件部分主要由AT89C52单片机,LED显示电路,以及HD7279A等组成,系统通过LED显示数据,所以具有人性化的操作和直观的显示效果。
软件方面主要包括时钟程序、键盘程序,显示程序等。
本系统以单片机的汇编语言进行软件设计,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,以便更简单地实现调整时间及日期显示功能。
所有程序编写完成后,在keil软件中进行调试,确定没有问题后,在Keil软件中嵌入单片机内进行仿真。
1. 任务书(1)实现功能利用单片机内部定时器工作于方式2产生精确的时钟节拍,累加时钟节拍获取秒时标,借助软件实现秒、分、小时、日、月、年的运行。
利用试验台上7279芯片及附属的16个按键、8位LED数码管实现分屏显示年、月、日或时、分、秒参数;能利用试验台的按键与数码管设置当前的日期、时间参数。
(2)硬件设计根据试验台上具有的硬件电路组成整机硬件电路,利用熟悉的CAD软件画出硬件电路原理图。
根据任务需要配置单片机内部资源,包括I/O接口、RAM、CTC等资源。
(3)软件设计①整机软件框图;②功能子程序设计,包括:初始化、数据显示、数据输入、秒处理、分处理、小时处理、日处理、月处理、年处理、按键驱动、中断服务等子程序设计;③任务调度、整机监控软件设计;④各功能子程序调试及整机软件调试。
(4)预习透彻掌握硬件原理,在此基础上进行软件设计。
阅读THMEMU-1实验指导书、HD7279A说明书等硬件资料。
2.硬件设计实时日历和时钟显示的设计的硬件部分主要由AT89C52单片机,LED显示电路,以及HD7279A等组成,系统通过LED显示数据,所以具有人性化的操作和直观的显示效果。
主电路功能是完成年、月、日、星期、时、分、秒之间的转换,再送往LED显示,并且接受键盘操作,对日期和时间进行校正。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
枣庄学院
信息科学与工程学院
课程设计任务书
题目:时钟日历记事本软件的设计与实现
学号:0240 0249
姓名:杨振东郑健
专业:计算机科学与技术
课程:Java程序设计
指导教师:王琳琳职称:讲师完成时间:2015年11月----2015年12月
枣庄学院信息科学与工程学院制
2015年11 月27 日
课程设计任务书及成绩评定
2.2功能需求描述
时钟日历记事本的总体目标是为使用者记录、管理个人日记以及每日心里路程,其中主要实现以下功能
1、显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。
2、查询信息:用户可以查询到某个月的所有的提示信息。
3、删除信息:用户可以删除添加的信息。
4、显示时钟
3、总体设计
3.1开发与设计的总体思想
创建主类CalendarPad控制整个程序的调控与连接,该类负责创建本时钟日历记事本程序的主窗口,含有main方法,程序从该类开始执行。
并创建Year、Month、NotePad、Clock四个类分别负责年份、月份、记事本以及时钟的创建及管理。
3.2系统模块结构图
3.3Java源文件及其功能
表1-1 java源文件及其功能
序
文件名主要功能备注
号
1 CalendarPad.java创建实用万年历记事本程序的主窗口含有main方法
2 NotePad.java该文件负责创建记事本
5、程序代码
5.1 CalendarPad
package ch11.demo;
import java.util.Calendar;
import javax.swing.*;
import ch11.demo.Month;
import ch11.demo.NotePad;
import ch11.demo.Year;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Hashtable;
public class CalendarPad extends JFrame implements MouseListener
通过这次的课程设计我深刻意识到要在以后的而学习中认真努力,多做程序,多进行练习,不会的多问老师同学,努力培养自己对java的兴趣,努力学好java。
由于是第一次进行Java语言开发所以不足之处不可避免。
以前不懂得的东西,通过这次组员之间的讨论,完善,得到补充,使自己对于java这门课程有了全新的认识。
比如我负责的部分中,用到变量类型有int、JTextField、JButton,对于这些,以前只是听老师讲过,没有运用于实践中,所以创建“年”对象,设置年份,获取年份该用些什么方法,哪些变量,在这次实践得到更完善的积累。
这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,而且团队之间的合作,成员之间的默契,也很重要,这将对我以后的工作形成良好的习惯。
这次课程设计的主要目的是学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程,以及进一步熟悉掌握Java程序设计语言的基础内容,提高Java 编程技术以及分析解决问题的综合能力。
本次课程设计,我负责是主类的部分,这对于整个程序都是至关重要的。
由于专业知识有限,所以在编写代码的时候难免出现问题,像用什么变量显示日期,用什么变量保存日志的散列表等等,像int、Hashtable、File、JTextField[]、这些都通过组员之间的讨论得到解决。
以前对Java语言的很多知识认识都不深刻,做过这次实训之后,我对Java语言的开发有了一个比较系统的了解,从中发现自己平时学习不足和薄弱环节,从而加以弥补。