教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 求职职场 >

java课程设计报告之万年历程序设计报告(1)(2)

来源:网络收集 时间:2026-09-09
导读: int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //每个月的天数 int searchMonth,searchYear; //查询的年份及月份 public void init(){ setBackground(Color.white); //设置背景颜色 sear

int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //每个月的天数 int searchMonth,searchYear; //查询的年份及月份 public void init(){ setBackground(Color.white); //设置背景颜色 searchMonth = calendar.get(Calendar.MONTH); //得到系统年份 searchYear = calendar.get(Calendar.YEAR); //得到系统月份 add(new Label(" 年:")); //增加组件到Applet tfYear.setText(String.valueOf(searchYear)); //设置文本域文字 add(tfYear); add(new Label(" 月:")); monthChoice.setFont(smallFont); //设置月份选择下拉框的显示字体 for (int i = 0; i < 12; i++) { } monthChoice.select(searchMonth); //设置下拉框当前选择项 add(monthChoice); add(btUpdate); int componentCount=this.getComponentCount(); //得到Applet中的组件数量 for (int i=0;i<componentCount;i++){ getComponent(i).setFont(smallFont); //设置所有组件的显示字体 monthChoice.addItem(months[i]); //增加下拉框选项

} } public void paint(Graphics g){ FontMetrics fontMetric; //显示字体的FontMetrics对象 int fontAscent; int dayPos; int totalWidth, totalHeight; //总的宽度,高度 int numRows; //行数 int xNum, yNum; //水平和垂直方向单元格数量 int numDays; String dayStr; //显示天数字符串 int margin; g.setColor(Color.lightGray); //设置当前颜色 g.setFont(bigFont); //设置当前使用字体 g.setColor(Color.black); g.setFont(smallFont); g.drawString(searchYear+"年",60,TOP+70); //绘制字符串 g.drawString((searchMonth+1)+"月",200,TOP+130);

fontMetric = g.getFontMetrics(); //获取变量初值 fontAscent = fontMetric.getAscent(); dayPos = TOP + fontAscent / 2; totalWidth = 7 * CELLWIDTH; //得到总的表格宽度 for (int i = 0; i < 7; i++) { g.drawString(days[i], (CELLWIDTH-fontMetric.stringWidth(days[i]))/2

+ i*CELLWIDTH,dayPos-20); //绘制表格标题栏

} numRows = getNumberRows(searchYear, searchMonth); //计算需要的行的数量 totalHeight = numRows * CELLHEIGHT; //得到总的表格高度 for (int i = 0; i <= totalWidth; i += CELLWIDTH) { } g.drawLine(i, TOP , i, TOP+ totalHeight); //绘制表格线 for (int i = 0, j = TOP ; i <= numRows; i++, j += CELLHEIGHT) { g.drawLine(0, j, totalWidth, j); //绘制表格线 } xNum = (getFirstDayOfMonth(searchYear, searchMonth) + 1) * CELLWIDTH - MARGIN;

yNum = TOP + MARGIN + fontAscent; numDays = daysInMonth[searchMonth] + ((calendar.isLeapYear(searchYear) && (searchMonth == FEBRUARY)) ? 1 : 0);

for (int day = 1; day <= numDays; day++) { dayStr = Integer.toString(day); g.drawString(dayStr, xNum - fontMetric.stringWidth(dayStr), yNum); //绘制字符串

xNum += CELLWIDTH; if (xNum > totalWidth) {

} } xNum = CELLWIDTH - MARGIN; yNum += CELLHEIGHT;

} public boolean action(Event e, Object o){ int searchYearInt; if (e.target==btUpdate){ searchMonth = monthChoice.getSelectedIndex(); //得到查询月份 searchYearInt = Integer.parseInt(tfYear.getText(), 10); //得到查询年份 if (searchYearInt > 1581) { searchYear = searchYearInt; }

repaint(); //重绘屏幕 return true; } return false; } private int getNumberRows(int year, int month) { //得到行数量 int firstDay; int numCells; if (year < 1582) { //年份小于1582年,则返回-1 } return (-1); if ((month < 0) || (month > 11)) { } firstDay = getFirstDayOfMonth(year, month); //计算月份的第一天 return (-1); if ((month == FEBRUARY) && (firstDay == 0) && !calendar.isLeapYear(year)) { } numCells = firstDay + daysInMonth[month]; return 4;

if ((month == FEBRUARY) && (calendar.isLeapYear(year))) { } return ((numCells <= 35) ? 5 : 6); //返回行数 numCells++; } private int getFirstDayOfMonth(int year, int month) { //得到每月的第一天 int firstDay; int i; if (year < 1582) { //年份小于1582年,返回-1 } if ((month < 0) || (month > 11)) { //月份数错误,返回-1 } firstDay = getFirstDayOfYear(year); for (i = 0; i < month; i++) { } firstDay += daysInMonth[i]; //计算每月的第一天 //得到每年的第一天 return (-1); return (-1); if ((month > FEBRUARY) && calendar.isLeapYear(year)) { firstDay++;

} } return (firstDay % 7); } private int getFirstDayOfYear(int year){ //计算每年的第一天 } int leapYears; int hundreds; int fourHundreds; int first; if (year < 1582) { //如果年份小于1582年 } leapYears = (year - 1581) / 4; hundreds = (year - 1501) / 100; leapYears -= hundreds; fourHundreds = (year - 1201) / 400; leapYears += fourHundreds; first=5 + (year - 1582) + leapYears % 7; //得到每年第一天 return first; return (-1); //返回-1

6.课程设计体会

(1)选题目的:本次课程设计为课本后设计题目任选一题进行设计。思考一段时间后,我们组决定做一个万年历的设计。主要考虑到以前时间少课程内容多,JAVA课程基础内容掌握并不是很抓实,而对于设计一个万年历程序,由于其功能简单设计也相对较易,对于我们组每个人的学习情况比较合适,并且通过设计这样的一个日历小组件,也能使自己对JAVA的一些基础知识掌握的更加牢固。

(2)对于本程序的设计,首先考虑其功能有哪些,需要显示什么,如何进行窗体构建布局,需要用哪些知识点,如相关的类和对象等。最后,就是根据初步设计的功能和布局构架,考虑用源代码进行实现了。

经过了长时间的反复编写调试,课本和网上查阅相关资料相关文章,终于完成了整个课程设计。在这个过程中,在把书本上的知识给系统的复习了一下的同时,同时也发现了自己的太多不足,对JAVA语言整体知识构架不够熟悉,不能灵活地运用所学的知识点。自己的编程方式也不是太标准,经常出现代码写错而调试很久的低级错误情况出现。

通过这次课程设计,我明白了编写程序,不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。还要熟悉常用的编程技巧和编程思想,不能只关心程序的运行结果,更要注重程序代码的 …… 此处隐藏:2865字,全部文档内容请下载后查看。喜欢就下载吧 ……

java课程设计报告之万年历程序设计报告(1)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/121674.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)