一、为实际考试系统中的考生,考试,试题,选项,答卷,答题建立相应的软件对象
考试Test,试题Question,选项ChoiceItem,答卷TestResult,答题QuestionResult,考生Customer
二、新建项目和包
1、在myEclipse的 package Explorer视图中右键选择new--Java Project,写项目名称,默认完成
2、类的关系:关联association,聚集aggregation,组合composition,依赖dependency,继承inheritance
3、为对象创建包:选择项目下的src路径,右键new--Package,在Name中填入包名XXX.XXX.XXX.XXX(这是为了设置具体路径),完成
4、for each循环:for example:
int[] a=new int[10];
for(int b:a){
System.out.println(b);
可以用来处理数组中的每一个元素
方法前的圆形(或者+号)代表public,方形(或者-号)代表private
5、类中的数据域都尽量采用私有属性private,防止篡改,利于维护;采用private后,在定义私有数据域的类之外,对象不能通过直接引用访问该数据域,为了存取和修改,使用get方法返回数据域的值,set方法设置新值
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
三、实现通用对话框
6、两个java.io.*中的类:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的
读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。charset
每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。实际效果和直接使用InputStreamReader是一样的
BufferedReader的readLine方法:
readLine
public String readLine()
throws IOException
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
抛出:IOException
- 如果发生 I/O 错误
四、考试中心
7、处理日期时间
static DateFormat | getDateTimeInstance(int dateStyle, int timeStyle) 获取日期/时间格式器,该格式器具有默认语言环境的给定日期和时间格式化风格 |
-
static DateFormat
getDateTimeInstance(int dateStyle, int timeStyle,Locale aLocale)
获取日期/时间格式器,该格式器具有给定语言环境的给定格式化风格。
8、实现welcome方法
非该类的static方法,需要import static静态导入
System.getProperty("os.name")读取操作系统名称
9、输入输出
/*** 输出字符串 ***/
// %S将字符串以大写形式输出
System.out.printf("%S = %s%n", "Name", "Zhangsan");
// 支持多个参数时,可以在%s之间插入变量编号,1$表示第一个字符串,3$表示第3个字符串
System.out.printf("%1$s = %3$s %2$s%n", "Name", "san", "Zhang");
/*** 输出日期类型***/
// %t表示格式化日期时间类型,%T是时间日期的大写形式,在%t之后用特定的字母表示不同的输出格式
Date date = new Date();
long dataL = date.getTime();
// 格式化年月日
// %t之后用y表示输出日期的年份(2位数的年,如99)
// %t之后用m表示输出日期的月份,%t之后用d表示输出日期的日号
System.out.printf("%1$ty-%1$tm-%1$td; %2$ty-%2$tm-%2$td%n", date, dataL);
// %t之后用Y表示输出日期的年份(4位数的年),
// %t之后用B表示输出日期的月份的完整名, %t之后用b表示输出日期的月份的简称
System.out.printf("%1$tY-%1$tB-%1$td; %2$tY-%2$tb-%2$td%n", date, dataL);
// 以下是常见的日期组合
// %t之后用D表示以 "%tm/%td/%ty"格式化日期
System.out.printf("%1$tD%n", date);
//%t之后用F表示以"%tY-%tm-%td"格式化日期
System.out.printf("%1$tF%n", date);
/*** 输出时间类型***/
// 输出时分秒
// %t之后用H表示输出时间的时(24进制),%t之后用I表示输出时间的时(12进制),
// %t之后用M表示输出时间的分,%t之后用S表示输出时间的秒
System.out.printf("%1$tH:%1$tM:%1$tS; %2$tI:%2$tM:%2$tS%n", date, dataL);
// %t之后用L表示输出时间的秒中的毫秒
System.out.printf("%1$tH:%1$tM:%1$tS %1$tL%n", date);
// %t之后p表示输出时间的上午或下午信息
System.out.printf("%1$tH:%1$tM:%1$tS %1$tL %1$tp%n", date);
// 以下是常见的时间组合
// %t之后用R表示以"%tH:%tM"格式化时间
System.out.printf("%1$tR%n", date);
// %t之后用T表示以"%tH:%tM:%tS"格式化时间
System.out.printf("%1$tT%n", date);
// %t之后用r表示以"%tI:%tM:%tS %Tp"格式化时间
System.out.printf("%1$tr%n", date);
/*** 输出星期***/
// %t之后用A表示得到星期几的全称
System.out.printf("%1$tF %1$tA%n", date);
// %t之后用a表示得到星期几的简称
System.out.printf("%1$tF %1$ta%n", date);
// 输出时间日期的完整信息
System.out.printf("%1$tc%n", date);