chidaodezhongsheng
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(2)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2012年1月 (1)
2010年10月 (1)
文章檔案
2010年12月 (7)
2010年11月 (6)
2010年10月 (24)
搜索
最新評論
1.?re: Http參數傳遞時的亂碼過濾器[未登錄]
是是是是是是
--啊啊
2.?re: Servlet配置到Web.xml中
配置好了 它整體的流程是什么啊?
--Tovep
3.?re: JDBC基本操作
期待...
--Tovep
4.?re: 再寫銀行排隊
LZ 寫的不錯 啊!!!
--Tovep
5.?re: 生產消費問題
臭小子 居然FZZT
--Tovep
閱讀排行榜
1.?無題(204)
2.?很久沒更新了,真的太久了(175)
評論排行榜
1.?很久沒更新了,真的太久了(0)
2.?無題(0)
Powered by:
博客園
模板提供:
滬江博客
BlogJava
|
首頁
|
發新隨筆
|
發新文章
|
聯系
|
聚合
|
管理
用流寫的分層小系統
我們今天用流寫一個小系統,我們將某個人的信息(姓名,年齡,成績)通過前臺獲取數據,然后再中間層做處理(封裝到這個人的對象里),最后再寫入流中;然后我們要求可以對這個人的信息可以增刪改查。
首先分層,分成前臺顯示層,后臺業務處理層,存儲層。
前臺顯示層主要的功能就是顯示功能模塊,但它并沒有真正的功能處理能力,它只是一個顯示給用戶看的界面,可以獲取用戶提交過來的數據并將數據轉交后臺。
而真正具有處理數據能力的是后臺業務處理層,這是程序的核心,他可以把用戶提交過來的數據加以處理,按照我們需要的功能去處理數據,最終得到我們想要的結果。
最后我們要把處理好的數據存儲到存儲層,可以把它存儲到流、文件或者網絡中。當我們想要保存數據的時候,他就可以存儲數據;當我們想要處理數據的時候,他就要把數據提取到后臺由我們來處理。
這就是業務分層,也就是我們以后寫程序的核心思想,理解這個思想可以幫助我們更快更好的寫程序,十分重要。
我們做的這個系統是增刪改查一個學生的信息,我們要在前臺附加上一個功能界面。
下面附代碼:
封裝好的學生類:
public
class
Person
implements
Serializable
{
private
String name;
private
int
age;
private
float
score;
public
Person(String name,
int
age,
float
score)
{
this
.name
=
name;
this
.age
=
age;
this
.score
=
score;
}
public
String getName()
{
return
name;
}
public
void
setName(String name)
{
this
.name
=
name;
}
public
int
getAge()
{
return
age;
}
public
void
setAge(
int
age)
{
this
.age
=
age;
}
public
float
getScore()
{
return
score;
}
public
void
setScore(
float
score)
{
this
.score
=
score;
}
public
String toString()
{
return
"
姓名:
"
+
this
.name
+
"
,年齡:
"
+
this
.age
+
"
,成績:
"
+
this
.score;
}
}
前臺:
public
class
Menu
{
private
InputData input
=
null
;
public
Menu()
{
this
.input
=
new
InputData();
while
(
true
)
{
this
.show();
}
}
public
void
show()
{
System.out.println(
"
\t\t\t1、增加人員信息:
"
);
System.out.println(
"
\t\t\t2、刪除人員信息:
"
);
System.out.println(
"
\t\t\t3、修改人員信息:
"
);
System.out.println(
"
\t\t\t4、瀏覽人員信息:
"
);
System.out.println(
"
\t\t\t5、退出系統:
"
);
System.out.print(
"
請輸入選擇:
"
);
int
select
=
input.getInt();
switch
(select)
{
case
1
:
{
new
FilePerson().add();
break
;
}
case
2
:
{
new
FilePerson().remove();
break
;
}
case
3
:
{
new
FilePerson().modify();
break
;
}
case
4
:
{
new
FilePerson().search();
break
;
}
case
5
:
{
System.out.println(
"
退出系統
"
);
System.exit(
1
);
}
default
:
{
System.out.println(
"
請輸入數字(1-5):
"
);
break
;
}
}
}
}
看一下運行效果:
然后我們看看業務處理層:
輸入數據處理層:
他是將前臺提交過來的數據進行處理,將輸入的數據轉化成想要的整型,浮點型或者字符型;若類型不匹配則要求用戶繼續輸入。
public
class
InputData
{
private
BufferedReader input
=
null
;
public
InputData()
{
this
.input
=
new
BufferedReader(
new
InputStreamReader(System.in));
}
public
String getString()
{
String str
=
null
;
try
{
str
=
input.readLine();
}
catch
(IOException e)
{
e.printStackTrace();
}
return
str;
}
public
int
getInt()
{
int
i
=
0
;
String str
=
null
;
boolean
b
=
true
;
while
(b)
{
str
=
this
.getString();
if
(
!
(str.matches(
"
\\d+
"
)))
{
System.out.print(
"
請輸入整形數據:
"
);
}
else
{
i
=
Integer.valueOf(str);
b
=
false
;
}
}
return
i;
}
public
float
getFloat()
{
float
f
=
0.0f
;
String str
=
null
;
boolean
b
=
true
;
while
(b)
{
str
=
this
.getString();
if
(
!
(str.matches(
"
\\d+?.\\d{1}
"
)))
{
System.out.print(
"
請輸入浮點型數據:(小數點后保留一位)
"
);
}
else
{
f
=
Float.valueOf(str);
b
=
false
;
}
}
return
f;
}
}
封裝學生層:
他是將輸入正確的前臺信息封裝到學生對象里,然后可以對該對象進行操作(增刪改查),也就是先從數據源提取數據或者存儲數據,再進行處理的過程。
public
class
FilePerson
{
private
InputData input
=
null
;
public
FilePerson()
{
this
.input
=
new
InputData();
}
public
void
add()
{
String name
=
null
;
int
age
=
0
;
float
score
=
0.0f
;
System.out.print(
"
請輸入姓名:
"
);
name
=
input.getString();
System.out.print(
"
請輸入年齡:
"
);
age
=
input.getInt();
System.out.print(
"
請輸入成績:
"
);
score
=
input.getFloat();
Person p
=
new
Person(name,age,score);
try
{
new
FileObject().save(p);
System.out.println(
"
數據添加成功!
"
);
}
catch
(Exception e)
{
System.out.println(
"
數據添加失敗!
"
);
}
}
public
void
remove()
{
new
FileObject().clear();
}
public
void
modify()
{
Person p
=
null
;
try
{
p
=
(Person)
new
FileObject().show();
}
catch
(Exception e)
{
System.out.println(
"
內容顯示失敗,請確定數據是否存在!
"
);
}
if
(p
!=
null
)
{
String name
=
null
;
int
age
=
0
;
float
score
=
0.0f
;
System.out.print(
"
請輸入姓名:(原姓名:
"
+
p.getName()
+
"
)
"
);
name
=
input.getString();
System.out.print(
"
請輸入年齡:(原年齡:
"
+
p.getAge()
+
"
)
"
);
age
=
input.getInt();
System.out.print(
"
請輸入成績:(原成績:
"
+
p.getScore()
+
"
)
"
);
score
=
input.getFloat();
p
=
new
Person(name,age,score);
try
{
new
FileObject().save(p);
System.out.println(
"
數據更新成功
"
);
}
catch
(Exception e)
{
System.out.println(
"
數據更新失敗
"
);
}
}
}
public
void
search()
{
Person p
=
null
;
try
{
p
=
(Person)
new
FileObject().show();
}
catch
(Exception e)
{
System.out.println(
"
內容顯示失敗,請確定數據是否存在!
"
);
}
if
(p
!=
null
)
{
System.out.println(p);
}
}
}
最后我們再看看存儲層:
他可以將封裝好的數據進行存儲,或者進行提取。
附代碼:
public
class
FileObject
{
private
static
final
String FILENAME
=
"
E:\\person.txt
"
;
public
void
save(Object obj)
throws
IOException
{
ObjectOutputStream out
=
null
;
try
{
out
=
new
ObjectOutputStream(
new
FileOutputStream(
new
File(FILENAME)));
}
catch
(Exception e)
{
e.printStackTrace();
}
Person p
=
(Person)obj;
out.writeObject(p);
out.flush();
out.close();
}
public
Object show()
throws
FileNotFoundException, IOException, ClassNotFoundException
{
Object obj
=
null
;
ObjectInputStream read
=
null
;
read
=
new
ObjectInputStream(
new
FileInputStream(
new
File(FILENAME)));
obj
=
read.readObject();
read.close();
return
obj;
}
public
void
clear()
{
ObjectOutputStream out
=
null
;
try
{
out
=
new
ObjectOutputStream(
new
FileOutputStream(
new
File(FILENAME)));
}
catch
(Exception e)
{
e.printStackTrace();
}
try
{
out.reset();
out.flush();
out.close();
System.out.println(
"
數據刪除成功
"
);
}
catch
(IOException e)
{
System.out.println(
"
數據刪除失敗
"
);
}
}
}
我們看看運行結果:
發表于 2010-11-07 01:16
遲到的鐘聲
閱讀(78)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
主站蜘蛛池模板:
国产色婷婷精品免费视频
|
成年在线网站免费观看无广告
|
免费在线观看黄色毛片
|
亚洲成a人无码亚洲成www牛牛
|
欧美男同gv免费网站观看
|
久久精品国产亚洲av麻豆蜜芽
|
久久www免费人成看片
|
亚洲AV色吊丝无码
|
在线观看免费高清视频
|
亚洲人成色99999在线观看
|
免费鲁丝片一级在线观看
|
最新亚洲人成网站在线观看
|
亚洲精品乱码久久久久久蜜桃
|
成年免费大片黄在线观看com
|
亚洲一区二区高清
|
中文字幕日本人妻久久久免费
|
亚洲国产精品久久久久婷婷软件
|
99久久免费精品高清特色大片
|
亚洲精品成人久久
|
免费看AV毛片一区二区三区
|
男女交性无遮挡免费视频
|
亚洲精品二区国产综合野狼
|
最近免费最新高清中文字幕韩国
|
四虎永久精品免费观看
|
四虎永久在线精品免费一区二区
|
亚洲中文字幕无码不卡电影
|
久久99热精品免费观看动漫
|
久久青草亚洲AV无码麻豆
|
在线视频免费观看爽爽爽
|
亚洲精品一卡2卡3卡四卡乱码
|
亚洲男人的天堂在线va拉文
|
国产精品免费看久久久
|
亚洲永久在线观看
|
亚洲日本一区二区一本一道
|
中日韩亚洲人成无码网站
|
亚洲国产成人久久精品99
|
久久久高清日本道免费观看
|
亚洲 欧洲 视频 伦小说
|
亚洲午夜日韩高清一区
|
5555在线播放免费播放
|
国产精品亚洲色图
|