项目
写在前面的话:耳机没电,先来写写今早的感受。说实话,我并不喜欢我们的职业规划老师,满嘴荒唐言,被社会那所大缸浸染了一身社会气。课快结束时,老师问还有谁的视频没做,我把手举了起来。(我迟到+在课上睡觉)他稍带怒气的腔调说,你那部分分就别想拿了。大脑经过反应,回道:我之前给你发过一份mlt格式的文件,那个二维码生成不了。
可能是我气场原因?我也不知道,或许这就是他特有的技能,能对人快速做出分类,然后采取相应的言辞。
过程就不赘述,我临近下课的时候,我说视频课下重新做一份,因为我的部分源文件丢失了,他起身,晃着圆圆的身体,略微挤到我一些说。二维码没有也行,你课程只要能过就行对吧?
总结:想起《牧羊少年的奇妙之旅》那本书,当你想要做成一件事的时候,连风都会帮助你。环境在帮我,我更应该朝着自己的目标前行,而不是浪费这种资源。
零钱通
项目需求
- 完成收益入账,消费,查看明细,退出系统等功能
注:先使用过程编程,后面改成OOP版本,从中体会到OOP编程的好处
打印日期
Data data = null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");data = new Date();System.out.println(sdf.format(date));public class data01 {public static void main(String[] args) {boolean condition = true;Date date = null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");Scanner sc = new Scanner(System.in);String str = "\n";int a = 0;int all_money = 0;do{System.out.println("=========零钱通=========");System.out.println("1.进账明细");System.out.println("2.添加收入");System.out.println("3.消费");System.out.println("4.退出");a = sc.nextInt();switch (a){case 1:System.out.println(str);break;case 2:int temp = sc.nextInt();if(temp <= 0){System.out.println("金额错误,将返回到主菜单");}all_money += temp;date = new Date();str += "收入\t" + + temp + "\t日期\t" +sdf.format(date) + "\t余额\t" + all_money + '\n';break;case 3:int spend = sc.nextInt();if(spend > all_money){System.out.println("花费金额错误,将返回主菜单");}all_money -= spend;date = new Date();str += "消费\t" + + spend + "\t日期\t" +sdf.format(date) + "\t余额\t" + all_money + '\n';break;case 4:condition = false;break;}}while(condition);}
个人感觉面向对象的写法没有什么难度,就直接将代码放在这里了,大家有兴趣可以拷贝下去,跑跑看。
空间留余:给oop代码空间
房屋出租系统
需求:能够实现对房屋信息的添加,修改和删除(用数组实现),并能够打印房屋明细表
-
主菜单
-
新增房源
-
查找房屋
-
删除房屋
-
修改房屋信息
-
房屋列表
-
退出
-
-
新增房源
-
姓名
-
电话
-
地址
-
月租
-
状态
-
-
查找房源
- 选择查找房源的id
-
删除房源
-
-1退出
-
y删除
-
n误触
-
-
修改信息
- 不希望修改回车
-
房屋列表
项目设计—程序框架图
(分层模式=> 当软件比较复杂,需要模式管理)
-
系统有哪些类【文件】
-
明确类与类的调用关系
注:增删改查–> crud
-
c --> create
-
r -->read
-
u -->updata
-
d --> delete
在实际开发中,公式都会提供相应的工具类和开发库,可以提高开发效率,程序员也需要能看懂别人写的代码,并能正确的调用
-
界面 (View)
-
业务层(Service)
-
工具类(Utils)
-
数据层(domain/model)
- 这里后续会用扩展
注:类.方法() => 因为放一个方法是static时,就是一个静态方法,静态方法可以直接通过类名调用,具体细节后面说
class A{public void cry(){}public static say(){}
}//上面那个在调用时,要new一个A对象
//下面这个在调用时,可以直接类名加对象
-
明确完成功能
-
思路分析
-
代码实现
心得体会
写完一个项目,对于模式管理有一定的认知。View,Service,Domain,Utils 这些拆分。
而且学习嘛,敲代码嘛,脑袋炸毛的时候还是挺多的。
下面贴一下房屋出租系统的代码,就不解释了,若是要看源文件,可以到我gitee仓库自行下载
public class MenuMain {public static void main(String[] args) {boolean status;Service service;View view = new View();do {status = true;view.menuMain();Scanner sc = new Scanner(System.in);int a = sc.nextInt();status = new Service(a).option(view);}while (status);}}public class Service {int a;public Service(int a) {this.a = a;}public boolean option(View m){switch (a){case 1:m.info();return true;case 2:m.add();return true;case 3:m.fix();return true;case 4:m.del();return true;case 5:return false;} return false;}}class Home {private int id;private String name;private String rent;private String address;public Home(String name, String rent, String address) {this.name = name;this.rent = rent;this.address = address;}public void setName(String name) {this.name = name;}public void setId(int id) {this.id = id;}public void setRent(String rent) {this.rent = rent;}public void setAddress(String address) {this.address = address;}public int getId() {return id;}public String getName() {return name;}public String getRent() {return rent;}public String getAddress() {return address;}@Overridepublic String toString() {return "\t" + id +"\t" + name +"\t\t" + rent +"\t" + address;}}class Info{public int size;Home[] home;public Info(int a) {home = new Home[a];}}public class Utils {public static void info(Home[] arr,int size){for (int i = 0; i < size; i++) {if(arr[i] == null) return;System.out.println(arr[i].toString());}}public static void add(Home[] arr,Home a){for (int i = 0; i < arr.length; i++) {if(arr[i] == null){a.setId(i+1);arr[i] = a;return;}}}public static void fix(int id,int size,Home[] arr){if(id>=1&&id<=size+1&& size!=0){System.out.println("输入修改后的信息");Scanner sc = new Scanner(System.in);String name = sc.nextLine();String address = sc.nextLine();String rent = sc.nextLine();arr[id-1]= new Home(name,address,rent);System.out.println(arr[id-1]+"修改成功");}else System.out.println("无此房源");}public static void delete(int id,int size,Home[] arr){if(id>=1&&id<=size+1&&size!=0){for(int i=id-1;i<size;i++){arr[i]=arr[i+1];}System.out.println("删除成功");}else System.out.println("删除失败");}}public class View {public void menuMain(){System.out.println("===房屋系统===");System.out.println("1.查看房源");System.out.println("2.添加房源");System.out.println("3.修改信息");System.out.println("4.删除房源");System.out.println("5.退出");System.out.println("------------");System.out.println("请输入选项:");}Info info = new Info(10);public void info(){System.out.println("\t" + "id" +"\t" + "name" +"\t" + "rent" +"\t" + "address");Utils.info(info.home,info.home.length);}public void add(){System.out.println("请分别输入 姓名 租金 地址");Scanner sc = new Scanner(System.in);String name = sc.nextLine();String address = sc.nextLine();String rent = sc.nextLine();Home home = new Home(name, address, rent);Utils.add(info.home, home);info.size++;System.out.println("添加成功,信息如下:");System.out.println("\t" + "id" +"\t" + "name" +"\t" + "rent" +"\t" + "address");System.out.println(home);}public void fix(){System.out.println("请输入需要修改的id");Scanner sc = new Scanner(System.in);int id = sc.nextInt();Utils.fix(id,info.size,info.home);}public void del(){System.out.println("请输入要删除的id");Scanner sc = new Scanner(System.in);int id = sc.nextInt();Utils.delete(id,info.size,info.home);}}