⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datagenerator.java

📁 参考了JAVA方面MIS系统开发的书籍做的一个 电力收费的系统,包里面是可以直接运行的JAR文件了...SRC是源文件可一些需要的包...数据库是用的MSQLserver2000,"java程序数据
💻 JAVA
字号:
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
import java.awt.*;
import java.util.*;
import java.sql.*;
import java.awt.event.*;
import edu.njust.cs.*;
//该程序模拟各块电表在指定年月的抄表数据
//启动该程序后,用户只要输入年月
//点击确定后,该模拟程序自动读取电表信息
//表 (DBT)中所有的电表信息,生成每块电表
//的读数并写入抄表信息表 (CBXXT)
public class DataGenerator{
	public static void main(String []args){
		//取得指定时间
		String yearMonth=null;
		while(true){
			yearMonth=JOptionPane.showInputDialog("请指定年月(例如2005-01):");
			if(yearMonth==null)	System.exit(-1);
			else if (DateUtil.isValidYMFormat(yearMonth))
				break;
		}
		//取得数据库连接
		Properties prop=SqlUtil.loadProperty("config/config.properties");
		if(prop==null){
			JOptionPane.showMessageDialog(null,
										  "配置文件丢失!",
										  "提示",
										  JOptionPane.INFORMATION_MESSAGE);		
			System.exit(-1);
		}
		Connection con=null;
		try{
			con=SqlUtil.acquireConnection(prop.getProperty("DB_IP"),
										  prop.getProperty("DB_PORT"),
										  prop.getProperty("DB_NAME"),
										  prop.getProperty("DB_USER_NAME"),
										  prop.getProperty("DB_USER_PWD"));
		}catch(Exception e){
			con=null;
			e.printStackTrace();
			System.exit(-1);
		}				
		//读取所有电表ID至一个表模型中
		String []columnNames=new String[] {"电表编号"};
		Class []dataType=new Class[] {String.class};
		CustomTableModel model=new CustomTableModel(
				0,columnNames.length,columnNames,dataType);
		SqlUtil.readDBToTable(con,"select DBID from DBT",model,dataType);		
		//将用户指定的年月前推一个月
		//yearMonth原来"2004-03",那么得到lastYearMonth为"2004-02"
		GregorianCalendar yearMonth_GC=DateUtil.getGCFromTS(
									DateUtil.getTSFromYMD(yearMonth+"-20"));
		yearMonth_GC.add(Calendar.MONTH,-1);
		String lastYearMonth=DateUtil.getYMDFromTS(
		       DateUtil.getTSFormGC(yearMonth_GC)).substring(0,7);
		//依次产生每块电表的抄表数据		
		//如果某块电表上月读数存在,则本月读数=上月读数+正随机数
		//否则,本月读数=正随机数
		for(int i=0;i<model.getRowCount();i++){			
			Object []keys={model.getValueAt(i,0).toString(), yearMonth};
			//如果当前电表在指定年月的抄表数据已经有,则忽略
			String sql="select * from CBXXT where DBID=? AND CBYearMonth=?";
			if(SqlUtil.isRecordExist(con,sql,keys)){
				System.out.println("电表"+model.getValueAt(i,0).toString()+
								   " "+yearMonth+"的抄表数据已经存在");
				continue;			
			}
			System.out.println("产生电表"+model.getValueAt(i,0).toString()+
							   " "+yearMonth+"的抄表数据...");
			sql="select DBDS from CBXXT where DBID='"+
					   model.getValueAt(i,0).toString()+"' and CBYearMonth='"
					   +lastYearMonth+"'";
			//上月读数
			Double syds=(Double)SqlUtil.readFieldValueFromDB(con,sql);
			double byds;
			//上月有读数
			if(syds!=null&&syds.doubleValue()!=Double.NEGATIVE_INFINITY)
				byds=syds.doubleValue()+(100*(Math.random())+10);
			else
				byds=(100*(Math.random())+10);
			Object []line={model.getValueAt(i,0).toString(),yearMonth,new Double(byds)};
			SqlUtil.addRowToDB(con,"insert into CBXXT values (?,?,?)",line);
		}		
		System.exit(0);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -