首页 > 其他 > 详细

io流新闻管理系统实例(简单型)

时间:2015-10-09 16:50:21      阅读:248      评论:0      收藏:0      [点我收藏+]

1、新闻集合的使用+文件流的应用
2、文件流序列化与反序列化对象的使用

一、创建新闻类

技术分享
 1 package com.news.entity;
 2 
 3 import java.io.Serializable;
 4 import java.util.Date;
 5 
 6 /**
 7  * 新闻实体类
 8  * @author Direct
 9  *
10  */
11 public class NewsInfo implements Serializable{
12     /**
13      * 
14      */
15     private static final long serialVersionUID = 1L;
16     private    Integer newsId;
17     private String  newsTitle;
18     private String  newsContent;
19     private Date  newsDate;
20     /**
21      * @return the newsId
22      */
23     public Integer getNewsId() {
24         return newsId;
25     }
26     /**
27      * @param newsId the newsId to set
28      */
29     public void setNewsId(Integer newsId) {
30         this.newsId = newsId;
31     }
32     /**
33      * @return the newsTitle
34      */
35     public String getNewsTitle() {
36         return newsTitle;
37     }
38     /**
39      * @param newsTitle the newsTitle to set
40      */
41     public void setNewsTitle(String newsTitle) {
42         this.newsTitle = newsTitle;
43     }
44     /**
45      * @return the newsContent
46      */
47     public String getNewsContent() {
48         return newsContent;
49     }
50     /**
51      * @param newsContent the newsContent to set
52      */
53     public void setNewsContent(String newsContent) {
54         this.newsContent = newsContent;
55     }
56     /**
57      * @return the newsDate
58      */
59     public Date getNewsDate() {
60         return newsDate;
61     }
62     /**
63      * @param newsDate the newsDate to set
64      */
65     public void setNewsDate(Date newsDate) {
66         this.newsDate = newsDate;
67     }
68 
69     
70 }
View Code

二、创建新闻测试类(里面主要包含增加新闻、删除新闻、查询新闻)

技术分享
  1 package com.news.test;
  2 
  3 import java.text.SimpleDateFormat;
  4 import java.util.ArrayList;
  5 import java.util.Date;
  6 import java.util.List;
  7 import java.util.Scanner;
  8 
  9 import com.news.entity.NewsInfo;
 10 
 11 public class TestNews {
 12     
 13     // 创建存储新闻信息的集合对象
 14     private List<NewsInfo> newsList = new ArrayList<NewsInfo>();
 15     // 创建TestNews对象
 16    
 17 
 18     /**
 19      * 显示所有的新闻信息的方法
 20      */
 21     public void showNews() {
 22         // 创建时间格式化对象
 23         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 24         // 判断是否存在新闻信息
 25         if(newsList.size()==0) {
 26             System.out.println("暂无新闻信息可查");
 27         } else {
 28             System.out.println("编号\t\t标题\t\t\t内容\t\t\t发布时间");
 29             for(NewsInfo news : newsList) {
 30                 System.out.println(news.getNewsId()+"\t\t"+news.getNewsTitle()+"\t\t\t"+news.getNewsContent()+"\t\t\t"+sdf.format(news.getNewsDate()));
 31             }
 32         }
 33     }
 34     
 35     /**
 36      * 添加新闻信息
 37      * @param news 传人需要添加的新闻实体对象
 38      */
 39     public void addNews(NewsInfo news) {
 40         // 获取新闻集合对象的大小
 41         int size = newsList.size();
 42         // 把新的新闻对象添加到新闻集合中
 43         newsList.add(news);
 44         // 判断是否添加成功
 45         if(newsList.size()>size) {
 46             System.out.println("添加成功");
 47         } else {
 48             System.out.println("添加失败");
 49         }
 50     }
 51     
 52     /**
 53      * 根据新闻编号删除新闻信息
 54      * @param newsId
 55      */
 56     public boolean deleteNews(int newsId) {
 57         boolean flag = false;
 58         // 获取新闻集合对象的大小
 59         int size = newsList.size();
 60         // 判断删除的Id是否在遍历的集合对象中
 61         for(NewsInfo news : newsList) {
 62             if(news.getNewsId() == newsId) {
 63                 newsList.remove(news);
 64                 flag = true;
 65                 break;
 66             }
 67         }
 68         
 69         /*if(size>newsList.size()) {
 70             System.out.println("删除成功");
 71         } else {
 72             System.out.println("新闻编号不存在,删除失败");
 73         }*/
 74         if(flag) {
 75             System.out.println("删除成功");
 76         } else {
 77             System.out.println("新闻编号不存在,删除失败");
 78         }
 79         
 80         return flag;
 81     } 
 82     /**
 83      * 根据新闻编号查询新闻详细信息
 84      * @param args
 85      */
 86     public void selectNews(int newsId){
 87         boolean flag = false;
 88         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 89         int size = newsList.size();
 90         // 判断删除的Id是否在遍历的集合对象中
 91         for(NewsInfo news : newsList) {
 92             if(news.getNewsId() == newsId) {
 93             System.out.println("标题为:"+news.getNewsTitle()+"\t"+"内容为:"+news.getNewsContent()+"\t"+"时间为:"+sdf.format(news.getNewsDate()));
 94             flag = true;
 95                 break;
 96             }
 97             if(flag) {
 98                 System.out.println("查询成功");
 99             } else {
100                 System.out.println("编号不存在,查询失败");
101             }
102         }
103     }
104     public static void main(String[] args) {
105         TestNews tn = new TestNews();
106         System.out.println("<<<<<<<<<<<<<<<<<<<<<欢迎使用ArrayList新闻管理系统>>>>>>>>>>>>>>>>>>>>>");
107         while(true) {
108             System.out.println("1、查询所有新闻");
109             System.out.println("2、添加新闻");
110             System.out.println("3、删除新闻");
111             System.out.println("4、退出系统");
112             System.out.println("5、根据新闻编号查询新闻详情");
113             System.out.println("请选择功能(1,2,3,4,5):");
114             // java.util.Scanner
115             Scanner sc = new Scanner(System.in);
116             
117             Integer selector = null;
118             while(true) {
119                 try {
120                     // 接收控制台输入
121                     String op = sc.nextLine();
122                     selector = Integer.parseInt(op);
123                     if(selector<1 || selector>5) {
124                         System.out.println("不存在该功能代号,请重新输入:");
125                     } else {
126                         break;
127                     }
128                     
129                 } catch (NumberFormatException e) {
130                     System.out.println("请输入一个数字:");
131                 }
132             }
133             
134             switch (selector) {
135                 case 1:
136                     // 显示所有新闻信息
137                     tn.showNews();
138                     break;
139                 case 2:
140                     // 创建一个新闻对象
141                     NewsInfo news = new NewsInfo();
142                     System.out.println("请输入新闻编号:");
143                     news.setNewsId(Integer.parseInt(sc.nextLine()));
144                     System.out.println("请输入新闻标题:");
145                     news.setNewsTitle(sc.nextLine());
146                     System.out.println("请输入新闻内容:");
147                     news.setNewsContent(sc.nextLine());
148                     news.setNewsDate(new Date());
149                     // 调用添加新闻的方法
150                     tn.addNews(news);
151                     break;
152                 case 3:
153                     while(true) {
154                         System.out.println("请输入要删除的编号:");
155                         boolean flag = tn.deleteNews(sc.nextInt());
156                         if(flag) {
157                             break;
158                         }
159                     }
160                     break;
161                 case 4:
162                     System.out.println("欢迎再次使用该系统");
163                     // 退出系统
164                     System.exit(0);
165                     
166                     break;
167                 case 5:
168                     System.out.println("请输入你要查询的编号:");
169                     Integer number1 = sc.nextInt();
170                     tn.selectNews(number1);
171                     break;
172             default:
173                 break;
174             }
175         }
176         
177     }
178 }
View Code

三、在第二步的基础上进行补充数据存储功能、使用io流完成功能(主要代码Static静态代码块,定义装载程序的方法,序列化方法,反序列化方法(外加自定义异常处理和常量类))

技术分享
  1 package com.news.test;
  2 
  3 import java.io.EOFException;
  4 import java.io.File;
  5 import java.io.FileInputStream;
  6 import java.io.FileNotFoundException;
  7 import java.io.FileOutputStream;
  8 import java.io.IOException;
  9 import java.io.ObjectInputStream;
 10 import java.io.ObjectOutputStream;
 11 import java.text.SimpleDateFormat;
 12 import java.util.ArrayList;
 13 import java.util.Date;
 14 import java.util.List;
 15 import java.util.Scanner;
 16 
 17 import com.news.BusinessException;
 18 import com.news.constants.Constant;
 19 import com.news.entity.NewsInfo;
 20 
 21 @SuppressWarnings("all")
 22 public class TestNews implements Constant {
 23 
 24     // 创建存储新闻信息的集合对象
 25     private static List<NewsInfo> newsList = null;
 26     // 创建一个文件对象句柄
 27     private static File file = null;
 28 
 29     // 只会在类实例的时候执行一次
 30     static {
 31         installPro();
 32 
 33         // 在程序第一次运行的时候才序列化文件
 34         try {
 35             if (new FileInputStream(file).available() == 0) {
 36                 setNewsInfos();
 37             }
 38         } catch (FileNotFoundException e) {
 39             e.printStackTrace();
 40         } catch (IOException e) {
 41             e.printStackTrace();
 42         }
 43     }
 44 
 45     /**
 46      * 定义装载程序的方法
 47      */
 48 
 49     /**
 50      * 
 51      */
 52     private static void installPro() {
 53         // 创建TestNews集合对象
 54         newsList = new ArrayList<NewsInfo>();
 55 
 56         String filePath = FILEPATH;
 57         String dirString = filePath.substring(0, filePath.lastIndexOf("/"));
 58         // 通过dir创建一个文件目录对象
 59         File dir = new File(dirString);
 60         // 判断目录是否存在
 61         if (!dir.exists()) {
 62             dir.mkdirs();
 63         }
 64         // 创建一个文件对象
 65         file = new File(filePath);
 66 
 67         try {
 68             if (!file.exists()) {
 69                 file.createNewFile();
 70             }
 71         } catch (Exception e) {
 72             throw new BusinessException(NOT_FILE);
 73         }
 74 
 75     }
 76 
 77     /**
 78      * 显示所有的新闻信息的方法
 79      */
 80     public void showNews() {
 81         // 创建时间格式化对象
 82         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 83         newsList = getNewsInfos();
 84         // 判断是否存在新闻信息
 85         if (newsList.size() == 0) {
 86             System.out.println("暂无新闻信息可查");
 87         } else {
 88             System.out.println("编号\t\t标题\t\t\t内容\t\t\t发布时间");
 89             for (NewsInfo news : newsList) {
 90                 System.out.println(news.getNewsId() + "\t\t"
 91                         + news.getNewsTitle() + "\t\t\t"
 92                         + news.getNewsContent() + "\t\t\t"
 93                         + sdf.format(news.getNewsDate()));
 94             }
 95         }
 96     }
 97 
 98     /**
 99      * 添加新闻信息
100      * 
101      * @param news
102      *            传人需要添加的新闻实体对象
103      */
104     public void addNews(NewsInfo news) {
105         newsList = getNewsInfos();
106         // 获取新闻集合对象的大小
107         int size = newsList.size();
108         // 把新的新闻对象添加到新闻集合中
109         newsList.add(news);
110         // 判断是否添加成功
111         if (newsList.size() > size) {
112             System.out.println("添加成功");
113             setNewsInfos();
114         } else {
115             System.out.println("添加失败");
116         }
117     }
118 
119     /**
120      * 根据新闻编号删除新闻信息
121      * 
122      * @param newsId
123      */
124     public boolean deleteNews(int newsId) {
125         boolean flag = false;
126         newsList = getNewsInfos();
127         // 获取新闻集合对象的大小
128         int size = newsList.size();
129         // 判断删除的Id是否在遍历的集合对象中
130         for (NewsInfo news : newsList) {
131             if (news.getNewsId() == newsId) {
132                 newsList.remove(news);
133                 flag = true;
134                 break;
135             }
136         }
137 
138         /*
139          * if(size>newsList.size()) { System.out.println("删除成功"); } else {
140          * System.out.println("新闻编号不存在,删除失败"); }
141          */
142         if (flag) {
143             System.out.println("删除成功");
144             setNewsInfos();
145 
146         } else {
147             System.out.println("新闻编号不存在,删除失败");
148         }
149 
150         return flag;
151     }
152 
153     /**
154      * 定义反序列化文件的方法
155      * 
156      * @param args
157      */
158     private static List<NewsInfo> getNewsInfos() {
159         List<NewsInfo> news = null;
160         ObjectInputStream out = null;
161         try {
162             out = new ObjectInputStream(new FileInputStream(file));
163             news = (List<NewsInfo>) out.readObject();
164         } catch (FileNotFoundException e) {
165             e.printStackTrace();
166         } catch (Exception e) {
167             e.printStackTrace();
168         } finally {
169             try {
170                 if (null != out) {
171                     out.close();
172                 }
173             } catch (IOException e) {
174                 e.printStackTrace();
175             }
176         }
177 
178         return news;
179     }
180 
181     /**
182      * 定义序列化文件的方法
183      * 
184      * @param args
185      */
186     private static void setNewsInfos() {
187         // 创建一个对象输出流对象
188         ObjectOutputStream out = null;
189         try {
190             // 创建一个对象输出流对象
191             out = new ObjectOutputStream(new FileOutputStream(file));
192             out.writeObject(newsList);
193         } catch (FileNotFoundException e) {
194             e.printStackTrace();
195         } catch (IOException e) {
196             e.printStackTrace();
197         } finally {
198             try {
199                 if (null != out) {
200                     out.close();
201                 }
202             } catch (IOException e) {
203                 e.printStackTrace();
204             }
205         }
206     }
207 
208     public static void main(String[] args) {
209         TestNews tn = new TestNews();
210         System.out
211                 .println("<<<<<<<<<<<<<<<<<<<<<欢迎使用ArrayList新闻管理系统>>>>>>>>>>>>>>>>>>>>>");
212         while (true) {
213             System.out.println("1、查询所有新闻");
214             System.out.println("2、添加新闻");
215             System.out.println("3、删除新闻");
216             System.out.println("4、退出系统");
217             System.out.println("5、根据新闻编号查询新闻详情");
218             System.out.println("请选择功能(1,2,3,4):");
219             // java.util.Scanner
220             Scanner sc = new Scanner(System.in);
221 
222             Integer selector = null;
223             while (true) {
224                 try {
225                     // 接收控制台输入
226                     String op = sc.nextLine();
227                     selector = Integer.parseInt(op);
228                     if (selector < 1 || selector > 4) {
229                         System.out.println("不存在该功能代号,请重新输入:");
230                     } else {
231                         break;
232                     }
233 
234                 } catch (NumberFormatException e) {
235                     System.out.println("请输入一个数字:");
236                 }
237             }
238 
239             switch (selector) {
240             case 1:
241                 // 显示所有新闻信息
242                 tn.showNews();
243                 break;
244             case 2:
245                 // 创建一个新闻对象
246                 NewsInfo news = new NewsInfo();
247                 System.out.println("请输入新闻编号:");
248                 news.setNewsId(Integer.parseInt(sc.nextLine()));
249                 System.out.println("请输入新闻标题:");
250                 news.setNewsTitle(sc.nextLine());
251                 System.out.println("请输入新闻内容:");
252                 news.setNewsContent(sc.nextLine());
253                 news.setNewsDate(new Date());
254                 // 调用添加新闻的方法
255                 tn.addNews(news);
256                 break;
257             case 3:
258                 while (true) {
259                     System.out.println("请输入要删除的编号:");
260                     boolean flag = tn.deleteNews(sc.nextInt());
261                     if (flag) {
262                         break;
263                     }
264                 }
265                 break;
266             case 4:
267                 System.out.println("欢迎再次使用该系统");
268                 // 退出系统
269                 System.exit(0);
270 
271                 break;
272 
273             default:
274                 break;
275             }
276         }
277 
278     }
279 }
View Code

三、第三步里面的(异常类)代码

技术分享
 1 /**
 2  * 
 3  */
 4 package com.news;
 5 
 6 /**
 7  * @author Direct
 8  *
 9  */
10 public class BusinessException extends RuntimeException {
11 
12     private static final long serialVersionUID = 1L;
13 
14     public BusinessException(String message) {
15         super(message);
16     }
17     
18     public String getMessage() {
19         return super.getMessage();
20     }
21 
22     
23 }
View Code

三、第三步里面的常量类代码

 

技术分享
1 package com.news.constants;
2 
3 public interface Constant {
4     // 定义文件存储的路径字符串常量
5     String FILEPATH = "E:/mynews/news.data";
6     String NOT_FILE = "未找到操作的文件";
7 }
View Code

第四、总结 :以上总共分为4个包中的4个类

 

io流新闻管理系统实例(简单型)

原文:http://www.cnblogs.com/ADAD/p/4864300.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!