[软件制造工程]招投标项目之合同签订模块 课程设计

合同签订模块详细设计


1、 功能

本模块主要功能是“生成中标方与招标方 针对招标内容签订的合同“,使用起来简洁直观,生成快捷方便。

(1)用户在可视化界面中根据提示输入“合同编号、邀标书编号、投标编号、甲方名称、乙方名称、开始时间、结束时间、合同内容、合同金额、甲方代表、乙方代表、合同附件、备注“等信息。确认输入后生成合同。

(2)可以生成专门的合同格式文件,模块可以导入导出合同格式文件,从而在修改和查看时更加便捷,可信度更高。


2、 界面设计


 


3、 类和接口名称

本模块包含一个类agreement . 该类的功能和接口设计如下表所示。

类名称:

Agreement 

类功能:

合同模板类,包含合同的参数和操作方法

参数

String AgreeNum 合同编号

String yaobiaoNum 邀标书编号

String toubiaoNum 投标编号

String jiaName 甲方名称

String yiName 乙方名称

String startTime 开始时间(固定格式)

String endTime 结束时间

String AgreeContent 合同内容

Float AgreeMoney 合同金额

String jiaRepresent 甲方代表

String yiRepresent 乙方代表

String AgreeFujian 合同附件

String AgreeBeizhu 合同备注

方法1:

名称:

Get和Set方法

功能:

获取和设置这些参数的方法

备注

利用编辑器自动生成

方法2:

名称

Agreement  InputAgreement(); 

Void OutputAgreement(Agreement agreement);

功能

通过封装组织合同类参数,导入导出专有的合同格式文件。

可以使用配置文件的properties操作

输入

输出

InputAgreement()返回一个合同类,OutputAgreement要求输入一个合同类。

方法3

名称

Void CreatAgreement(Agreement agreement)

功能

根据合同类生成一副完整的合同

输入

输入参数为一个编制好的合同类

 

4、 访问的表或其他数据库实体

该模块暂不考虑用数据库。使用property配置文件保存。



最终程序界面:

生成合同到桌面,并自动以编号为名保存合同到合同文件夹。


下图自动生成的合同,还可以将生成合同改为信息排版更为丰富的word。


下图是自动导出的合同配置文件,需要查阅修改合同时候还可直接导入合同到程序界面。


选择导入合同,导入后直接加载合同信息到程序界面。



程序代码


合同类

public class Agreement {
	private String AgreeNum; //合同编号
	private String yaobiaoNum; //邀标书编号
	private String toubiaoNum; //投标编号
	private String jiaName; //甲方名称
	private String yiName; //乙方名称
	private Time startTime; //开始时间(时间选项卡)
	private Time endTime; //结束时间
	private String AgreeContent; //合同内容
	private Float AgreeMoney; //合同金额
	private String jiaRepresent; //甲方代表
	private String yiRepresent; //乙方代表
	private String AgreeFujian; //合同附件
	private String AgreeBeizhu; //合同备注
	public void setStartTime(Time startTime) {
		this.startTime = startTime;
	}
	public void setEndTime(Time endTime) {
		this.endTime = endTime;
	}
	public String getAgreeNum() {
		return AgreeNum;
	}
	public void setAgreeNum(String agreeNum) {
		
		AgreeNum = agreeNum;
	}
	public String getYaobiaoNum() {
		return yaobiaoNum;
	}
	public void setYaobiaoNum(String yaobiaoNum) {
		this.yaobiaoNum = yaobiaoNum;
	}
	public String getToubiaoNum() {
		return toubiaoNum;
	}
	public void setToubiaoNum(String toubiaoNum) {
		this.toubiaoNum = toubiaoNum;
	}
	public String getJiaName() {
		return jiaName;
	}
	public void setJiaName(String jiaName) {
		this.jiaName = jiaName;
	}
	public String getYiName() {
		return yiName;
	}
	public void setYiName(String yiName) {
		this.yiName = yiName;
	}
	public Time getStartTime() {
		return startTime;
	}
	public Time getEndTime() {
		return endTime;
	}
	public String getAgreeContent() {
		return AgreeContent;
	}
	public void setAgreeContent(String agreeContent) {
		AgreeContent = agreeContent;
	}
	public Float getAgreeMoney() {
		return AgreeMoney;
	}
	public void setAgreeMoney(Float agreeMoney) {
		AgreeMoney = agreeMoney;
	}
	public String getJiaRepresent() {
		return jiaRepresent;
	}
	public void setJiaRepresent(String jiaRepresent) {
		this.jiaRepresent = jiaRepresent;
	}
	public String getYiRepresent() {
		return yiRepresent;
	}
	public void setYiRepresent(String yiRepresent) {
		this.yiRepresent = yiRepresent;
	}
	public String getAgreeFujian() {
		return AgreeFujian;
	}
	public void setAgreeFujian(String agreeFujian) {
		AgreeFujian = agreeFujian;
	}
	public String getAgreeBeizhu() {
		return AgreeBeizhu;
	}
	public void setAgreeBeizhu(String agreeBeizhu) {
		AgreeBeizhu = agreeBeizhu;
	}
	
	
}

时间类

public class Time {
	private int year;
	private int month;
	private int day; 
	public int getYear() {
		return year;
	}
	public void setYear(int year) {
		this.year = year;
	}
	public int getMonth() {
		return month;
	}
	public void setMonth(int month) {
		this.month = month;
	}
	public int getDay() {
		return day;
	}
	public void setDay(int day) {
		this.day = day;
	}
}


合同生成函数

//根据合同类生成一副完整的合同
	public void CreatAgreement(Agreement agreement) throws IOException
	{
		String agreeword = new String();
		//写入文件时候换行用这个代码
		String Enter=System.getProperty("line.separator");
		agreeword+="合同编号: "+agreement.getAgreeNum()+Enter;
		agreeword+="邀标书编号: "+agreement.getYaobiaoNum()+Enter;
		agreeword+="投标编号: "+agreement.getToubiaoNum()+Enter;
		agreeword+="甲方名称: "+agreement.getJiaName()+Enter;
		agreeword+="乙方名称: "+agreement.getYiName()+Enter;
		String starttime = agreement.getStartTime().getYear()+" 年 " + agreement.getStartTime().getMonth() + " 月 " +agreement.getStartTime().getDay() +" 日 ";
		String endtime = agreement.getEndTime().getYear()+" 年 " + agreement.getEndTime().getMonth() + " 月 " +agreement.getEndTime().getDay() +" 日 ";
		agreeword+="开始时间: "+ starttime +Enter;
		agreeword+="结束时间: "+ endtime + Enter;
		agreeword+="合同金额: "+agreement.getAgreeMoney()+Enter;
		agreeword+="甲方代表: "+agreement.getJiaRepresent()+Enter;
		agreeword+="乙方代表: "+agreement.getYiRepresent()+Enter+Enter;
		agreeword+="合同内容: "+agreement.getAgreeContent()+Enter;
		agreeword+="合同备注: "+agreement.getAgreeBeizhu()+Enter;
		
		FileSystemView fsv = FileSystemView.getFileSystemView();
		String path = fsv.getHomeDirectory().toString()+"\\"+agreement.getAgreeNum()+".txt";
		FileWriter fw = new FileWriter(path);
		fw.write(agreeword,0,agreeword.length());
		fw.flush();
		JOptionPane.showMessageDialog(null,"合同生成成功!","提示",JOptionPane.INFORMATION_MESSAGE);
	}

合同导入函数

public Agreement InputAgreement() throws FileNotFoundException, IOException
	{
		Agreement agreement = null;
		Properties p = new Properties();
		JFileChooser fc = new JFileChooser();
		int rVal = fc.showOpenDialog(this);
		if (rVal == JFileChooser.APPROVE_OPTION){
			 String path = fc.getCurrentDirectory().toString()+"\\"+fc.getSelectedFile().getName();
			 p.load(new FileInputStream(path));
			 agreement = new Agreement();
			 agreement.setAgreeNum(p.getProperty("AgreeNum"));
			 agreement.setYaobiaoNum(p.getProperty("yaobiaoNum"));
			 agreement.setToubiaoNum(p.getProperty("toubiaoNum"));
			 agreement.setJiaName(new String(p.getProperty("jiaName").getBytes("ISO-8859-1"),"gbk"));
			 agreement.setYiName(new String(p.getProperty("yiName").getBytes("ISO-8859-1"),"gbk"));
			 agreement.setAgreeContent(new String(p.getProperty("AgreeContent").getBytes("ISO-8859-1"),"gbk"));
			 agreement.setAgreeMoney(Float.parseFloat(p.getProperty("AgreeMoney")));
			 agreement.setJiaRepresent(new String(p.getProperty("jiaRepresent").getBytes("ISO-8859-1"),"gbk"));
			 agreement.setYiRepresent(new String(p.getProperty("yiRepresent").getBytes("ISO-8859-1"),"gbk"));
			 agreement.setAgreeBeizhu(new String(p.getProperty("AgreeBeizhu").getBytes("ISO-8859-1"),"gbk"));
			 Time starttime = new Time();
			 Time endTime = new Time();
			 starttime.setYear(Integer.parseInt(p.getProperty("startTime.year")));
			 starttime.setMonth(Integer.parseInt(p.getProperty("startTime.month")));
			 starttime.setDay(Integer.parseInt(p.getProperty("startTime.day")));
			 endTime.setYear(Integer.parseInt(p.getProperty("endTime.year")));
			 endTime.setMonth(Integer.parseInt(p.getProperty("endTime.month")));
			 endTime.setDay(Integer.parseInt(p.getProperty("endTime.day")));
			 agreement.setStartTime(starttime);
			 agreement.setEndTime(endTime);
		}
		if (agreement == null) JOptionPane.showMessageDialog(null,"导入文件失败!","错误",JOptionPane.INFORMATION_MESSAGE);
		return agreement;
	}

合同导出函数

public void OutputAgreement(Agreement agreement) throws IOException
	{
		File f=new File("D:\\合同"); f.mkdirs();
		String path = "D:\\合同\\"+agreement.getAgreeNum()+".ini";
		FileWriter fw = new FileWriter(path);
		String config = new String();
		String Enter=System.getProperty("line.separator");
		config+="AgreeNum="+agreement.getAgreeNum()+Enter;
		config+="yaobiaoNum="+agreement.getYaobiaoNum()+Enter;
		config+="toubiaoNum="+agreement.getToubiaoNum()+Enter;
		config+="jiaName="+agreement.getJiaName()+Enter;
		config+="yiName="+agreement.getYiName()+Enter;
		config+="AgreeContent="+agreement.getAgreeContent()+Enter;
		config+="AgreeMoney="+agreement.getAgreeMoney()+Enter;
		config+="jiaRepresent="+agreement.getJiaRepresent()+Enter;
		config+="yiRepresent="+agreement.getYiRepresent()+Enter;
		config+="AgreeBeizhu="+agreement.getAgreeBeizhu()+Enter;
		config+="startTime.year="+agreement.getStartTime().getYear()+Enter;
		config+="startTime.month="+agreement.getStartTime().getMonth()+Enter;
		config+="startTime.day="+agreement.getStartTime().getDay()+Enter;
		config+="endTime.year="+agreement.getEndTime().getYear()+Enter;
		config+="endTime.month="+agreement.getEndTime().getMonth()+Enter;
		config+="endTime.day="+agreement.getEndTime().getDay()+Enter;
		fw.write(config,0,config.length());
		fw.flush();
		//JOptionPane.showMessageDialog(null,"合同导出到D盘成功!","成功",JOptionPane.INFORMATION_MESSAGE);
	}

按钮监听并检测输入信息的合法性

public class ButtonListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e) 
		{
			//读取填写的信息,并判断是否为空
			boolean finish = true;
			if (!jTextField0.getText().equals("")) agreement.setAgreeNum(jTextField0.getText()); else finish = false;
			if (!jTextField1.getText().equals("")) agreement.setYaobiaoNum(jTextField1.getText()); else finish = false;
			if (!jTextField2.getText().equals("")) agreement.setToubiaoNum(jTextField2.getText()); else finish = false;
			if (!jTextField3.getText().equals("")) agreement.setJiaName(jTextField3.getText()); else finish = false;
			if (!jTextField4.getText().equals("")) agreement.setYiName(jTextField4.getText()); else finish = false;
			if (!jTextField5.getText().equals("") && !jTextField6.getText().equals("") && !jTextField7.getText().equals("")) 
				{
					Time starttime = new Time(); 
					starttime.setYear(Integer.parseInt(jTextField5.getText()));
					starttime.setMonth(Integer.parseInt(jTextField6.getText()));
					starttime.setDay(Integer.parseInt(jTextField7.getText()));
					agreement.setStartTime(starttime);
				} else finish = false;
			if (!jTextField8.getText().equals("") && !jTextField9.getText().equals("") && !jTextField10.getText().equals("")) 
			{
				Time endtime = new Time(); 
				endtime.setYear(Integer.parseInt(jTextField8.getText()));
				endtime.setMonth(Integer.parseInt(jTextField9.getText()));
				endtime.setDay(Integer.parseInt(jTextField10.getText()));
				agreement.setEndTime(endtime);
			} else finish = false;
			if (!jTextField11.getText().equals("")) agreement.setAgreeMoney(Float.parseFloat(jTextField11.getText())); else finish = false;
			if (!jTextField12.getText().equals("")) agreement.setJiaRepresent(jTextField12.getText()); else finish = false;
			if (!jTextField13.getText().equals("")) agreement.setYiRepresent(jTextField13.getText()); else finish = false;
			if (!jTextArea0.getText().equals("")) agreement.setAgreeContent(jTextArea0.getText()); else finish = false;
			agreement.setAgreeBeizhu(jTextArea1.getText());	
			
			//监听按键
				String input = e.getActionCommand();
				if (input.equals("确定生成") && finish){
					//生成合同写入文件
					try {
						CreatAgreement(agreement);
						OutputAgreement(agreement);
					} catch (IOException e1) {
						e1.printStackTrace();
					}
				}else if (input.equals("导入合同")){
					try {
						Agreement agreement = InputAgreement();
						jTextField0.setText(agreement.getAgreeNum());
						jTextField1.setText(agreement.getYaobiaoNum());
						jTextField2.setText(agreement.getToubiaoNum());
						jTextField3.setText(agreement.getJiaName());
						jTextField4.setText(agreement.getYiName());
						jTextField5.setText(Integer.toString(agreement.getStartTime().getYear()));
						jTextField6.setText(Integer.toString(agreement.getStartTime().getMonth()));
						jTextField7.setText(Integer.toString(agreement.getStartTime().getDay()));
						jTextField8.setText(Integer.toString(agreement.getEndTime().getYear()));
						jTextField9.setText(Integer.toString(agreement.getEndTime().getMonth()));
						jTextField10.setText(Integer.toString(agreement.getEndTime().getDay()));
						jTextField11.setText(agreement.getAgreeMoney().toString());
						jTextField12.setText(agreement.getJiaRepresent());
						jTextField13.setText(agreement.getYiRepresent());
						jTextArea0.setText(agreement.getAgreeContent());
						jTextArea1.setText(agreement.getAgreeBeizhu());
					} catch (FileNotFoundException e1) {
						e1.printStackTrace();
					} catch (IOException e1) {
						e1.printStackTrace();
					}
					
				}else if(input.equals("导出合同") && finish){
						try {
							OutputAgreement(agreement);
							JOptionPane.showMessageDialog(null,"合同导出到D盘成功!","成功",JOptionPane.INFORMATION_MESSAGE);
						} catch (IOException e1) {
							e1.printStackTrace();
						}
				}else if (!finish) JOptionPane.showMessageDialog(null,"除备注外所有项均不能为空!","警告",JOptionPane.INFORMATION_MESSAGE);
			}
		}



程序界面是用eclipse + visual editor 直接画的,输入文本框依次就是jTextfield0,1,2,3,4......



猜你喜欢

转载自blog.csdn.net/xyydyyqf/article/details/12910081
今日推荐