Golang期末作业之电子商城(源码)

作品介绍

1.网页作品简介方面 :主要有:首页 商品详情 购物车 订单  评价 支付 总共 5个页面

2.作品使用的技术:这个作品基于Golang语言,并且结合一些前端的知识,例如:HTML、CSS、JS、AJAX等等知识点,同时连接数据库的,实现一个简单的电子商场项目。代码水平也就是简单的学生水平,希望有大佬可以帮忙提出改进的建议。

设计说明

1.首页

首页的内容包括页眉、欢迎横幅、轮播图、主义内容区。

  • 页眉部分 (<header>)

    • 包含导航和搜索表单,用于用户导航和搜索功能。
  • 欢迎横幅 (<div class="welcome-banner">)

    • 一个简单的欢迎消息,通常用于引导用户注意力。
  • 轮播图 (<div class="carousel">)

    • 一组图片,通过 JavaScript 控制轮播效果。
  • 主要内容区 (<main>)

    • 推荐商品标题 (<h2 class="recommended-title">):标题部分,介绍推荐商品。
    • 商品列表容器 (<ul class="goods-list">)

2.商品详情

商品详情的页面也有导航栏,同时当用户点击某一件商品的时候,会跳转到对应的商品详情页

  • 页眉部分 (<header>)

    • 包含一个导航栏,用于用户导航至不同的页面。
  • 商品详情列表 (<ul class="goods-detail">)

3.购物车

  • 主体内容 (<body>)

    • 页眉部分 (<header>)

      • 包含一个导航栏,用于用户导航至不同的页面。
    • 页面主标题 (<h1>购物车</h1>)

      • 显示页面的主标题为“购物车”。
    • 生成订单按钮 (<button id="generateOrder">生成订单</button>)

      • 提供一个按钮,可能用于触发生成用户购物车中商品的订单操作。
    • 商品列表 (<table>)

      • 用表格形式展示用户已选购的商品信息。

4.订单

与购物车页面相似,同时利用时间戳来生成订单时间

5.评价

与购物车页面相似,利用一些前端的知识来实现评价功能

6.支付

与购物车页面相似,简单输出支付的金额

效果展示

首页

商品详情

购物车

生成订单

评价

支付

数据库展示

代码演示

首页

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>商品列表</title><link rel="stylesheet" href="/Static/styles/index.css"><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script><script src="Static/js/index.js"></script>
</head><body><!-- 导航栏 --><header><nav><ul><li><a href="/">首页</a></li><li><a href="/showCart">购物车</a></li><li><a href="/order">订单</a></li><li><a href="/showComment">评价</a></li><li><a href="/payment">支付</a></li></ul><form class="search-form" action="/search" method="get"><input type="text" name="query" placeholder="搜索商品..."><button type="submit">搜索</button></form></nav></header><div class="welcome-banner"><h2>欢迎来到我的商店</h2></div><!-- 轮播图 --><div class="carousel"><img src="Static/images/1.png" alt=" 商品图片1" class="active"><img src="Static/images/2.png" alt="商品图片2"><img src="Static/images/3.png" alt="商品图片3"><div class="controls"><span class="control-prev">&lt;</span><span class="control-next">&gt;</span></div></div><main><h2 class="recommended-title">推荐商品</h2><ul class="goods-list"> <!-- 这里是商品列表的容器 -->{{range .}}<li><a href="/goods?id={{ .GoodId }}"><img src="{{.ImageUrl}}" alt="{{.GoodName}}" style="width:100px;height:auto;"> <!-- 使用auto保持图片比例 --><h2>{{.GoodName}}</h2><p class="price">价格: {{.Price}}</p><p>库存: {{.Inventory}}</p><p>描述: {{.Description}}</p></a></li>{{end}}</ul></main>
</body></html>

/* 轮播图样式 */
.carousel {position: relative;width: 100%;max-width: 100%; /* 容器宽度占满整个屏幕 */margin: 20px auto; /* 居中显示 */overflow: hidden;
}.carousel img {width: 100%; /* 图片宽度填充整个轮播图容器 */height: auto; /* 高度自适应 */display: none;
}.carousel img.active {display: block;
}.carousel .controls {position: absolute;top: 50%;width: 100%;display: flex;justify-content: space-between;transform: translateY(-50%);
}.carousel .control-prev, .carousel .control-next {background-color: rgba(0, 0, 0, 0.5);color: white;padding: 5px 10px;cursor: pointer;
}body {font-family: Arial, sans-serif;margin: 0;padding: 0;
}header {background-color: #333;color: white;padding: 10px 0;
}header nav ul {list-style-type: none;padding: 0;margin: 0;display: flex;justify-content: center;
}header nav ul li {margin: 0 15px;
}header nav ul li a {color: white;text-decoration: none;font-weight: bold;
}
/* 在index.css中添加 */
.search-form {display: inline-block;margin-left: 20px;
}.search-form input {padding: 5px;font-size: 14px;
}.search-form button {padding: 5px 10px;font-size: 14px;background-color: #007BFF;color: white;border: none;cursor: pointer;
}.welcome-banner {background-color: #f0f8ff; /* 浅蓝色背景 */color: #333; /* 深色文本 */text-align: center; /* 文本居中 */padding: 50px 20px; /* 内边距 */margin: 20px auto; /* 居中 */border-radius: 10px; /* 圆角 */box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* 阴影效果 */
}.welcome-banner h2 {margin: 0;font-size: 2em;
}/* 其他样式 */
.goods-list {list-style-type: none;padding: 0;display: flex;flex-wrap: wrap;justify-content: space-around;
}.goods-list li {background-color: #fff;border: 1px solid #ddd;border-radius: 5px;box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);margin: 10px;padding: 15px;width: calc(33% - 40px);box-sizing: border-box;
}.goods-list li img {max-width: 100%;height: auto;
}.goods-list li h2 {font-size: 1.5em;margin: 10px 0;
}.goods-list li .price {color: #e91e63; /* 粉红色价格 */font-weight: bold;
}.goods-list li p {margin: 5px 0;
}.recommended-title {text-align: center; /* 标题居中 */color: red; /* 标题颜色变红 */
}

商品详情

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>商品详情</title><link rel="stylesheet" href="/Static/styles/goods.css"><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script><script src="Static/js/goods.js"></script></head><body><!-- 导航栏 --><header><nav><ul><li><a href="/">首页</a></li><li><a href="/showCart">购物车</a></li><li><a href="/order">订单</a></li><li><a href="/showComment">评价</a></li><li><a href="/payment">支付</a></li></ul></nav></header><main><ul class="goods-detail"><h1>{{.GoodName}}</h1><img src="{{.ImageUrl}}" alt="{{.GoodName}}" style="width:300px;height:auto;"><p class="price">价格: {{.Price}}</p><p>库存: {{.Inventory}}</p><p>描述: {{.Description}}</p><button class="add-to-cart" data-goods-id="{{.GoodId}}">加入购物车</button></ul></main></body></html>

/* 导航栏样式 */  
header nav {  background-color: #333;  padding: 10px 0;  
}  header nav ul {  list-style: none;  margin: 0;  padding: 0;  display: flex;  justify-content: space-around;  align-items: center;  
}  header nav ul li a {  color: #fff;  text-decoration: none;  padding: 10px 15px;  display: block;  transition: background-color 0.3s ease;  
}  header nav ul li a:hover {  background-color: #555;  
}  /* 设置 main 的宽度、边距等 */  
main {  width: 100%; /* 或者你想要的宽度 */  margin: 20px auto; /* 上下外边距为20px,左右自动居中 */  padding: 20px; /* 内边距 */  box-sizing: border-box; /* 使得padding不影响元素的宽度 */  display: flex; /* 设置为 flex 容器 */  justify-content: center; /* 水平居中 */  align-items: center; /* 垂直居中(如果 main 只有一个子元素的话) */  /* 注意:如果 main 中有多个子元素,你可能需要调整这些属性或移除它们 */  
}  /* 假设 goods-detail 现在是 li 的父元素 */  
.goods-list { /* 可能你需要将 goods-detail 改为一个更有意义的类名,如 goods-list */  display: flex; /* 设置为 flex 容器 */  flex-direction: column; /* 子项垂直排列 */  align-items: center; /* 子项在交叉轴上居中(对于列布局来说,就是水平居中) */  text-align: center; /* 文本内容居中 */  max-width: 800px; /* 假设你希望商品详情有一个最大宽度 */  margin: 0 auto; /* 左右外边距自动,以在水平方向上居中 */  
}  /* 设置 goods-detail 的样式(现在作为 li 的样式) */  
.goods-list li { /* 假设每个商品详情项是一个 li 元素 */  list-style-type: none; /* 移除默认的列表样式 */  margin-bottom: 20px; /* 每个商品详情项之间的间距 */  
}  /* 其他样式保持不变 */  
/* ... */  /* 设置加入购物车按钮的样式 */  
.goods-detail .add-to-cart {  display: inline-block; /* 内联块级元素 */  padding: 10px 20px; /* 内边距 */  background-color: #4CAF50; /* 背景色 */  color: white; /* 文字颜色 */  border: none; /* 无边框 */  border-radius: 4px; /* 边框圆角 */  cursor: pointer; /* 鼠标悬停时变为小手形状 */  text-decoration: none; /* 去除下划线 */  transition: background-color 0.3s ease; /* 背景色过渡效果 */  
}  /* 按钮点击效果 */  
.goods-detail .add-to-cart:hover {  background-color: #45a049; /* 鼠标悬停时的背景色 */  
}

购物车

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>购物车</title><link rel="stylesheet" href="/Static/styles/carts.css"><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script><script src="Static/js/carts.js"></script>
</head><body><header><nav><ul><li><a href="/">首页</a></li><li><a href="/showCart">购物车</a></li><li><a href="/order">订单</a></li><li><a href="/showComment">评价</a></li><li><a href="/payment">支付</a></li></ul></nav></header><h1>购物车</h1><button id="generateOrder">生成订单</button><table><tr><th>商品ID</th><th>商品名称</th><th>图片</th><th>数量</th><th>操作</th></tr>{{range $key, $value := .}}<tr><td>{{$value.GoodId}}</td><td>{{$value.GoodName}}</td><td><img src="{{$value.ImageUrl}}" alt="{{$value.GoodName}}" width="100"></td><td>{{$value.Quantity}}</td><td><button class="delete-item" data-goods-id="{{$value.GoodId}}">删除</button></td></tr>{{end}}</table>
</body></html>

订单

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>订单</title><link rel="stylesheet" href="/Static/styles/order.css"><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script><script src="Static/js/order.js"></script>
</head><body><header><nav><ul><li><a href="/">首页</a></li><li><a href="/showCart">购物车</a></li><li><a href="/order">订单</a></li><li><a href="/showComment">评价</a></li><li><a href="/payment">支付</a></li></ul></nav></header><div class="container"><h1>订单详情</h1><table><thead><tr><th>订单ID</th><th>商品名称</th><th>数量</th><th>单价</th><th>总价</th><th>订单时间</th></tr></thead><tbody>{{ range $index, $order := . }}<tr><td>{{ $order.OrderId }}</td><td>{{ $order.GoodName }}</td><td>{{ $order.Quantity }}</td><td>{{ $order.Price }}</td><td class="total-price">{{ $order.TotalPrice }}</td><td>{{ $order.OrderTime }}</td></tr>{{ end }}</tbody></table><div class="payment-section"><label for="payment-method">选择支付方式:</label><select id="payment-method" name="payment-method"><option value="weChat">微信</option><option value="alipay">支付宝</option><option value="bankCardPayment">银行卡</option></select></div><button id="checkout">结算</button></div>
</body></html>

评价

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>商品详情</title><link rel="stylesheet" href="/Static/styles/comment.css"><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script><script src="Static/js/comment.js"></script>
</head><body><nav><ul><li><a href="/">首页</a></li><li><a href="/showCart">购物车</a></li><li><a href="/order">订单</a></li><li><a href="/showComment">评价</a></li><li><a href="/payment">支付</a></li></ul></nav><div class="container"><h1>商品评价</h1><div class="goods">{{range .}}<div class="good"><img src="{{.ImageUrl}}" alt="{{.GoodName}}"><h2>{{.GoodName}}</h2><p>{{.Description}}</p><div class="review-form"><h3>发表评价</h3><form class="reviewForm" data-product-id="{{.GoodId}}"><input type="hidden" class="productId" value="{{.GoodId}}"><textarea class="reviewContent" placeholder="请输入您的评价"></textarea><button type="submit">提交评价</button></form></div></div>{{end}}</div></div>
</body></html>

支付

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>支付成功页面</title><link rel="stylesheet" href="/Static/styles/pay.css">
</head><body><header><nav><ul><li><a href="/">首页</a></li><li><a href="/showCart">购物车</a></li><li><a href="/order">订单</a></li><li><a href="/showComment">评价</a></li><li><a href="/payment">支付</a></li></ul></nav></header><div class="container"><h1>支付{{.Amount}}元成功</h1><!-- 如果需要显示订单详情,可以在这里添加表格或其他HTML结构 --></div>
</body></html>

代码太多了,小郑就不展示完整代码了,这个电子商场的作业还不是很完善,小郑有时间的话会进行优化修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统信UOS软件包标识化工具deepin-sbom-tools使用

原文链接&#xff1a;统信UOS上使用软件包标识化工具deepin-sbom-tools Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在统信UOS上使用软件包标识化工具deepin-sbom-tools的文章。deepin-sbom-tools是一个强大的工具&#xff0c;可以帮助开发者和系统管理员更好…

Linux初始化新的git仓库

1.在git服务器上找到项目常部署的git地址可以根据其他项目的git地址确认 例如ssh://git192.168.10.100/opt/git/repository.git 用户名&#xff1a;git&#xff08;前面的是用户&#xff09; 服务器地址&#xff1a;192.168.10.100 git仓库路径&#xff1a;/opt/git/ 2.在服务器…

数据结构之折半查找

折半查找的算法思想&#xff1a; 折半查找又称二分查找&#xff0c;它仅仅适用于有序的顺表。 折半查找的基本思想&#xff1a;首先将给定值key与表中中间位置的元素&#xff08;mid的指向元素&#xff09;比较。midlowhigh/2&#xff08;向下取整&#xff09; 若key与中间元…

C#—Json序列化和反序列化

C#—Json序列化和反序列化 在C#中&#xff0c;可以使用System.Web.Script.Serialization.JavaScriptSerializer类来序列化和反序列化JSON数据。 可以使用Newtonsoft.Json库进行JSON的序列化。 可以使用.NET内置的System.Text.Json库来进行JSON的序列化。 json文件格式 [ { …

搜索引擎优化培训机构怎么选?这篇文章告诉你答案

搜索引擎优化&#xff08;SEO&#xff09;已成为网络生存必备技能。然而面对众多培训机构&#xff0c;如何选择优秀者&#xff1f;本文将为您揭晓此事&#xff0c;助您找到腾飞之地。 一、培训机构的多样性&#xff1a;琳琅满目的选择 当前SEO培训市场繁芜复杂&#xff0c;既…

C++ 八股(1)

C语言中strcpy为什么不安全&#xff1f;如何解决&#xff1f; 主要原因是缺乏对输入长度的边界检查&#xff0c;容易导致缓冲区溢出漏洞。 解决&#xff1a;可以使用strncpy函数替代&#xff0c;或者在程序最顶端加入代码段 #define _CRT_SECURE_NO_WARNINGS 缓冲区溢出 …

javascript高级部分笔记

javascript高级部分 Function方法 与 函数式编程 call 语法&#xff1a;call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义&#xff1a;调用一个对象的一个方法&#xff0c;以另一个对象替换当前对象。 说明&#xff1a;call 方法可以用来代替另一个对象调用一个方法。cal…

MySQL运维实战之ProxySQL(9.5)proxysql和MySQL Group Replication配合使用

作者&#xff1a;俊达 如果后端MySQL使用了Group Replication&#xff0c;可通过配置mysql_group_replication_hostgroups表来实现高可用 1 mysql_group_replication_hostgroups 字段描述writer_hostgroup写hostgroup。read_only和super_read_only OFF的节点。backup_writer…

Vue3 pdf.js将二进制文件流转成pdf预览

好久没写东西&#xff0c;19年之前写过一篇Vue2将pdf二进制文件流转换成pdf文件&#xff0c;如果Vue2换成Vue3了&#xff0c;顺带来一篇文章&#xff0c;pdf.js这个东西用来解决内网pdf预览&#xff0c;是个不错的选择。 首先去pdfjs官网&#xff0c;下载需要的文件 然后将下载…

第4章 IT服务规划设计

第4章 IT服务规划设计 4.1 概述 规划设计处于整个IT服务生命周期中的前端&#xff0c;可以帮助IT服务供方了解客户的需求&#xff0c;并对其进行全面的需求分析&#xff0c;然后通过对服务要素&#xff08;包括人员、资源、技术和过程&#xff09;、服务模式和服务方案的具体…

OpenHarmony4.x 系统模拟器环境

先下载源码和编译程序&#xff1a; 首先查看 OpenHarmony4.1源码下载、编译&#xff0c;生成OHOS_Image可执行文件的最简易流程 准备在QEMU模拟器中运行ARM Cortex-M4的轻型开源鸿蒙系统 官方支持的开发板和模拟器种类-编译形态整体说明OpenAtom OpenHarmony 已支持的示例工…

ArduPilot开源代码之AP_MSP

ArduPilot开源代码之AP_MSP 1. 源由2. Library设计2.1 启动代码2.2 支持特性2.3 MSP DisplayPort v.s. DJI FPV OSD 3. 重要例程3.1 AP_MSP::init3.2 AP_MSP::loop3.3 AP_MSP::init_backend 4. 实例理解5. 总结6. 参考资料 1. 源由 AP_MSP是处理MSP协议格式的报文数据应用类。…

反向业务判断逻辑

业务功能需求&#xff1a; 根据id扣减用户余额 包括&#xff1a;判断用户状态是否正常判断用户余额是否充足 正向逻辑&#xff1a; 判断用户为正常下&#xff0c;判断用户余额充足&#xff0c;进行余额扣减&#xff1b; 》正向逻辑&#xff0c;多重嵌套&#xff0c;代码不美观…

✈️一文带你入门【NestJS】

✈️引言 在现代Web开发领域&#xff0c;框架和技术的迭代速度令人咋舌。其中&#xff0c;NestJS作为一款基于Node.js的后端框架&#xff0c;以其卓越的设计理念和强大的功能集&#xff0c;迅速吸引了众多开发者的眼球。本文将带你深入了解NestJS的起源、发展&#xff0c;以及…

SpringIOC原理

SpringIOC原理 1.概念 Spring通过一个配置文件描述Bean及Bean之间的依赖关系&#xff0c;利用Java语言的反射功能实例化Bean并建立Bean之间的依赖关系。Spring的IOC容器在完成这些底层工作的基础上&#xff0c;还提供了Bean实例缓存、生命周期管理、Bean实例代理、事件发布、…

AI提示词:AI辅导「数学作业」

辅导孩子作业对许多家长来说可能是一件头疼的事&#xff0c;但这部分工作可以在一定程度上交给AI来完成。 打开ChatGPT4,输入以下内容&#xff1a; # Role 数学辅导专家## Profile - author: 姜小尘 - version: 02 - LLM: Kimi - language: 中文 - description: 专门为小学生…

加密算法详解:对称加密、非对称加密、Hash算法

对称加密、非对称加密和哈希算法是信息安全中的三种主要加密技术&#xff0c;它们各自有不同的特点和用途&#xff1a; 对称加密&#xff08;Symmetric Encryption&#xff09; 工作原理&#xff1a;使用相同的密钥进行加密和解密。速度&#xff1a;通常非常快&#xff0c;适…

Elasticsearch:Node.js ECS 日志记录 - Morgan

这是之前系列文章&#xff1a; Elasticsearch&#xff1a;Node.js ECS 日志记录 - Pino Elasticsearch&#xff1a;Node.js ECS 日志记录 - Winston 中的第三篇文章。在今天的文章中&#xff0c;我将描述如何使用 Morgan 包针对 Node.js 应用进行日子记录。此 Morgan Node.j…

包装器 std::function

使用前&#xff0c;包头文件&#xff1a;#include <functional> std::function 是 C标准库 中的一个通用函数包装器&#xff1b; 它可以储存、复制、调用任何可调用的对象&#xff0c;包括&#xff1a;函数指针、成员函数、绑定的成员函数、lambda表达式、仿函数等。 1…

Selenium Grid- 让自动化分布式执行变得可能

什么是 Selenium Grid&#xff1f; Selenium Grid 是 Selenium 的三大组件之一&#xff0c;允许用户同时在不同的机器和系统上测试不同浏览器。 也就是说 Selenium Grid 支持分布式的测试执行。它可以让你的测试用例在一个分布式的执行环境中运行。 由上图可见&#xff0c;测试…