当前位置:   article > 正文

鸿蒙购物系统——首页、分类、购物车、我的_鸿蒙系统商品列表实验报告

鸿蒙系统商品列表实验报告

本次期末设计的购物软件是使用ArkTS语言所写的。

该软件主要是由四个部分组成,分别是


首页:

首页界面是将数据库中的所有内容进行展示,列表中的每一条数据都可进行点击事件并将该条数据的详细内容进行展示(顶部的搜索框暂时只能够进行页面的跳转功能,无法进行对商品的搜索,还在优化中)。

0cbb2039584946bc856c980f804e8bee.png

a04d3a027afc4ba1a94fff0a3557a543.png

分类:

在此页面中是将数据库中的内容进行分类展示

1a679566bf84426aaeb948dca77ed5e5.png

购物车

在商品详细界面可以将商品加入到购物车中。在购物车界面中可以将页面中的商品一键清空。(暂时因为能力有限尚未实现合计以及支付功能,在未来会进一步的完善此功能)

e43b0b6c54a942d98d632bfcef1c6884.png

我的:

在这个界面中,昵称可以根据不同用户登录的账号进行改变。在中间的列表中仅仅只有修改密码,观看视频和退出登录、商铺列表是可以进行点击事件,其他图标只是做了静态页面。

979d66cb1ce9401185168a42f657d8c1.png


以下是具体使用到的一些代码:

框架:

  1. struct Index {
  2. @State currentIndex: number = 0; //表示索引页
  3. private tabsController: TabsController = new TabsController();
  4. @Builder TabBuilder(title: string, targetIndex: number, selectedImg: Resource, normalImg: Resource) {
  5. Column() {...}
  6. .width('100%')
  7. .height(50)
  8. .justifyContent(FlexAlign.Center)
  9. .onClick(() => {...})
  10. }
  11. build() {
  12. Tabs({ barPosition: BarPosition.End, controller: this.tabsController }) {
  13. TabContent() {
  14. Page1()
  15. }
  16. .tabBar(this.TabBuilder('首页', 0, $r('app.media.shouyedianji'), $r('app.media.shouye')))
  17. TabContent(){
  18. Column(){...}
  19. .barMode(BarMode.Scrollable)
  20. }
  21. .width('100%')
  22. }
  23. .tabBar(this.TabBuilder('分类', 1, $r('app.media.fenleidianji'), $r('app.media.fenlei')))
  24. TabContent() {
  25. Gouwuche()
  26. }
  27. .tabBar(this.TabBuilder('购物车', 2, $r('app.media.gouwuchedianji'), $r('app.media.gouwuche')))
  28. TabContent() {
  29. wode()
  30. }
  31. .tabBar(this.TabBuilder('我的', 3, $r('app.media.mydianji'), $r('app.media.my')))
  32. }
  33. .scrollable(false)
  34. .barWidth('100%')
  35. .barHeight(50)
  36. .onChange((index: number) => {
  37. this.currentIndex = index;
  38. })
  39. }
  40. // 转场动画使用系统提供的多种默认效果(平移、缩放、透明度等)
  41. pageTransition() {...}
  42. }

我的:

  1. struct wode{
  2. @State message: Users = router.getParams()?.['data']
  3. @Builder OrderItem(icon: Resource, name: string) {
  4. Column() {
  5. Image(icon).width(30).height(30)
  6. Text(name).margin({ top: 3 }).fontSize(11)
  7. }.layoutWeight(1)
  8. }
  9. @Builder MyItem(icon: Resource, name: string, isShowLine = true) {
  10. Column() {
  11. Row() {
  12. Image(icon).width(20).height(20)
  13. Text(name).fontSize(14).margin({ left: 10 })
  14. Blank()
  15. Image($r('app.media.arrow')).width(12).height(18)
  16. }.width('100%').padding(15)
  17. if (isShowLine) {
  18. Divider().color('#e3e2e2').margin({ left: 15, right: 15 })
  19. }
  20. }
  21. }
  22. @Builder MyItem1(icon: Resource, name: string, isShowLine = true) {
  23. Column() {
  24. Row() {
  25. Image(icon).width(20).height(20)
  26. Text(name).fontSize(14).margin({ left: 10 })
  27. Blank()
  28. Image($r('app.media.arrow')).width(12).height(18)
  29. }
  30. .width('100%')
  31. .padding(15)
  32. if (isShowLine) {
  33. Divider().color('#e3e2e2').margin({ left: 15, right: 15 })
  34. }
  35. }
  36. .onClick(() => {
  37. router.pushUrl({
  38. url: 'pages/XiugaiXinxi',
  39. })
  40. })
  41. }
  42. @Builder MyItem2(icon: Resource, name: string, isShowLine = true) {
  43. Column() {
  44. Row() {
  45. Image(icon).width(20).height(20)
  46. Text(name).fontSize(14).margin({ left: 10 })
  47. Blank()
  48. Image($r('app.media.arrow')).width(12).height(18)
  49. }
  50. .width('100%')
  51. .padding(15)
  52. if (isShowLine) {
  53. Divider().color('#e3e2e2').margin({ left: 15, right: 15 })
  54. }
  55. }
  56. .onClick(() => {
  57. router.pushUrl({
  58. url: 'pages/login',
  59. })
  60. })
  61. }
  62. @Builder MyItem3(icon: Resource, name: string, isShowLine = true) {
  63. Column() {
  64. Row() {
  65. Image(icon).width(20).height(20)
  66. Text(name).fontSize(14).margin({ left: 10 })
  67. Blank()
  68. Image($r('app.media.arrow')).width(12).height(18)
  69. }
  70. .width('100%')
  71. .padding(15)
  72. if (isShowLine) {
  73. Divider().color('#e3e2e2').margin({ left: 15, right: 15 })
  74. }
  75. }
  76. .onClick(() => {
  77. router.pushUrl({
  78. url: 'pages/dianpulist',
  79. })
  80. })
  81. }
  82. @Builder MyItem4(icon: Resource, name: string, isShowLine = true) {
  83. Column() {
  84. Row() {
  85. Image(icon).width(20).height(20)
  86. Text(name).fontSize(14).margin({ left: 10 })
  87. Blank()
  88. Image($r('app.media.arrow')).width(12).height(18)
  89. }
  90. .width('100%')
  91. .padding(15)
  92. if (isShowLine) {
  93. Divider().color('#e3e2e2').margin({ left: 15, right: 15 })
  94. }
  95. }
  96. .onClick(() => {
  97. router.pushUrl({
  98. url: 'pages/view',
  99. })
  100. })
  101. }
  102. build(){
  103. // 标题部分
  104. Column(){
  105. Row(){
  106. Row({space:10}) {
  107. Image($r('app.media.xiamuAPP'))
  108. .width(80)
  109. .height(80)
  110. .borderRadius(50) // 添加圆弧效果
  111. .borderWidth(1)
  112. .margin({right:5})
  113. Blank()
  114. Column() {
  115. Text('昵称:' + globalThis.name)
  116. .margin({ left: 20 })
  117. .fontColor('#ff4e4949')
  118. .fontSize(30)
  119. Row() {
  120. Image($r('app.media.vip')).width(20).height(15)
  121. Text('会员VIII级').fontSize(20).fontColor('#fff4c42c')
  122. }
  123. }.margin({top:3})
  124. Blank()
  125. Image($r('app.media.arrow')).width(25).height(25)
  126. Blank()
  127. }
  128. .margin({top:30,left:50})
  129. }
  130. .width('100%')
  131. .height(200)
  132. .justifyContent(FlexAlign.Center)
  133. .backgroundImage('image/beijing.jpg')
  134. .backgroundImageSize(ImageSize.Cover)
  135. Column() {
  136. Row() {
  137. this.OrderItem($r('app.media.dfk'), '待付款')
  138. this.OrderItem($r('app.media.dfh'), '待发货')
  139. this.OrderItem($r('app.media.dsh'), '待收货')
  140. this.OrderItem($r('app.media.dpj'), '待评价')
  141. this.OrderItem($r('app.media.tksh'), '退款/售后')
  142. }.width('100%').backgroundColor(Color.White)
  143. .borderRadius(10).padding({ top: 20, bottom: 20 })
  144. Column() {
  145. this.MyItem($r('app.media.qbdd'), '全部订单')
  146. this.MyItem($r('app.media.dzgl'), '收货地址');
  147. this.MyItem($r('app.media.wdsc'), '收藏管理');
  148. this.MyItem3($r('app.media.spgl'), '商铺列表');
  149. this.MyItem($r('app.media.yjfk'), '意见反馈');
  150. this.MyItem4($r('app.media.video'), '精选视频');
  151. this.MyItem1($r('app.media.xiugaixinxi'), '修改密码');
  152. this.MyItem2($r('app.media.tuichudenglu'), '退出登录', false);
  153. }
  154. .width('100%')
  155. .backgroundColor(Color.White)
  156. .borderRadius(10)
  157. .margin({ top: 10 })
  158. .padding({ top: 20, bottom: 20 })
  159. }.width('100%').padding(10)
  160. }
  161. .alignItems(HorizontalAlign.Start)
  162. .width('100%')
  163. .height('100%')
  164. }
  165. }

具体代码如下连接:

https://gitee.com/diligence---pass-every-exam/harmony-os.git

欢迎大家一起讨论,修改和补充代码中的不足之处↖(^ω^)↗

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/800416
推荐阅读
相关标签
  

闽ICP备14008679号