当前位置: 首页 > news >正文

宣武网站建设中国互联网十大巨头

宣武网站建设,中国互联网十大巨头,wordpress 购物 知更鸟,企业网站带数据库1.定义通讯协议基于前面介绍过的 FLask Web 网站 与 urlib 的访问网站的方法#xff0c;设计一个综合应用实例。它是一个基于 Web 的学生记录管理程序。学生的记录包括 id(学号) 、name(姓名) 、grade(成绩)#xff0c;服务器的作用是建立与维护一个Sqllite 的学生数据库 stu…1.定义通讯协议 基于前面介绍过的 FLask Web 网站 与 urlib 的访问网站的方法设计一个综合应用实例。它是一个基于 Web 的学生记录管理程序。学生的记录包括 id(学号) 、name(姓名) 、grade(成绩)服务器的作用是建立与维护一个Sqllite 的学生数据库 student.db 中的学生记录表 student。 服务器建立一个 Web 网站 同时提供查询学生记录、增加学生记录、删除学生记录等接口服务。服务器为了与客户端通信建立一个opt 的参数如下表opt值含 义init初始化学生表insert增加学生delete删除学生update更改学生select查询学生opt 参数值获取学生记录规定如下如果客户端向服务器发送 optinit 那么服务器创建 students 表并返回是否创建成功如果成功就返回 {msg:OK}如果客户端向服务器发送 optinsert , 同时发送id , name , grade 参数那么服务器向数据库表插入一条学生记录并返回是否插入成功信息如果成功就返回 {msg:OK}如果客户端向服务器发送 optdelete , 同时发送 id 参数那么服务器从数据库表中删除学号为 id 的一条学生记录并返回是否删除成功的信息如果删除成功就返回 {msg:OK}如果客户端向服务器发送 optupdate , 同时发送 id 参数那么服务器从数据库表中更改学号为 id 的一条学生记录并返回是否更改成功的信息如果更改成功就返回 {msg:OK}如果客户端向服务器发送 optselect , 同时发送id 参数那么服务器从数据库表中查询学号为 id 的一条学生记录并返回是否查询成功的信息如果查询成功就返回 {msg:OK}如果客户端不向服务器发送 opt 参数值那么服务器获取所有的学生记录返回给客户端如果成功就返回 {msg:OKdata:rows} , 其中 rows 是学生的记录行的列表。2.服务器程序服务器程序server.py如下import flask import sqlite3 import json# 初始化一个Flask对象参数__name__是程序的名称 app flask.Flask(__name__)class StudentDB:def __init__(self):self.cursor Noneself.con None# 通过学生类打开一个数据库采用sqlite3.connect来连接def openDB(self):self.con sqlite3.connect(students.db)# 获取Cursor游标对象用于执行sql语句并获得结果self.cursor self.con.cursor()# 关闭连接def closeDB(self):self.con.commit()self.con.close()# 创建一个学生表def initTable(self):res {}try:self.cursor.execute(create table students (id varchar(16) primary key,name varchar(16),grade int))res[msg] OKexcept Exception as err:res[msg] str(err)return res# 插入学生def insertRow(self, id, name, grade):res {}try:self.cursor.execute(insert into students (id,name,grade) values(?,?,?), (id, name, grade))res[msg] OKexcept Exception as err:res[msg] str(err)return res# 删除学生def deleteRow(self, id):res {}try:self.cursor.execute(delete from students where id?, (id,))res[msg] OKexcept Exception as err:res[msg] str(err)return res# 修改学生def updateRow(self, id):res {}try:self.cursor.execute(update students set name?,grade? where id?, (id,))res[smg] OKexcept Exception as err:res[msg] str(err)return res# 获取学生的所有信息def selectRows(self):res {}try:data []self.cursor.execute(select * from students order by id)rows self.cursor.fetchall() # 在 Python 中使用 fetchall() 从数据库文件中提取元素for row in rows:# 每一个学生记录都是一个字典d {id: row[0], name: row[1], grade: row[2]}data.append(d)res[msg] OKres[data] dataexcept Exception as err:res[msg] str(err)return resapp.route(/, methods[GET, POST]) def process():# 获取opt的值opt flask.request.values.get(opt) if opt in flask.request.values else res {}# 创建数据库db StudentDB()db.openDB()if opt init:res db.initTable()elif opt insert:id flask.request.values.get(id) if id in flask.request.values else name flask.request.values.get(name) if name in flask.request.values else grade flask.request.values.get(grade) if grade in flask.request.values else res db.insertRow(id, name, grade)elif opt delete:id flask.request.values.get(id) if id in flask.request.values else res db.deleteRow(id)elif opt update:id flask.request.values.get(id) if id in flask.request.values else res db.updateRow(id)else:res db.selectRows()db.closeDB()return json.dumps(res)if __name__ __main__:app.run() 3.客户端程序客户端程序client.py如下import urllib.request import urllib.parse import json# 创建一个student的对象 class Student:def __init__(self, id, name, grade):self.id idself.name nameself.grade gradedef show(self):# 打印方法print(%-16s %-16s %-4d % (self.id, self.name, self.grade))students [] # server的网址 url http://127.0.0.1:5000# 显示主功能界面 def main():print( * 15 主界面 * 14)print(* * 10 1-添加学生信息 * * 10)print(* * 10 2-删除学生信息 * * 10)print(* * 10 3-修改学生信息 * * 10)print(* * 10 4-查询学生信息 * * 10)print(* * 10 5-显示所有学生信息 * * 7)print(* * 10 6-初始化学生列表 * * 8)print(* * 10 0-退出系统 * * 13)print( * 33)# 初始化 # 如果客户端向服务端发送optinit,那么服务器创建students表并返回是否创建成功如果成功就返回{msg:OK} def initialize():st try:content urllib.request.urlopen(url ?optinit)st content.read()st json.loads(st.decode())st st[msg]except Exception as err:st str(err)if st OK:print(初始成功)else:print(st)return st# 插入学生记录 # 如果客户端向服务器发送optinsert,同时发送id、name、grade参数那么服务器向数据库表插入一条学生记录并返回是否插入成功信息如果如果成功就返回{msg:OK} def insertRow():# 获取学生的学号、姓名、成绩id input(id)name input(name)while True:grade int(input(grade))if 0 grade 100:breakelse:print(无效成绩!\n请重新输入 范围0~100)if id ! and name ! :s Student(id, name, grade)for x in students:if x.id id:print(id 已经存在)returnst try:# 调用远程数据st id urllib.parse.quote(id) \name urllib.parse.quote(name) \grade str(grade)st st.encode()content urllib.request.urlopen(url ?optinsert, st)st content.read()st json.loads(st.decode())st st[msg]except Exception as err:st str(err)if st OK:insertStudent(s)print(添加成功)else:print(st)else:print(学号、姓名不能为空)# 插入学生记录 def insertStudent(s):global studentsi 0while i len(students) and s.id students[i].id:i 1# 判断表格里面是否存在if i len(students) and s.id students[i].id:print(s.id 已经存在)return Falsestudents.insert(i, s)return True# 删除学生记录 # 如果客户端向服务器发送optdelete,同时发送id参数那么服务器从数据库表中删除学号为id的一条学生记录并返回是否删除成功的信息如果如果成功就返回{msg:OK} def deleteRow():global studentsid input(id)if id ! :for i in range(len(students)):if students[i].id id:st try:st id urllib.parse.quote(id)st st.encode()# 找到id就调用urllib.request.urlopencontent urllib.request.urlopen(url ?optdelete, st)st content.readline()# 通过json解析数据st json.loads(st.decode())st st[msg]except Exception as err:st str(err)if st OK:del students[i]print(删除成功)else:print(st)break# 更新学生信息 def updateRow():pass# 查询学生信息 def selectRow():pass# 读取学生记录 def readStudents():global studentstry:students.clear()content urllib.request.urlopen(url)data b # 二进制str变量while True:buf content.read(1024) # 每次读取1024字节内容,并且指针指向末尾if len(buf) 0:data bufelse:breakdata data.decode() # 解码 UTF-8# 反系列结构化的数据data json.loads(data)if data[msg] OK:data data[data] # data[data][row0,row1.row2...]for d in data:# 每个d都是一个字典s Student(d[id], d[name], d[grade])students.append(s)except Exception as err:print(err)# 显示所有的学生 def listStudents():global studentsprint(%-16s %-16s %-4s % (id, name, grade))for s in students:# 调用show函数s.show()try:readStudents()while True:main() # 打印菜单s int(input(请选择(0,1,2,3,4,5,6):))if s 0: # 退出系统breakelif s 1: # 添加学生信息insertRow()elif s 2: # 删除学生信息deleteRow()elif s 3: # 修改学生信息updateRow()elif s 4: # 查询学生信息selectRow()elif s 5: # 显示所有学生信息listStudents()elif s 6:initialize() # 初始化学生列表 except Exception as exp:print(exp) 客户端结果实例
http://www.hkea.cn/news/14507857/

相关文章:

  • 网站开发代做建站哪家好 discuz
  • 南山模板网站建设公司soho外贸建站
  • 建设一个网站的技术可行性研究设计感网站
  • jsp网站开发软件购物网站app
  • 网站建设的通知新网站不被收录
  • 国外做游戏的视频网站有哪些网站页面设计制作
  • 西安东郊网站建设河北自助建站系统平台
  • 义乌高端网站设计品牌宜兴做网站哪个好
  • 东莞哪里能学建设网站WORDPRESS导购主题 WYZDG
  • 摄影公司网站开发用js做自适应网站
  • 强的网站建设公司一键生成各种app软件
  • 织梦网站为什么容易被注入网站建设种类 优帮云
  • 网站开发费入账能免费做网站
  • 一个ip做网站邢台123生活网
  • 南昌手机模板建站网站建设开票分类编码
  • 医疗网站建设计划书叫别人做网站需要注意什么
  • 做关于车的网站有哪些做网站哪一家比较好
  • 曹县做网站建设近期的国际新闻
  • 哪里学网站开发好三水 网站建设
  • 国外做问卷网站微信能否做门户网站
  • 下载免费网络软件成都网站seo报价
  • 如何简单快速的制作网站租房平台网站开发
  • 文字壁纸做背景处理的网站福建省网站建设方案书
  • 游戏门户网站模板chatgpt网页
  • 建设网站可以赚钱吗手机网站开发的目的及定位
  • 网教网站源码能够做代理的网站有哪些
  • 购物网站价格网站加载速度
  • 营销型网站建设试卷广西网络广播电视台
  • 太原百度网站排名优化百度快照入口
  • 青岛建设银行网站高端网站如何建设