HarmonyOS开发实例(附项目源码)

文件目录如下。本项目共由12个页面组成,其中Index界面为app的4个主界面和Tabs导航栏组件拼接而成的真正的app主界面。page,,livehouse,ticket,my分别不带导航页的4个主界面。M1,M2,M3,M4为在page主界面进行搜索操作后跳转的搜索完成的界面,register,sign为在进入app的主界面之前所需要的登录注册界面,welcome为进入app时的第一个界面——欢迎界面,在显示4秒之后进入登陆界面。接下来通过在虚拟机上的演示对于各个界面进行介绍。

 

通过module.json5文件对封装好的app的图标和标题进行更改。

点击app图标,进入welcome欢迎界面,持续4秒后默认跳转至注册界面。

登录界面由3个文本输入框(分别对应账号,密码,邮箱)和2个按钮(针对已有账号的用户的登录按钮和没有账号的用户的注册按钮)。

在这里正确的账号,密码,邮箱分别为:ty,ty20040415,tianyuan。(可在对应处进行更改)

通过if-else条件判断语句进行判断,若个人信息输入正确则登录成功,若输入错误则报错。

这里以账号:1,密码:1,邮箱:1为例,可见的确进行了报错。

若输入正确的账号、密码、邮箱,则会进入app的主界面。并展示“welcome”欢迎语,并且通过传值的方法使app中“我的”界面的用户个人id与账号相同。

若点击快速注册按钮,则进入注册界面。在注册界面主要实现的逻辑为每一个输入框的输入都不能为空,确认密码两次必须一致。并且同样的,通过传值的方法使用户的个人id与账号相同

接下来进入app内部界面。

首页内重要的组件为最顶部的文本输入框,使用Map键值对存储歌手以及其对应的演唱会页面,可以实现输入指定的歌手姓名再点击旁边的搜索按钮进行该歌手演唱会信息的搜索。“演出日历”和其下方的“演出海报”一行都使用了swiper轮播组件对信息进行轮播。“必看演出”则使用了scroller组件,使演出信息可以进行滑动,便于用户查看演出信息。

由于事件关系,本app暂时只设置了四个map键值对储存歌手姓名和其对应的演唱会信息,搜索框内输入(zhangshaohan(张韶涵)/xiaojingteng(萧敬腾)/alin(黄丽玲)/JonyJ)会分别跳转至该歌手的演唱会信息界面。

现场页:现场页同样由歌手头像,巡演地点的Scroller组件和推荐信息的swiper轮播组件构成。点击歌手头像可以跳转至其对应的演唱会信息界面。

票夹界面

我的界面:由用户头像和个人信息页组成,其中个人信息的id由登录/注册页的账号决定。“在线客服”一栏由scroller滑动组件构成。

项目源码:

index:

import { router } from '@kit.ArkUI'
import { id } from './sign'
//完整版
@Entry
@Component
struct tab{
  private swipercontroller:SwiperController = new SwiperController()
  scrmy:Scroller=new Scroller() //实例化控制器 用new 实例化Scroller得到scrmy控制器对象
  @State map: Map<string, string> = new Map();
  @State num: number = 0
  @State str: string = ''
  @State name: string | undefined = ''
//传值
  @State myid : id = router.getParams() as id
  @State temp:object= router.getParams()

//想看
  @State kannum:number=0
  @State yuenum:number=0

  @State fontcolor:string = '#182431'
  @State selectedfontcolor:string = '#0070FF'
  @State currentindex :number = 0
  private  controller:TabsController = new TabsController()
  @Builder tabbuilder(title:string,tagrtindex:number,selectedimg:Resource,normalimg:Resource){
    Column(){
      Image(this.currentindex === tagrtindex ? selectedimg:normalimg).size({width:25,height:25})
      Text(title).fontColor(this.currentindex === tagrtindex ? '#1698CE' : '#6B6B6B')
    }.width('100%').height(50).justifyContent(FlexAlign.Center)
  }
  build() {
    Tabs({barPosition:BarPosition.End,controller:this.controller })
    {
      TabContent(){
        Column()
        {
          //第一行:搜索框的实现
          Row()
          {
            Column()
            {
              Text('成都>').fontSize(18).fontWeight(FontWeight.Bold)
            }
            Column()
            {
              TextInput({ placeholder: '搜索内容...' })
                .width(250)
                .onChange((value:string)=>{
                  this.str=value
                })
            }
            Button('搜索').width(60).height(30).backgroundColor('#FF69B4').fontWeight(FontWeight.Bold)
              .onClick(()=>{
                this.map.set('zhangshaohan', 'M1')
                this.map.set('xiaojingteng', 'M2')
                this.map.set('JonyJ', 'M3')
                this.map.set('Alin', 'M4')
                this.name = this.map.get(this.str)
                router.pushUrl({
                  url:"pages/"+this.name
                })
              })
          }.width('100%').height('10%')

          //第二行:图标的实现
          Row()
          {
            Column()
            {
              Image($rawfile('pg1.jpg')).width(30).height(30)
              Text('演唱会').fontSize(13).margin({top:10})
            }.width('20%').height('100%').justifyContent(FlexAlign.Center)


            Column()
            {
              Image($rawfile('pg2.jpg')).width(30).height(30)
              Text('音乐节').fontSize(13).margin({top:10})
            }.width('20%').height('100%').justifyContent(FlexAlign.Center)


            Column()
            {
              Image($rawfile('pg3.jpg')).width(30).height(30)
              Text('LiveHouse').fontSize(13).margin({top:10})
            }.width('20%').height('100%').justifyContent(FlexAlign.Center)


            Column()
            {
              Image($rawfile('pg4.jpg')).width(30).height(30)
              Text('音乐剧').fontSize(13).margin({top:10})
            }.width('18%').height('100%').justifyContent(FlexAlign.Center)

            Column()
            {
              Image($rawfile('pg5.jpg')).width(30).height(30)
              Text('脱口秀').fontSize(13).margin({top:10})
            }.width('20%').height('100%').justifyContent(FlexAlign.Center)

          }.width('100%').height('10%').ba
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值