首页 分享 移动应用开发应用(一)

移动应用开发应用(一)

来源:花匠小妙招 时间:2024-11-14 13:01

移动应用开发应用(一)

Q1ngl1n0 已于 2023-11-04 23:15:46 修改

于 2023-10-23 23:28:09 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

一、前言

现在向我们展示的是某位憨憨在上课时候在下面跟着讲台上老师一行行敲代码,最终敲成的程序。敲的时候没啥感觉,跟着老师思路走,敲完后腰酸了,头晕了,才知道上课老师讲得有多幸苦(而且还是站着敲代码)。

二、程序

1、抢红包程序(终端版)

代码实现

package ncu.edu.wyy.kotlin_study.project01

/**

class moneyException(message:String):Exception(message){

override fun toString() = "红包剩余金额不够,但还有个数,全体成员请求群主补齐金额,${message}"

}

//默认值

//红包

class RedBag(var money:Double,var num:Int,val userList: MutableList<User> = mutableListOf<User>()) {

var hasBeGetNum:Int = 0

var remainMoney = money

var remainNum = num

val avgMoney = money/num

fun addUser(user:User){

userList.add(user)

}

fun shareMoney(user:User){

if(String.format("%.2f",remainMoney) == "0.00" || remainNum == 0){

println("很遗憾,红包已经被抢光了,${user.name}没抢到红包.")

}

else{

var m = (money-hasBeGetNum*avgMoney)/remainNum * 2 * Math.random()//保证均匀分配概率,抢红包

//如果红包被抢完了,但是数量还有剩余,进行异常处理

if(m>remainMoney){

m = remainMoney

if(remainNum != 0){

throw moneyException("${user.name}抢完了所有红包金额,但红包数目还有剩余,")

}

}

//如果是最后一个红包的话,但实际上没抢到这么多,直接把剩余的全拿走

if(m<remainMoney && remainNum == 1){

m = remainMoney

}

println(user.name+"抢到了%.2f".format(m)+"元红包")

remainMoney -= m

user.getMoney(m)

addUser(user)

remainNum -= 1

hasBeGetNum += 1

}

}

fun display(){

userList.sort()

userList.forEach{

println("${it.name}抢到金额为"+"%.2f".format(it.receiveMoney)+"元的红包")

}

}

}

//普通用户(用户姓名,账户余额,抢到金额)

open class User(var name: String,var money:Double,var receiveMoney:Double):Comparable<User>{

init {

money = 2000.0

}

override fun compareTo(other: User): Int = (this.receiveMoney - other.receiveMoney).toInt()

fun getMoney(m:Double){

this.money += m

this.receiveMoney = m

}

//群主身份

class HostUser(name:String,money: Double,receiveMoney: Double):User(name,money,receiveMoney){

//发送红包

fun sendRedBagMoney(m:Double,n:Int):RedBag{

val r = RedBag(m,n)

if(m>money){

throw moneyException("账户余额不足!")

}else{

println("群主${name}发出了${n}个红包,金额为${m}元,大家快来抢啊!")

money -= m

}

return r

}

//红包金额不足时补齐红包

fun addMoney(){}

}

}

fun main(){

val h = User.HostUser("王五",3000.0,0.0)

val redBag:RedBag = h.sendRedBagMoney(1000.0,5)

val user1 = User("张三",2000.0,0.0)

val user2 = User("李四",2000.0,0.0)

val user3 = User("赵六",2000.0,0.0)

val user4 = User("田七",2000.0,0.0)

val user5 = User("陈八",2000.0,0.0)

val user6 = User("胡九",2000.0,0.0)

redBag.shareMoney(user1)

redBag.shareMoney(user2)

redBag.shareMoney(h)

redBag.shareMoney(user3)

redBag.shareMoney(user4)

redBag.shareMoney(user5)

redBag.shareMoney(user6)

redBag.display()

}

运行结果截图:缺陷:未能处理如下几种意外情况: 当红包金额被抢光,但是还剩余几个包,这样导致剩下抢红包的人抢的空包;红包金额在固定区间中,不能像微信红包那样,可以一个人占大多数。(或许可以通过保底红包来实现,如设定最低金额为0.01元)

2、月历程序(终端版)

代码实现

@file:Suppress("UNREACHABLE_CODE")

package ncu.edu.wyy.kotlin_study.project01

import android.os.Build

import androidx.annotation.RequiresApi

import java.time.LocalDate

import java.util.Calendar

import java.util.Scanner

/**

class LunarCalendar {

}

@RequiresApi(Build.VERSION_CODES.O)

fun main(){

val sc = Scanner(System.`in`)

println("请输入年份:")

val year = sc.nextInt()

println("请输入月份:")

val month = sc.nextInt()

val days = getDaysByMonth(year, month)

val firstDay = getFirstDayOfWeek(year, month)

println("这个月的第一天是星期$firstDay")

println("一 二 三 四 五 六 日")

for(i in 1 ..<firstDay){

print(" ")

}

for(i in 0 ..<days){

print("%-4d".format(i+1))

if((i+firstDay) % 7 == 0){

println()

}

}

}

//若为闰年,返回1,平年返回0

fun isLeapYear(year:Int):Int{

var result:Int = 0

if((year % 4==0 && year % 100!=0) || year % 400 ==0){

result = 1

}

return result

}

fun getDaysByMonth(year: Int,month:Int):Int{

var days:Int = 0

days = when(month){

1,3,5,7,8,10,12 -> return 31

2 -> return if(isLeapYear(year) == 1) 29 else 28

4,6,9,11 -> return 30

else -> throw RuntimeException("月份有误,这个月份根本就不存在的好吧!")

}

return days

}

@RequiresApi(Build.VERSION_CODES.O)

fun getFirstDayOfWeek(year: Int, month: Int): Int {

val date = LocalDate.of(year, month, 1)

return date.dayOfWeek.value // 1 表示星期一,7 表示星期日

}

运行结果截图缺陷 没有对齐格式,有待优化输入方式可以再稍作改进,比如输入2023-10

3、骰子游戏(APP版)

《Android移动应用开发》(微课版)这本书上P95~P103完整阐述了代码以及实现功能,

demodicegame · 青峥/kotlin_study - 码云 - 开源中国 (gitee.com)(随手代码仓库,便于管理)

博主还在写实验报告中,《闪耀命运之骰》只能搁浅了。。。

三、结尾语

上述缺陷因博主太雷泽,故未做改进,若各位博主完善了上述缺陷,望不吝赐教。

相关知识

移动设备签到应用开发大家给点开发
电商平台移动端应用开发及维护服务合同.doc
2020年河南省高等职业教育技能大赛“花艺”&“移动应用开发”赛项在我校开幕
HTML5移动开发
【凤凰新闻】河南省高等职业教育技能大赛花艺、移动应用开发赛项圆满落幕
河南省高等职业教育技能大赛“花艺”&“移动应用开发”赛项在我校圆满落幕
安徽国防科技职业学院学子勇夺世界职业院校技能大赛移动应用设计与开发赛项银牌
【喜报】我校喜获2024年世界职业院校技能大赛争夺赛高职组移动应用设计与开发赛项银奖
探秘移动开发新灵感:利用“仿闲鱼发布页”资源快速提升技能
世校赛快讯丨信息学子喜获2024年世界职业院校技能大赛总决赛争夺赛电子与信息赛道二移动应用设计与开发小组铜奖

网址: 移动应用开发应用(一) https://www.huajiangbk.com/newsview546078.html

所属分类:花卉
上一篇: 2020年,社交媒体营销分析
下一篇: 移动应用开发专业

推荐分享