数据库大作业——图形界面为App交互

  • 大作业效果
  • 大作业简介
  • 大作业步骤
  • 前期搭建工具
  • 1. 编译环境准备
  • 2. 安装相关软件
  • 3. 参照视频教程
  • 4. 基础代码完成
  • 添加数据功能函数
  • 更新数据功能函数
  • 删除数据功能函数
  • 查询数据功能函数
  • 后期优化工作
  • 1. 概念结构设计
  • 2. 逻辑结构设计
  • 关系模式
  • 依赖关系
  • 3. 数据流图(我直接画流程图😂)
  • 注册与登录界面
  • 常用语提示界面
  • 个人动态发布页面
  • 4. 数据字典
  • 大作业建议


大作业效果

我做的是一款微型App,简单实现了一下增删改查四个功能,用的是非常小众的swift语言

先看一下效果,最简单的初始界面以及内嵌之后的App界面优化
最简单的如图(其实只要完成到这样算完成任务了😂)

mysql 作业计划 mysql大作业设计_swift


优化之后:

mysql 作业计划 mysql大作业设计_mysql 作业计划_02


mysql 作业计划 mysql大作业设计_swift_03


mysql 作业计划 mysql大作业设计_mysql 作业计划_04

大作业简介

本次数据库实验完成一个基于数据管理系统的App
编写环境:MacOS12 Monterey
编译器:Xcode13.0
适配平台:IOS 14及以上
使用语言:SwiftUl

大作业步骤

前期搭建工具

1. 编译环境准备

一个能够使用xcode12及以上版本的电脑(可以是虚拟机)

2. 安装相关软件

安装XAMPP,安装链接,用于在网页端管理Mysql,设置步骤如下

mysql 作业计划 mysql大作业设计_swift_05


mysql 作业计划 mysql大作业设计_数据库_06

3. 参照视频教程

原视频链接

接着按照这个视频的操作来完成基础的功能设置


MySQL数据库&&SwiftUI2.0教程


4. 基础代码完成

视频中数据库增删改查的代如下,基本非常类似,学会一个即可

添加数据功能函数
func createPost(parameters:[String:Any]) {
	guard let url = URL(string: "\(prefixUrl)/createPost") else{
		print("Not found url")
		return
	}
	let data = try! JSONSerialization.data(withJSONObject: parameters)
	var request = URLRequest(url: url)
	request.httpMethod = "POST"
	request.httpBody = data
	request.setValue("application/json", forHTTPHeaderField: "Content-Type")
	URLSession.shared.dataTask(with: request){ (data, res, error) in
		if error != nil{
			print("error",error?.localizedDescription ?? "")
			return
		}
		do {
			if let data = data{
				let result = try JSONDecoder().decode(DataModel.self, from: data)
				DispatchQueue.main.async {
					print(result)
			}
		} else {
				print("No data")
			}
		} catch let JsonError {
			print("fetch json error", JsonError.localizedDescription)
		}
	}
	.resume()
}
更新数据功能函数
func updatePost(parameters:[String:Any]) {
	guard let url = URL(string: "\(prefixUrl)/updatePost") else{
		print("Not found url")
		return
	}
	let data = try! JSONSerialization.data(withJSONObject: parameters)
	var request = URLRequest(url: url)
	request.httpMethod = "PUT"
	request.httpBody = data
	request.setValue("application/json", forHTTPHeaderField: "Content-Type")
	URLSession.shared.dataTask(with: request){ (data, res, error) in
	if error != nil{
		print("error",error?.localizedDescription ?? "")
		return
	}
	do {
		if let data = data{
			let result = try JSONDecoder().decode(DataModel.self, from: data)
			DispatchQueue.main.async {
				print(result)
			}
		} else {
			print("No data")
		}
	} catch let JsonError {
			print("fetch json error", JsonError.localizedDescription)
		}
	}
	.resume()
}
删除数据功能函数
func deletePost(parameters:[String:Any]) {
	guard let url = URL(string: "\(prefixUrl)/deletePost") else{
		print("Not found url")
		return
	}
	let data = try! JSONSerialization.data(withJSONObject: parameters)
	var request = URLRequest(url: url)
	request.httpMethod = "DELETE"
	request.httpBody = data
	request.setValue("application/json", forHTTPHeaderField: "Content-Type")
	URLSession.shared.dataTask(with: request){ (data, res, error) in
	if error != nil{
		print("error",error?.localizedDescription ?? "")
		return
	}
	do {
		if let data = data{
			let result = try JSONDecoder().decode(DataModel.self, from: data)
			DispatchQueue.main.async {
				print(result)
			}
		} else {
			print("No data")
		}
	} catch let JsonError {
		print("fetch json error", JsonError.localizedDescription)
		}
	}
	.resume()
}
查询数据功能函数
func fetchPosts() {
	guard let url = URL(string: "\(prefixUrl)/posts") else{
		print("Not found url")
		return
	}
	URLSession.shared.dataTask(with: url){ (data, res, error) in
	if error != nil{
		print("error",error?.localizedDescription ?? "")
		return
	}
	do {
		if let data = data{
			let result = try JSONDecoder().decode(DataModel.self, from: data)
			DispatchQueue.main.async {
				self.items = result.data
			}
		} else {
				print("No data")
			}
		} catch let JsonError {
			print("fetch json error", JsonError.localizedDescription)
		}
	}
	.resume()
}

至此,就完成了大作业的前期基本工作。

后期优化工作

后期主要将刚才搭建的数据库想办法嵌入实际的App中,实现三个功能页面:注册登录页面,用语提示页面,个人动态发布页面,优化部分属于八仙过海,可以自由发挥,我就不发代码了,简单记录一下构思的过程。

1. 概念结构设计

mysql 作业计划 mysql大作业设计_mysql 作业计划_07

2. 逻辑结构设计

关系模式

用户(用户编号,用户名,账户,密码)
动态(动态编号,评论数,点赞量,转发数,发布时间,用户编号)
常用语(语句编号,语句标题,语句内容,用户编号)

依赖关系

用户—>动态用户—>常用语
用户—>用户账号用户—>用户密码
候选码为用户,由于逻辑关系极为简单,所以自动满足3NF,无需进行调整

3. 数据流图(我直接画流程图😂)

注册与登录界面

mysql 作业计划 mysql大作业设计_mysql_08

常用语提示界面

mysql 作业计划 mysql大作业设计_mysql 作业计划_09

个人动态发布页面

mysql 作业计划 mysql大作业设计_mysql 作业计划_10

4. 数据字典

mysql 作业计划 mysql大作业设计_json_11

mysql 作业计划 mysql大作业设计_mysql_12


mysql 作业计划 mysql大作业设计_mysql_13