Java程序小设计
Posted HUTEROX
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java程序小设计相关的知识,希望对你有一定的参考价值。
设计要求
1、设计疫苗类Vaccines,其属性有疫苗总针数、接种日期、疫苗批号、生产企业、接种单位,有一个带有属性相应类型5个参数的构造方法,可以实现在实例化对象的时候直接赋值。
2、设计个人类Person,其属性有姓名、身份证号、电话号码、工作单位、户籍地址、现居住地址、接种的疫苗,其中接种的疫苗为一个Vaccines类型的数组,因现今已有疫苗最多需接种3针,故可指定此数组长度为3。此类具有以下方法:
(1)录入个人信息方法inputInfo(),此方法包含与Person的6个属性类型一致的6个参数,可以实现类相应属性的值设定。
(2)输出个人信息方法outputInfo(),用于显示个人的姓名、身份证号、电话号码、工作单位、户籍地址、现居住地址信息,以及个人的性别和出生日期。
(3)根据身份证号生成性别方法genSex(),根据身份证号码的第十七位判断性别,如果为奇数则为男性,偶数则为女性。
(4)根据身份证号计算年龄方法genAge(),提示可用substring(int,int)方法获取身份证相应位数字,可用Integer.parseInt()方法将其转化为整数进行计算。
(5)根据身份证号生成出生日期方法genBirthDate(),18位身份证号码:第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日。
(6)接种疫苗方法haveVac(Vaccines vac),此方法首先需对未满18岁人群进行限制,并给出提示信息。然后按照所接种疫苗的总针数循环遍历接种的疫苗数组,找到对应的空位进行赋值、提示接种信息并打印接种凭证信息。最后还需要判断如果已打够总针数要求,则提示无需再次接种。
(7)打印接种凭证方法showProof(Vaccines vac),显示接种日期、疫苗批号、生产企业、接种单位和疫苗需接总针数。
3、设计测试类TestVac,实例化Person对象,提示并接收键盘输入的姓名、身份证号、电话号码、工作单位、户籍地址和现居住地址,然后输出显示个人信息。可以多次进行提示并接收键盘输入的疫苗总针数、疫苗批号、生产企业和接种单位,然后完成接种。
3.设计测试类完成调用测试。
按照上面的要求,和实际代码,大致整理可以得到如下关系。
这样一来一个完整的关系就理清楚了。
我们发现疫苗类,只需要负责数据属性的保存即可。
而我们的Person类,则需要对自己的信息写入,同时写入疫苗的信息,并进行绑定为到实例出的对象。
这里的绑定我们通过一个数组来完成。
Vaccine类
这个就是单纯的数据记录,设置属性就好了。
package Vaccines;
public class Vaccines {
public Vaccines(){
}
/*疫苗总针数、接种日期、疫苗批号、生产企业、接种单位 */
public Vaccines(int vaccines_ZhenShu, String jieZhong_Time, String vaccines_PiHao, String making_Com,
String jieZhong_Dan_Wei) {
//构造方法,传入五个参数
Vaccines_ZhenShu = vaccines_ZhenShu;
JieZhong_Time = jieZhong_Time;
Vaccines_PiHao = vaccines_PiHao;
Making_Com = making_Com;
JieZhong_Dan_Wei = jieZhong_Dan_Wei;
}
private int Vaccines_ZhenShu;
private String JieZhong_Time ;
private String Vaccines_PiHao;
private String Making_Com;
private String JieZhong_Dan_Wei;
public int getVaccines_ZhenShu() {
return this.Vaccines_ZhenShu;
}
public void setVaccines_ZhenShu(int vaccines_ZhenShu) {
this.Vaccines_ZhenShu = vaccines_ZhenShu;
}
public String getJieZhong_Time() {
//获取时间,算了,不需要自动获取时间是吧
// if (this.JieZhong_Time !=null){
// }else{
// Date date = new Date();
// this.JieZhong_Time = "接种日期:"+date;
// }
return this.JieZhong_Time;
}
public void setJieZhong_Time(String jieZhong_Time) {
this.JieZhong_Time = jieZhong_Time;
}
public String getVaccines_PiHao() {
return this.Vaccines_PiHao;
}
public void setVaccines_PiHao(String vaccines_PiHao) {
this.Vaccines_PiHao = vaccines_PiHao;
}
public String getMaking_Com() {
return this.Making_Com;
}
public void setMaking_Com(String making_Com) {
this.Making_Com = making_Com;
}
public String getJieZhong_Dan_Wei() {
return this.JieZhong_Dan_Wei;
}
public void setJieZhong_Dan_Wei(String jieZhong_Dan_Wei) {
this.JieZhong_Dan_Wei = jieZhong_Dan_Wei;
}
}
Person类成员属性
private String sex;
private int age;
private String Name;
private String ID;
private String Phone_number;
private String Working_place;
private String Birt_place;
private String Living_place;
private List<Vaccines> Vaccines_real = new ArrayList<Vaccines>();//已经接种的疫苗这里使用泛型的列表
//private Vaccines[] Vaccines_real;使用疫苗组也行
int JieZHong_num; //接种次数,接种三次需要
/**---------------------get/set方法-------------------------------*/
public String getName() {
return Name;
}
public void setName(String name) {
this.Name = name;
}
public String getID() {
return ID;
}
public void setID(String iD) {
this.ID = iD;
}
public String getPhone_number() {
return Phone_number;
}
public void setPhone_number(String phone_number) {
Phone_number = phone_number;
}
public String getWorking_place() {
return Working_place;
}
public void setWorking_place(String working_place) {
Working_place = working_place;
}
public String getBirt_place() {
return Birt_place;
}
public void setBirt_place(String birt_place) {
Birt_place = birt_place;
}
public String getLiving_place() {
return Living_place;
}
public void setLiving_place(String living_place) {
Living_place = living_place;
}
public List<Vaccines> getVaccines_real() {
return Vaccines_real;
}
public void setVaccines_real(List<Vaccines> vaccines_real) {
Vaccines_real = vaccines_real;
}
public String getSex() {
return this.sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
我们注意到一个JieZHong_num这个是用来记录当前,这个人扎了多少针的。
Person的信息录入
public void inputInfo(){
Scanner in = new Scanner(System.in);
//接下来按照顺序录入个人信息。
//姓名、身份证号、电话号码、工作单位、户籍地址、现居住地址、接种的疫苗
System.err.println("请依次输入姓名、身份证号、电话号码、工作单位、户籍地址、现居住地址、接种的疫苗");
for(int i=0; i<50;i++){
System.out.print("--");
}
System.err.println("");
System.out.print("请输入姓名:");
this.setName(in.next());
this.ID_setting();
System.out.print("请输入电话号码:");
this.setPhone_number(in.next());
System.out.print("请输入工作单位:");
this.setWorking_place(in.next());
System.out.print("请输入户籍地址:");
this.setBirt_place(in.next());
System.out.print("请输入现居住地址");
this.setLiving_place(in.next());
// in.close();
for(int i=0;i<50;i++){
System.out.print("-");
}
System.out.println("");
this.outputInfo();
}
这里注意到一个方法
这方法就是用来限制身份证输入的,用来检测身份证输入长度。
public void ID_setting(){
//录入身份证号码,这个必须要18为数字,所以特地限制一下
Scanner in = new Scanner(System.in);
System.out.print("请输入身份证号码:");
String ID = in.next();
if (ID.length()!=18){
System.out.println("身份证号码输入异常,请重新输入!");
this.ID_setting();
}
else{
this.setID(ID);
}
}
年龄与出生日期与性别的获取
这个主要就是根据身份证号码来的,所以我说那个号码必须要限制。
年龄获取
public void genAge(){
Date date = new Date();//获取当前日期
int birth_year = Integer.parseInt(this.getID().substring(6,10));//截取出生日期[6,10)
int this_yes = Integer.parseInt(date.toString().substring(24, 28));//截取当前年份
this.setAge(this_yes-birth_year);
}
出生日期获取
public String genBirthDate(){
//获得出生日期,直接返回一个出生日期值
String BirthDate = this.getID().substring(6,10)+"年"+this.getID().substring(10,12)
+"月"+this.getID().substring(12,14)+"日";
return BirthDate;
}
性别获取
public void genSex(){
//获得性别没有返回值,要先调用一下
int sex_num=Integer.parseInt(this.getID().substring(16,17));
if(sex_num % 2==0){
this.setSex("女");
}
else{
this.setSex("男");
}
}
Integer.parseInt()方法可以把string转化为int类型,当然你可以强制类型转换(int)this.getID().substring(16,17)
疫苗注射次数限制
这个其实和先前的那个身份证的限制的类似。
显示剩余需要注射次数
这个就和疫苗注射的次数有关了,代码如下:
Person类完整代码
package Person;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
import Vaccines.Vaccines;
/**
*
* 所有的scanner类共享一个输入流,当其中一个调用关闭函数的时候,所有的scanner对象都关闭了。
* 所以,那个关闭scanner的警告不要理会他,
*/
public class Person {
//姓名、身份证号、电话号码、工作单位、户籍地址、现居住地址、接种的疫苗
private String sex;
private int age;
private String Name;
private String ID;
private String Phone_number;
private String Working_place;
private String Birt_place;
private String Living_place;
private List<Vaccines> Vaccines_real = new ArrayList<Vaccines>();//已经接种的疫苗这里使用泛型的列表
//private Vaccines[] Vaccines_real;使用疫苗组也行
int JieZHong_num; //接种次数,接种三次需要
public String getName() {
return Name;
}
public void setName(String name) {
this.Name = name;
}
public String getID() {
return ID;
}
public void setID(String iD) {
this.ID = iD;
}
public String getPhone_number() {
return Phone_number;
}
public void setPhone_number(String phone_number) {
Phone_number = phone_number;
}
public String getWorking_place() {
return Working_place;
}
public void setWorking_place(String working_place) {
Working_place = working_place;
}
public String getBirt_place() {
return Birt_place;
}
public void setBirt_place(String birt_place) {
Birt_place = birt_place;
}
public String getLiving_place() {
return Living_place;
}
public void setLiving_place(String living_place) {
Living_place = living_place;
}
public List<Vaccines> getVaccines_real() {
return Vaccines_real;
}
public void setVaccines_real(List<Vaccines> vaccines_real) {
Vaccines_real = vaccines_real;
}
public String getSex() {
return this.sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
public void ID_setting(){
//录入身份证号码,这个必须要18为数字,所以特地限制一下
Scanner in = new Scanner(System.in);
System.out.print("请输入身份证号码:");
String ID = in.next();
if (ID.length()!=18){
System.out.println("身份证号码输入异常,请重新输入!");
this.ID_setting();
}
else{
this.setID(ID);
}
}
//录入个人信息方法inputInfo(),此方法包含与Person的6个属性类型一致的6个参数,可以实现类相应属性的值设定。
public void inputInfo(){
Scanner in = new Scanner(System.in);
//接下来按照顺序录入个人信息。
//姓名、身份证号、电话号码、工作单位、户籍地址、现居住地址、接种的疫苗
System.err.println("请依次输入姓名、身份证号、电话号码、工作单位、户籍地址、现居住地址、接种的疫苗");
for(int i=0; i<50;i++){
System.out.print("--");
}
System.err.println("");
System.out.print("请输入姓名:");
this.setName(in.next());
this.ID_setting();
System.out.print("请输入电话号码:");
this.setPhone_number(in.next());
System.out.print("请输入工作单位:");
this.setWorking_place(in.next());
System.out.print("请输入户籍地址:");
this.setBirt_place(in.next());
System.out.print("请输入现居住地址");
this.setLiving_place(in.next());
// in.close();
for(int i=0;i<50;i++){
System.out.print("-");
}
System.out.println("");
this.outputInfo();
}
public void outputInfo(){
//显示个人的姓名、身份证号、电话号码、工作单位、户籍地址、现居住地址信息,以及个人的性别和出生日期。
System.out.println("姓名:"+this.getName());
this.genSex();
System.out.println("性别:"+this.getSex());
System.out.println("出生日期:"+this.genBirthDate());
System.out.println("身份证号:"+this.getID());
System.out.println("工作单位:"+this.getWorking_place());
System.out.println("户籍地址:"+this.getBirt_place());
System.out.println("现居住地址:"+this.getLiving_place());
}
public void genSex(){
//获得性别没有返回值,要先调用一下
int sex_num=Integer.parseInt(this.getID().substring(16,17));
if(sex_num % 2==0){
this.setSex("女");
}
else{
this.setSex("男");
}
}
public void genAge(){
//计算年龄没有返回值,要先调用一下
Date date = new Date();
int birth_year = Integer.parseInt(this.getID().substring(6,10));
int this_yes = Integer.parseInt(date.toString().substring(24, 28));
this.setAge(this_yes-birth_year);
}
public String genBirthDate(){
//获得出生日期,直接返回一个出生日期值
String BirthDate = this.getID().substring(6,10)+"年"+this.getID().substring(10,12)
+"月"+this.getID().substring(12,14)+"日";
return BirthDate;
}
public void haveVac(){
for(int i=0;i<50;i++){
System.out.print('-');
}
System.err.println("");
//注射疫苗,必须要先录入个人信息才能够注射,对未满18岁人群进行限制,并给出提示信息。
this.genAge();
if(this.getAge()<18){
System.out.println("您未满十八岁!请注意接种安全!");
}
//开始接种,输入疫苗总针数、接种日期、疫苗批号、生产企业、接种单位
while(true) {
if(this.JieZHong_num>=3){
System.out.println("您已经完成了接种,无需接种了!!!");
break;
}
System.out.println("请依次输入总针数(<=3)、接种日期、疫苗批号、生产企业、接种单位");
Vaccines vaccines = new Vaccines();
for(int i=0; i<50;i++){
System.out.print("--");
}
System.out.println("");
Scanner in = new Scanner(System.in);
System.out.print("输入总针数:");
int number = in.nextInt();
if(number >3 ){
System.out.println("针数不超过三!");
this.haveVac();
}
else{
vaccines.setVaccines_ZhenShu(number);}
System.out.print("请输入接种日期:");
vaccines.setJieZhong_Time(in.next());
System.out.print("请输入疫苗批号:");
vaccines.setVaccines_PiHao(in.next());
System.out.print("请输入生产企业:");
vaccines.setMaking_Com(in.next());
System.out.print("请输入接种单位:");
vaccines.setJieZhong_Dan_Wei(in.next());
for(int i=0;i<50;i++){
System.out.print('-');
}
System.err.println("");
this.showProof(vaccines);
this.JieZHong_num +=vaccines.getVaccines_ZhenShu();
for(int i=0;i<vaccines.getVaccines_ZhenShu();i++){
//已注射的疫苗
this.getVaccines_real().add(vaccines);
}
System.out.println("您还需要接种"+(3-this.JieZHong_num)+"针");
}
以上是关于Java程序小设计的主要内容,如果未能解决你的问题,请参考以下文章
Android获取各个应用程序的缓存文件代码小片段(使用AIDL)