实 验 报 告
课程名称 java程序设计 实验名称 姓 名 何虹江 学 号 201007040227 专业班级 软件1002 实验日期 2012 年 4 月 27日 成绩 指导教师
一、 实验目的
本实验的目的在于通过上机编写和运行关于字符串的程序来加深对String类和StringBuffer类等的了解,要求学生在上机实验前一定要非常清楚并灵活运用该章所讲过的内容,并且在上机实验前编写好实验内容要求的程序,以便上机实验时调试、修改等。上机实验后,每位学生必须对该实验内容写一份试验报告,包括程序内容、调试过程、运行情况和结果等。
二、 实验原理
本实验的内容为编写一个与居民身份证有关的程序,可以是Applet或者是Application。要求创建一个类,该类至少具有以下三个方法:
1.检验居民身份证的真伪,若为假身份证,需要提供虚假消息,比如居民出生年月日有错等。
2.获取真实居民新身份证的信息,该信息包括4个部分:
A.该身份证是新身份证还是旧身份证。
B.该居民身份证的地址码,若有同学有《最新县及县以上行政区码》可得到居民身份证的详细省、市、县的名称,若没有则只需显示地址码信息即可。
C.该居民的出生年月日。
D.该居民的性别。
3.将13位的旧身份证转换成18位的新身份证。
三、 实验环境
JDK 7u4 NetBeans 7.1.2 JCreator LE 5.00
四、 实验内容与步骤(可提供屏幕抓图)
import java.io.BufferedReader;
import java.io.InputStreamReader;
class IDCard {
public static void main(String args[]) {
while (true) {
System.out.println(" _______________________"); System.out.println("| 0.exit |"); System.out.println("| 1.check |"); System.out.println("| 2.get information |"); System.out.println("| 3.convert to 18 |"); System.out.println("|_______________________|"); System.out.println(" Please select item:"); int op = getSelect();
switch (op) {
case 0:
quit();
break;
case 1:
check();
break;
case 2:
getInfo();
break;
case 3:
ConvertTo18();
break;
default:
getInfo();
break;
}
}
}
static void check() {
String str = "";
char[] xy = {'1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2'};
int[] wi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; int[] kk = new int[18];
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter your ID:");
try {
str = buf.readLine();
} catch (Exception e) {
}
StringBuilder id = new StringBuilder(str);
if (str.length() != 18 && str.length() != 15) {
System.out.println("输入的位数有错,请重新输入"); }
if (str.length() == 18) {
int sum = 0;
for (int i = 0; i < 17; i++) {
kk[i] = Integer.parseInt(id.substring(i, i + 1)); sum += kk[i] * wi[i];
}
int nn = sum % 11;
char ss = str.charAt(17);
if (ss == xy[nn]) {
System.out.println("该身份证为真身份证");
} else {
System.out.println("该身份证为假身份证(校验码有错误)");
}
}
}
static void getInfo() {
String str = "";
char[] xy = {'1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2'};
int[] wi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; int[] kk = new int[18];
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter your ID:");
try {
str = buf.readLine();
} catch (Exception e) {
}
StringBuilder id = new StringBuilder(str);
if (str.length() == 18) {
int sum = 0;
for (int i = 0; i < 17; i++) {
kk[i] = Integer.parseInt(id.substring(i, i + 1)); sum += kk[i] * wi[i];
}
int nn = sum % 11;
char ss = str.charAt(17);
if (ss == xy[nn]) {
System.out.println(" ");
} else {
System.out.println(" ");
}
{
System.out.println("该身份证为新18位身份证"); }
if (str.charAt(16) % 2 == 1) {
System.out.println("该身份证为男性");
} else if (str.charAt(16) % 2 == 0) {
System.out.println("该身份证为女性");
}
String s = str.substring(6, 10);
String y = str.substring(10, 12);
String z = str.substring(12, 14);
System.out.println("该居民的生日为:" + s + "年" + y + "月" + z + "日");
} else {
{
System.out.println("该身份证为旧15位身份证"); }
if (str.charAt(14) % 2 == 1) {
System.out.println("该身份证为男性");
} else if (str.charAt(14) % 2 == 0) {
System.out.println("该身份证为女性");
}
String p = str.substring(6, 8);
String y = str.substring(8, 10);
String z = str.substring(10, 12);
System.out.println("该居民的生日为:" + "19" + p + "年" + y + "月" + z + "日");
}
}
static void ConvertTo18() {
String str = "";
char[] xy = {'1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2'};
int[] wi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; int[] kk = new int[18];
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter your ID:");
try {
str = buf.readLine();
} catch (Exception e) {
}
StringBuffer id = new StringBuffer(str);
id.insert(6, "19");
int sum = 0;
for (int i = 0; i < 17; i++) {
kk[i] = Integer.parseInt(id.substring(i, i + 1)); sum += kk[i] * wi[i];
}
int nn = sum % 11;
System.out.println("该居民的新18位身份证为:" + id + xy[nn]); }
static void quit() {
System.out.println("programming by H"); System.out.println("Thanks for using!"); System.out.println("Bye!");
System.exit(0);
}
static int getSelect() {
int re;
return re = Integer.parseInt(getInput()); }
static String getInput() {
String re;
BufferedReader bf =
InputStreamReader(System.in));
try {
re = bf.readLine();
return re;
} catch (Exception e) {
return null;
}
}
}
五、 实验结果与分析(可提供屏幕抓图) new BufferedReader(new
六、问题与建议
《Java开发技术》实验报告
实验序号:实验04 实验项目名称:Applet的编写与运行
河南省高等教育自学考试实验报告册计算机及应用专业(本科段)《JAVA》姓名所属地市实验地点实验日期实验总成绩指导教师签名实验单位(…
五子棋JAVA实验报告一实验目的和要求1能够用编程语言实现一个简单的五子棋程序2在实际系统中使用实现人工智能的相关算法3进一步加深…
信息工程学院Java程序设计实习报告JAVA图形用户界面实验六Java图形用户界面1实验目的1掌握图形用户界面基本组件2了解如何使…
北京联合大学信息学院“面向对象程序设计”课程上机实验报告题目:JAVA上机实验心得体会姓名(学号):专业:计算机科学与技术编制时间…
Java语言程序设计实验报告实验序号3一实验目的及要求1进一步熟练Java语法和常用方法的使用2进一步熟练Java程序结构3进一步…
石家庄学院习报告王荣传20xx0502027数学与信息科学系信息与计算科学专业本科一班崔永刚讲师姓名:学号:院系:专业:班级:指导…
java实训个人总结短短的一个月很快就过去了在这短短的一个月里我学到了很多了解了很多在这一个月里我学到了有关JAVA等方面的知识了…
辽宁建筑职业学院Java高级应用实训报告课题名称婚庆公司网站专业软件技术班级xxxxxxxxxx学号姓名xxxx指导教师xxx二O…
Java程序设计实训报告实训名称图书管理系统实训专业计算机应用技术班级学号090443220姓名高宇国指导教师侯丽敏20xx年12…
Java程序设计实训报告实训名称仓库管理系统实训专业计算机应用班级计算机10A1学号姓名指导教师侯丽敏20xx年12月8日实训成绩…
实验报告计算机与信息工程学院实验中心学期20xx20xx课程名称Java程序设计实验班级信息1202姓名方逸梅学号12121002…