答案:使用Golang的net/http和database/sql包,结合SQLite实现学生成绩管理系统的增删改查功能,通过HTML模板展示数据,利用预处理语句防止SQL注入,完成表单提交与页面跳转逻辑。
实现一个学生成绩管理系统,核心在于处理表单输入、连接数据库并执行增删改查操作。Golang 提供了 net/http 包处理 Web 请求,database/sql 包操作数据库,配合模板引擎展示页面。下面是一个简洁实用的示例,使用 SQLite 作为数据库,展示如何通过表单录入学生成绩,并在网页中查看和管理数据。
1. 项目结构与依赖准备
创建项目目录,结构如下:
main.gotemplates/index.htmladd.html
使用 SQLite 无需额外安装数据库服务,导入驱动:
go mod init studentmgrgo getgithub.com/mattn/go-sqlite3
2. 数据库初始化与模型定义
定义学生结构体,并创建数据库表:
立即学习
“
go语言免费学习笔记(深入)
”;
package mainimport ("database/sql" _"github.com/mattn/go-sqlite3" "log")type Student struct {ID intName stringScore float64}func initDB() *sql.DB {db, err := sql.Open("sqlite3", "students.db")if err != nil {log.Fatal("打开数据库失败:", err)}sqlStmt := `CREATE TABLE IF NOT EXISTS students (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,score REAL);`_, err = db.Exec(sqlStmt)if err != nil {log.Fatal("建表失败:", err)}return db}
3. 表单页面与 HTML 模板
在 templates/index.html 中列出所有学生:
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
学生成绩列表学生成绩管理
添加学生
| 姓名 | 成绩 |
{{range .}}| {{.Name}} | {{.Score}} |
{{end}}
templates/add.html 是添加学生的表单:
4.
路由
处理与表单接收
编写 HTTP 路由处理函数:
package mainimport ("html/template""net/http""strconv")var db *sql.DBvar tpl = template.Must(template.ParseGlob("templates/*.html"))func indexHandler(w http.ResponseWriter, r *http.Request) {rows, err := db.Query("SELECT id, name, score FROM students")if err != nil {http.Error(w, "查询失败", 500)return}defer rows.Close()var students []Studentfor rows.Next() {var s Studentrows.Scan(&s.ID, &s.Name, &s.Score)students = append(students, s)}tpl.ExecuteTemplate(w, "index.html", students)}func addHandler(w http.ResponseWriter, r *http.Request) {if r.Method == "GET" {tpl.ExecuteTemplate(w, "add.html", nil)return}r.ParseForm()name := r.FormValue("name")scoreStr := r.FormValue("score")score, err := strconv.ParseFloat(scoreStr, 64)if err != nil {http.Error(w, "成绩格式错误", 400)return}_, err = db.Exec("INSERT INTO students(name, score) VALUES(?, ?)", name, score)if err != nil {http.Error(w, "插入失败", 500)return}http.Redirect(w, r, "/", http.StatusSeeOther)}func main() {db = initDB()defer db.Close()http.HandleFunc("/", indexHandler)http.HandleFunc("/add", addHandler)http.ListenAndServe(":8080", nil)}
启动服务后访问
http://localhost:8080
即可查看和添加学生信息。
基本上就这些。这个例子展示了 Golang 如何通过标准库完成 Web 表单处理和数据库操作,适合学习基础流程。实际项目中可替换为 MySQL 或 PostgreSQL,并加入输入校验、错误提示、分页等功能。不复杂但容易忽略细节,比如 SQL 注入防范(本例使用预处理已避免)和模板安全输出。