您的位置:首页 > 编程语言 > Java开发

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

2015-07-19 16:45 369 查看
一、项目名称

影碟管理软件

二、软件描述

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

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

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

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

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

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

三、代码

import java.util.Scanner;
import java.util.LinkedList;
import java.util.Iterator;
import java.io.*;

import javax.security.auth.kerberos.DelegationPermission;
public class DiscManager {
//创建一个disc类
public static class Disc{
int discNum;    //编号
String discName;    //名称
String discStatus;    //出租状态
public Disc(){
}
public Disc(int num,String name,String status){
this.discNum=num;
this.discName=name;
this.discStatus=status;
}
public void setNum(int num){
this.discNum=num;
}
public void setName(String name){
this.discName=name;
}
public void setStatus(String status){
this.discStatus=status;
}
public void printDiscInfo(){
System.out.println(this.discNum+" "+this.discName+" "+this.discStatus);
}
}
//读取文件到列表
public static LinkedList<Disc> fileToList(File file)throws IOException{
LinkedList<Disc> myDisc=new LinkedList<Disc>();
if(!file.exists()){
System.out.println("读取文件不存在,请检查!");
}else{
BufferedReader br=new BufferedReader(
new InputStreamReader(
new FileInputStream(file)));
String line;
while((line=br.readLine())!=null){
Disc tempDisc=new Disc();
tempDisc.setNum(Integer.parseInt(line));
if((line=br.readLine())!=null){
tempDisc.setName(line);
}
if((line=br.readLine())!=null){
tempDisc.setStatus(line);
}
myDisc.add(tempDisc);
}
br.close();
}
return myDisc;
}

//输出列表
public static void printDiscList(LinkedList<Disc> list){
Iterator<Disc> it=list.iterator();
while(it.hasNext()){
it.next().printDiscInfo();
System.out.println();
}
}

//输出列表信息到文件
public static void listToFile(LinkedList<Disc> list,File file)throws IOException{
if(!file.exists()){
file.createNewFile();
}
PrintWriter pw=new PrintWriter(file);
Iterator<Disc> it=list.iterator();
while(it.hasNext()){
Disc tempDisc=it.next();
pw.println(tempDisc.discNum+"");
pw.println(tempDisc.discName);
pw.println(tempDisc.discStatus);
}
pw.close();
}

//添加影碟信息
public static void addDiscToList(LinkedList<Disc> list){
Scanner scan=new Scanner(System.in);
System.out.println("请输入你要添加影碟的名称:");
String discName=scan.nextLine();
String discStatus="未出租";
int discNum=list.size()+1;
Disc additionDisc=new Disc(discNum,discName,discStatus);
list.add(additionDisc);
//scan.close();
System.out.println("影碟信息添加完毕!");
}
//删除影碟信息
public static void delDiscToList(LinkedList<Disc> list){
Scanner scan=new Scanner(System.in);
System.out.println("请输入要删除的影碟编号:");
int number=scan.nextInt();
int counter=-1;
Iterator<Disc> it=list.iterator();
Disc tempDisc;
while(it.hasNext()){
tempDisc=it.next();
counter++;
if(tempDisc.discNum==number){
break;
}
}
if(counter>=0){
list.remove(counter);
}else{
System.out.println("影碟为空!");
}
//scan.close();
}

//修改影碟信息
public static void modifyDisc(LinkedList<Disc> list){
Scanner scan=new Scanner(System.in);
System.out.println("请输入要修改的影碟编号:");
int number=scan.nextInt();
Iterator<Disc> it=list.iterator();
while(it.hasNext()){
Disc tempDisc=it.next();
if(tempDisc.discNum==number){
System.out.println("你要修改的碟片信息如下:");
System.out.println(tempDisc.discNum+"  "+tempDisc.discName+"  "+tempDisc.discStatus);
System.out.println("如果修改编号请输入a,修改名字请输入b,修改出租状态请输入c.");
String chooseChar=scan.nextLine();
while(!(chooseChar.equals("a"))&&(!chooseChar.equals("b"))&&(!chooseChar.equals("c"))){
System.out.println("输入有误,修改编号请输入a,修改名字请输入b,修改出租状态请输入c.");
chooseChar=scan.nextLine();
}
if(chooseChar.equals("a")){
System.out.println("请输入新编号:");
tempDisc.setNum(scan.nextInt());
System.out.println("编号修改完成!");
}
if(chooseChar.equals("b")){
System.out.println("请输入新名称:");
tempDisc.setName(scan.nextLine());
System.out.println("名称修改完成!");
}
if(chooseChar.equals("c")){
String newDiscStatus=(tempDisc.discStatus.equals("未出租")?"已出租":"未出租");
tempDisc.setStatus(newDiscStatus);
System.out.println("出租状态修改完成!");
}
System.out.println("修改后的碟片信息为:"+tempDisc.discNum+"  "+tempDisc.discName+"  "+tempDisc.discStatus);
break;
}
}
}

//主界面显示
public static void showMainScreen(){
System.out.println("文件读取完毕!");
System.out.println("*********************************************************");
System.out.println("*********************影片出租管理系统v1.0**********************");
System.out.println("***********************Author:GTS************************");
System.out.println("*********************************************************");
System.out.println("请选择:");
System.out.println("1:影片管理      2、退出系统");
System.out.println();
}

//二级菜单界面
public static void showMenu(){
System.out.println("*********************影片出租管理系统v1.0**********************");
System.out.println("请选择操作选项");
System.out.print("1、显示碟片信息");
System.out.print("   2、增加碟片信息");
System.out.print("   3、修改碟片信息");
System.out.print("   4、删除碟片信息");
System.out.print("   5、退出系统");
System.out.println();
}

public static void main(String[] args)throws IOException{
File file=new File("F:\\霜\\STUDY\\lab\\java\\mydisc.txt");
LinkedList<Disc> discShop=fileToList(file);
showMainScreen();
Scanner scan=new Scanner(System.in);
int chooseNum;
while((chooseNum=scan.nextInt())!=1&&(chooseNum!=2)){
System.out.println("请重新输入选项序号(1或2)");
}
if(chooseNum==1){
showMenu();
while((chooseNum=scan.nextInt())!=5){
switch(chooseNum){
case 1:
printDiscList(discShop);
showMenu();
break;
case 2:
addDiscToList(discShop);
System.out.println("添加完成!");
showMenu();
break;
case 3:
modifyDisc(discShop);
showMenu();
break;
case 4:
delDiscToList(discShop);
System.out.println("删除完成!");
showMenu();
break;
default:
break;
}
}
System.out.println("*********************************************************");
System.out.println("*********************影片出租管理系统v1.0**********************");
System.out.println("***********************Author:GTS************************");
System.out.println("************************已退出系统!**************************");
}else{
System.out.println("退出系统!");
}
listToFile(discShop, file);
/*
addDiscToList(discShop);
printDiscList(discShop);
delDiscToList(discShop);
printDiscList(discShop);
listToFile(discShop, file);
*/
//printDiscList(discmg.fileToList(file));

}

}


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

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

4、程序只能简单实现从主菜单到二级菜单,而如何在流程上,当进入到二级菜单操作后返回主菜单再进入二级菜单如此反复的操作上目前还没有考虑到简便的实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: