实例教程-学生管理系统

2020-08-05 14:33 更新

本文档介绍如何使用云开发能力,无需域名、无需服务器,即可快速搭建一个学生信息管理系统,最后成型的应用展示如下:

提供的功能有:

  • 学生信息(姓名、年龄、头像)的录入
  • 学生信息读取和展示
  • 文件上传

准备工作

  1. 注册腾讯云账号,注册成功后即可使用腾讯云服务,已注册可忽略此步骤。
  2. 登录腾讯云 云开发控制台,单击【立即创建并使用】,新建一个环境来进行部署。 如果您之前创建过环境,可以继续使用已创建的按量计费环境,或者再次【新建环境】。
  3. 在新建环境窗口中,根据实际需求填写环境名称,选择【按量计费】,单击【立即开通】即可开通环境。
  4. <span id="step1.3"></span>开通成功之后,单击环境名称,进入环境总览页面。请记住您的环境 ID,这个 ID 在后续步骤将被使用,如下所示:

步骤1:开启匿名登录

搭建学生信息管理系统,需开启匿名登录,前往 登录授权 控制台,单击匿名登录开关,如下:

步骤2:创建云函数

  1. 单击左侧 云函数,单击新建【新建云函数】,开始创建云函数。
  2. 创建函数名为 index,运行环境为 Nodejs 10.15,将下文的 示例代码 拷贝到 index 函数内并保存。

    ! 需要把代码第2行的envId改为您的真实环境 ID。

<spsn id="code"></span> 函数完整代码如下:

  1. // 此处填入您的真实环境 ID
  2. const envId = "your-env-id"
  3. exports.main = async (event) => {
  4. // 网页JS代码
  5. const script =
  6. `
  7. var envId = "${envId}"
  8. class FunctionQuickStarter {
  9. constructor() {
  10. // 绑定 dom
  11. this.addNameInput = document.getElementById("add-name")
  12. this.deleteNameInput = document.getElementById("delete-name")
  13. this.addAgeInput = document.getElementById("add-age")
  14. this.addAvatarInput = document.getElementById("add-avatar")
  15. this.addDataButton = document.getElementById("add-button")
  16. this.infoBox = document.getElementById("info-box")
  17. // 绑定 dom listener
  18. this.addAvatarInput.addEventListener("change", this.addAvatar.bind(this), false)
  19. this.addDataButton.addEventListener("click", this.addData.bind(this), false)
  20. // 初始化 CloudBase
  21. this.app = tcb.init({
  22. env: envId
  23. })
  24. this.setButtonStatus(true)
  25. this.signIn()
  26. }
  27. setButtonStatus(status) {
  28. this.addDataButton.disabled = status
  29. if (!status) {
  30. this.queryData()
  31. }
  32. }
  33. // 匿名登录
  34. signIn() {
  35. var auth = this.app.auth({
  36. persistence: "local"
  37. })
  38. if(!auth.hasLoginState()) {
  39. auth.signInAnonymously().then(() => {
  40. this.setButtonStatus(false)
  41. })
  42. } else {
  43. this.setButtonStatus(false)
  44. }
  45. }
  46. // 录入信息
  47. addData(e) {
  48. e.stopPropagation()
  49. e.preventDefault()
  50. var name = this.addNameInput.value
  51. var age = parseFloat(this.addAgeInput.value)
  52. var coll = this.app.database().collection("test_db")
  53. if (!name) {
  54. window.alert(
  55. "姓名不能为空!"
  56. )
  57. return
  58. }
  59. if (!(age > 0 && age < 200)) {
  60. window.alert(
  61. "年龄需要在 0 ~ 200 之间"
  62. )
  63. return
  64. }
  65. if (!this.avatarUrl) {
  66. window.alert(
  67. "头像不能为空!"
  68. )
  69. return
  70. }
  71. this.setButtonStatus(true)
  72. coll.add({
  73. name: name,
  74. age: age,
  75. avatar: this.avatarUrl
  76. }).then((res) => {
  77. if (res.code) {
  78. console.log("数据库新增失败", res)
  79. // 打印数据库新增失败的信息
  80. window.alert(
  81. "成绩录入失败: [code=" + res.code + "] [message=" + res.message + "]"
  82. )
  83. } else {
  84. console.log("数据库新增成功", res)
  85. this.avatarUrl = ""
  86. window.alert(
  87. "成绩录入成功!"
  88. )
  89. }
  90. this.setButtonStatus(false)
  91. })
  92. }
  93. // 上传头像
  94. addAvatar(e) {
  95. e.stopPropagation()
  96. e.preventDefault()
  97. var file = e.target.files[0]
  98. var name = file.name
  99. this.app.uploadFile({
  100. cloudPath: (new Date()).valueOf() + "-" + name,
  101. filePath: file
  102. }).then(res => {
  103. // 云文件ID
  104. var fileID = res.fileID
  105. // 通过云文件ID 获取 云文件链接
  106. this.app.getTempFileURL({
  107. fileList: [fileID]
  108. }).then(res2 => {
  109. var fileObj = res2.fileList[0]
  110. var url = fileObj.tempFileURL
  111. this.avatarUrl = url
  112. })
  113. })
  114. }
  115. // 查询信息
  116. queryData() {
  117. var coll = this.app.database().collection("test_db")
  118. coll.where({}).get().then((res) => {
  119. if (res.code) {
  120. console.log("数据库查询失败", res)
  121. // 打印数据库查询失败的信息
  122. window.alert(
  123. "成绩查询失败: [code=" + res.code + "] [message=" + res.message + "]"
  124. )
  125. } else {
  126. console.log("数据库查询成功", res)
  127. // 打印数据库查询结果
  128. var html =
  129. "<tr>" +
  130. "<th>姓名</th>" +
  131. "<th>年龄</th>" +
  132. "<th>头像</th>" +
  133. "</tr>"
  134. if (res.data.length > 0) {
  135. res.data.forEach((data) => {
  136. html +=
  137. "<tr>" +
  138. "<td>" + data.name + "</td>" +
  139. "<td>" + data.age + "</td>" +
  140. "<td><img src='" + data.avatar + "' style='width:60px;height:60px'></td>" +
  141. "</tr>"
  142. })
  143. this.infoBox.innerHTML =
  144. "<table style='margin: 0 auto'>" +
  145. html +
  146. "</table>"
  147. } else {
  148. window.alert(
  149. "查无此人!"
  150. )
  151. }
  152. }
  153. })
  154. }
  155. }
  156. window.addEventListener("load", function() {
  157. window.app = new FunctionQuickStarter()
  158. })
  159. `
  160. // 网页HTML代码
  161. const body =
  162. `
  163. <!doctype html>
  164. <html lang="zh">
  165. <head>
  166. <meta charset="utf-8">
  167. <script src="https://imgcache.qq.com/qcloud/tcbjs/1.9.0/tcb.js" rel="external nofollow" ></script>
  168. <script type="text/javascript">${script}</script>
  169. </head>
  170. <body style="text-align:center;">
  171. <header>
  172. <h1>学生信息系统</h1>
  173. </header>
  174. <div style="margin: 0 30%; padding: 20px 0; border: solid;">
  175. <h2>录入信息</h2>
  176. <form>
  177. 姓名:
  178. <input id="add-name">
  179. <br><br>
  180. 年龄:
  181. <input id="add-age">
  182. <br><br>
  183. 头像:
  184. <input type="file" id="add-avatar" accept=".jpg, .jpeg, .png" style="width: 153px"/>
  185. <br><br>
  186. <button id="add-button">录入</button>
  187. <br><br>
  188. </form>
  189. <h2>信息列表</h2>
  190. <div id="info-box"></div>
  191. </div>
  192. </body>
  193. </html>
  194. `
  195. return {
  196. statusCode: 200,
  197. headers: {
  198. 'content-type': 'text/html'
  199. },
  200. body: body
  201. }
  202. }

步骤3:启用云接入

  1. 前往 云开发 控制台云接入页面,打开云接入开关,如下:
  2. 单击【新建】,开始新建触发路径,配置项如下说明:
    • 触发路径:填写/quickstart
    • 关联资源:选择步骤2中创建的 index 函数。
  3. 单击【确认】即可添加成功。

步骤4:创建数据库

  1. 前往 数据库 控制台新建集合页面。
  2. 单击【新建集合】,创建集合名为test_db的数据库集合。
  3. 单击集合名称,进入集合管理页。
  4. 在【权限设置】页签中,设置该集合的权限设置为所有用户可读
  5. 单击【保存】完成配置。

步骤5:访问网站

  1. 完成以上配置后,在 云接入 页面,即可复制云接入的域名,如下:
  2. 使用复制的域名xx.service.tcloudbase.com/quickstart,即可访问搭建好的学生管理系统。
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号