设计.docx
《设计.docx》由会员分享,可在线阅读,更多相关《设计.docx(17页珍藏版)》请在冰豆网上搜索。
设计
安徽建筑工业大学
课程设计报告
课程名称:
java课程设计
题目:
java小程序
院系:
数理系
专业:
信息与计算科学
班级:
12信息专升本
(1)班
学号:
122072101361220721013912207210148
姓名:
杨敏敏张会蔡会丽
时间:
2013年11月21日
一.设计题目根据系统提示从键盘输入相关内容。
二.设计要求可以使用类似命令行的方式来实现。
程序运行后提示用户可以执行的操作类型,并要求用户输入一种选择。
根据用户的选择,提示用户输入相关信息(根据不同选择,输入不同信息),最后在屏幕上输出这些信息。
可以使用循环来完成,以接受用户的多次输入。
当用户选择退出时,程序结束。
对于不合要求的输入,给出提示,允许再重新输入。
对于不同类型的输入信息,需要使用分支结构判别
三.学习要点本程序主要练习循环结构和分支结构的使用,掌握从键盘输入及输出的基本语句,学会定义不同的类和实例以及父类和子类等相关内容。
四.设计思路设计书、CD、磁带三个类,每个类含有名字、作者或演唱者、出版社或唱片社、价格、出版日期等相关信息。
1.由于这三个类有共同的内容,可以设计一个父类,父类中含有公共信息。
publicclassMyMedia{
StringmediaName;//出版物名称
floatprice;//出版物价格
Stringpress;//出版社(磁带发行商)
Stringartist;//作者(演唱者)
//出版物名称输入成员函数
voidmediaNameInput(){}
//出版物价格输入成员函数
voidmediaPriceInput(){}
//出版社(磁带发行商)输入成员函数
voidmediaPressInput(){}
//作者(演唱者)输入成员函数
voidartisInput(){}
}
2.然后分别为书、CD、和磁带定义三个子类,各子类中新增加的成员变量如下:
//书子类
classMyBookextendsMyMedia{
Stringeditor;//书的责任编辑
DatepublishDate=null;//出版日期你
StringbookISBN;//书的ISBN
//构造函数
MyBook(Stringbn,floatbp,Stringbpr,Stringba,Stringbi,Stringbe){}
//书相关信息的输入成员函数
publicvoidbookOtherInfo(){}
//输出书的相关信息
publicvoidgetbookInfo(){}
}
3.//CD子类
classMyCDextendsMyMedia{
StringcdISRC;//CD的ISRC
Stringcdpublisher;//CD发行商
//构造函数
MyCD(Stringcn,floatcp,Stringcpr,Stringca,Stringci,Stringcpl){}
//CD相关信息的输入成员函数
publicvoidcdOtherInfo(){}
//输出CD的相关信息
publicvoidgetcdInfo(){}
4.//磁带子类
classMyTapeextendsMyMedia{
StringtapeISRC;//磁带的ISRC
//构造函数
MyTape(Stringtn,floattp,Stringta,Stringti,Stringtpr){}
//磁带相关信息的输入成员函数
publicvoidtapeOtherInfo(){}
//输出磁带的相关信息
publicvoidgettapeInfo(){}
}
5.当然,各子类的成员函数也会相应变化。
主程序中用下述语句输出选项,供用户选择
System.out.println("\n请选择你要进行的操作(请输入1--4中的任一数字):
\n"
+"1:
输入书的信息:
\n"
+"2:
输入CD的信息:
\n"
+"3:
输入磁带的信息:
\n"
+"4:
退出系统:
\n");
用户的输入保存在choice中,根据它的值分以下几种情况处理switch(choice){
case1:
//选择为书处理书的相关信息
break;
case2:
//选择为CD
break;
case3:
//选择为磁带处理磁带相关信息
break;
default:
//选择错误;
continu_e=false
}
6.设计实现,参考程序源代码如下
importjava.io.*;
importjava.util.Date;
importjava.text.*;
//出版物父类
publicclassMyMedia{
StringmediaName;//出版物名称
floatprice;//出版物价格
Stringpress;//出版社(磁带发行商)
Stringartist;//作者(演唱者)
//出版物名称输入成员函数
voidmediaNameInput(){
try{
InputStreamReaderir=newInputStreamReader(System.in);
BufferedReaderin=newBufferedReader(ir);
//判断输入出版物名称是否为空
booleanb=true;
while(b){
mediaName=in.readLine();
if(mediaName.matches(""))
System.out.println("名字不能为空请重试:
");
elseb=false;
}
}catch(Exceptione){
System.out.println(e);
}
}
//出版物价格输入成员函数
voidmediaPriceInput(){
try{
Stringp=newString();
InputStreamReaderir=newInputStreamReader(System.in);
BufferedReaderin=newBufferedReader(ir);
//判断输入价格是否为数字或非负数字
booleanb=true;
L2:
while(b){
p=in.readLine();
try{
price=Float.parseFloat(p);
if(price<=0)
System.out.print("负数请重试");
elseb=false;
}catch(NumberFormatExceptione){
System.out.print("非数字请重试:
");
continueL2;
}
}
}catch(Exceptione){
System.out.print(e);
}
}
//出版社(磁带发行商)输入成员函数
voidmediaPressInput(){
try{
Stringmp=newString();
InputStreamReaderir=newInputStreamReader(System.in);
BufferedReaderin=newBufferedReader(ir);
mp=in.readLine();
press=mp;
}catch(Exceptione){
System.out.println(e);
}
}
//作者(演唱者)输入成员函数
voidartisInput(){
try{
InputStreamReaderir=newInputStreamReader(System.in);
BufferedReaderin=newBufferedReader(ir);
Stringma=in.readLine();
artist=ma;
}catch(Exceptione){
System.out.print(e);
}
}
}
//书子类
classMyBookextendsMyMedia{
Stringeditor;//书的责任编辑
DatepublishDate=null;//出版日期你
StringbookISBN;//书的ISBN
//构造函数
MyBook(Stringbn,floatbp,Stringbpr,Stringba,Stringbi,Stringbe){
mediaName=bn;
price=bp;
press=bpr;
artist=ba;
bookISBN=bi;
editor=be;
}
//书相关信息的输入成员函数
publicvoidbookOtherInfo(){
try{
Stringboi=newString();
Stringboe=newString();
Stringbpds=newString();
DateFormatbpddf=DateFormat.getDateInstance();
InputStreamReaderir=newInputStreamReader(System.in);
BufferedReaderin=newBufferedReader(ir);
System.out.print("请输入书的ISBN");
boi=in.readLine();
System.out.print("请输入书的编辑:
");
boe=in.readLine();
bookISBN=boi;
editor=boe;
//书的出版日期的输入,并判断输入格式是否正确
booleanb=true;
L3:
while(b){
System.out.print("请输入书的出版日期(yyy-mm-dd):
");
bpds=in.readLine();
try{
publishDate=bpddf.parse(bpds);
b=false;
}catch(Exceptione){
System.out.print("输入日期不正确!
请重试:
\n");
}
}
}catch(Exceptione){
System.out.print(e);
}
}
//输出书的相关信息
publicvoidgetbookInfo(){
//出版日期
intyear,month,day;
year=publishDate.getYear()+1900;
//函数getYear()的返回值是与1900比较后的值,故要加1900
month=publishDate.getMonth()+1;
//函数getMonth()的返回值为0~11,所以要加1
day=publishDate.getDate();
System.out.println();
System.out.println("您输入了如下信息:
\n"
+"书的名称是:
"+mediaName
+"\n书的价格是:
"+price
+"\n书的作者是:
"+artist
+"\n书的ISBN是:
"+bookISBN
+"\n书的出版社是:
"+press
+"\n书的编辑室:
"+editor
+"\n书的出版日期是:
"+year
+"年"+month
+"月"+day+"日");
System.out.println();
}
}
//CD子类
classMyCDextendsMyMedia{
StringcdISRC;//CD的ISRC
Stringcdpublisher;//CD发行商
//构造函数
MyCD(Stringcn,floatcp,Stringcpr,Stringca,Stringci,Stringcpl){
mediaName=cn;
price=cp;
press=cpr;
artist=ca;
cdISRC=ci;
cdpublisher=cpl;
}
//CD相关信息的输入成员函数
publicvoidcdOtherInfo(){
try{
Stringcdi=newString();
Stringcdp=newString();
InputStreamReaderir=newInputStreamReader(System.in);
BufferedReaderin=newBufferedReader(ir);
System.out.print("请输入CD的ISRC:
");
cdi=in.readLine();
System.out.print("请输入CD的发行商:
");
cdp=in.readLine();
cdISRC=cdi;
cdpublisher=cdp;
}catch(Exceptione){
System.out.print(e);
}
}
//输出CD的相关信息
publicvoidgetcdInfo(){
System.out.println();
System.out.println("您输入了如下信息:
\n"
+"CD的名称是:
"+mediaName
+"\nCD的价格是:
"+price
+"\nCD的出版社是:
"+press
+"\n唱片的演唱者是:
"+artist
+"\nCD的ISRC是:
"+cdISRC
+"\nCD的发行商是:
"+cdpublisher);
System.out.println();
}
}
//磁带子类
classMyTapeextendsMyMedia{
StringtapeISRC;//磁带的ISRC
//构造函数
MyTape(Stringtn,floattp,Stringta,Stringti,Stringtpr){
mediaName=tn;
price=tp;
artist=ta;
tapeISRC=ti;
press=tpr;
}
//磁带相关信息的输入成员函数
publicvoidtapeOtherInfo(){
try{
Stringtai=newString();
InputStreamReaderir=newInputStreamReader(System.in);
BufferedReaderin=newBufferedReader(ir);
System.out.print("请输入磁带的ISRC:
");
tai=in.readLine();
tapeISRC=tai;
}catch(Exceptione){
System.out.print(e);
}
}
//输出磁带的相关信息
publicvoidgettapeInfo(){
System.out.println();
System.out.println("您输入了如下信息:
"
+"\n磁带的名称是:
"+mediaName
+"\n磁带的价格是:
"+price
+"\n磁带的演唱者是:
"+artist
+"\n磁带的ISRC是:
"+tapeISRC
+"\n磁带的发行商是:
"+press);
System.out.println();
}
}
classMediaMain{
publicstaticvoidmain(String[]args)//程序入口
{
intchoice=0;
booleancontinu_e=true;
InputStreamReaderir;
BufferedReaderin;
Strings=newString();
//用户选择界面
while(continu_e){
System.out.println("\n请选择你要进行的操作(请输入1--4中的任一数字):
\n"
+"1:
输入书的信息:
\n"
+"2:
输入CD的信息:
\n"
+"3:
输入磁带的信息:
\n"
+"4:
退出系统:
\n");
//由用户输入选择,并判断输入选择是否正确
booleanb=true;
try{
ir=newInputStreamReader(System.in);
in=newBufferedReader(ir);
while(b){
s=in.readLine();
try{
choice=Integer.parseInt(s);
if(choice<1||choice>4){
System.out.println("输入错误!
请重试:
");
continue;
}
b=false;
}catch(NumberFormatExceptione){
System.out.println("非数字请重试:
");
continue;
}
}
}catch(IOExceptione){
System.out.println(e);
}
//各个子类的初始化
MyBookmb=newMyBook("",0.0f,"","","","");
MyCDmc=newMyCD("",0.0f,"","","","");
MyTapemt=newMyTape("",0.0f,"","","");
switch(choice){
case1:
//选择为书
System.out.print("请输入书的名字:
");
mb.mediaNameInput();
System.out.print("请输入书的价格:
");
mb.mediaPriceInput();
System.out.print("请输入书的出版社:
");
mb.mediaPressInput();
System.out.print("请输入书的作者:
");
mb.artisInput();
//输入其他信息
mb.bookOtherInfo();
//输出用户输入的内容;
mb.getbookInfo();
break;
case2:
//选择为CD
System.out.print("请输入CD的名字:
");
mc.mediaNameInput();
System.out.print("请输入CD的价格:
");
mc.mediaPriceInput();
System.out.print("请输入CD的出版社:
");
mc.mediaPressInput();
System.out.print("请输入CD的演唱者:
");
mc.artisInput();
//输入其他信息
mc.getcdInfo();
break;
case3:
//选择为磁带
System.out.print("请输入磁带的名字:
");
mt.mediaNameInput();
System.out.print("请输入磁带的价格:
");
mt.mediaNameInput();
System.out.print("请输入磁带的发行商");
mt.mediaPressInput();
System.out.print("请输入磁带的演唱者");
mt.artisInput();
//输入其他信息
mt.tapeOtherInfo();
//输出用户输入内容
mt.gettapeInfo();
break;
default:
//选择错误;
continu_e=false;
}
}
System.out.println("再见!
\n");
}
}
五、设计心得体会
本次Java课程设计我们准备做的课题是java小程序,刚开始拿到题目我们组员都不知如何下手,经过小组成员一起查找资料,并且开会讨论,我们确定了设计的设计目标以及具体实现方式,包括如何将Java的思想运用到实际系统的详细设计之中。
实验过程中,首先要将系统要实现的功能分为几大模块,然后每个组员分别完成,在此过程中使我加深了对Java的理解,以及如何进行团队工作的划分,学会发现各组员的长处并将其发挥出来。
虽然大家没怎么学过Java,但大家都有C++程序设计基础,所以通过努力实验,进一步培养我们利用Java语言进行编程和调试程序的能力,同时使我们能够学会将C++与Java语言结合起来编写较复杂具有实际