数据库大作业——图形界面为App交互
- 大作业效果
- 大作业简介
- 大作业步骤
- 前期搭建工具
- 1. 编译环境准备
- 2. 安装相关软件
- 3. 参照视频教程
- 4. 基础代码完成
- 添加数据功能函数
- 更新数据功能函数
- 删除数据功能函数
- 查询数据功能函数
- 后期优化工作
- 1. 概念结构设计
- 2. 逻辑结构设计
- 关系模式
- 依赖关系
- 3. 数据流图(我直接画流程图😂)
- 注册与登录界面
- 常用语提示界面
- 个人动态发布页面
- 4. 数据字典
- 大作业建议
大作业效果
我做的是一款微型App,简单实现了一下增删改查四个功能,用的是非常小众的swift语言
先看一下效果,最简单的初始界面以及内嵌之后的App界面优化
最简单的如图(其实只要完成到这样算完成任务了😂)
优化之后:
大作业简介
本次数据库实验完成一个基于数据管理系统的App
编写环境:MacOS12 Monterey
编译器:Xcode13.0
适配平台:IOS 14及以上
使用语言:SwiftUl
大作业步骤
前期搭建工具
1. 编译环境准备
一个能够使用xcode12及以上版本的电脑(可以是虚拟机)
2. 安装相关软件
安装XAMPP,安装链接,用于在网页端管理Mysql,设置步骤如下
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. 概念结构设计
2. 逻辑结构设计
关系模式
用户(用户编号,用户名,账户,密码)
动态(动态编号,评论数,点赞量,转发数,发布时间,用户编号)
常用语(语句编号,语句标题,语句内容,用户编号)
依赖关系
用户—>动态用户—>常用语
用户—>用户账号用户—>用户密码
候选码为用户,由于逻辑关系极为简单,所以自动满足3NF,无需进行调整
3. 数据流图(我直接画流程图😂)
注册与登录界面
常用语提示界面
个人动态发布页面
4. 数据字典