java DVD管理器编程

java DVD管理器编程
java DVD管理器编程

package DVD管理器;

import java.text.*;

import java.util.Date;

import java.util.Scanner;

public class DVDSet {

public String[] name=new String[50]; //存储DVD名称

public int[] stade=new int[50];//存储借出状态0:已借出1:可借

public String[] date=new String[50];//存储借出日期

public int[] count=new int[50];//存储借出次数

}

class DVDMgr {

/**

* @param args

* 主菜单输出方法、借出/新增/查看/删除/借出/归还DVD方法、排行榜输出方法

*/

static DVDSet dvd=new DVDSet(); //创建DVD对象

static Scanner input=new Scanner(System.in);

public static void startMenu(){ //主菜单输出并根据输入判断要实现的功能

System.out.println("欢迎使用迷你DVD 管理器");

System.out.println("-------------------------------------");

System.out.println("0. 借出排行");

System.out.println("1. 新增DVD");

System.out.println("2. 查看DVD");

System.out.println("3. 删除DVD");

System.out.println("4. 借出DVD");

System.out.println("5. 归还DVD");

System.out.println("6. 退出");

System.out.print("--------------------------------------\n");

System.out.print("请选择:");

int choice=input.nextInt();

switch (choice) {

case 0:

list(); //调用借出排行榜的方法输出排行榜

break;

case 1:

add(); //调用新增DVD的方法

break;

case 2:

search(); //调用查看DVD的方法

break;

case 3:

delete(); //调用删除DVD的方法

break;

case 4:

lend(); //调用借出DVD的方法

break;

case 5:

returnDVD(); //调用归还DVD的方法

break;

case 6:

System.out.println("谢谢使用,欢迎再来"); //退出

break;

}

}

public static void returnMain(){ //输入0返回主菜单方法System.out.print("输入0返回:");

if (input.nextInt()==0) {

startMenu();

}else{

System.out.println("输入错误,请重新输入:");

returnMain();

}

}

public static void add(){ //实现新增DVD的方法System.out.println("---> 新增DVD");

System.out.print("请输入DVD名字:");

String name=input.next();

for (int i = 0; i < https://www.360docs.net/doc/284423753.html,.length; i++) {

if (https://www.360docs.net/doc/284423753.html,[i]==null) {

https://www.360docs.net/doc/284423753.html,[i]=name;

dvd.stade[i]=1;

System.out.println("新增"+name+"成功!");

break;

}

}

System.out.println("********************************");

returnMain();

}

public static void search(){ //实现查看dvd方法System.out.println("--->查看DVD");

System.out.println("序号\t状态\t名称\t借出日期");

for (int i = 1; i

if (https://www.360docs.net/doc/284423753.html,[i]==null) {

break;

}else{

if (dvd.stade[i]==0) {

System.out.println(i+"\t已借出\t"+https://www.360docs.net/doc/284423753.html,[i]+"\t"+dvd.date[i]);

}else{

System.out.println(i+"\t可借\t"+https://www.360docs.net/doc/284423753.html,[i]+"\t"+dvd.date[i]);

}

}

}

System.out.println("********************************");

returnMain();

}

public static void delete(){ //实现删除DVD方法System.out.println("--->删除DVD");

System.out.print("请输入DVD名称:");

String name=input.next();

for (int i = 0; i

if (https://www.360docs.net/doc/284423753.html,[i]!=null&https://www.360docs.net/doc/284423753.html,[i].equalsIgnoreCase(name)&&dvd.stade[i]==1) { int j=i;

while (https://www.360docs.net/doc/284423753.html,[j+1]!=null) {

https://www.360docs.net/doc/284423753.html,[j]=https://www.360docs.net/doc/284423753.html,[j+1];

dvd.stade[j]=dvd.stade[j+1];

dvd.date[j]=dvd.date[j+1];

j++;

}

https://www.360docs.net/doc/284423753.html,=null;

dvd.stade=null;

https://www.360docs.net/doc/284423753.html,=null;

System.out.println("删除《"+name+"》成功!");

}if(https://www.360docs.net/doc/284423753.html,[i]!=null&https://www.360docs.net/doc/284423753.html,[i].equalsIgnoreCase(name)&&dvd.stade[i]==0){

System.out.println("《"+name+"》"+"已经借出,不可以删除!");

break;

}else{

System.out.println("没有该DVD信息!");

}

}

}

public static void lend(){ //实现借出DVD方法System.out.println("--->借出DVD");

System.out.println("请输入要借出的DVD名称:");

String want=input.next();

for (int i = 0; i

if (https://www.360docs.net/doc/284423753.html,[i].equals(want)&&dvd.stade[i]==1) {

dvd.stade[i]=0;

System.out.println("请输入借出日期(格式为:年-月-日):");

dvd.date[i]=input.next();

System.out.println("借出成功!");

dvd.count[i]++;

break;

}if (https://www.360docs.net/doc/284423753.html,[i].equals(want)&&dvd.stade[i]==0) {

System.out.println("该DVD已被借出。");

break;

}

}

System.out.println("*******************************");

returnMain();

}

public static void returnDVD(){ //实现归还DVD并计算佣金long yongjin=0;

System.out.println("请输入DVD名称:");

String want=input.next();

for (int i = 0; i < https://www.360docs.net/doc/284423753.html,.length; i++) {

if(https://www.360docs.net/doc/284423753.html,[i].equals(want)&&dvd.stade[i]==0){

dvd.stade[i]=1;

System.out.println("请输入归还日期(格式为:年-月-日):");

String redate=input.next();

yongjin=charge(dvd.date[i],redate);

System.out.println(want+"归还成功!");

System.out.println("借出日期为:"+dvd.date);

System.out.println("归还日期为:"+redate);

System.out.println("应付租金:"+yongjin+"元");

break;

}if (https://www.360docs.net/doc/284423753.html,[i].equals(want)&&dvd.stade[i]==1) {

System.out.println("该DVD未被借出,无法继续操作!");

break;

}else{

System.out.println("未找到该DVD信息!");

}

}

System.out.println("****************************");

returnMain();

}

public static long charge(String date1,String date2){ //实现计算日期差的方法long charge=0;

SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");

try {

Date d1=sd.parse(date1);

Date d2=sd.parse(date2);

charge=(d2.getTime()-d1.getTime())/(24*60*60*1000);

} catch (ParseException e) {

e.printStackTrace();

}

return charge;

}

public static void list(){ //实现排行榜输出功能String [] newname=new String[50];

int [] newcount=new int[50];

for (int i = 0; i < https://www.360docs.net/doc/284423753.html,.length; i++) {

newname[i]=https://www.360docs.net/doc/284423753.html,[i];

newcount[i]=dvd.count[i];

}

for (int i = 0; i < newname.length; i++) {

for (int j = i+1; j < newname.length; j++) {

if (newcount[i]>newcount[j]) {

int temp=newcount[i];

newcount[i]=newcount[j];

newcount[j]=temp;

String tempname=newname[i];

newname[i]=newname[j];

newname[j]=tempname;

}

}

}

System.out.println("排行榜:");

System.out.println("***************************");

System.out.println("次数\t名称");

for (int i =newname.length-1; i >=0 ; i--) {

if (newname[i]!=null) {

System.out.println(newcount[i]+"\t《"+newname[i]+"》");

}

}

System.out.println("*******************************");

returnMain();

}

}

/*public class Test {

/**

* @param args

* 测试类运行

@SuppressWarnings("static-access")

public static void main(String[] args) {

DVDMgr dvd=new DVDMgr(); //创建一个DVDMgr对象

dvd.startMenu(); //调用主菜单输出方法}*/

java笔记4(布局管理器常用组件qq聊天界面记事本)

Java笔记4(布局管理器、常用组件、qq聊天界面、记事本) 文件结构Java代码布局管理器Demo8_1.java package com.test1; import javax.swing.JButton; import javax.swing.JFrame; public class Demo8_1 extends JFrame //继承JFrame { /** * @param args */ public static void main(String[] args) { Demo8_1 demo8_1=new Demo8_1(); } //把需要的组件定义在这里JButton jb1=null; //定义一个按钮//构造函数public Demo8_1() { ////JFrame是一个顶层容器类(可以添加其它swing组件的类) //JFrame jf=new JFrame(); //给窗体设置标题 this.setTitle("Hello world"); //设置大小,按像素this.setSize(200, 200); //设置初始位置 this.setLocation(100,200); //创建一个按钮 jb1=new JButton("我是一个按钮!"); //添加JButton组件this.add(jb1); //设置当关闭窗口时,保证JVM也退出 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示this.setVisible(true); } } 常用组件常Demo8_2.java /* * BorderLayout演示*

三十三、Java图形化界面设计——布局管理器之null布局(空布局)

三十三、Java图形化界面设计——布局管理器之null布局(空布局) 一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局。 操作方法: 1)首先利用setLayout(null)语句将容器的布局设置为null布局(空布局)。 2)再调用组件的setBounds(int x, int y, int width,int height)方法设置组件在容器中的大小和位置,单位均为像素。 x为控件左边缘离窗体左边缘的距离 y为控件上边缘离窗体上边缘的距离 width为控件宽度 height为控件高度 实例:使用空布局精确定位组件的位置 // NullLayoutDemo.java

import java.awt.*; import javax.swing.*; public class NullLayoutDemo{ JFrame fr; JButton a,b; NullLayoutDemo() { fr = new JFrame(); fr.setBounds(100,100,250,150); //设置窗体为空布局 fr.setLayout(null); a=new JButton("按钮a"); b=new JButton("按钮b"); fr.getContentPane().add(a); //设置按钮a的精确位置 a.setBounds(30,30,80,25);

fr.getContentPane().add(b); b.setBounds(150,40,80,25); fr.setTitle("NullLayoutDemo"); fr.setVisible(true); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fr.setLocationRelativeTo(null); //让窗体居中显示} public static void main(String args[]){ new NullLayoutDemo(); } } 程序运行结果如下:

JAVA布局管理器

前言 随着Internet的飞速发展,Java技术也得到了越来越广泛的应用。而无论我们是采用J2SE、J2EE还是J2ME,GUI都是不能回避的问题。现在的应用软件越来越要求界面友好、功能强大而又使用简单。而众所周知,在Java中进行GUI设计相对于其跨平台、多线程等特性的实现要复杂和麻烦许多。这也是很多Java 程序员抱怨的事情。但GUI已经成为程序发展的方向,所以我们也必须了解Java 的GUI设计方法和特点。其实,采用Java提供的布局管理器接口和相应的布局管理类,我们也可以做出相当漂亮的界面来,当然实现起来肯定要比VB麻烦许多。本文试图通过自己的开发经历介绍一些具体的应用实例,希望能给那些曾经象我一样苦闷的Java痴迷者一些帮助。 2 Java中的布局管理器 2.1 为什么要使用布局 在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,我们就需要使用布局管理器。比如说,设计一个简单的计算器,或一个文本编辑器等等。这些组件是让JVM 自己任意安排呢?还是按照一定的位置关系进行规范的安排呢?当然应该选择后者。将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。在Java中,布局由布局管理器 (LayoutManager) 来管理。那么,我们在什么时候应该使用布局管理器?应选择哪种布局管理器?又该怎样使用布局管理器呢? 如果你写的是GUI程序,在使用AWT/Swing组件时就不应硬性设置组件的大小和位置,而应该使用Java的布局管理器(LayoutManager)来设置和管理可视组件的大小和位置,否则就有可能造成布局混乱。不信,你可以新建一个Frame(或JFrame),通过setBounds()方法往其中添加几个Button(或JButton),一旦你将窗体拉大或缩小时,你会发现组件的排列完全不是按你所预想的那样。为了解决这个问题,即当窗体(或容器)缩放时,组件位置也随之合理调整,我们就需要使用布局管理器。 为此,我们首先要知道Java的布局方式,Java提供的API中有些什么布局管理器,它们的布局特点是什么。 2.2 Java的布局方式 我们都知道,Java的GUI界面定义是由AWT类包和Swing类包来完成的。它在布局管理上采用了容器和布局管理分离的方案。也就是说,容器只管将其他组件放入其中,而不管这些组件是如何放置的。对于布局的管理交给专门的布局管理器类(LayoutManager)来完成。 现在我们来看Java中布局管理器的具体实现。我们前面说过,Java中的容器类(Container),它们只管加入组件(Component),也就是说,它只使用自己的

java布局管理

一、实验目的:(详见指导书,宋体小四) 掌握Java图形Swing组件和布局管理器的使用; 掌握使用Java事件处理机制的使用。 掌握图形界面的各种控件的使用,如:标签、文本框、按钮、复选框、列表框、窗框等。 二、实验要求:(详见指导书,宋体小四) 1.采用布局管理器进行界面的布局; 2. 学会对不同的事件用相应的事件处理器; 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提材示, 并给出解决办法。(附运行界面、源代码)。 三、实验内容及过程:(宋体小四,) 1.编写Application程序,在JFrame中加入2个按钮(JButton)和1个标签 (Label),单击两个按钮,显示按钮的标签于Label。 过程:首先建立一个主类,让主类继承JFrame 类实现 ActionListener 接口。然后在主类中声明变量JButton ,JPanel。创建一个面板panel然后在创建两个按钮,面板使用流式布局,然后将两个按钮添加到面板中,再将面板添加到窗体的上部。然后在建立一个标签,将标签添加到窗体的下方。最后要在两个按钮失眠分别添加监听器,保证当触动按钮时按钮上的字体能够出现在标签上。 2.在JApplet中加入1个文本框,1个文本区,每次在文本框中输入文本,回车后将文本添加到文本区的最后一行。 过程:首先创建一个窗体,窗体里插入一个文本框和一个文本区,分别将文本框放在窗体的上方,文本区放在窗体的下方。重点就是在文本框上添加一个键盘监听器,保证当触动Enter键时能够将文本框中的内容复制到文本区中即可。 3.设计一个简单计算器,如下图所示。在“操作数”标签右侧的两个文本框输入操作数,当单击操作符+,-,×,÷按钮时,对两个操作数进行运算并将

GridBagLayout(网格布局管理器)结构分析及功能使用详解

java.awt 类 GridBagLayout https://www.360docs.net/doc/284423753.html,ng.Object java.awt.GridBagLayout 所有已实现的接口: LayoutManager, LayoutManager2, Serializable public class GridBagLayout extends Object implements LayoutManager2, Serializable GridBagLayout类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。每个GridBagLayout对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域。 每个由GridBagLayout管理的组件都与GridBagConstraints的实例相关联。Constraints 对象指定组件的显示区域在网格中的具体放置位置,以及组件在其显示区域中的放置方式。除了Constraints 对象之外,GridBagLayout还考虑每个组件的最小大小和首选大小,以确定组件的大小。 网格的总体方向取决于容器的ComponentOrientation属性。对于水平的从左到右的方向,网格坐标(0,0) 位于容器的左上角,其中X 向右递增,Y 向下递增。对于水平的从右到左的方向,网格坐标(0,0) 位于容器的右上角,其中X 向左递增,Y 向下递增。 为了有效使用网格包布局,必须自定义与组件关联的一个或多个GridBagConstraints对象。可以通过设置一个或多个实例变量来自定义GridBagConstraints对象: GridBagConstraints.gridx、GridBagConstraints.gridy 指定包含组件显示区域的前导角的单元,在此显示区域中,位于网格原点 的单元地址是 gridx = 0, gridy = 0。对于水平的从左到右的布局,组件的前导角是其左上角。对于水平的从右到左的布局,组件的前导角是 其右上角。使用 GridBagConstraints.RELATIVE(默认值),指定会将组件直接放置在之前刚添加到容器中的组件的后面(沿 X 轴向为 gridx 或Y 轴向为 gridy)。 GridBagConstraints.gridwidth、GridBagConstraints.gridheight 指定组件的显示区域中行(针对 gridwidth)或列(针对 gridheight)中的单元数。默认值为 1。使用 GridBagConstraints.REMAINDER 指定组件的显示区域,该区域的范围是从 gridx 到该行(针对 gridwidth)中的最后一个单元,或者从 gridy 到该列(针对 gridheight)中的最后一个单元。使用 GridBagConstraints.RELATIVE 指定组件的显示区域,该

Java_swing布局详解(附示例图)

当选择使用JPanel和顶层容器的content pane时,需要考虑布局管理。JPanel缺省是初始化一个FlowLayout,而content pane缺省是初始化一个BorderLayout。 下面将分别介绍几种最常用的布局管理器:FlowLayout、BorderLayout、BoxLayout、CardLayout、GridLayout和GridBagLayout。 代码演示 每一个布局管理器都会有一个代码演示,xxxLayoutDemo.java(见附件)。这些文件主要有三个方法组成: addComponentsToPane()提供布局逻辑(依据不同的布局管理器和UI内容)。 Java代码 1public static void addComponentsToPane(Container pane) {。。。} 2/** 3*createAndShowGUI()实例化一个JFrame,通过它的ContentPane加载布局逻辑内容。 4*/ 5private static void createAndShowGUI() { 6// Create and set up the window. 7JFrame frame = new JFrame("FlowLayoutDemo"); 8frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 9// Set up the content pane. 10addComponentsToPane(frame.getContentPane()); 11// Display the window. 12frame.pack(); 13frame.setVisible(true); 14} 15//main()程序入口,单独起一个线程,实例化UI。 16public static void main(String[] args) {

二十九、Java图形化界面设计——布局管理器之FlowLayout(流式布局)

二十九、Java图形化界面设计——布局管理器之FlowLayout (流式布局) 前文讲解了JFrame、JPanel,其中已经涉及到了空布局的使用。Java虽然可以以像素为单位对组件进行精确的定位,但是其在不同的系统中将会有一定的显示差异,使得显示效果不尽相同,为此java提供了布局管理器,以使编写的图形界面具有良好的平台无关性。 注意:所有的布局管理器均是针对容器来使用的,包括顶层容器和中间容器。 一、布局管理器所属类包

二、容器的默认布局管理器 各容器都有默认的布局管理,见下表: 三、FlowLayout(流式布局)

使用FlowLayout布局方式的容器中组件按照加入的先后顺序按照设置的对齐方式(居中、左对齐、右对齐)从左向右排列,一行排满(即组件超过容器宽度后)到下一行开始继续排列。 1、流式布局特征如下: l 组件按照设置的对齐方式进行排列 l 不管对齐方式如何,组件均按照从左到右的方式进行排列,一行排满,转到下一行。(比如按照右对齐排列,第一个组件在第一行最右边,添加第二个组件时,第一个组件向左平移,第二个组件变成该行最右边的组件,这就是从左向右方式进行排列) 2、流式布局FlowLayout类的常用构造函数和方法

3、FlowLayout 布局应用代码段举例 1) 设置FlowLayout 布局 JFrame fr=new JFrame( ); FlowLayout flow=new FlowLayout( ); fr.setLayout(flow); 上面的语句可以简化成: fr.setLayout(new FlowLayout()); 2) 设置框架fr为组件左对齐的FlowLayout布局 fr.setLayout(newFlowLayout(FlowLayout.LEFT)); 3) 设置框架fr为组件左对齐的FlowLayout布局,并且组件的水平间距为20像素,垂直间距为40像素。 fr.setLayout(new FlowLayout(FlowLayout.LEFT,20,40)); 实例:对齐方式 // FlowLayoutDemo.java importjavax.swing.*;

Swing常见布局管理器总结

1、BorderLayout 边界布局管理器 北区:页首(PAGE_START)north 南区:页尾(PAGE_END)south 西区:行首(LINE_START) west 东区:行尾(LINE_END)east 我们也可以在内容窗格的顶头放置工具栏,底部放置状态栏 工具栏和状态栏的高度都是不变的,但长度随框架大小而改变 这正好是边界型布局的北区、南区的特点 因此,北区和南区可以放置工具栏和状态栏,同时会根据框架的大小自动调整面板、工具栏和状态栏的大小 对于此类界面,可以将主工作区放在中间区里,辅助工具区放在周边的东、南、西、北四个区域的某一个区域中: 缺省情况下,边界型布局的各区之间没有空隙,组件彼此靠在一起 可以指定区域间的水平间隙和垂直间隙: JPanel panel = new JPanel(); panel.setLayout(new BorderLayout(5, 5)); 2、BoxLayout(盒子布局器) 它没有空构造函数,必须给出两个参数: 需要它管理的容器对象 组件排列的轴线方向,轴线方向有两种: LINE_AXIS(或者X_AXIS)表示组件按横线排成一行; PAGE_AXIS(或者Y_AXIS)表示组件按纵向排成一列 组件的对齐方式(Alignment): 对于纵向排列的组件,有3种对齐方式: btn1.setAlignmentX(Component.LEFT_ALIGNMENT); btn1.setAlignmentX(Component.CENTER_ALIGNMENT); btn1.setAlignmentX(Component.RIGHT_ALIGNMENT); 对齐方式是组件本身的性质,而不是布局管理器的性质。因此,你需要调用每个组件本身的setAlignmentX函数来设定对齐方式

AWT中常用的布局管理器

AWT中常用的布局管理器有如下几个:FlowLayout, BorderLayout, GridLayout, GridBagLayout, CardLayout,Swing还提供了一个BoxLayout。 FlowLayout从左向右排列所有组件,遇到边界就会折回下一行从新开始。它有三个构造器FlowLayout(),FlowLayout(int align)和FlowLayout(int align, int hgap, int vgap),其中的hgap和vgap代表水平间距和垂直间距,align指的是组件的排列方向(从左向右,从右向左,从中间向两边),我们可以使用FlowLayout的静态常量来设置这个参数:FlowLayout.LEFT,FlowLayout.CENTER,FlowLayout.RIGHT。 BorderLayout将容器分为EAST,SOUTH,WEST,NORTH,CENTER五个区域,如下图所示: 我们在向使用此布局管理器的容器中添加组件时,需要制定添加到的区域,否则就默认添加到中间区域里,而当我们向一个区域添加多个组件时,后放入的组件会覆盖前面的组件。BorderLayout有两个构造器,BorderLayout()和BorderLayout(int hgap,int vgap),hgap和vgap代表的水平间距和垂直间距。我们在指定组件添加到的区域时,可以使用它的静态常量:BorderLayout.EAST, BorderLayout.WEST, BorderLayout.NORTH, BorderLayout.SOUTH, BorderLayout.CENTER。例如: Frame f = new Frame(); f.setLayout(new BorderLayout(5,5)); f.add(new Button(“南”),SOUTH);//将一个按钮添加到南的位置 BorderLayout最多只能放5个组件,但是实际上我们可以先在Panel中添加多个组件,再将Panel添加到BorderLayout布局管理器中,因此我们实际可以放的组件要远远超过5个。 GridLayout将容器分割成大小相同的网格,我们在添加组件时将默认从左到右从上到下,将组件依次添加到每个网格中,而每个组件的大小也就由其所添加到的网格的大小所决定。GridLayout同样也有两个构造器,GridLayout(int rows,int cols)和GridLayout(int rows ,int cols,int hgap,int vgap),使用GridLayout的典型例子就是计算器的窗口: import java.awt.*; public class calculator {

相关文档
最新文档