写了一个1600行的软件后的感触

一位大专学生因面临就业和财务问题,决定自行开发一款JAVA记账软件。通过自学及实践,逐步掌握软件开发流程,从需求分析到设计、编码,并分享了在此过程中遇到的技术难题及其解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  因为大专只有上两年,就可以出来找工作,而我今年暑假也要出来找工作,很烦。。没什么把握,再加上这学期上三天放四天。。。所以每到周末就开始写代码。。上大学要遇到了最大的问题就是钱的问题,所以我就想写一个记账的软件。可以输入当天的收入和支出,和进行查询和分析。。。。之所以想到要自己写,是因为我在网上找了一个软件,结果是要钱的。。。我就说干脆自己写一个了。。

 

  然后开始写自己需求列表(就是功能表)。。画整个软件的结构图。。。。流程图。。。。接着对结构图进行分析。。画UML的类图(这学期开始学的)。。

 

  说实在在弄上面这些东西的时候,各种痛苦。。。我想应该有人理解我的这种痛苦。。但是因为看过几本工程的书,所以还是坚持了下来。。但是还是深深感觉到了自己的不足,就像--书到用时方恨少----我也深深的感觉到了自己对于JAVA的理解还不够,面对对象的思想还没有到够用的程度。。。。

在将要进行代码的编写的时候,我姑姑去世了,所以我就回家了。。

 

回来的那天,我把前面的弄的东西又删了又改了。。。

开始写代码。。。

这是我发现当前面的那些做得很详细的时候,写代码变成了只是解决问题的事了,只要去思考如何实现某个方法,某种效果。

感觉像是在做数学应用题。而且当把一些东西抽象出来,变成父类的时候,就会发现不用再去重复写那些代码了。效果都用父类去实现,子类便可以享受他爸爸给他的好处了。代码省了太多了

例如我写了一个数据管理类。。

那么收入数据管理类和支出数据管理类继承他,结果可想而知。。

 

因为我在学android应用的开发,对于MVC模式有点感觉了。

所以在这个软件中我就应用了,当我把软件耦合度降低时,发现错误的改正和效果的修改变得很简单,因为我不用去思考修改了这个,会不会影响其他的东西。数据的输出和输入也变得很容易了。。

 

 

当然除了对编写软件的理解,对于java语法的理解也有所增长。。

 

当时我正在编写对文件的读写。。出现了一个Bug,我读入数据时,没有数据,但发现文本上是有文字的。

 

那个bug我调了一晚上,睡了一觉,隔天上课,在学校实验室(当然只是几台破电脑,上的j2me)测试出来。

代码1:

 

	public static void main(String[] args)
	{
		try {
			FileWriter fw = new FileWriter("out_data.txt",false);
			FileReader fr = new FileReader("out_data.txt");
			BufferedReader br = new BufferedReader(fr);
			String str = br.readLine();
			System.out.println(str);
			fw.write(str);
			if(br != null)
			{
				br.close();
			}
			if(fr != null)
			{
				fr.close();
			}
			if(fw != null)
			{
				fw.close();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
 代码2:

public static void main(String[] args)
	{
		try {
			
			FileReader fr = new FileReader("out_datas.txt");
			BufferedReader br = new BufferedReader(fr);
			
			String str = br.readLine();
			System.out.println(str);
			FileWriter fw = new FileWriter("out_datas.txt");
			fw.write(str);
			if(br != null)
			{
				br.close();
			}
			if(fr != null)
			{
				fr.close();
			}
			if(fw != null)
			{
				fw.close();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 假如文件out_datas.txt中是存在而且有数据的,那么上面两种的代码出现的结果是不一样的。

代码1:输出的null,并抛出空指针异常

代码2:输出原来文件中的数据,并写入文件中。

 

两个代码的唯一差别在于FileWrite的位置,为什么???或许很多人都已经知道了,但是这是我自己想出来的。。。

当FileWriter的构造函数后面是false时,在创建对象时,就会把文件清空了。。所以才会造成FileReader没有获得数据,我当时也是因为这个原因。。

 

 

我喜欢编程的原因或许是因为可以看到自己的进步(当我写出一个以前写不出来的程序时),可以享受解决问题的成就感,

成就感---一种可以让人不断进步的动力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值