六。时间的相关操作
(1)计算两个日期之间的天数
String date1 = rel.getString("lendtime");//获得上次借书的时间
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");//定义时间格式
String date2 = ft.format(new Date());//获得当前还书的时间
long sub = 0;
Date date11 = ft.parse(date1);//将SimpleDateFormat对象转换成Date对象
Date date22 = ft.parse(date2);
sub = date22.getTime() - date11.getTime();// getTime()获得的是从1970-1-1到现在的毫秒数
sub = sub / 1000 / 60 / 60 / 24;// 得到相差的天数,一天等于24*60*60*1000毫秒
(2)判断日期格式是否符合“年-月-日”的格式以及日期是否合法
public static boolean isRight(String date) {
Pattern p = Pattern.compile(\\d{4}+[-]\\d{1,2}+[-]\\d{1,2});// 括号内的是正则表达式d{1,2}表示-后面可以为一位或两位字符,d{4}表示只能是四个字符,不能多也不能少,这里属于正则表达式的知识
Matcher m = p.matcher(date);// 判断是否与相应的正则表达式匹配
if (!m.matches()) {
return false;
} // 得到年月日
String[] array = date.split("-");//将字符串以”-”分成字符串数组
int year = Integer.valueOf(array[0]);
int month = Integer.valueOf(array[1]);
int day = Integer.valueOf(array[2]);
boolean leap = (year % 400 == 0) | (year % 100 != 0) & (year % 4 == 0);
if (month < 1 || month > 12) {
return false;
}
int[] monthLengths = new int[] { 0, 31, -1, 31, 30, 31, 30, 31, 31, 30,
31, 30, 31 };
if (leap) {
monthLengths[2] = 29;
} else {
monthLengths[2] = 28;
}
int monthLength = monthLengths[month];
if (day < 1 || day > monthLength) {
return false;
}
return true;
}
}
另外判断日期输入是否符合yyyy-mm-dd格式的超长正则表达式
^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[1 3578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1 -9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468] [048]|[3579][26])00))-02-29)$
<!--EndFragment--> |
(3)Calendar的用法
Calendar now=Calendar.getInstance();//获得当前系统时间的一个实例对象
int yearnow=now.get(Calendar.YEAR);
int monthnow=now.get(Calendar.MONTH);
int daynow=now.get(Calendar.DAY_OF_MONTH);
System.out.println(yearnow+" "+(monthnow+1)+" "+daynow);
String date1 = new SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date());//获得现在系统的时间,格式输出为”年-月-日”
System.out.println(date1);
//输出的结果是2009 11 24
2009-11-24
七。两个构造方法中的特殊用法
(1)添加控件,巧用全局变量
(2)注意全局变量i,可以根据i的值来判断当前的对象属于哪个构造方法产生,然后OK按钮实现相应的事件。i=0,点击OK后程序退出,i等于1时,点击OK弹出对话框
class Search extends JFrame implements ActionListener {
private JLabel la_1,la_2,label_dialog;
private JButton button;
private JPanel pa_1,pa_2;//调用第一个构造方法的第二个构造方法中调用这些变量了
private JDialog dialog;
private int i;
public Search(){
i=0;
this.setSize(200, 300);
this.setLocation(200, 200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLayout(new GridLayout(2,1));
pa_1=new JPanel();
this.add(pa_1);
la_1=new JLabel("la_1 in pa_1");
pa_1.add(la_1);
pa_2=new JPanel();
this.add(pa_2);
la_2=new JLabel("la_2 in pa_2");
pa_2.add(la_2);
button=new JButton("OK");
pa_2.add(button);
button.addActionListener(this);
dialog=new JDialog(this,"提示",true);//this表示dialog添加到当前对象中,提示指对话框的标题,true前端显示
label_dialog=new JLabel("",JLabel.CENTER);//后面的Center表示label上的字显示在label中央
dialog.add(label_dialog);
dialog.setSize(100, 100);
// dialog.setDefaultCloseOperation(HIDE_ON_CLOSE);
}
public Search(JButton bt){
this();
i=1;
//this.setLayout(new FlowLayout());//如果在最下层添加其他的控件,没有这句话,还是按照第一个构造方法中的边布局管理的形式。有了这句话,就可以把后面添加的控件按照流布局管理的方式添加到窗体中
pa_1.remove(la_1);
pa_1.add(bt);//因为pa_1是全局变量可以这样调用。另外还可以移除la_1控件
}
public void actionPerformed(ActionEvent e){
if (e.getActionCommand()=="OK") {
if(this.i==0){
System.exit(0);
}
if(this.i==1){
label_dialog.setText("你点击的是按钮");
dialog.setLocation(this.getX()+50, this.getY()+100);
dialog.setVisible(true);
}
}
}
}
public class SearchDemo{
public static void main(String[] args){
Search s=new Search();
s.setVisible(true);
// JButton bt=new JButton("按钮");
// Search s=new Search(bt);
// s.setVisible(true);
}
}
九、写应用程序时注意符合查询语句的使用,这个非常常用也非常重要,写时要理清各表和表中键值之间的关系。在这个图书出纳管理系统中,管理员要查询图书的去向,分析得到的sql语句是:
select bookname,lendername,lendtime from book,lender,lend where
(lender.lenderid,lendtime) in (select lend.lenderid,lendtime from lend
where lend.bookid=00000000)and book.bookid=00000000;
下面这个是在用c#重写时写的sql语句
String sql = "select Lender.姓名,book.书名,Lend.借书时间 from book,Lend,Lender where book.图书账号=Lend.图书账号 and Lender.学生账号=Lend.学生账号 and Lend.图书账号='" + textBox1.Text.Trim()+"'";
<!--EndFragment--> |
十、一个Java链表程序,可以从中看出内部类的用法,是在做这个系统后的学习所获,值得看看。里面有链表元素的添加、删除和查找,使用了内部类后是整个程序很方便。内部类的优点是方便的调用外部类(现为内部类)的私有属性和方法
class Link{
class Node{
private String name;
private Node next;
public Node(String name){
this.name=name;
}
public void addNode(Node next){
if(this.next==null){
this.next=next;
}else{
this.next.addNode(next);
}
}
public void printNode(){
System.out.print(this.name+"---->");
if(this.next!=null){
this.next.printNode();
}
}
public boolean searchNode(String name){
if(this.name.equals(name)){
return true;
}else{
if(this.next!=null){
return this.next.searchNode(name);
}
return false;
}
}
public void deleteNode(Node pre,String name){
if(this.name.equals(name)){
pre.next=this.next;
}else{
this.next.deleteNode(this, name);
}
}
};
private Node root;
public void add(String name){
Node newNode=new Node(name);
if(this.root==null){
this.root=newNode;
}else{
if(this.root.next!=null){
this.root.next.addNode(newNode);
}else{
this.root.next=newNode;
}
}
}
public void print(){
if(this.root!=null){
this.root.printNode();
}
}
public boolean search(String name){
if(this.root==null){
return false;
}else{
if(this.root.name.equals(name)){
return true;
}else{
if(this.root.next!=null){
return this.root.next.searchNode(name);
}else{
return false;
}
}
}
}
public void delete(String name){
if(this.search(name)){
if(this.root.name.equals(name)){
if(this.root.next!=null){
this.root=this.root.next;
}else{
this.root=null;
}
}else{
if(this.root.next!=null){
this.root.next.deleteNode(root,name);
}
}
}
}
}
public class LinkDemo {
public static void main(String[] args){
Link link=new Link();
link.add("one");
link.add("two");
link.add("three");
link.add("four");
link.print();
System.out.println();
System.out.println(link.search("three"));
System.out.println(link.search("five"));
link.delete("two");
link.print();
}
}
在外部直接使用内部类的实例化对象,用外部类.内部类 内部类对象实例=外部类实例.new 内部类();
Class Outer{
Class Inner{
};
}
Outer out=new Outer();
Outer.Inner in=out.new Inner();
一个内部类如果使用static声明,它就成为了外部类,这时候创建该内部类的实例对象是
Outer.Inner in=new Outer.Inner();
内部类也可以在一个方法中。在方法体中定义的内部类可以直接访问外部类中的各个成员,但是如果访问方法中有参数时,则要使用关键字final声明。
class Outer{
private String name="hello world!!!";
public void fun(final int temp){//带参数,参数用final修饰
class Inner{
public void print(){
System.out.println("temp="+temp);
System.out.println("name="+name);
}
};
new Inner().print();//调用内部类Inner中的print方法
}
}
public class test2 {
public static void main(String[] args) {
Outer out=new Outer();
out.fun(20); }
}
分享到:
相关推荐
图书出纳管理系统报告详细分析 图书出纳管理系统是一款旨在提升图书馆工作效率和质量的自动化解决方案,旨在将传统图书馆转变为集信息中心、咨询服务中心和科学教育中心于一体的现代化情报服务系统。系统的核心功能...
图书出纳管理系统图书出纳管理系统
007出纳管理系统2010是一款专为企事业单位设计的专业财务出纳管理软件,旨在提高财务部门的工作效率,确保财务管理的准确性与规范性。该系统集成了出纳日常工作的多个关键环节,如现金管理、银行存款管理、日记账...
### 图书出纳管理系统知识点梳理 #### 一、系统分析 **1.1 系统现状** - **数据载体**: 系统当前采用何种介质存储数据(如纸质、电子文件等),以及这些数据如何被组织和管理。 - **实体**: 涉及到的实体包括单位...
[出纳软件第一品牌]007出纳管理系统2012.10企业版 ◆ 国内唯一一款通过财政部、工信部严格评审,颁发《软件产品证书》的出纳软件。 ◆ 国内唯一一款被专业的第三方媒体评为《最好用的出纳软件》的出纳管理财务软件...
《TOBROS出纳通宝:007出纳管理系统2010单机全能通用版详解》 在企业管理中,出纳管理是一项至关重要的环节,它涉及到企业的资金流动、财务安全以及会计核算的准确性。TOBROS出纳通宝推出的007出纳管理系统2010单机...
《007出纳管理系统2008.824专业版》是一款专为出纳人员设计的专业管理软件,旨在优化货币资金、票据和有价证券的管理流程,提高工作效率。这款软件集成了多种功能,使得出纳工作更加便捷、高效。 首先,关于“出纳...
图书出纳管理系统设计报告主要关注的是利用信息技术提升图书馆内部图书借阅管理的效率和准确性。系统的核心目标是实现图书管理的系统化、规范化和自动化,从而简化图书登记、销毁、借阅人管理、图书借还流程,以及...
出纳管理系统系统概述 ● 适用对象:各企业、行政、事业单位; ● 多账套:可建立多套账,账套数目不限制; ● 数据库:SQL SERVER2000或以上版本; ● 管理范围:现金、银行日记账的管理,空白票据登记、领用、核销...
然而,我可以提供一些关于图书出纳管理系统(通常称为图书管理系统或图书馆管理系统)的基础知识点,这些知识点将涵盖图书管理系统的功能、目的和常见技术实现方式。 图书管理系统是一种用于图书馆和图书销售行业...
这份报告由信息管理与信息系统专业的学生撰写,目的是设计一个图书出纳管理系统,将图书馆从传统的藏书中心转变为集科技信息、咨询服务和教育中心于一体的现代化服务系统。 系统的核心功能主要包括以下几个方面: ...
图书出纳管理系统分析报告
出纳管理系统是一款针对企业财务部门出纳工作的专业软件,它能有效地帮助出纳人员进行日常的财务管理,提高工作效率,减少人为错误。这款系统是免费的,对于中小企业或者个人用户来说,无疑是一个非常经济且实用的...
因此,开发一个图书出纳管理系统能够解决这些问题,实现图书的自动化管理,包括图书的添加、查询、修改、删除等操作,以及图书的借阅与归还流程。 接下来是可行性分析,主要考虑技术、经济和操作可行性。技术上,...
红管家财务出纳记账系统是一款针对各类企事业单位财务出纳记账工作开发的,集现金日记账记账与点验、银行日记账记账与核帐、应收应付款和往来账管理与对账、票据管理(支票管理、承兑汇票管理)、发票管理、工资管理...
图书出纳管理系统是一种用于自动化管理图书馆出纳台工作的软件应用,旨在提高图书馆的工作效率和质量。这个系统的主要目标是将图书馆从传统的藏书目录中心转变为一个综合性的信息服务中心,包括人类科技文化信息中心...
出纳记账管理系统是企业财务管理中的重要组成部分,它主要用于记录和管理企业的现金流入与流出,确保财务数据的准确性和完整性。Excel作为一款广泛使用的电子表格工具,提供了强大的数据处理和分析功能,使得创建...
华盟票据通是一款结合平推式票据打印机使用的票据打印软件,它能有效的帮助财务人员提高财务数据的准确性,规范财务... 华盟票据通是网络与单机都可用的版本,适合任一财务人员或商务人员进行票据管理的商务企业使用。
雅琦880源码财务出纳管理系统