java学习 -----项目(1)
项目
写在前面的话:耳机没电,先来写写今早的感受。说实话,我并不喜欢我们的职业规划老师,满嘴荒唐言,被社会那所大缸浸染了一身社会气。课快结束时,老师问还有谁的视频没做,我把手举了起来。(我迟到+在课上睡觉)他稍带怒气的腔调说,你那部分分就别想拿了。大脑经过反应,回道:我之前给你发过一份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;
}
@Override
public 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);
}
}
原文地址:https://blog.csdn.net/memorycx/article/details/144292851
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!