A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 神之梦 金牌黑马   /  2013-7-14 14:49  /  1705 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 神之梦 于 2013-7-31 18:15 编辑

活动说明:
          1、加分根据你用到的知识点和考虑是否全面来定!(最高5分)
          2、答题尽量考虑全面,注释到位。
          3、代码放在代码块中,不接收附件。
          4、此次活动截止时间待定。
题目:
        写一个简单的图书管理系统
要求:
        1、假设书库只有一本书,书名Java,其他信息自设
        2、这个系统具有借书和还书的功能
        3、当借书时,要记录住借书人的姓名,借书时间,借书次数(每人只能借3次,且有书没还之前不能借书)
        4、设定一个还书期限,当还书时,显示借了多久,如果超过期限,提示要借书人交一定的超限金额。
        5、借书人先输入自己的名字,如果不存在,提示他是否需要注册,如果不注册就不能借书。

            注册时,删除输入的用户名中的空格,并存储相关信息(如有没有借书,借书时间,借书次数)。
        6、根据用户从键盘输入的进行相应操作


        (可能用到知识点:面向对象,IO流操作,集合、配置文件,时间类,接口等)

示例:
         系统显示:请输入你的名字:

         用户输入:黑马程序员(判断是否存在,不存在则提示注册)
         显示:借书还是还书?
         用户输入:借书
         显示:请输入书名:(因为只有一本书,如果书名不匹配则提示没有)
         用户输入:Java
         显示:Java这本书的书名,作者,出版时间等信息,然后询问是否要借?
         用户输入:是(判断借书次数是否有了3次,如果有了则提示不能借)
         显示:借书成功(并把借书人的名字,借书时间,借书次数存储)


        (以上仅作示例不是标准,提示语句方面可以自己发挥,如:借书请输入1,还书请输入2这样的提示)

注意:
          1、期间:如果用户想退出,只要输入over即可退出
         2、还书跟上示例类似,但是如果没有借过书,就不能还书。还书时要判断借了多久,并显示。




评分

参与人数 1黑马币 +4 收起 理由
Just_Only + 4 很给力!

查看全部评分

15 个回复

倒序浏览
先顶顶,再做题
回复 使用道具 举报
活动的答案在哪里会公布?

点评

之前的还是?  发表于 2013-7-15 14:15
回复 使用道具 举报
本帖最后由 牛海亮 于 2013-7-15 23:55 编辑

本程序共设计了5个类:
1.BookManagementSystem  程序的入口
2.Login 用于实现用户登录
3.Register 注册
4.Library 实现  用户借书和还书 功能。
该类设计的主要方法如下:
loadUserList() :将userList.txt中的信息封装成User对象后存储到集合userList中
saveToTxt():将userList集合中的对象 按照一定的格式存储到userList.txt中
acceptReturn(): 还书 还书超限一月罚款1元,限期为3个月,超过一年罚款10元。
lend():借书 只需借3次,查过3次就不让借。
5.User类的 三个属性userName :用户名 time:借书时间 count :借书的次数。
软件使用方法:将所有类放到同一工程的同一包中。在workspace对应的工程下面手动创建三个.txt文件分别为user.txt userList.txt book.txt 在book.txt中存入JAVA.剩下的按照系统提示操作即可。
代码如下
1.BookManagementSystem
  1. package ts;

  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. /*
  5. *
  6. *
  7. * */
  8. //系统入口
  9. public class BookManagementSystem
  10. {
  11. public static void main(String[] args)
  12. {
  13. while(true)
  14. {
  15. System.out.println("1.登录 2.注册 3.退出");
  16. BufferedReader bufr =
  17. new BufferedReader(new InputStreamReader(System.in));

  18. try
  19. {
  20. String num = bufr.readLine();
  21. int number = new Integer(num);
  22. if( number == 1)
  23. {
  24. System.out.println("输入用户名:");
  25. String userName = bufr.readLine();
  26. Login login = new Login();//定义一个登录类,管理用户登录后的操作
  27. login.receive(userName);//该操作接收到输入的用户名后对其判断

  28. }
  29. else if(number == 2)
  30. {
  31. System.out.println("输入要注册的用户名:");
  32. String registerName = bufr.readLine();
  33. Register register = new Register();//获取用户名并将其写入到user.txt中
  34. register.receive(registerName);//获取用户名并将其写入到user.txt中
  35. }
  36. else if(number == 3)
  37. {
  38. System.out.println("退出成功");
  39. break;

  40. }
  41. else
  42. System.out.println("输入有误,请按需求输入 1 2 3");
  43. }


  44. catch (Exception e)
  45. {
  46. e.printStackTrace();
  47. }
  48. }
  49. }

  50. }
复制代码
由于字数限制,分2次上传。
回复 使用道具 举报
本帖最后由 牛海亮 于 2013-7-16 20:08 编辑

2.Login
  1. package ts;

  2. import java.io.BufferedReader;
  3. import java.io.FileReader;
  4. import java.io.InputStreamReader;


  5. //登录
  6. public class Login {
  7. public static void receive(String userName)
  8. {
  9. try
  10. {
  11. BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));
  12. boolean flag = false;
  13. String line = null;
  14. //遍历user.txt,看用户是否存在
  15. while((line = bufr.readLine())!=null)
  16. {
  17. if(line.equals(userName))
  18. {
  19. flag = true;
  20. break;
  21. }
  22. }
  23. bufr.close();
  24. if(flag)
  25. {
  26. while(true)
  27. {
  28. BufferedReader br =
  29. new BufferedReader(new InputStreamReader(System.in));

  30. System.out.println(userName+",已登录");
  31. System.out.println("请选择:1.借书 2.还书 3.退出");
  32. String num = br.readLine();
  33. int number = new Integer(num);
  34. if(number == 1)
  35. {
  36. System.out.println("开始借书");
  37. Library library = new Library();
  38. library.lend(userName);//开始在图书馆借书
  39. continue;

  40. }
  41. else if(number == 2)
  42. {

  43. System.out.println(userName+"开始还书");
  44. Library library = new Library();
  45. library.acceptReturn(userName);//开始在图书馆借书
  46. continue;
  47. }
  48. else if(number == 3)
  49. {

  50. System.out.println("退出成功");
  51. break;
  52. }
  53. else
  54. System.out.println("输入有误,请输入1 或者2 或者3");
  55. break;
  56. }


  57. }
  58. else
  59. {
  60. System.out.println(userName+",用户名不存在,请注册");
  61. return;

  62. }
  63. }
  64. catch (Exception e)
  65. {
  66. e.printStackTrace();

  67. }

  68. }

  69. }
复制代码
3.Register
  1. package ts;

  2. import java.io.BufferedReader;
  3. import java.io.FileReader;
  4. import java.io.*;

  5. public class Register {

  6. public void receive(String registerName) {
  7. try
  8. {
  9. BufferedWriter bufw = new BufferedWriter(new FileWriter("user.txt",true));
  10. bufw.append(registerName);
  11. bufw.newLine();
  12. bufw.flush();
  13. bufw.close();
  14. System.out.println("注册成功");

  15. }
  16. catch (Exception e)
  17. {
  18. e.printStackTrace();
  19. }


  20. }

  21. }
复制代码
4.Library
  1. package ts;
  2. import java.io.BufferedReader;
  3. import java.io.FileReader;
  4. import java.io.InputStreamReader;
  5. import java.util.ArrayList;
  6. import java.util.Calendar;
  7. import java.util.List;
  8. import java.io.*;
  9. public class Library {
  10. public static ArrayList userList = new ArrayList();
  11. public ArrayList getUserList()
  12. {
  13. return userList;
  14. }
  15. //将userList.txt中的信息保存至集合userList中
  16. public static void loadUserList()
  17. {
  18. try
  19. {
  20. BufferedReader bufr = new BufferedReader(new FileReader("userList.txt"));
  21. String line = null;
  22. do
  23. {
  24. User user = new User();
  25. for(int i = 0 ;i<3 ; i++)
  26. {
  27. if( i == 0)
  28. {
  29. line = bufr.readLine();
  30. user.setUserName(line);
  31. }
  32. else if(i == 1)
  33. {
  34. line = bufr.readLine();
  35. user.setTime(line);

  36. }
  37. else if(i == 2)
  38. {
  39. line = bufr.readLine();
  40. //System.out.println(line);
  41. if(line == null)
  42. return;
  43. Integer c = new Integer(line);
  44. user.setCount(c);

  45. }

  46. }
  47. userList.add(user);


  48. }while(line != null);


  49. }
  50. catch (Exception e)
  51. {
  52. e.printStackTrace();
  53. }


  54. }

  55. //将userList中的信息存入userList.txt中
  56. public static void saveToTxt(ArrayList userList) throws Exception
  57. {
  58. FileWriter fw = new FileWriter("userList.txt",false);
  59. fw.write("");
  60. fw.flush();
  61. System.out.println("文件已经清空!");
  62. fw.close();
  63. if(userList.size() == 0)
  64. {
  65. System.out.println("没有要保存的信息");
  66. return;
  67. }
  68. BufferedWriter bufw = new BufferedWriter(new FileWriter("userList.txt",true));
  69. for(int i = 0 ;i<userList.size(); i++)
  70. {
  71. User user = (User) userList.get(i);
  72. String line1 = user.getUserName();
  73. String line2 = user.getTime();
  74. Integer line3 = user.getCount();
  75. String l3 = line3.toString();
  76. bufw.write(line1);
  77. bufw.newLine();
  78. bufw.write(line2);
  79. bufw.newLine();
  80. bufw.write(l3);
  81. bufw.newLine();
  82. bufw.flush();
  83. }
  84. System.out.println("信息保存完毕!!");
  85. bufw.close();

  86. }

  87. //还书
  88. public static void acceptReturn(String userName)
  89. {
  90. try
  91. {
  92. Calendar c = Calendar.getInstance();
  93. int year = c.get(Calendar.YEAR);
  94. int month = c.get(Calendar.MONTH);
  95. int day = c.get(Calendar.DATE);
  96. loadUserList();
  97. for(int i = 0 ; i<userList.size(); i++)
  98. {
  99. User user = (User) userList.get(i);
  100. //该用户借过书才能还书
  101. if(user.getUserName().equals(userName))
  102. {
  103. System.out.println("借书时间:"+user.getTime());
  104. System.out.println("还书时间:"+year+"/"+month+"/"+day);
  105. //显示借书的借了多久,将年和月截取出来,只计算月数
  106. String time = user.getTime();
  107. String [] ymd = time.split("/");
  108. //超过3个月罚款5元
  109. if(year == new Integer(ymd[0]))
  110. {
  111. int borrMonth = new Integer(ymd[1]);
  112. int overMonth = month - borrMonth;
  113. System.out.println("已经借书"+overMonth+"月");
  114. if(overMonth > 3)
  115. {
  116. int m = overMonth - 3;
  117. System.out.println("超限"+m+"月"+",罚款"+m*1+"元");
  118. userList.remove(i);
  119. saveToTxt(userList);
  120. System.out.println("还书完毕!!");

  121. }
  122. else
  123. {
  124. System.out.println("按时还书了!!!");
  125. userList.remove(i);
  126. saveToTxt(userList);
  127. System.out.println("还书完毕!!");

  128. }

  129. }
  130. else
  131. {

  132. System.out.println("超过一年,罚款10元");
  133. userList.remove(i);
  134. saveToTxt(userList);
  135. System.out.println("还书完毕!!");
  136. }

  137. }
  138. else
  139. {
  140. System.out.println("您没有借书!!");
  141. }

  142. }
  143. }
  144. catch (Exception e)
  145. {
  146. e.printStackTrace();
  147. }

  148. }
  149. //登录后借书
  150. public static void lend(String userName)
  151. {

  152. try
  153. {
  154. System.out.println("输入要借 的书名:");
  155. BufferedReader bufr =
  156. new BufferedReader(new InputStreamReader(System.in));
  157. String bookName = bufr.readLine();

  158. boolean flag = searchBook(bookName);//看书是否存在
  159. if(flag)
  160. {
  161. Library library = new Library();

  162. library.yesOrNo(userName);//用户是否借书

  163. }
  164. else
  165. System.out.println("该书不存在");
  166. }
  167. catch (Exception e)
  168. {
  169. e.printStackTrace();
  170. }

  171. }

  172. //看该书是否存在
  173. public static boolean searchBook(String bookName) throws Exception
  174. {

  175. BufferedReader br = new BufferedReader(new FileReader("book.txt"));
  176. boolean flag = false;
  177. String line = null;
  178. //从文件中读取并
  179. while((line = br.readLine())!=null)
  180. {
  181. if(line.equals(bookName))
  182. {
  183. flag = true;
  184. break;
  185. }
  186. }
  187. br.close();
  188. return flag;

  189. }

  190. //借书
  191. public static void yesOrNo(String userName)throws Exception
  192. {
  193. System.out.println("该书存在,是否要借?(是Y,不是N)");
  194. BufferedReader bufr =
  195. new BufferedReader(new InputStreamReader(System.in));
  196. String yesOrNo = bufr.readLine();

  197. if(yesOrNo.equals("Y"))
  198. {
  199. System.out.println(userName);
  200. userBorrow(userName);

  201. }
  202. else if(yesOrNo.equals("N"))
  203. {
  204. System.out.println("没有借该书");

  205. }
  206. else
  207. System.out.println("输入有误,请按照提示输入");

  208. }
  209. public static void userBorrow(String userName) throws Exception
  210. {
  211. //将用户信息添加进去
  212. Calendar c = Calendar.getInstance();
  213. String time = c.get(Calendar.YEAR)+"/"+c.get(Calendar.MONTH)+"/"+c.get(Calendar.DATE);
  214. System.out.println(time);
  215. //遍历集合,看该用户是否借书了
  216. boolean flag = false;
  217. User userFlag = null;
  218. loadUserList();
  219. for(int i = 0 ; i<userList.size(); i++)
  220. {
  221. User user = (User) userList.get(i);
  222. //该用户曾经借过书
  223. if(user.getUserName().equals(userName))
  224. {
  225. flag = true;
  226. userFlag = user;
  227. }


  228. }
  229. if(flag)
  230. {
  231. if(userFlag.getCount()<3)
  232. {
  233. int count = userFlag.getCount()+1;
  234. userFlag.setCount(count);
  235. userFlag.setTime(time);
  236. saveToTxt(userList);
  237. userList.clear();
  238. System.out.println("借书成功");
  239. }
  240. else
  241. {
  242. System.out.println("已经借3次,不能再借!!!");
  243. }

  244. }
  245. //该用户没有借过书
  246. else
  247. {
  248. System.out.println("没有借书,或者借书都已经归还");
  249. User userNew = new User();
  250. userNew.setTime(time);
  251. userNew.setUserName(userName);
  252. userNew.setCount(1);
  253. userList.add(userNew);
  254. saveToTxt(userList);
  255. userList.clear();
  256. System.out.println("借书成功!!!");
  257. }

  258. }

  259. }
复制代码
5.User
  1. package ts;

  2. public class User {
  3. private String userName;
  4. private String time;
  5. private int count;
  6. User()
  7. {


  8. }

  9. User(String userName, String time, int count)
  10. {

  11. this.userName = userName;
  12. this.time = time;
  13. this.count = count;
  14. }
  15. public String getUserName()
  16. {

  17. return userName;
  18. }
  19. public void setUserName(String userName)
  20. {

  21. this.userName = userName;
  22. }
  23. public String getTime()
  24. {
  25. return time;

  26. }
  27. public void setTime(String time )
  28. {
  29. this.time = time;

  30. }
  31. public int getCount()
  32. {

  33. return count;
  34. }
  35. public void setCount(int count)
  36. {
  37. this.count = count;

  38. }
  39. }
复制代码

点评

有一点点不足,就是如果没有还书,还是可以借书,另外就是书名输错时,出现过一次异常。哥们如果再完善下,那一分给你补上  发表于 2013-7-16 23:17

评分

参与人数 1技术分 +4 黑马币 +6 收起 理由
神之梦 + 4 + 6 哥们,好样的!

查看全部评分

回复 使用道具 举报
汪平乐 发表于 2013-7-15 12:33
活动的答案在哪里会公布?

是每周的,第4周答案会在哪里公布?

点评

到时候在原帖看就行  发表于 2013-7-16 11:41
回复 使用道具 举报
chslzj 中级黑马 2013-7-16 16:14:15
7#
  1. /**
  2. *当前为了测试方便,将超期时间设计为20秒;
  3. * 2013年7月14日下午6:26:50
  4. * BookManager.java
  5. * Administrator
  6. *  1、假设书库只有一本书,书名Java,其他信息自设
  7.         2、这个系统具有借书和还书的功能
  8.         3、当借书时,要记录住借书人的姓名,借书时间,借书次数(每人只能借3次,且有书没还之前不能借书)
  9.         4、设定一个还书期限,当还书时,显示借了多久,如果超过期限,提示要借书人交一定的超限金额。
  10.         5、借书人先输入自己的名字,如果不存在,提示他是否需要注册,如果不注册就不能借书。
  11.             注册时,删除输入的用户名中的空格,并存储相关信息(如有没有借书,借书时间,借书次数)。
  12.         6、根据用户从键盘输入的进行相应操作

  13.         (可能用到知识点:面向对象,IO流操作,集合、配置文件,时间类,接口等)
  14. */
  15. package com.itheima.test;

  16. import java.io.BufferedReader;
  17. import java.io.File;
  18. import java.io.FileInputStream;
  19. import java.io.FileOutputStream;
  20. import java.io.IOException;
  21. import java.io.InputStream;
  22. import java.io.InputStreamReader;
  23. import java.io.ObjectInputStream;
  24. import java.io.ObjectOutputStream;
  25. import java.io.OutputStream;
  26. import java.io.RandomAccessFile;
  27. import java.io.Serializable;
  28. import java.text.DateFormat;
  29. import java.text.SimpleDateFormat;
  30. import java.util.Calendar;
  31. import java.util.Date;

  32. /**
  33. * @author Administrator
  34. * @time 2013年7月14日下午6:26:50
  35. */
  36. public class BookManager {
  37.         //定义存储读者信息和书籍信息的位置
  38.         private File readersDir=new File("D:/temp/BookManager/Readers");
  39.         private File booksDir=new File("D:/temp/BookManager/Books");
  40.         private void init() throws Exception{
  41.                 //初始化,若没有文件夹,就创建,若得不到Java的书籍信息,就创建一个份java的书籍信息
  42.                 if(!readersDir.exists())
  43.                         readersDir.mkdirs();
  44.                 if(!booksDir.exists())
  45.                         booksDir.mkdirs();
  46.                 Book book=(Book)getResource("Java", booksDir);
  47.                 if(book==null){
  48.                         book=new Book("Java", "JavaWriter");
  49.                         writeResource("Java",booksDir,book);
  50.                 }
  51.         }
  52.         public BookManager()throws Exception{
  53.                 //初始化
  54.                 init();
  55.                 //程序开始了
  56.                 begin();
  57.                
  58.         }
  59.         public void begin()throws Exception{
  60.                 System.out.println("用户名中的空格将会自动清除!");
  61.                 System.out.println("请出入用户名: ");
  62.                 String name=ask();
  63.                 String order="";
  64.                 //读取用户信息,若用户为空,就提示注册用户
  65.                 Reader reader=(Reader) getResource(name, readersDir);
  66.                 if(reader==null)
  67.                 {
  68.                         System.out.println("该用户名不存在,是否注册?不注册将无法使用本系统功能,输入1注册,输入其他退出系统");
  69.                         order=ask();
  70.                         if(order.equals("1"))
  71.                         {
  72.                                 reader=new Reader(name);
  73.                                 writeResource(name, readersDir, reader);
  74.                         }
  75.                         else{
  76.                                 System.exit(0);
  77.                         }       
  78.                 }
  79.                
  80.                 while(true){
  81.                         System.out.println("您好,"+reader.getName());
  82.                         Book book=reader.getBook();
  83.                         //先判断是否有未还的书籍,若有,则提示要还书
  84.                         if(book!=null){
  85.                         System.out.println("当前已经借一本书,书名为"+book.getName()+",输入1还书,输入over退出,不还书将无法借书,输入其他无效");
  86.                         order=ask();
  87.                         if(order.equals("1"))
  88.                         {
  89.                                 //还书完成后,存储信息
  90.                                 reader.returnbook(book);
  91.                                 writeResource(name, readersDir, reader);
  92.                                 writeResource(book.getName(), booksDir, book);

  93.                         }
  94.                 }//如果读者已经接了三本书了,就不让他使用系统了
  95.                         else if(reader.getTimes()>2)
  96.                 {
  97.                         System.out.println("你已经借过三次书了,且没有书未还,业务功能已经全部完成,系统退出");
  98.                         System.exit(0);
  99.                 }
  100.                 else{
  101.                         System.out.println("当前未借书,已经借书"+reader.getTimes()+"次,还可以借书"+(3-reader.getTimes())+"次,输入1借书,输入over退出,输入其他无效");
  102.                         order=ask();
  103.                         if(order.equals("1"))
  104.                         {
  105.                                 System.out.println("请输入书名,书名中空格将被清除");
  106.                                 order=ask();
  107.                                 book=(Book) getResource(order, booksDir);
  108.                                 //判断是存在书籍
  109.                                 if(book==null)
  110.                                 {
  111.                                         System.out.println("书库中没有名为"+order+"的书");
  112.                                 }else{
  113.                                         //书籍已经被借走了
  114.                                         if(book.getReader()!=null)
  115.                                         {
  116.                                                 System.out.println("该书已经被借走,您可以选择其他书籍借阅");
  117.                                         }
  118.                                         else{
  119.                                                 //书籍未被借走
  120.                                                 System.out.println(book.toString());
  121.                                                 System.out.println("是否借书?输入1确认,输入over退出,输入其他无效");
  122.                                                 order=ask();
  123.                                                 if(order.equals("1")){
  124.                                                         //存储信息
  125.                                                 reader.borrow(book);
  126.                                                 writeResource(name, readersDir, reader);
  127.                                                 writeResource(book.getName(), booksDir, book);
  128.                                                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒");
  129.                                                
  130.                                                 System.out.println("借书成功,借书时间为"+sdf.format(new Date(reader.getBorrowTime())));
  131.                                                 }
  132.                                         }
  133.                                 }
  134.                         }
  135.                 }
  136.                 }
  137.         }
  138.         public Object getResource(String name ,File file) throws Exception{
  139.                 //读取一个资源的信息,比如读者的信息,比如书籍的信息
  140.                 File objectFile=new File(file, name+".dat");
  141.                 if(objectFile.exists())
  142.                 {
  143.                         InputStream is=new FileInputStream(objectFile);
  144.                         ObjectInputStream ois=new ObjectInputStream(is);
  145.                         Object object =(Object)ois.readObject();
  146.                         ois.close();
  147.                         is.close();
  148.                         return object;
  149.                 }
  150.                 return null;
  151.         }
  152.         public void writeResource(String name,File file,Object obj) throws Exception{
  153.                 //存储读者书籍信息
  154.                 File objectFile=new File(file, name+".dat");
  155.                 OutputStream ops=new FileOutputStream(objectFile);
  156.                 ObjectOutputStream oos=new ObjectOutputStream(ops);
  157.                 oos.writeObject(obj);
  158.                 oos.close();
  159.                 ops.close();
  160.         }
  161.         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  162.         public String ask() throws Exception{
  163.                 //从键盘获取用户输入,并且去除空格,判断是否为over
  164.                 String message=br.readLine();
  165.                 message=message.replaceAll(" ", "");
  166.                 if(message.equals("over"))
  167.                 {
  168.                         System.out.println("退出系统,再见");
  169.                         System.exit(0);
  170.                 }
  171.                 return message;
  172.         }
  173.         public static void main(String[] args) throws Exception {
  174.                 new BookManager();
  175.         }

  176. }
  177. class Book implements Serializable{
  178.         private String name;
  179.         private String writer;
  180.         public String getName() {
  181.                 return name;
  182.         }
  183.         public void setName(String name) {
  184.                 this.name = name;
  185.         }
  186.         public String getWriter() {
  187.                 return writer;
  188.         }
  189.         public void setWriter(String writer) {
  190.                 this.writer = writer;
  191.         }
  192.         public Reader getReader() {
  193.                 return reader;
  194.         }
  195.         public void setReader(Reader reader) {
  196.                 this.reader = reader;
  197.         }
  198.         public Book(String name,String writer){
  199.                 this.name=name;
  200.                 this.writer=writer;
  201.         }
  202.         private Reader reader;
  203.         /* (non-Javadoc)
  204.          * @see java.lang.Object#toString()
  205.          */
  206.         @Override
  207.         public String toString() {
  208.                 //输出书籍信息
  209.                 return "书名 :"+name+"  作者:"+writer;
  210.         }
  211. }
  212. class Reader implements Serializable{
  213.         private String name;
  214.         private long borrowTime;
  215.         private int times=0;
  216.         private Book book;
  217.         public String getName() {
  218.                 return name;
  219.         }
  220.         /**
  221.         @function:
  222.          * @data:2013-7-16下午2:57:06
  223.          * @author Administrator
  224.          * @param book
  225.          */
  226.         public void returnbook(Book book) {
  227.                 //还书操作,并且计算是否超期,这里为了便于演示,超期时间设置为20秒;
  228.                 this.book=null;
  229.                 book.setReader(null);
  230.                 long time=(System.currentTimeMillis()-this.borrowTime)/1000;
  231.                 long extendstime=(time-20)>0?time-20:0;
  232.                 Date date=new Date(borrowTime);
  233.                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒");
  234.                 System.out.println("借书时间"+sdf.format(date)+",本次借书"+time+"秒,超期"+extendstime+"秒,应付"+extendstime*0.01+"元");
  235.         }
  236.         public void setName(String name) {
  237.                 this.name = name;
  238.         }
  239.         public long getBorrowTime() {
  240.                 return borrowTime;
  241.         }
  242.         public void setBorrowTime(long borrowTime) {
  243.                 this.borrowTime = borrowTime;
  244.         }
  245.         public int getTimes() {
  246.                 return times;
  247.         }
  248.         public void setTimes(int times) {
  249.                 this.times = times;
  250.         }
  251.         public Book getBook() {
  252.                 return book;
  253.         }
  254.         public void setBook(Book book) {
  255.                 this.book = book;
  256.         }

  257.         public Reader(String name){
  258.                 this.name=name;
  259.         }
  260.         public void borrow(Book book){
  261.                 //借书操作
  262.                 this.book=book;
  263.                 book.setReader(this);
  264.                 times++;
  265.                 this.borrowTime=System.currentTimeMillis();
  266.         }
  267. }

复制代码
啥时候能加分呢?

点评

知识运用得非常不错!  发表于 2013-7-16 23:18

评分

参与人数 1技术分 +5 收起 理由
神之梦 + 5 非常强大

查看全部评分

回复 使用道具 举报
本帖最后由 牛海亮 于 2013-7-18 00:37 编辑

本次修改实现:1.用户只能借书三次: 通过判断类的count属性来识别借书次数 2.有书未还不能借书: 在类User中又添加了一个属性borrowOrNot,即是否借书未还,0为已还,1为未还,通过判断此属性的值确定是否 有书未还。 除Register类外其他类均有修改。
代码如下:
1.BookManagementSystem
  1. package ts;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. //系统入口
  5. public class BookManagementSystem
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 while(true)
  10.                 {
  11.                 System.out.println("1.登录  2.注册 3.退出");        
  12.                 BufferedReader bufr =
  13.                                 new BufferedReader(new InputStreamReader(System.in));
  14.                
  15.                         try
  16.                         {
  17.                                 String num = bufr.readLine();
  18.                                 
  19.                                 if( num.equals("1"))
  20.                                 {
  21.                                         System.out.println("输入用户名:");
  22.                                         String userName = bufr.readLine();
  23.                                         Login login = new Login();//定义一个登录类,管理用户登录后的操作
  24.                                         login.receive(userName);//该操作接收到输入的用户名后对其判断
  25.                                        
  26.                                 }
  27.                                 else if(num.equals("2"))
  28.                                 {
  29.                                         System.out.println("输入要注册的用户名:");
  30.                                         String registerName = bufr.readLine();
  31.                                         Register register = new Register();//获取用户名并将其写入到user.txt中
  32.                                         register.receive(registerName);//获取用户名并将其写入到user.txt中
  33.                                 }
  34.                                 else if(num.equals("3"))
  35.                                 {
  36.                                         System.out.println("退出成功");
  37.                                         break;
  38.                                        
  39.                                 }
  40.                                 else
  41.                                         System.out.println("输入有误,请按需求输入 1 2 3");
  42.                         }                                
  43.                         catch (Exception e)
  44.                         {
  45.                                 e.printStackTrace();
  46.                         }
  47.                 }
  48.         }

  49. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 很给力!

查看全部评分

回复 使用道具 举报
2.Login
  1. package ts;

  2. import java.io.BufferedReader;
  3. import java.io.FileReader;
  4. import java.io.InputStreamReader;


  5. //登录
  6. public class Login {
  7.         public static void receive(String userName)
  8.         {
  9.                 try
  10.                 {
  11.                         BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));
  12.                         boolean flag = false;
  13.                         String line = null;
  14.                         //遍历user.txt,看用户是否存在
  15.                         while((line = bufr.readLine())!=null)
  16.                         {                               
  17.                                 if(line.equals(userName))
  18.                                 {
  19.                                         flag = true;
  20.                                         break;                                               
  21.                                 }                                                                       
  22.                         }
  23.                         bufr.close();
  24.                         if(flag)
  25.                         {
  26.                                 while(true)
  27.                                 {
  28.                                 BufferedReader br =
  29.                                                 new BufferedReader(new InputStreamReader(System.in));
  30.                                
  31.                                 System.out.println(userName+",已登录");
  32.                                 System.out.println("请选择:1.借书 2.还书 3.退出");
  33.                                 String num = br.readLine();
  34.                                
  35.                                 if(num.equals("1"))
  36.                                 {
  37.                                         System.out.println("开始借书");
  38.                                         Library library = new Library();
  39.                                         library.lend(userName);//开始在图书馆借书
  40.                                         continue;
  41.                                        
  42.                                 }
  43.                                 else if(num.equals("2"))
  44.                                 {

  45.                                         System.out.println(userName+"开始还书");
  46.                                         Library library = new Library();
  47.                                         library.acceptReturn(userName);//开始在图书馆借书
  48.                                         continue;
  49.                                 }
  50.                                 else if(num.equals("3"))
  51.                                 {

  52.                                         System.out.println("退出成功");
  53.                                         break;
  54.                                 }
  55.                                 else
  56.                                 {
  57.                                         System.out.println("输入有误,请输入1 或者2 或者3");
  58.                                         break;
  59.                                 }
  60.                                 }
  61.                                        
  62.                                
  63.                         }
  64.                         else
  65.                         {
  66.                                 System.out.println(userName+",用户名不存在,请注册");       
  67.                                 return;
  68.                                
  69.                         }
  70.                 }
  71.                 catch (Exception e)
  72.                 {
  73.                         e.printStackTrace();

  74.                 }               
  75.                
  76.         }

  77. }
复制代码
回复 使用道具 举报
  1. package ts;
  2. import java.io.BufferedReader;
  3. import java.io.FileReader;
  4. import java.io.InputStreamReader;
  5. import java.util.ArrayList;
  6. import java.util.Calendar;
  7. import java.util.List;
  8. import java.io.*;
  9. public class Library {
  10.         public static ArrayList userList = new ArrayList();       
  11.         public ArrayList getUserList()
  12.         {
  13.                 return userList;
  14.         }       
  15.         public static void loadUserList()
  16.         {
  17.                 try
  18.                 {
  19.                         BufferedReader bufr = new BufferedReader(new FileReader("userList.txt"));
  20.                         String line = null;
  21.                         do
  22.                         {
  23.                                 User user = new User();
  24.                                 for(int i = 0 ;i<4 ; i++)
  25.                                 {
  26.                                         if( i == 0)
  27.                                         {
  28.                                                 line = bufr.readLine();
  29.                                                 user.setUserName(line);
  30.                                         }
  31.                                         else if(i == 1)
  32.                                         {
  33.                                                 line = bufr.readLine();
  34.                                                 user.setTime(line);
  35.                                                
  36.                                         }
  37.                                         else if(i == 2)
  38.                                         {
  39.                                                 line = bufr.readLine();                                               
  40.                                                 if(line == null)
  41.                                                         return;
  42.                                                 Integer c = new Integer(line);
  43.                                                 user.setCount(c);
  44.                                                
  45.                                         }
  46.                                         else if(i == 3)
  47.                                         {
  48.                                                 line = bufr.readLine();
  49.                                                 if(line.equals("0"))
  50.                                                 {
  51.                                                         user.setBorrowOrNot(0);
  52.                                                        
  53.                                                 }
  54.                                                 else if(line.equals("1"))
  55.                                                 {
  56.                                                         user.setBorrowOrNot(1);
  57.                                                        
  58.                                                 }                                               
  59.                                         }                                       
  60.                                 }
  61.                                 userList.add(user);                               
  62.                         }while(line != null);               
  63.                        
  64.                 }
  65.                 catch (Exception e)
  66.                 {
  67.                         e.printStackTrace();
  68.                 }               
  69.         }       
  70.         public static void saveToTxt(ArrayList userList) throws Exception
  71.         {
  72.                 FileWriter fw = new FileWriter("userList.txt",false);
  73.                 fw.write("");
  74.                 fw.flush();
  75.                 System.out.println("文件已经清空!");
  76.                 fw.close();
  77.                 if(userList.size() == 0)
  78.                 {
  79.                         System.out.println("没有要保存的信息");
  80.                         return;
  81.                 }
  82.                 BufferedWriter bufw = new BufferedWriter(new FileWriter("userList.txt",true));
  83.                 for(int i = 0 ;i<userList.size(); i++)
  84.                 {
  85.                         User user = (User) userList.get(i);
  86.                         String line1 = user.getUserName();
  87.                         String line2 = user.getTime();
  88.                         Integer line3 = user.getCount();
  89.                         String l3 = line3.toString();
  90.                         Integer line4 = user.getBorrowOrNot();
  91.                         String l4 = line4.toString();                       
  92.                         bufw.write(line1);
  93.                         bufw.newLine();                       
  94.                         bufw.write(line2);
  95.                         bufw.newLine();                       
  96.                         bufw.write(l3);
  97.                         bufw.newLine();                               
  98.                         bufw.write(l4);
  99.                         bufw.newLine();                       
  100.                         bufw.flush();
  101.                 }
  102.                 System.out.println("信息保存完毕!!");
  103.                 bufw.close();               
  104.         }       
  105.         public static void acceptReturn(String userName)
  106.         {
  107.                 try
  108.                 {
  109.                         Calendar c = Calendar.getInstance();
  110.                         int year = c.get(Calendar.YEAR);
  111.                         int month = c.get(Calendar.MONTH);
  112.                         int day = c.get(Calendar.DATE);
  113.                         userList.clear();
  114.                         loadUserList();                       
  115.                         boolean flag = false;
  116.                         for(int i = 0 ; i<userList.size(); i++)
  117.                         {
  118.                                 User user = (User) userList.get(i);                               
  119.                                 System.out.println(user.getUserName());                               
  120.                                 if(user.getUserName().equals(userName))
  121.                                 {
  122.                                         flag = true;
  123.                                         if( user.getBorrowOrNot() == 1)//有书未还
  124.                                         {
  125.                                                 System.out.println("借书时间:"+user.getTime());       
  126.                                                 System.out.println("还书时间:"+year+"/"+month+"/"+day);                                               
  127.                                                 String time = user.getTime();
  128.                                                 String [] ymd = time.split("/");                                               
  129.                                                 if(year == new Integer(ymd[0]))
  130.                                                 {
  131.                                                         int borrMonth = new Integer(ymd[1]);
  132.                                                         int overMonth = month - borrMonth;
  133.                                                         System.out.println("已经借书"+overMonth+"月");
  134.                                                         if(overMonth > 3)
  135.                                                         {
  136.                                                                 int m = overMonth - 3;
  137.                                                                 System.out.println("超限"+m+"月"+",罚款"+m*1+"元");                                                               
  138.                                                                 User currUser = (User) userList.get(i);
  139.                                                                 currUser.setBorrowOrNot(0);                                                       
  140.                                                                 saveToTxt(userList);
  141.                                                                 userList.clear();
  142.                                                                 System.out.println("还书完毕!!");
  143.                                                                 break;
  144.                                                                
  145.                                                         }
  146.                                                         else
  147.                                                         {
  148.                                                                 System.out.println("按时还书了!!!");
  149.                                                                 User currUser = (User) userList.get(i);
  150.                                                                 currUser.setBorrowOrNot(0);                                                       
  151.                                                                 saveToTxt(userList);
  152.                                                                 userList.clear();
  153.                                                                 System.out.println("还书完毕!!");
  154.                                                                 break;                                                               
  155.                                                         }
  156.                                                 }
  157.                                                 else
  158.                                                 {

  159.                                                         System.out.println("超过一年,罚款10元");
  160.                                                         User currUser = (User) userList.get(i);
  161.                                                         currUser.setBorrowOrNot(0);//将是否借书标记为否                                                       
  162.                                                         saveToTxt(userList);
  163.                                                         userList.clear();
  164.                                                         System.out.println("还书完毕!!");
  165.                                                         break;
  166.                                                 }                               
  167.                                                
  168.                                         }
  169.                                                
  170.                                         else if(user.getBorrowOrNot() == 0)
  171.                                         {
  172.                                                 System.out.println("借书已还,无需再还!!!");
  173.                                                 break;
  174.                                         }                                       
  175.                                 }                               
  176.                         }
  177.                         if(!flag)
  178.                         {
  179.                                 System.out.println("您从没有借过书!!!");
  180.                                 return;
  181.                         }
  182.                        
  183.                 }
  184.                 catch (Exception e)
  185.                 {
  186.                         e.printStackTrace();
  187.                 }
  188.                
  189.         }
  190.        
  191.         //登录后借书
  192.         public static void lend(String userName)
  193.         {       
  194.                 try
  195.                 {
  196.                        
  197.                         if(judgeUserName(userName) == null)
  198.                         {
  199.                                
  200.                                 System.out.println("输入要借 的书名:");
  201.                                 BufferedReader bufr =
  202.                                                 new BufferedReader(new InputStreamReader(System.in));
  203.                                 String bookName = bufr.readLine();       
  204.                                
  205.                                 boolean flag = searchBook(bookName);
  206.                                 if(flag)
  207.                                 {                               
  208.                                         newUseryesOrNo(userName);                                       
  209.                                 }
  210.                                 else
  211.                                         System.out.println("该书不存在");
  212.                         }
  213.                         else if(judgeUserName(userName) != null)
  214.                         {
  215.                                 User user = judgeUserName(userName);
  216.                                 if(user.getBorrowOrNot() == 1)
  217.                                 {
  218.                                         System.out.println("有书未还,不能借书");
  219.                                         return;
  220.                                        
  221.                                 }
  222.                                 else if(user.getBorrowOrNot() == 0)
  223.                                 {
  224.                                         if(user.getCount() >= 3)
  225.                                         {
  226.                                                 System.out.println("借书次数超过3次,不能再借");
  227.                                                
  228.                                         }
  229.                                         else //可以借书了
  230.                                         {
  231.                                                 System.out.println("输入要借 的书名:");
  232.                                                 BufferedReader bufr =
  233.                                                                 new BufferedReader(new InputStreamReader(System.in));
  234.                                                 String bookName = bufr.readLine();       
  235.                                                
  236.                                                 boolean flag = searchBook(bookName);//看书是否存在
  237.                                                 if(flag)
  238.                                                 {                               
  239.                                                         oldUseryesOrNo(userName);//用户是否借书
  240.                                                        
  241.                                                 }
  242.                                                 else
  243.                                                         System.out.println("该书不存在");                                                                                               
  244.                                         }                                       
  245.                                 }                               
  246.                         }
  247.                 }
  248.                 catch (Exception e)
  249.                 {
  250.                         e.printStackTrace();
  251.                 }               
  252.         }       
  253.         public static void oldUserBorrow(String userName)
  254.         {
  255.                 userList.clear();
  256.                 loadUserList();
  257.                 User user = null;
  258.                 Calendar c = Calendar.getInstance();
  259.                 String time = c.get(Calendar.YEAR)+"/"+c.get(Calendar.MONTH)+"/"+c.get(Calendar.DATE);
  260.                 for(int i = 0; i<userList.size(); i++)
  261.                 {
  262.                          user = (User) userList.get(i);
  263.                         if(user.getUserName().equals(userName))
  264.                         {
  265.                                 user.setTime(time);
  266.                                 user.setBorrowOrNot(1);//改为1表示借书未还
  267.                                 user.setCount(user.getCount()+1);
  268.                                 try
  269.                                 {
  270.                                         saveToTxt(userList);
  271.                                         userList.clear();
  272.                                         System.out.println("借书成功");
  273.                                 }
  274.                                 catch (Exception e)
  275.                                 {
  276.                                         e.printStackTrace();
  277.                                 }                               
  278.                         }                       
  279.                 }
  280.                
  281.         }
  282.         //用户是否曾经借过书
  283.         public static User judgeUserName(String userName)
  284.         {
  285.                 User user = null;
  286.                 userList.clear();
  287.                 loadUserList();
  288.                 for(int i = 0; i<userList.size(); i++)
  289.                 {
  290.                          user = (User) userList.get(i);
  291.                         if(user.getUserName().equals(userName))
  292.                         {
  293.                                 return user;
  294.                                
  295.                         }                       
  296.                 }
  297.                 return null;               
  298.         }       
  299.         //看该书是否存在
  300.         public static boolean searchBook(String bookName) throws Exception
  301.         {
  302.                
  303.                 BufferedReader br = new BufferedReader(new FileReader("book.txt"));
  304.                 boolean flag = false;
  305.                 String line = null;
  306.                 //从文件中读取并
  307.                 while((line = br.readLine())!=null)
  308.                 {                               
  309.                         if(line.equals(bookName))
  310.                         {
  311.                                 flag = true;
  312.                                 break;                                               
  313.                         }                                                                       
  314.                 }
  315.                 br.close();
  316.                 return flag;
  317.                
  318.         }
  319.        
  320.         //借书
  321.         public static void newUseryesOrNo(String userName)throws Exception
  322.         {
  323.                 System.out.println("该书存在,是否要借?(是Y,不是N)");
  324.                 BufferedReader bufr =
  325.                                 new BufferedReader(new InputStreamReader(System.in));
  326.                 String yesOrNo = bufr.readLine();
  327.                
  328.                 if(yesOrNo.equals("Y"))
  329.                 {
  330.                         System.out.println(userName);
  331.                         newUserBorrow(userName);
  332.                        
  333.                 }
  334.                 else if(yesOrNo.equals("N"))
  335.                 {
  336.                         System.out.println("没有借该书");
  337.                        
  338.                 }
  339.                 else
  340.                         System.out.println("输入有误,请按照提示输入");
  341.                
  342.         }
  343.         public static void oldUseryesOrNo(String userName)throws Exception
  344.         {
  345.                 System.out.println("该书存在,是否要借?(是Y,不是N)");
  346.                 BufferedReader bufr =
  347.                                 new BufferedReader(new InputStreamReader(System.in));
  348.                 String yesOrNo = bufr.readLine();
  349.                
  350.                 if(yesOrNo.equals("Y"))
  351.                 {
  352.                         System.out.println(userName);
  353.                         oldUserBorrow(userName);
  354.                        
  355.                 }
  356.                 else if(yesOrNo.equals("N"))
  357.                 {
  358.                         System.out.println("没有借该书");                       
  359.                 }
  360.                 else
  361.                         System.out.println("输入有误,请按照提示输入");
  362.                
  363.         }
  364.         public static void newUserBorrow(String userName) throws Exception
  365.         {
  366.                 //将用户信息添加进去
  367.                 Calendar c = Calendar.getInstance();
  368.                 String time = c.get(Calendar.YEAR)+"/"+c.get(Calendar.MONTH)+"/"+c.get(Calendar.DATE);
  369.                 System.out.println(time);                               
  370.                         System.out.println("第一次借书");
  371.                         User userNew = new User();
  372.                         userNew.setTime(time);
  373.                         userNew.setUserName(userName);
  374.                         userNew.setCount(1);
  375.                         userNew.setBorrowOrNot(1);
  376.                         userList.add(userNew);
  377.                         saveToTxt(userList);
  378.                         userList.clear();
  379.                         System.out.println("借书成功!!!");
  380.                 }       

  381. }
复制代码
回复 使用道具 举报
5.User
  1. package ts;

  2. public class User {
  3.         private String userName;
  4.         private String time;
  5.         private  int count;
  6.         private int borrowOrNot;//借的书是否还了0就是还了,1就是没有还
  7.         User()
  8.         {

  9.                
  10.         }
  11.        
  12.        
  13.         User(String userName, String time, int count)
  14.         {
  15.        
  16.                         this.userName = userName;
  17.                         this.time = time;
  18.                         this.count = count;
  19.         }
  20.         public void setBorrowOrNot( int borrowOrNot )
  21.         {

  22.                 this.borrowOrNot = borrowOrNot;
  23.         }
  24.         public int getBorrowOrNot()
  25.         {
  26.                 return borrowOrNot;
  27.                
  28.         }
  29.         public String getUserName()
  30.         {

  31.                 return userName;
  32.         }
  33.         public void setUserName(String userName)
  34.         {

  35.                 this.userName = userName;
  36.         }
  37.         public String getTime()
  38.         {
  39.                 return time;
  40.                
  41.         }
  42.         public void setTime(String time )
  43.         {
  44.                 this.time = time;
  45.                
  46.         }
  47.         public int getCount()
  48.         {

  49.                 return count;
  50.         }
  51.         public void setCount(int count)
  52.         {
  53.                 this.count = count;
  54.                
  55.         }
  56. }
复制代码
回复 使用道具 举报
这个貌似给的技术分有点低吧?这道题目测不简单
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马