计算机专业初级课程设计说明书_第1页
计算机专业初级课程设计说明书_第2页
计算机专业初级课程设计说明书_第3页
计算机专业初级课程设计说明书_第4页
计算机专业初级课程设计说明书_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计1题目:模拟新浪微博用户注册

1、设计1目的

编写一个模拟新浪微博用户注册的程序,要求使用集合实现假设当用户输入用户名、密码、确

认密码、生日(输入格式为yyyy-mnrdd为正确)、手机号码(手机号长度为11位,并且以13、15、

17或18为开头的手机号为正确)、邮箱(包含符号”为正确)信息之后,判断信息输入是否

正确,正确验证用户是否为重复注册,如果不是重复注册则注册成功。例如,用户信息列表中已经

存在用户“张正”,当“张正”再次注册是,则输出“注册结果:用户重复!”

运行结果:

请输入用户名:刘梅

请输入密码:liumeil23

请重复密码:liumeil23

出生日期:1991-03-26

手机号码/p>

电子邮箱:liumei@

注册结果:注册成功!

(1)掌握集合存储数据的流程。

(2)掌握集合分类。

2、设计1正文

2.1实验内容

1)为了便于存储用户信息,需要创建一个用户类、在类中重写其中的HashCode()方法,令其

返回用户名的哈希值,再重写equals()方法,来比较对象的用户名属性是否相等。

2)有了用户类后,还需要创建一个用户注册类来模拟注册信息,该类中可以用HashSct集合来创

建一个数据列表,然后向列表中添加两条初始用户信息。

3)从控制台获取用户填写信息,可以通过Scanner类的nextLine()方法来实现,获取后,需

要对获取的信息进行校验。

4)校验信息可以单独创建一个校验信息类,在类中实现检验用户输入信息的方法。校验结束后,

如果校验结果错误就直接返回错误信息,这里可以声明一个校验结果变量和一个校验状态变量。

检验结果变量用于存储提示信息,校验状态用于存储结果的判断标识。

5)当用户的信息不满足规定的格式,需要修改变量状态进行存储错误信息。

6)判断校验状态,如果所有的信息都通过校验,则将用户信息创建成为用户对象,通过洛对象添

加到用户列表返回结果来判断用户名是否重复,并纪录下返回结果信息。

2.2实验分析

类的建立:

User:用户实体类

UserRegister:用户操作注册类

CheckInfo:用户信息验证类

1)创建用户类,并重写其hashCode()和equals。方法。重写了hashCode方法,使其返

回username属性的哈希值,重写equals。方法用于比较对象username属性是否相等,并

返回结果。

2)创建用户注册类,模拟注册信息。在程序运行main。方法之后,首先执行initDataO

方法,创建“张正”和“周琦”两位用户,并将其放入用户数据列表,获取输入信息并将其

传入Checkinfo类的checkAclionO方法对输入信息进行校验。最后将结果输出。

3)在主程序调用此类中的checkActionO方法后,会校验用户填写信息,所有校验通过

后,将信息创建成User对象,判断用户名的哈希值是否相等,相等则添加失败,反之则成

功,返回结果。

显示集合中用

户信息

注册结果:用

户重曼!

LI-新浪微博注册流程图

HashSet

1.2-通过使用HashSet集合的方法来进判断对象是否相同

Problems'JavadocJDeclaration□Console23

<terminated>UserRegister(1)[JavaApplication]D:\Java\bin\javaw.exe(2021攵

-----------当前集合中用户猾息-----------

[用户信息:

姓名:张正

生日:TueJun0115:18:21GMT+08:002021

邮箱:zhangzheng@itcast.cn

手机号/p>

用户密码:zz,123,用户信息:

姓名:周琦

生日:TueJun0115:18:21GMT+08:002021

邮箱:zhouqi@itcast.cn

手机号:186181211机

用户密码:zq,123]

请输入用户名:白枫

请输入密码:123456

请重复密码:123456

出生日期:2001-06-24

手机号码:二552641241

电子邮箱:baifeng@

注册结果:注册成功!

------------当前集合中用户信息------------

[用户信息:

姓名:白枫

生日:SunJun2400:00:00GMT+08:002001

邮箱:baifeng@qq.com

手机号/p>

用户密码:123456,用户信息:

姓名:张正

生日:TueJun0115:18:21GMT+08:002021

邮箱:zhangzheng@itcast.cn

手机号/p>

用户密码:zz,123,用户信息:

姓名:周琦

生日:TueJun0115:18:21GMT+08:002021

邮箱:zhouai@itcast.cn

L4-新浪微博用户注册成功结果

3、设计1总结

做了哪些工作:用户类中重写了hashCodeO方法以及equals。方法,用来返回用户名的哈希值以

及比较用户属性是否相等,其中还需注意将对象强转为User类型,用户注册类中,用HashSet集

合创建数据列表并添加用户信息,是一个静态方法,获取从键盘上输入的用户信息需要通过Scanner

类中的nextLineO方法来实现,检验用户信息时,主程序调用checkAction方法,单独创建检验

信息类,在类中实现校验用户信息的方法。

工作中的不足:对hashCode与equals方法的使用不大熟悉。

学习到了equals和hashCode的用法。在重写equals。方法时,遇到很大的困难,翻了书看了教

学视频都没有详细的解释为何在重写方法时要强制转型,找到了几篇大概像个合理的解释。

在Java的继承中,子类可以转换成父类,在此过程中会丢失一些属性,不需要进行强制类型的

转换。但父类转成子类就不行了,必须进行类型的强转。

重写equals。方法需要传入object对象,obj对象是子类对象自动向上转型而来,在第三次

if判断后,进行第四次if判断时,需要比较子类对象的属性,所以需要进行类型的强转。

当使用类型构造器构造处一人时象的容器时,这个对象的类型是确定的,例如项目中使用result

作为容器,将校验信息放入result当中。但是result输出需要调用toString函数。所以,在

继承中,子类可以自动转型成父类,但父类强制转换为子类时只有当引用类型真正为子类时才会

强制转换成功,否则失败。

设计2题目:模拟物流快递系统

1、设计2目的(各级题目粗体,宋体,五号,1.5行倍距,下同)

网购已成为人们生活的重要组成部分,当人们在购物网站中下订单后,订单中的货物就会在经

过一系列的流程后,送到客户的手中。而在送货期间,物流管理人员可以在系统中查看所有物品的

物流信息。编写一个模拟物流快递系统的程序,模拟后台系统处理货物的过程。

运行结果

Run:Ta$kO2Test。一

I►H"C:\ProgramFiles\Java\jdkl.8.0_201\bin\java.exen...

订单开始处理,仓库验货中。。。

货物重量:76.34kg

K二货物检验完毕!

»i货物填装完毕!

运货人已通知!

快递单号:HYX600235

运货人小韩正在驾驶编号为Z025的大奔发送货物!

运输进行中。。。

货物当前的坐标为:193,485

货物运输任务已完成!

运货人小韩所驾驶的编号为Z025的大奔已归还!

货物运输车辆保养完毕!

Proccosfinishedwithexitcode0

(1)学会分析“模拟物流快递系统程序设计”任务实现的逻辑思路。

(2)能够独立完成“模拟物流快递系统程序设计”的源代码编写、编译及运行。

(3)掌握面向对象封装、继承和多态的概念和使用。

(4)掌握抽象类和接口的使用。

2、设计2正文

2.1实验内容

1)运输货物首先需要有交通工具,所以需要定义一个交通工具类。由于交通工具可能有很多,所

以可以将该交通工具类定义成一个抽象类,类中需要包含该交通工具的编号、型号以及运货负责人

等属性,还需要定义一个抽象的运输方法。

2)当运输完成后,需要对交通工具进行保养,所以需要定义保养接口,具备交通工具的保养功能。

3)交通工具可能有很多种,这里可以定义一个专用运输车类,该类需要继承交通工具类,并实现

保养接口

4)有了运输的交通工具后,就可以开始运送货物了。货物在运输前、运输时和运输后,都需要检

查和记录,并且每一个快递都有快递单号,这时可以定义一个快递任务类,包含快递单号和货物重

量的属性,以及货物发送前、发送途中和送到后的方法。

5)在货物运输过程中,需要对运输车辆定位,以便随时跟踪货物的位置信息。定位功能可以使用

GPS,而考虑到能够实现定位功能的设备可能很多(如手机、专用定位仪器等),这时可以定义一个

包含定位功能的GPS接口,以及实现了该接口的仪器类(如Phone等)。

2.2实验分析

1)定义交通工具类Transportation类,该类是一个抽象类,包含交通工具信息和运输货物方法。

分别定义了车辆编号、车辆型号和车辆负责人的属性,以及其其各自的getter和setter方法,同

时还定义了一个抽象的运输方法transport()。

2)定义交通工具保养接口Careable,该接口中包含车辆保养方法。

3)定义专用运输车类Zlransportation,该类继承了交通工具类,并实现了保养接口,进行了有

参构造函数和无参构造函数的定义。定义快递任务类SendTask,该类实现了送前,发送货物和送后

操作的输出。

4)定义包含显示位置的GPS接口和实现类Phone

5)定义测试类,实例化对象并传入数据,测试结果。

2.1-物流快递系统流程图

2.3实验结果与测试

订单开始处理,仓库验货中。。。

货物重量:76.34kg

货物检验完毕!

货物填装完毕!

运货人已通知!

快递单号:HYX600235

昌货人小韩正在驾驶编号为Z025的大奔发送货物

输中°°°°

货物当前的坐标为:193,485

货物运输任务已完成!

运货人小韩所驾驶的编号为Z025的大奔已归还!

货物运输车辆保养完毕!

2.2-模拟物流快递系统成功盂行结果

3、设计2总结

做了哪些工作:模拟物流快递系统程序设计项目要先分析人物实现的逻辑思路,其中用到了封装,

继承和多态的基本思想,类的继承是在现有类的基础上构建一个新的类,子类会拥有父类的所有可

继承的属性和方法,需要使用extends关键字来实现。类只支持单继承,不允许多重继承,多个类

可以继承一个父类,一个类的父类可以再去继承另外的父类,一个类是某个匪类的同时也可以是另

一个类的子类。

还需掌握抽象类和接口的使月,抽象类不一定有抽象方法,不能实例化对象,抽象方法必须使用

abslracl关键字来修饰,定义抽象类时,包含抽象方法的类必须声明为抽象类。接口使用interface

关键字来声明,接口不能实例化对象,一个接口可以有多个父接口,使用implements关健字实现

接口中的所有方法,,一个类可以在继承另•个类的同时实现多个接口,接口中只有抽象方法和常

量。

工作中的不足:对接口和抽象类的有了进一步的了解。

学到了什么:程序中用到了两个接口分别是Careable、GPS,因为接口的单继承问题所以选择了接

口方法。其中Careable抽象类是用来捕捉子类的通用特性的,而接口则是抽象方法的集合;抽象

类不能被实例化,只能被用做子类的超类,是被用来创建继承层级里子类的模板。而接口只是一种

形式,接口自身不能做任何事。

抽象类的子类用extends关铤字来继承抽象类,如果子类不是抽象类,需要提供抽象类中的所有声

明方法来实现。接口完全是抽象的,子类使用关键字implements来实现接口,它需要提供接口中

所有声明方法的实现。

设计3题目:商城进货交易记录

1、设计3目的

每个商城都需要进货,而这些进货记录整理起来很不方便,要求编写一个记录商城进货交

易的程序,使用字节流将商城的进货信息记录在本地的CSV文件中,要求:当用户输入商品编

号时,后台会根据商品编号查询到相应商品信息,并打印商品信息。接着让用户输入需要进货

的商品数量.程序将原有的困村数量弓愉入的数量想加,将想加后的结果信息保存在木地的

csv中。在csv中,每条记录中包含商品编号、商品名称、购买数量、单价、总价、审核人等

数据,每条记录的数据之间直接用英文逗号或空格分隔:每条记录之间用换行符分隔,文件命

名格式为“进货记录”加上当天日期加上“.csv”后缀,如“20210527.csv”.保存文件时,

需判断本地文件是否存在当天的数据,如果存在则追加,不存在在新建。

任务运行结果如图所示。

Run:耳RecordGoodOrder。一

c~进货记录编号

■商品名称:百事可乐

C_联系人:张三

;单价:4.5

库存数量:100

二"进货记录编号:1002

#商品名称:可口可乐

联系人:李四

单价:4.0

库存数量:100

进货记录编号:1003

商品名称:百事雪碧

联系人:张三

单价:3.8

库存数量:100

请愉入商品编号

1001

当前商品库存信息进货记录编号:1001

商品名称:百事可乐

联系人:张三

单价:4.5

库存数量:100

请输入进货数量:300

请检入商品编号

I1001

当前商品库存信息进货记录编号:1001

商品名称:百事可乐

联系人:张三

I单价:4.5

库存数量:400

图7-1运行结果

运行结束后在本地生成一个“进货记录20191209.csv”文件,用Excel方式打开此文件,如

下图所示。

因’H'B-|T进fiHB®20191209.c$v-MicrosoftExcelo回S3

(1)学会分析〃商城进货交易记录”程序的实现思路。

(2)根据思路独立完成”商城进货交易记录〃的源代码编写、编译及运行。

(3)掌握字节流操作本地文件的方法。

(4)掌樨ArrayList和StringBuffcr的便用,以及异常的处理

2、设计3正文

2.1实验内容

1)为方便保存商店进货交易的相关消息,可以将商品信息封装成一个实体类。商品售出过程中

可能会打印商品相关信息,所以需要对该实体类的“String。方法进行重写,使其能更清

晰地显示商品信息。每次商品售出之后要修改库存数量,还应在实体类中编写一个操作库数

量的方法。

2)对于一个商店,首先要有一个货架,货架上会有许多商品供挑选。这里可以创建一个集合用

于模拟货架,然后向集合中添加有具体商品信息的商品对象,此时货架上面便有了商品。

3)用户购买商品是通过在控制台键盘输入商品编号和购买数量的方式进行的,如果商品编号正

确,且购买数量在库存数量之内,则商品购买成功,并将此商品的销售信息保存读到csv文

件中,同时要将库存数量减少。

4)查询商品信息时,可以通过Scanner类的nextlnt()方法从控制台获取商品编号,之后根

据这个编号到货架上查询这个商品的信息。如果杳到了商品的信息,从控制台获取购买的数

量之后,判断库存是否充足,如果充足则将此商品的所有信息进行封装。

5)将商品的销售信息写到csv文件之前,需先拼凑好csv文件名,再判断本地是否已存在此

文件。这里可通过输入流尝试获取此文件的字节流,如果获取成功,则证明这个文件已存在,

那么就通过输出流向文件末尾追加销售信息;如果获取失败,即异常,说明之前并没有生成

当FI的销售信息.需要新建此文件.

6)将封装的信息写入csv文件中时,csv格式的文件以纯文本形式存储表格数据,写入文件

时可用Excel进行编辑。

7)在拼凑csv文件名时,需要获取当日的日期。这里可以通过以下代码获取并拼凑csv文件

名。

DateFormatformat=newSimpleDateFormat(^yyyyMMdd^);

Stringname="销售记录"+format.format(date)+A.csv”;

2.2实验分析

定义了一个Goods类,规定Goods类拥有的属性:intid,Stringname,Stringpeople,doubIe

price,intnumber,doublemoney<,并定义了有参构造方法,用于对象的创建与初始化,重写了

toStringO方法,方便打印Goods类定义的某个实体的信息。

定义了一个方法:setNumberO用来修改Goods实体的number。〃将商品信息封装成,个实体

定义RecordBooksOrdci'类来记录和操作商品信息:创建一个ArrayList类型的集合作为商品

的货架。在init()函数中初始化了货架信息,向ArrayList中添加了3个商品的信息,并在

通过for循环进行展示。使用while循环来获取和处理用户输入信息,每次循环由从控制台获取

商品编号的数据,再根据商品编号查询到商品信息。当获得的商品不为空时,可获得购买的数量,

通过goodNumber<=stockGoods.number判断库存是否充足,如果库存足够,可通过第30行代码将

所有数据封装,再调用FileUtil类中的saveGoodO方法,将其保存到本地。最后再调用

setNumber()方法,修改库存。

定义工具类FileUtil保存商品信息:当saveGoodO方法被调用时,获取当前日期并格式

化后,拼出了文件名,再尝试获取此文件的字节输入流。当能够获取输入流时,可通过处理异常,

先关闭输入流,再在文件末尾追加信息。当不能获取输入流时则抛出异常,在异常处理中调用

createFileO方法,可以通过此方法中的label参数来区分,是新建文件还是在已有文件中追

加内容。如果label值是false则新建文件,并写入表头,其中进行追加还是新操作,由构造

函数的append参数来定义c然后拼出一行数据,且在每次拼接之前都耍加上换行符“\r\n”,

每个字段之间通过“,”分歌字段,再代码写入文件。最后关闭输入流。

+输入商品编号

输入商品信息

输入进货数量

和编号

输入库存数量

3.1-商品进货交易流程图

2.3实验结果与测试

RecordGoodsOrder[JavaApplication]D:\Java\bin\j.

商品编号:1001

商品名称:百事可乐

联系人:张三

商品单价:4.5

进货数量:100

商品编号:1002

商品名称:可口可乐

联系人:李四

商品单价:4.5

进货数量:100

商品编号:1003

商品名称:乐事薯片

联系人:王五

商品单价:3.5

进货数量:100

请输入商品编号:(如果退出请按0)

3.2-运行界面

心又入里:xvu

请输入商品编号:(如果退出请按0)一

当前商品信息商品编号:1001

商品名称:百事可乐

联系人:张三

商品单价:4.5

进货数量:100

请输入进货数量:100

请输入商品编号:(如果退出请按0)

当前商品信息商品编号:1002

冏品名称:可口可乐

联系人:李四

商品单价:4.5

进货数量,100

请输入进货数量:50

请输入商品编号:(如果退出请按0)一

当前商品信息商品编号:1003

商品名称:乐事薯片

联系人:王五

商品单价:3.5

进货数量:100

请输入进货数量:40

请输入商品编号:(如果退出请按0)

|商城进货交易记录已关闭!

商品免号

AB|CF

商品编号商品名称进货数量茴品单价总价人

45O三

百事可乐

10011004.5225四

1002504.5

1003乐事薯片4'

3.3.选购进货记录

添加了退出程序功能,用到的函数语句有:if(goodsld==0)

exitO;

privatestaticvoidexit(){

System.out.printin("商城进货交易记录已关闭!”);

System,cxif(0);

)

3、设计3总结

针对题目做了哪些工作:商坂进货交易记录项目需要掌握ArrayList和StringBuffer的使用,以

及字节流操作文件的方法,ArrayList是List接口的一个实现类,在ArrayList内部封装了一个

长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组

来存储这些元素,所以ArrayList集合也可看做一个长度可变的数组。ArayList集合中大部分都

是从父类Collection和List继承过来的。

StringBuffer类也称字符串缓冲区,为了方便对字符串进行修改,它的内容和长度都是可以改变

的,在其中添加或删除字符时,不会产生新的StringBuffer对象。Append。和insert()方法是最

常用的,用于添加字符,append。方法将字符添加到缓冲区的末尾,insert0方法可以在指定位置

添加字符,StringBuffer类没有覆盖Object类的equals。方法,StringBuffer类对象之间不能

用操作符"+”进行连接。

总结工作不足:对于StringBuffer方法和输入输出流的掌握还不是很熟悉。

学到了什么:StringBuffer与String类不同,String类中的内容一旦声明之后不可改变,改变的

只是其内存地址的指向,但是StringBuffer中的内容是可以改变的。StringBuffer在本次项目中

使用append。方法,完成字符串的连接操作。

I/O流中针对字节的输入输出提供了一系列的流,成为字节流,分为字节输入流和字节输出流,字

节流的两个顶级父类为InputStream和OulpulSlream,通过InpulStream从源设备输入到程序,

通过Outputstream从程序输出到目标设备,实现数据的传输。10操作结束后,应调用close。方

法关闭流从而释放当前10流所占的系统资源。针对文件的读写,有FilelnputStream和

FileOutputStream两个类,用于读取文件中的数据和把数据写入文件。

设计4题目:微信投票

1、设计4目的

如今微信聊天已经普及到几乎每一个人,在聊天中,经常会有人需要帮忙在某个APP中投票。

本案例要求编写一个模拟微信投票的程序,通过在控制台输入指令,实现添加候选人、查看当前投

票和投票的功能。每个功能的具体要求如下:

(1)用户输入指令1代表”添加候选人”,可以在本地文件中添加被选举人。

(2)用户输入指令2代表”查看当前投票”,将本地文件中的数据打印到控制台。

(3)用户输入指令3代表“投票”功能,在控制台输入被投票人的名字进行投票操作。

(4)用户输入指令4代表"退出”操作。

运行结果

Run;vote*一

A个'C:\PrograMFiles\Java\jdkl.8.0_201\bin\Java.exe'...

1:添加候选人2:查看当前投票3:投票1:退出

._话输入操作指令:1

;请谕人需要被投票的人:

*:张三

.请输入张三的起的票数:

s■1

请愉人操作指令:2

・张三⑵

张三:1,

请洞入操作指令:3

请谕入要投票人的姓名

张三

投票后的票数:

・张三:3,

投票后的票数:

张三2

请输入操作指令:2

・张三:3,

张三2

请输入操作指令:/

您已退出系统,谢谢使用!

Processfinishedwithexitcode0

运行结果

运行过程中,本地D:'下会生成一个count.txt文件,打开后如图所示。

count.txt

【目标】

(1)学会分析“投票小功能”任务实现的逻辑思路。

(2)能够独立完成“投票小功能”程序的源代码编写、编译以及运行。

(3)能够利用字符流操作本地的方法。

(4)掌握StringBuffer和数组的使用。

2、设计4正文

2.1实验内容

1)根据任务介绍和运行结果分析可知,此任务需要创建一个记事本类,在类中可以使用while循

环实现控制台中操作指令的多次输入,使用swtich语句根据控制台输入的操作指令来判断执行什么

操作。

2)输入指令1时进行“添加候选人”操作。可以使用来保存控制台中每次输入的内容,输入内容

时会涉及换行。这里可以使用while循环来循环输入,每循环一次都将控制台获取的内容拼接换行

符后,追加到文本内容中。通过nextlni。来进行输入起始票数。

3)执行指令2时,可以打开指定路径的文件,由于是模拟记事本程序,因此限定此功能只支持打

开ixt文件。此操作首先要获取输入的路径,判断此路径的文件是否是冈文件,如果是则通过字符

流读取此文件,然后将此文件的内容打印至控制台,并且暂存在全局变量中,将文件的路径也保存

至全局变量中。

4)执行指令3时,进行“投票”。输入被投票人的姓名,通过s.setld(s.getld()+l)语句,让被投票

人的票数加一。如果没有输入正确名字,则输出“没有找到您要投票的人!”;最后调用show函

数,用for循环遍历集合s。

5)执行指令4直接退出系统,可以通过“Syslem.eW(O);”实现。

2.2实验分析

为了方便存储投票信息,首先需要创建一个候选人类,在类中定义带参的构造函数,定义toString

()方法来确保投票信息的格式。有了候选人类,还需要创建一个实现目录功能类,该类中可以创

建一个HashSel的List集合用以存储投票信息,用输出语句在控制台上输出一个目录,用以用户

的选择,从控制台获取用户填写的信息,可以通过Scanner类的nexllnt()和nextLine()方法

来实现,用while循环语句和switch方法来进行目录的循环使用和选择,在使用投票功能时,先

要创建selectO查找函数,用迭代器的方法在哈希集合中查找,并在select()函数中用equal

()方法进行输入姓名和候选人姓名的比较,如果输入姓名找不到相同的候选人姓名则在控制台上

输出错误提示信息。最后要创建一个保存信息类,来进行投票信息的保存,新建一个count,txt文

件用来保存文件,用trycatch进行异常抛出,确保无误后关闭输出流。

2.3实验结果与测试

小红:0

小黑:0

1:添加侯选人2:查看当前投票3:投票4:退出

请输入操作指令:

3.2-投票系统操作界面

小黑:0

小红:0

1:添加候选人2:查看当前投票3:投票4:退出

请输入操作指令:

1

请输入需要被投票的人姓名:

王琦

请输入王琦起始票数:

0

3.3-进行“添加候选人”功能

当前投票信息、:

小黑:0

小红:0

王琦:0

1:添加候选人2:查看当前投票3:投票4:退出

请输入操作指令:

3.4-“查看当前投票”

请输入您想要投票人的名字:

王琦

"红:0

王琦:1

小黑:0

球加候选人2:查看当前投票3:投票4:退出

请输入操作指令:

3.5-“投票功能

3、设计5总结

做了哪些工作:定义了File类,创建哈希表Student,实例化对象创建一个文本文件“count,txt”。

通过迭代器输出,其中用到StringBuffer方法使用append追加字符,string以toString形式保

存票数和姓名。最终处理异常,关闭输入流。

定义Student类,定义属性name姓名和id票数,重写toString内容,将信息按照名字++

票数形式输出。主函数中调用init()初始化,并调用show,遍历出各条信息。

定义Scanneer类进行输入,nextlnt()函数获取输入信息。通过switch语句判断应该执行的操

作,如果输入其他范围内的数字则输出“请重新输入正确的指令!!!二在init()函数中加入

两条初始记录。其中利用迭代器在哈希集合中杳找姓名,利用强行转换之后,如果要查找的姓名和

集合中搜寻到的名字相同则返回值Stdo

在in()函数中通过迭代器遍历将数据写入count.txt中,利用StringBuffor类中的append万

法将信息拼接。写入暂存的数据到string中,最后关闭输出流。

遇到的问题:对字符流的用法和StringBuffer不是很熟悉,

学到了什么:通过搜寻资料了解,字符流:就是在字节流的基础上,加上编码,形成的数据流。字

符流出现的意义:因为字节流在操作字符时,可能会有中文导致的乱码,所以由字节流引申出了字

符:流。

Stringbuff'er:提供的是字符串缓冲区,是属于java,lang包里的,被final修饰。Stringbuffer

的构造方法:StringBuffer():无参构造的格式,初始化容量为16。构造一个StringBuffer缓

冲区的•般格式为:StringBuffers=newStringBuffer()

设计5题目:通讯录

2、设计5目的

通讯录管理系统中包括读者的姓名、固定电话、移动电话、地址、备注等基本信息,能实现添

加、修改、删除、查找功能。程序执行时,需要从文件中导入数据,程序退出后将数据保存到文件。

第一次执行时,新创建一个文件。

程序运行结果如下图所示:

(£通讯>-□x

文件编辑帮助

-

固定电话移动电话mlii

张三31884569154xxxxxx52河北化学系

添加删除I谩改查找

熟练掌握Swing中常用的组件的使用方法。例如JFrame、JButton.JLabcl、JTextFicld,

JTextArea、JMenu、JMenuBar、JPanel、JDialog等等;以及常用布局GridLayout、BoxLayout等

等;

熟练掌握AWT事件处理,理解事件对象、事件源、监听器、事件处理器在事件处理机制中的作

用:掌握事件监听器和事件适配器;掌握常用事件分类:窗体事件、按钮事件、键盘事件等。

熟练掌握使用I/O流操作类实现文件存取:例如操作文件的字节流操作类FilelnputStream.

FilcOutputStroam,操作对象的字节流操作类ObjectInputStrcam^ObjecOutputStrcam,字节缓

冲流操作类BufferedlnputStream^BufferedoutputStream等等。

理解Java中序列化与反序列化的含义,熟练掌握java中的序列化实现。

2、设计5正文

2.1实验内容

1)通讯录管理系统中包括读者的姓名、固定电话、移动电话、地址、备注等基本信息

2)能实现添加、修改、删除、查找功能。

3)程序执行时,需要从文件中导入数据,程序退出后将数据保存到文件。

4)第一次执行时,新仓]建一个文件。

5)联系人的信息能够直观的看到,而后进行对已存在的信息进行删除,修改,查询。

2.2实验分析

创建Address类来实现Serializable,定义地址项中的成员变量name,phone,mobile,address,note.

定义无参构造方法。定义有参构造方法,类实例化对象时,为对象属性赋初值成员变量初始化。

showAddressBookO函数:显示地址簿,其中通过增强for循环遍历集合内容。

inser(Address()函数:添加新的地址项。

initializeO:向窗体中添加组件。其中添加菜单栏,主面板,标题为“通讯录”,再调整长宽位

置大小。

rcadFile。函数:读取文件AddrossBook.dat,对象反序列化。先由操作文件的字节输入

FilelnputStreamO从文件读取数据,存入字节缓冲流BufferedlnputStreamO,由操作对象的字节

输入流ObjectInputSlreamO接收。将接受到的信息转为Acdress类对象,添加到addressList集

合。最后关闭输入流,释放资源,处理异常。

doExit()退出方法判断changeFlag==true,标记变量changeFlag标记地址项信息是否被添加、

删除、修改过才调用saveFileO进行存储,或者直接System.exit(O)语句退出。

定义Address类继承JFrame,定义生成filename为常量。使用ArrayList集合。

5.1-通讯录功能实现图

2.3实验结果与测试

国通讯录□X

文件编辑帮助

由名固定电话移动电话地址备注

E埼1733018252717330182527天津市节可区1

卜红6910-035717330182528衡水市科毓区2

添加删除修改查找

5.2-往通讯录中添加联系人

5.3-从通讯录中修改联系人信息

3、设计4总结

做了哪些工作:实现有界面的通讯录,首先是对于主界面的创建,里面具体包含标签(JLabcl)、

文本框(JTextField)>按钮(JButton)>文本域(JTextArea)等组件。调用JLabel方法,根据

所需的通讯录信息确定标签上显示内容具体分为姓名、固定电话、移动电话、地址、备注。对于每

个标签的后面跟着一个文本框(JTextFieldO)用来写对应标签内容的数据,其次是对于按钮

(JButtonO)上面显示内容根据所需要进行修改为添加、删除、修改、查找。调用JTextArea类

来显示进行每个操作后应出现的信息o

调用GridLayoutxBordLayout和JPancl类,利用GridLayout布局通过面板的add。方法依

次对标签、文本框、按钮进行添加,然后利用另一个面板对于文本框的添加,最后用BoxLayout布

局添加到容器中形成界面。对按钮添加监听器(ActionLisiener),分别对功能进行操作,在删除

和查找的时候分别出现另一个界面,分别是对姓名的删除和查找工作。

其中运用StringBuffer类中的append拼接数据,进行追加。

组件的添加是利用JFrame类中的getContentPane0>add()方法进行添加的。通过

insertAddressO进行处理关闭窗口事件。doExit()退出方法判断changeFlag=true,标记变量

changeFlag标记地址项信息是否被添加、删除、修改过才调用saveFile()进行存储,或者直接

System,exit(0)语句退出。

工作尚存不足:对匿名内部类的使用和字节流字符流的作用不大熟悉。

学到了什么:通过这次的程序让我了解了Java程序的三种页面布局:流体布局,网络布局,

安全布局。添加按钮的过程是一个熟悉给按钮增加监听器的过程。除此之外,当需要传值的时候,

对于添加监听器有使用的是内部类,有的使用是匿名内部类。

关于字节流与字符流:字符流只能处理字符,字节流能处理二进制文件以及图片任何。

InputStream类和OutputStream类在读写文件时操作的都是字节,如果希望在程序中操作字符,

使用这两个类就不太方便,为此JDK提供了字符流。同字节流一样,字符流也有两个抽象的顶级

父类,分别是Reader和Writer。其中Reader是字符输入流,用于从某个源设备读取字符,Writer

是字符输出流,用于向某个目标设备写入字符。Reader和肛iler作为字符流的父类,也芍许多子

类。

设计6题目:水果超市管理系统

1、设计6目的

⑴水果超市管理系统共包括系统欢迎界面和超市货物管理界面两个界面。在系统欢迎界

面通过单击“进入系统”按钮,进入超市货物管理界面,在货物管理界面就可以对水果信息

实现具体的操作。例如:每当有新水果运送到超市时,就需要系统管理人员在系统中增加新

水果的信息,如果超市中的水果没有了就删除该水果信息,或者数量价格等需要变更时进行

修改,这些操作都要在管理系统中完成。要求结合JDBC技术,连接MySql数据库管理水果

信息。

运行结果

任务运行后,首先出现欢迎窗口界面,其界面效果如下图所示:

当单击欢迎窗口的“进入系统”按钮后,就会进入超市货物的管理窗口界面中,其界面

如卜图所示:

超市货物言理!X

水果列表

水果编号水果名称水果单价(阮)计价单位

1苹果5.0kg

水果编号水果名称水果单价计价单位

添加水果

修改水果

删除水果

⑵熟练掌握Swing中常用的组件的使用方法。例如JFrame「Button、JLabe1、JTextFie1d、

JTextArea、JCheckBox、JRadioButton>JMenu>JMenuBar、JPanel、JDialog等等;五种

布局方式FlowLayout、BordLayout^GridLayoutsCardLayout等等;

⑶熟练掌握AWT事件处理,理解事件对象、事件源、监听器、事件处理器在事件处理机

制中的作用;掌握事件监听器和事件适配器;掌握常用事件分类:窗体事件、鼠标事件、键

盘事件、动作事件等。

2、设计6正文

2.1实验内容

1)系统欢迎窗口是一个窗体,可■以通过JFrame组件来实现。该窗口主要分为两部分,一

个是北区图片区,里面包含一张图片,另一个正文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论