基于命令行的Java万年历程序并且带事件查询功能
软件实训题目:基于命令行的万年历程序要求:一、开发一个JavaApplication,允许用户通过命令行输入需要查询的年、月,在控制台中格式化输出该月的月历,月历格式参考...
软件实训题目:基于命令行的万年历程序
要求:
一、开发一个Java Application,允许用户通过命令行输入需要查询的年、月,在控制台中格式化输出该月的月历,月历格式参考Windows系统托盘的日期和时间程序。
二、在万年历中增加事件提醒的查询功能,打印输出月历时,在有事件记录的日期后添加*号。用户若输入日期号则可以查看当日的事件信息,包括日期、时间、事件描述,并给出数字标记(从1开始)。
1.仅提供查询功能,不要求新增、修改、删除等功能。
2.在代码中自行组织测试数据。
3.用户输入q时退出程序,输入b时返回上级菜单。 展开
要求:
一、开发一个Java Application,允许用户通过命令行输入需要查询的年、月,在控制台中格式化输出该月的月历,月历格式参考Windows系统托盘的日期和时间程序。
二、在万年历中增加事件提醒的查询功能,打印输出月历时,在有事件记录的日期后添加*号。用户若输入日期号则可以查看当日的事件信息,包括日期、时间、事件描述,并给出数字标记(从1开始)。
1.仅提供查询功能,不要求新增、修改、删除等功能。
2.在代码中自行组织测试数据。
3.用户输入q时退出程序,输入b时返回上级菜单。 展开
推荐于2016-07-23
展开全部
package verystupid;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class MyCalendar {
private static Map<Date,List<String>> hasEvent = new HashMap<Date, List<String>>();
private static String year;
private static String month;
public static void main(String[] args){
try {
instanceEvent();//初始化日程数据
} catch (ParseException e1) {
e1.printStackTrace();
}
while(true){
System.out.println("日历系统");
System.out.println("选择操作:");
System.out.println("q:退出系统");
System.out.println("1:输入时间");
Scanner scan =new Scanner(System.in);
String str = scan.next();
if(str!=null&&!"".equals(str)){
if(str.equals("q")){
System.exit(0);
}else if(str.equals("1")){
System.out.print("请输入年份:");
year= scan.next();
System.out.print("\n请输入月份:");
month = scan.next();
if(year==null||"".equals(year)||month==null||"".equals(month)){
System.out.println("不可输入空数据");
continue;
}
try {
showCalendar(Integer.parseInt(year),Integer.parseInt(month));
while(true){
System.out.println("选择日期查看日程(b返回上级菜单,q退出):");
String date = scan.next();
if(date!=null&&!"".equals(date)){
if(date.equals("b")){break;}
else if(date.equals("q")){System.exit(0);}
else{
try{
int i = Integer.parseInt(date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d= sdf.parse(year+"-"+month+"-"+i);
if(hasEvent.containsKey(d)){
for(String s:hasEvent.get(d)){
System.out
.println(s+"\r\n");
}
}else{
System.out.println("改日无日程");
continue;
}
}catch(Exception e){
System.out.println("输入日期不为数字!");
}
}
}
}
} catch (Exception e) {
System.out.println("输入时间有误,请重新选择");
System.out.println("q:退出系统");
System.out.println("1:输入时间");
continue;
}
}
}
}
}
private static void instanceEvent() throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
List<String> events = new ArrayList<String>();
events.add("7:30 起床");
events.add("8:00 吃饭");
events.add("8:30 上课");
events.add("9:30 锻炼");
hasEvent.put(sdf.parse("2015-1-5"),events);
hasEvent.put(sdf.parse("2015-1-6"),events);
hasEvent.put(sdf.parse("2015-1-7"),events);
}
private static void showCalendar(int year,int month){
List<Integer> str = getMonthData(year, month);
System.out.println("当月日历如下:");
System.out.println("日 一 二 三 四 五 六 ");
String s;
try {
s = format(str);
System.out.println(s);
} catch (ParseException e) {
e.printStackTrace();
}
}
private static List<Integer> getMonthData(int year,int month){
List<Integer> result = new ArrayList<Integer>();
SimpleDateFormat data = new SimpleDateFormat("yyyy-MM");
try {
Date date = data.parse(year+"-"+month);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int day_of_week = calendar.get(Calendar.DAY_OF_WEEK);//得到该月1号为星期几
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH)+1);
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE)-1);
int dayCount = calendar.get(Calendar.DATE);//得到该月共多少天
calendar.setTime(date);
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE)-1);
int dayCount_last = calendar.get(Calendar.DATE);//得到上个月共多少天
for(int i = 1;i<dayCount+day_of_week;i++){
if(i<day_of_week){
result.add(dayCount_last-day_of_week+i+1);
}else{
result.add(i-day_of_week+1);
}
}
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
private static String format(List<Integer> data) throws ParseException{
StringBuffer sb = new StringBuffer();
int weekDay = 0;
for(Integer str:data){
if(weekDay==7){
sb.append("\n");
weekDay=0;
}
if(str<10){
sb.append(" ");
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(year+"-"+month+"-"+str);
if(hasEvent.keySet().contains(date)){
sb.append(str+"* ");
}else{
sb.append(str+" ");
}
weekDay++;
}
return sb.toString();
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class MyCalendar {
private static Map<Date,List<String>> hasEvent = new HashMap<Date, List<String>>();
private static String year;
private static String month;
public static void main(String[] args){
try {
instanceEvent();//初始化日程数据
} catch (ParseException e1) {
e1.printStackTrace();
}
while(true){
System.out.println("日历系统");
System.out.println("选择操作:");
System.out.println("q:退出系统");
System.out.println("1:输入时间");
Scanner scan =new Scanner(System.in);
String str = scan.next();
if(str!=null&&!"".equals(str)){
if(str.equals("q")){
System.exit(0);
}else if(str.equals("1")){
System.out.print("请输入年份:");
year= scan.next();
System.out.print("\n请输入月份:");
month = scan.next();
if(year==null||"".equals(year)||month==null||"".equals(month)){
System.out.println("不可输入空数据");
continue;
}
try {
showCalendar(Integer.parseInt(year),Integer.parseInt(month));
while(true){
System.out.println("选择日期查看日程(b返回上级菜单,q退出):");
String date = scan.next();
if(date!=null&&!"".equals(date)){
if(date.equals("b")){break;}
else if(date.equals("q")){System.exit(0);}
else{
try{
int i = Integer.parseInt(date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d= sdf.parse(year+"-"+month+"-"+i);
if(hasEvent.containsKey(d)){
for(String s:hasEvent.get(d)){
System.out
.println(s+"\r\n");
}
}else{
System.out.println("改日无日程");
continue;
}
}catch(Exception e){
System.out.println("输入日期不为数字!");
}
}
}
}
} catch (Exception e) {
System.out.println("输入时间有误,请重新选择");
System.out.println("q:退出系统");
System.out.println("1:输入时间");
continue;
}
}
}
}
}
private static void instanceEvent() throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
List<String> events = new ArrayList<String>();
events.add("7:30 起床");
events.add("8:00 吃饭");
events.add("8:30 上课");
events.add("9:30 锻炼");
hasEvent.put(sdf.parse("2015-1-5"),events);
hasEvent.put(sdf.parse("2015-1-6"),events);
hasEvent.put(sdf.parse("2015-1-7"),events);
}
private static void showCalendar(int year,int month){
List<Integer> str = getMonthData(year, month);
System.out.println("当月日历如下:");
System.out.println("日 一 二 三 四 五 六 ");
String s;
try {
s = format(str);
System.out.println(s);
} catch (ParseException e) {
e.printStackTrace();
}
}
private static List<Integer> getMonthData(int year,int month){
List<Integer> result = new ArrayList<Integer>();
SimpleDateFormat data = new SimpleDateFormat("yyyy-MM");
try {
Date date = data.parse(year+"-"+month);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int day_of_week = calendar.get(Calendar.DAY_OF_WEEK);//得到该月1号为星期几
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH)+1);
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE)-1);
int dayCount = calendar.get(Calendar.DATE);//得到该月共多少天
calendar.setTime(date);
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE)-1);
int dayCount_last = calendar.get(Calendar.DATE);//得到上个月共多少天
for(int i = 1;i<dayCount+day_of_week;i++){
if(i<day_of_week){
result.add(dayCount_last-day_of_week+i+1);
}else{
result.add(i-day_of_week+1);
}
}
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
private static String format(List<Integer> data) throws ParseException{
StringBuffer sb = new StringBuffer();
int weekDay = 0;
for(Integer str:data){
if(weekDay==7){
sb.append("\n");
weekDay=0;
}
if(str<10){
sb.append(" ");
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(year+"-"+month+"-"+str);
if(hasEvent.keySet().contains(date)){
sb.append(str+"* ");
}else{
sb.append(str+" ");
}
weekDay++;
}
return sb.toString();
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询