#自学课程#《放学你别走第一季之GO语言学习》Day4打卡

【Day4任务】
学习GO语言组织数据的容器:数组,切片,映射,列表以及结构体。
用学到的知识实现下面的题目:
设计一个程序,可以录入、读取和删除房源数据,房源数据包括房源名称,房源编号,房源价格(正整数),房源面积(浮点数),是否是首次出租(布尔类型),房源标签(新校区,进地铁,深呼吸,独立卫生间等不限)。
读取房源时通过房源编号读取信息。
打卡时间:2月24日(周日)23:30前
打卡形式:代码运行截图+代码源码
package main

import (
"fmt"
"os"

)

//定义房源结构体
type house struct {
houseCode string
price int
area float64
isNew bool
tags string
}

var (
houseCode string
price int
area float64
isNewName string
isNew bool
tags string
)

func help(){

fmt.Println("请按照提示信息录入房源数据,并根据房源编号显示房源数据:")

}

func line() {
fmt.Println("*********************************")

}

func menu() {
fmt.Println("*********************************")
fmt.Println("1、查询房源(Select)")
fmt.Println("2、新增房源(Insert)")
fmt.Println("3、删除房源(Delete)")
fmt.Println("4、帮助信息(Help)")
fmt.Println("5、统计房源数量(Counts)")
fmt.Println("6、退出程序(Exit)")
fmt.Println("*********************************")

}

func errorHappen(no int) {

switch no {

case 1:
fmt.Println("参数错误!更多帮助信息请使用参数'help'!")

case 2:
fmt.Println("该房源编号已经被占用,请重新输入房源编号!更多帮助信息请使用参数'help'!")

case 3:
fmt.Println("您要查找的房源信息不存在,请验证房源编号准确性后再试!更多帮助信息请使用参数'help'!")

case 4:
fmt.Println("您要删除的房源数据不存在,请验证房源编号准确性后再试!更多帮助信息请使用参数'help'!")

default:
fmt.Println("未知错误!更多帮助信息请使用参数'help'!")
}
}

func houseCounts(houses map[string]house) {
line()
fmt.Println("【房源数量】您已进入房源数量统计模式")
counts := len(houses)
fmt.Printf("当前已经录入了 %d 套房源信息!", counts)
line()

}

func deleteHouse(houses map[string]house) {
line()
fmt.Println("【删除数据】您已进入房源数据删除模式")
var exists bool
for {
fmt.Println("请输入你要删除的房源编号")
fmt.Scan(&houseCode,)
_, exists = houses[houseCode]
if !exists {
errorHappen(4)
continue
}
break
}
delete(houses, houseCode)
fmt.Printf("编号为%s的房源数据删除成功!", houseCode)

fmt.Println("成功退出房源删除模式,回到主程序!")
line()

}

func insertHouse(houses map[string]house) {
for {
line()
fmt.Println("【新增数据】您已进入新增房源数据模式:")
fmt.Println("1、请输入房源编号")
fmt.Scan(&houseCode,)

_, exit := houses[houseCode]
if exit {
errorHappen(2)
continue
}
break
}


fmt.Println("2、请输入房源价格(正整数,单位:元)")
fmt.Scan(&price,)
fmt.Println("3、请输入房源面积(保留1位小数,单位:平方米)")
fmt.Scan(&area,)

for {
fmt.Println("4、请输入房源是否为首次出租(是 否)")
fmt.Scan(&isNewName,)
if isNewName == "是" {
isNew = true
break
} else if isNewName == "否" {
isNew = false
break
} else {
errorHappen(1)
}
}
fmt.Println("5、请输入房源标签并用','隔开")
fmt.Scan(&tags,)


house := house{
houseCode,
price,
area,
isNew,
tags,
}

houses[house.houseCode] = house
fmt.Println("恭喜您!房源"+ house.houseCode +"的房源信息保存成功!")
fmt.Println("成功退出房源保存模式,回到主程序!")
line()

}

func readHouse(houses map[string]house) {
line()
fmt.Println("【查询数据】您已进入查询房源数据模式:")
var (
house house
exists bool
)
for {
fmt.Println("请输入你要查询的房源编号")
fmt.Scan(&houseCode,)
house, exists = houses[houseCode]
if !exists {
errorHappen(3)
continue
}
break
}

fmt.Println("已为您查询到该房源数据,具体房源信息如下:")
fmt.Println("【房源编号】" + house.houseCode)
fmt.Printf("【房源价格】%d 元/月\n", house.price)
fmt.Printf("【房源面积】 %f 平方米\n", house.area)
if house.isNew {
fmt.Println( "【首次出租】是")
} else {
fmt.Println( "【首次出租】否")
}

fmt.Println( "【房源标签】:" + house.tags)
fmt.Println("成功退出房源查询模式,回到主程序!")
line()


}



func main(){

const helpFlag = "help"
var action string



//定义map存储房源数据
houses := map[string]house{}

//进入主程序控制流程
fmt.Println("欢迎进入凯冰科技房源管理系统")
line()

for {
fmt.Println("当前可进行的操作如下,请输入对应的数字编号:")
menu()

fmt.Scan(&action,)

switch action {
case "1":
readHouse(houses)
continue

case "2":
insertHouse(houses)
continue

case "3":
deleteHouse(houses)
continue

case "4":
help()
continue

case "5":
houseCounts(houses)

case "6":
fmt.Println("您已成功退出程序运行!感谢您的使用!")
os.Exit(0)
default:
errorHappen(1)
}
}

}

微信图片_20190225101127.png


微信图片_20190225101132.png


微信图片_20190225101137.png


微信图片_20190225101147.png

 

0 个评论

要回复文章请先登录注册