Java实训项目--影碟管理软件

一、项目名称

影碟管理软件

二、软件描述

该影碟管理程序可以只在控制台上运行,可以不需要界面。该软件的功能有如下功能:

A:可以查看该店铺的所有影碟的信息;

B:可以添加新的影碟信息;

C:可以修改现有影碟信息;

D:可以删除某个影碟信息;

E:所有影碟的数据都保存在硬盘的某个txt文件中,在修改完信息后,硬盘中的该文件也能同步改变。

三、代码

  1 import java.util.Scanner;
  2 import java.util.LinkedList;
  3 import java.util.Iterator;
  4 import java.io.*;
  5
  6 import javax.security.auth.kerberos.DelegationPermission;
  7 public class DiscManager {
  8     //创建一个disc类
  9     public static class Disc{
 10         int discNum;    //编号
 11         String discName;    //名称
 12         String discStatus;    //出租状态
 13         public Disc(){
 14         }
 15         public Disc(int num,String name,String status){
 16             this.discNum=num;
 17             this.discName=name;
 18             this.discStatus=status;
 19         }
 20         public void setNum(int num){
 21             this.discNum=num;
 22         }
 23         public void setName(String name){
 24             this.discName=name;
 25         }
 26         public void setStatus(String status){
 27             this.discStatus=status;
 28         }
 29         public void printDiscInfo(){
 30             System.out.println(this.discNum+" "+this.discName+" "+this.discStatus);
 31         }
 32     }
 33     //读取文件到列表
 34     public static LinkedList<Disc> fileToList(File file)throws IOException{
 35         LinkedList<Disc> myDisc=new LinkedList<Disc>();
 36         if(!file.exists()){
 37             System.out.println("读取文件不存在,请检查!");
 38         }else{
 39             BufferedReader br=new BufferedReader(
 40                     new InputStreamReader(
 41                             new FileInputStream(file)));
 42             String line;
 43             while((line=br.readLine())!=null){
 44                 Disc tempDisc=new Disc();
 45                 tempDisc.setNum(Integer.parseInt(line));
 46                 if((line=br.readLine())!=null){
 47                     tempDisc.setName(line);
 48                 }
 49                 if((line=br.readLine())!=null){
 50                     tempDisc.setStatus(line);
 51                 }
 52                 myDisc.add(tempDisc);
 53             }
 54             br.close();
 55         }
 56         return myDisc;
 57     }
 58
 59
 60     //输出列表
 61     public static void printDiscList(LinkedList<Disc> list){
 62         Iterator<Disc> it=list.iterator();
 63         while(it.hasNext()){
 64             it.next().printDiscInfo();
 65             System.out.println();
 66         }
 67     }
 68
 69     //输出列表信息到文件
 70     public static void listToFile(LinkedList<Disc> list,File file)throws IOException{
 71         if(!file.exists()){
 72             file.createNewFile();
 73         }
 74         PrintWriter pw=new PrintWriter(file);
 75         Iterator<Disc> it=list.iterator();
 76         while(it.hasNext()){
 77             Disc tempDisc=it.next();
 78             pw.println(tempDisc.discNum+"");
 79             pw.println(tempDisc.discName);
 80             pw.println(tempDisc.discStatus);
 81         }
 82         pw.close();
 83     }
 84
 85     //添加影碟信息
 86     public static void addDiscToList(LinkedList<Disc> list){
 87         Scanner scan=new Scanner(System.in);
 88         System.out.println("请输入你要添加影碟的名称:");
 89         String discName=scan.nextLine();
 90         String discStatus="未出租";
 91         int discNum=list.size()+1;
 92         Disc additionDisc=new Disc(discNum,discName,discStatus);
 93         list.add(additionDisc);
 94         //scan.close();
 95         System.out.println("影碟信息添加完毕!");
 96     }
 97     //删除影碟信息
 98     public static void delDiscToList(LinkedList<Disc> list){
 99         Scanner scan=new Scanner(System.in);
100         System.out.println("请输入要删除的影碟编号:");
101         int number=scan.nextInt();
102         int counter=-1;
103         Iterator<Disc> it=list.iterator();
104         Disc tempDisc;
105         while(it.hasNext()){
106             tempDisc=it.next();
107             counter++;
108             if(tempDisc.discNum==number){
109                 break;
110             }
111         }
112         if(counter>=0){
113             list.remove(counter);
114         }else{
115             System.out.println("影碟为空!");
116         }
117         //scan.close();
118     }
119
120     //修改影碟信息
121     public static void modifyDisc(LinkedList<Disc> list){
122         Scanner scan=new Scanner(System.in);
123         System.out.println("请输入要修改的影碟编号:");
124         int number=scan.nextInt();
125         Iterator<Disc> it=list.iterator();
126         while(it.hasNext()){
127             Disc tempDisc=it.next();
128             if(tempDisc.discNum==number){
129                 System.out.println("你要修改的碟片信息如下:");
130                 System.out.println(tempDisc.discNum+"  "+tempDisc.discName+"  "+tempDisc.discStatus);
131                 System.out.println("如果修改编号请输入a,修改名字请输入b,修改出租状态请输入c.");
132                 String chooseChar=scan.nextLine();
133                 while(!(chooseChar.equals("a"))&&(!chooseChar.equals("b"))&&(!chooseChar.equals("c"))){
134                     System.out.println("输入有误,修改编号请输入a,修改名字请输入b,修改出租状态请输入c.");
135                     chooseChar=scan.nextLine();
136                 }
137                 if(chooseChar.equals("a")){
138                     System.out.println("请输入新编号:");
139                     tempDisc.setNum(scan.nextInt());
140                     System.out.println("编号修改完成!");
141                 }
142                 if(chooseChar.equals("b")){
143                     System.out.println("请输入新名称:");
144                     tempDisc.setName(scan.nextLine());
145                     System.out.println("名称修改完成!");
146                 }
147                 if(chooseChar.equals("c")){
148                     String newDiscStatus=(tempDisc.discStatus.equals("未出租")?"已出租":"未出租");
149                     tempDisc.setStatus(newDiscStatus);
150                     System.out.println("出租状态修改完成!");
151                 }
152                 System.out.println("修改后的碟片信息为:"+tempDisc.discNum+"  "+tempDisc.discName+"  "+tempDisc.discStatus);
153                 break;
154             }
155         }
156     }
157
158
159     //主界面显示
160     public static void showMainScreen(){
161         System.out.println("文件读取完毕!");
162         System.out.println("*********************************************************");
163         System.out.println("*********************影片出租管理系统v1.0**********************");
164         System.out.println("***********************Author:GTS************************");
165         System.out.println("*********************************************************");
166         System.out.println("请选择:");
167         System.out.println("1:影片管理      2、退出系统");
168         System.out.println();
169     }
170
171     //二级菜单界面
172     public static void showMenu(){
173         System.out.println("*********************影片出租管理系统v1.0**********************");
174         System.out.println("请选择操作选项");
175         System.out.print("1、显示碟片信息");
176         System.out.print("   2、增加碟片信息");
177         System.out.print("   3、修改碟片信息");
178         System.out.print("   4、删除碟片信息");
179         System.out.print("   5、退出系统");
180         System.out.println();
181     }
182
183     public static void main(String[] args)throws IOException{
184         File file=new File("F:\\霜\\STUDY\\lab\\java\\mydisc.txt");
185         LinkedList<Disc> discShop=fileToList(file);
186         showMainScreen();
187         Scanner scan=new Scanner(System.in);
188         int chooseNum;
189         while((chooseNum=scan.nextInt())!=1&&(chooseNum!=2)){
190             System.out.println("请重新输入选项序号(1或2)");
191         }
192         if(chooseNum==1){
193             showMenu();
194             while((chooseNum=scan.nextInt())!=5){
195                 switch(chooseNum){
196                 case 1:
197                     printDiscList(discShop);
198                     showMenu();
199                     break;
200                 case 2:
201                     addDiscToList(discShop);
202                     System.out.println("添加完成!");
203                     showMenu();
204                     break;
205                 case 3:
206                     modifyDisc(discShop);
207                     showMenu();
208                     break;
209                 case 4:
210                     delDiscToList(discShop);
211                     System.out.println("删除完成!");
212                     showMenu();
213                     break;
214                 default:
215                     break;
216                 }
217             }
218             System.out.println("*********************************************************");
219             System.out.println("*********************影片出租管理系统v1.0**********************");
220             System.out.println("***********************Author:GTS************************");
221             System.out.println("************************已退出系统!**************************");
222         }else{
223             System.out.println("退出系统!");
224         }
225         listToFile(discShop, file);
226         /*
227         addDiscToList(discShop);
228         printDiscList(discShop);
229         delDiscToList(discShop);
230         printDiscList(discShop);
231         listToFile(discShop, file);
232         */
233         //printDiscList(discmg.fileToList(file));
234
235     }
236
237 }

注:1、用it迭代器的时候,迭代对象为Disc,it.next()可以使用Disc类的方法为何不可以直接读取属性?
2、Scanner类获取输入时如果用中文经常会出错,而用英文就没有问题。

3、当Scanner对象用close()关闭时,有时候对下次输入会产生影响,甚至于报异常,不关闭时候却没有问题。

4、程序只能简单实现从主菜单到二级菜单,而如何在流程上,当进入到二级菜单操作后返回主菜单再进入二级菜单如此反复的操作上目前还没有考虑到简便的实现。

时间: 2024-10-29 19:11:24

Java实训项目--影碟管理软件的相关文章

java实训项目-模拟自动挡汽车

Java程序设计课程设计项目名称 ? 项目名称:自动挡汽车操作模拟系统的设计与实现 英文名称:Design and Implementation of Operation Simulation System aboutAutomatic Vehicle 1.功能描述: 1)汽车的操作正常为启动(或熄火).挂档.制动.油门控制等操作: 2)挂档实现自动挡的4档操作,既驻车档.倒车档.空档.行车档: 3)使用图形界面进行操作,汽车的状态在图形界面上显示出来: 4)操作流程不合理,要有相应的控制: 5

山西高平地域文化导入美术设计实训项目的实践

地域文化,是指某个地域的人们在特定的范围内,在自然环境的基础上,在长期的生产生活中创造的.人类活动的产物.山西高平是神农炎帝的故里,长平之战的发生地,是一个有着很深文化积淀的新兴城市,行政区域是国土面积的万分之一,却浓缩了中国五千年文化的精髓.本文通过对山西高平丰富的历史文化资源的调查研究,探讨如何将地域文化元素导入中职美术设计专业的实训项目教学过程,论证典型地域文化元素在中职美术设计教育中的独特作用,并以此作为教学实训素材,依托带有典型地域文化特征的企业真实案例,结合教育教学实践,探索中职美术

【中软实习】之实习实训项目日志

应学校的要求,我们利用暑假及9月份在中软完成为期2个月的实习实训,特将每天的项目情况记录如下,用以备忘之需. [Day0728]:用Java完成一个猜拳小游戏 [Day0729]:用Swing技术完成一个登录模块

家乡の战队实训项目博客二

家乡の战队:黄金点项目博客二 1.团队风采 组长:唐宇      16012020 队员:王松鹤  16012016 刘计     16012024 庞啸天 16012011 2.码云地址 https://gitee.com/wcnma/home_troops/tree/master 3. 团队分工 唐宇:团队组长,灵魂核心,领导组员完成java任务,是组员的导向标 评分:9 王松鹤:团队技术担当,高端技术人才,完成主要的java项目 评分:10 刘计:掌握了java的基础知识,擅长与客户交谈,

分享3个JAVA实操项目视频

[JAVA] 实战高可用的JAVA微服务架构-Spring Cloud系列 小马哥JAVA微服务架构实践视频教程 百度网盘: https://pan.baidu.com/s/11dncR9yiOkyFL9avaf21rg 密码b8s5 [JAVA] 全力打造JAVA高性能项目 Netty+SpringBoot+Nginx+FastDFS技术聚合 JAVA高性能后台项目 百度网盘: https://pan.baidu.com/s/1XdC0wjEHRVWe8owYtmlzPg 密码7rqj [JA

HTML+CSS网站实训项目总结

  学完HTML+CSS,迎来的最重要的是网站实训和答辩的准备.          第一次的项目分配,因剪刀石头布的手气,得到第二名的机会,却实在不怎么了解各个网站,(当然除了最熟悉的淘宝),选择了组员的要求——国美在线.          国美在线,是国美电器唯一官方商城,中国领先的专业家电网购平台.          这是第一次做的团队小项目,也是第一次以组长的身份和组员进行磨合和合作.          于组长的身份,这是最大的感受除了开始拿到项目的时候的小小激动,就是怕分工不恰当和组织不

中山大学软件工程专业初级实训-会议议程管理Agenda

刚刚经历了两个星期的中级实训,那么这次实训的话毫无疑问地比大一初级实训简单了.在这里的话呢,还要感谢许多前辈给的神器.这里首先感谢@卡帕kalper前辈和@jayjiahua前辈.下面给出两个中级实训的神器.那么经历了一次相对来说比较轻松的实训之后呢,感觉大一时候的初级实训真是太辛苦了,而且的话缺少神器.所以决定向以上两位大神学习,给迷茫中的学弟学妹们一些指引,这里借用前辈的一句话,因为平时在完成一些任务的时候,深刻感受到前人经验带给自己的便利,在此我也分享下自己的东西,希望能给后人乘荫吧-!

java实训一——词频统计

---恢复内容开始--- 驾驶员:葛晨延(16012010) 领航员:张广哲(16012007) 码云:https://gitee.com/happywindmannn/GCYshixun1/tree/master 实训过程照片: 1 import java.io.*; 2 import java.util.*; 3 import java.io.BufferedReader; 4 import java.io.FileReader; 5 import java.util.ArrayList;

自然语言交流系统 phxnet团队 创新实训 项目博客 (十)

关于本项目中使用到的庖丁分词的总结: Paoding 详细介绍 庖丁中文分词库是一个使用Java开发的,可结合到Lucene应用中的,为互联网.企业内部网使用的中文搜索引擎分词组件.Paoding填补了国内中文分词方面开源组件的空白,致力于此并希翼成为互联网网站首选的中文分词开源组件. Paoding中文分词追求分词的高效率和用户良好体验. Paoding's Knives 中文分词具有极 高效率 和 高扩展性 .引入隐喻,采用完全的面向对象设计,构思先进. 高效率:在PIII 1G内存个人机器