




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.7.1Web学生管理程序1.7.1Web学生管理程序学生的记录包括学号No、姓名Name、性别Sex与年龄Age,服务器的作用是建立与维护一个Sqllite的学生数据库students.db中的学生记录表students:createtablestudents(Novarchar(16)primarykey,Namevarchar(16),Sexvarchar(8),Ageint)服务器建立一个Web网站,同时提供查询学生记录、增加学生记录、删除学生记录等接口服务。服务器为了与客户端通讯,建立一个opt的参数如表1-5-1所示:opt值含义init初始化学生表insert增加学生delete删除学生
获取学生记录学生的记录包括学号No、姓名Name、性别Sex与年龄Age如果客户端向服务器发送opt="init",那么服务器创建students表,并返回是否创建成功,如果成功就返回{"msg":"OK"};如果客户端向服务器发送opt="insert",同时发送No,Name,Sex,Age参数,那么服务器向数据库表插入一条学生记录,并返回是否插入成功信息,如果成功就返回{"msg":"OK"};如果客户端向服务器发送opt="delete",同时发送No参数,那么服务器从数据库表中删除学号为No的一条学生记录,并返回是否删除成功的信息,如果成功就返回{"msg":"OK"};如果客户端不向服务器发送opt参数值,那么服务器获取所有的学生记录返回给客户端,如果成功就返回{"msg":"OK","data":rows},其中rows是学生的记录行的列表;如果客户端向服务器发送opt="init",那么服务器创建s1.7.2学生管理服务器程序1.7.2学生管理服务器程序服务器程序importflaskimportsqlite3importjson
app=flask.Flask(__name__)
classStudentDB:defopenDB(self):self.con=sqlite3.connect("students.db")self.cursor=self.con.cursor()
defcloseDB(self):mit()self.con.close()
服务器程序importflaskdefinitTable(self):res={}try:self.cursor.execute("createtablestudents(Novarchar(16)primarykey,Namevarchar(16),Sexvarchar(8),Ageint)")res["msg"]="OK"exceptExceptionaserr:res["msg"]=str(err)returnres
definsertRow(self,No,Name,Sex,Age):res={}try:self.cursor.execute("insertintostudents(No,Name,Sex,Age)values(?,?,?,?)",(No,Name,Sex,Age))res["msg"]="OK"exceptExceptionaserr:res["msg"]=str(err)returnresdefinitTable(self):defdeleteRow(self,No):res={}try:self.cursor.execute("deletefromstudentswhereNo=?",(No,))res["msg"]="OK"exceptExceptionaserr:res["msg"]=str(err)returnres
defselectRows(self):res={}try:data=[]self.cursor.execute("select*fromstudentsorderbyNo")rows=self.cursor.fetchall()forrowinrows:d={}d["No"]=row[0]d["Name"]=row[1]d["Sex"]=row[2]d["Age"]=row[3]data.append(d)res["msg"]="OK"res["data"]=dataexceptExceptionaserr:res["msg"]=str(err)returnresdefdeleteRow(self,No):@app.route("/",methods=["GET","POST"])defprocess():opt=flask.request.values.get("opt")if"opt"inflask.request.valueselse""res={}db=StudentDB()db.openDB()ifopt=="init":res=db.initTable()elifopt=="insert":No=flask.request.values.get("No")if"No"inflask.request.valueselse""Name=flask.request.values.get("Name")if"Name"inflask.request.valueselse""Sex=flask.request.values.get("Sex")if"Sex"inflask.request.valueselse""Age=flask.request.values.get("Age")if"Age"inflask.request.valueselse""res=db.insertRow(No,Name,Sex,Age)elifopt=="delete":No=flask.request.values.get("No")if"No"inflask.request.valueselse""res=db.deleteRow(No)else:res=db.selectRows()db.closeDB()returnjson.dumps(res)
if__name__=="__main__":app.run()@app.route("/",methods=["GET",1.7.3学生管理客户端程序1.7.3学生管理客户端程序如果客户端向服务器发送opt="init",那么服务器创建students表,并返回是否创建成功,如果成功就返回{"msg":"OK"};如果客户端向服务器发送opt="insert",同时发送No,Name,Sex,Age参数,那么服务器向数据库表插入一条学生记录,并返回是否插入成功信息,如果成功就返回{"msg":"OK"};如果客户端向服务器发送opt="delete",同时发送No参数,那么服务器从数据库表中删除学号为No的一条学生记录,并返回是否删除成功的信息,如果成功就返回{"msg":"OK"};如果客户端不向服务器发送opt参数值,那么服务器获取所有的学生记录返回给客户端,如果成功就返回{"msg":"OK","data":rows},其中rows是学生的记录行的列表;如果客户端向服务器发送opt="init",那么服务器创建s客户端程序importurllib.requestimportjson
classStudent:def__init__(self,No,Name,Sex,Age):self.No=Noself.Name=Nameself.Sex=Sexself.Age=Age
defshow(self):print("%-16s%-16s%-8s%-4d"%(self.No,self.Name,self.Sex,self.Age))
students=[]url=":5000"
客户端程序importurllib.requestdeflistStudents():globalstudentsprint("%-16s%-16s%-8s%-4s"%("No","Name","Sex","Age"))forsinstudents:s.show()
definsertStudent(s):globalstudentsi=0while(i<len(students)ands.No>students[i].No):i=i+1if(i<len(students)ands.No==students[i].No):print(s.No+"alreadyexists")returnFalsestudents.insert(i,s)returnTruedeflistStudents():defdeleteRow():globalstudentsNo=input("No=")if(No!=""):foriinrange(len(students)):if(students[i].No==No):st=""try:st="No="+urllib.request.quote(No)st=st.encode()content=urllib.request.urlopen(url+"?opt=delete",st)st=content.readline()st=json.loads(st.decode())st=st["msg"]exceptExceptionasexp:st=str(exp)
if(st=="OK"):delstudents[i]print("删除成功")else:print(st)breakdefdeleteRow():definsertRow():No=input("No=")Name=input("Name=")whileTrue:Sex=input("Sex=")if(Sex=="男"orSex=="女"):breakelse:print("Sexisnotvalid")Age=input("Age=")if(Age==""):Age=0else:Age=int(Age)ifNo!=""andName!="":s=Student(No,Name,Sex,Age)forxinstudents:if(x.No==No):print(No+"alreadyexists")returnst=""try:st="No="+urllib.request.quote(No)+"&Name="+urllib.request.quote(Name)+"&Sex="+urllib.request.quote(Sex)+"&Age="+str(Age)st=st.encode()content=urllib.request.urlopen(url+"?opt=insert",st)st=content.read()st=json.loads(st.decode())st=st["msg"]exceptExceptionasexp:st=str(exp)
if(st=="OK"):insertStudent(s)print("增加成功")else:print(st)else:print("学号、姓名不能为空")definsertRow():definitialize():st=""try:content=urllib.request.urlopen(url+"?opt=init")st=content.read()st=json.loads(st.decode())st=st["msg"]exceptExceptionasexp:st=str(exp)
if(st=="OK"):print("初始成功")else:print(st)returnstdefinitialize():defreadStudents():globalstudentstry:students.clear()content=urllib.request.urlopen(url)data=b""whileTrue:buf=content.read(1024)if(len(buf)>0):data=data+bufelse:breakdata=data.decode()data=json.loads(data)ifdata["msg"]=="OK":data=data["data"]fordindata:#eachdisadictionarys=Student(d["No"],d["Name"],d["Sex"],d["Age"])students.append(s)exceptExceptionasexp:print(exp)defreadStudents():try:readStudents()
whileTrue:print("")print("***学生名单***")print("0.初始化学生表")print("1.查看学生列表")print("2.增加学生记录")print("3.删除学生记录")print("4.退出这个程序")s=input("请选择(0,1,2,3,4):")if(s=="0"):initialize()elif(s=="1"):listStudents()elif(s=="2"):insertRow()elif(s=="3"):deleteRow()elif(s=="4"):breakexceptExceptionasexp:print(exp)try:客户端结果示例:
***学生名单***0.初始化学生表1.查看学生列表2.增加学生记录3.删除学生记录4.退出这个程序请选择(0,1,2,3,4):1NoNameSexAge12男2322女21
客户端显示有两条记录存在。客户端结果示例:1.7.1Web学生管理程序1.7.1Web学生管理程序学生的记录包括学号No、姓名Name、性别Sex与年龄Age,服务器的作用是建立与维护一个Sqllite的学生数据库students.db中的学生记录表students:createtablestudents(Novarchar(16)primarykey,Namevarchar(16),Sexvarchar(8),Ageint)服务器建立一个Web网站,同时提供查询学生记录、增加学生记录、删除学生记录等接口服务。服务器为了与客户端通讯,建立一个opt的参数如表1-5-1所示:opt值含义init初始化学生表insert增加学生delete删除学生
获取学生记录学生的记录包括学号No、姓名Name、性别Sex与年龄Age如果客户端向服务器发送opt="init",那么服务器创建students表,并返回是否创建成功,如果成功就返回{"msg":"OK"};如果客户端向服务器发送opt="insert",同时发送No,Name,Sex,Age参数,那么服务器向数据库表插入一条学生记录,并返回是否插入成功信息,如果成功就返回{"msg":"OK"};如果客户端向服务器发送opt="delete",同时发送No参数,那么服务器从数据库表中删除学号为No的一条学生记录,并返回是否删除成功的信息,如果成功就返回{"msg":"OK"};如果客户端不向服务器发送opt参数值,那么服务器获取所有的学生记录返回给客户端,如果成功就返回{"msg":"OK","data":rows},其中rows是学生的记录行的列表;如果客户端向服务器发送opt="init",那么服务器创建s1.7.2学生管理服务器程序1.7.2学生管理服务器程序服务器程序importflaskimportsqlite3importjson
app=flask.Flask(__name__)
classStudentDB:defopenDB(self):self.con=sqlite3.connect("students.db")self.cursor=self.con.cursor()
defcloseDB(self):mit()self.con.close()
服务器程序importflaskdefinitTable(self):res={}try:self.cursor.execute("createtablestudents(Novarchar(16)primarykey,Namevarchar(16),Sexvarchar(8),Ageint)")res["msg"]="OK"exceptExceptionaserr:res["msg"]=str(err)returnres
definsertRow(self,No,Name,Sex,Age):res={}try:self.cursor.execute("insertintostudents(No,Name,Sex,Age)values(?,?,?,?)",(No,Name,Sex,Age))res["msg"]="OK"exceptExceptionaserr:res["msg"]=str(err)returnresdefinitTable(self):defdeleteRow(self,No):res={}try:self.cursor.execute("deletefromstudentswhereNo=?",(No,))res["msg"]="OK"exceptExceptionaserr:res["msg"]=str(err)returnres
defselectRows(self):res={}try:data=[]self.cursor.execute("select*fromstudentsorderbyNo")rows=self.cursor.fetchall()forrowinrows:d={}d["No"]=row[0]d["Name"]=row[1]d["Sex"]=row[2]d["Age"]=row[3]data.append(d)res["msg"]="OK"res["data"]=dataexceptExceptionaserr:res["msg"]=str(err)returnresdefdeleteRow(self,No):@app.route("/",methods=["GET","POST"])defprocess():opt=flask.request.values.get("opt")if"opt"inflask.request.valueselse""res={}db=StudentDB()db.openDB()ifopt=="init":res=db.initTable()elifopt=="insert":No=flask.request.values.get("No")if"No"inflask.request.valueselse""Name=flask.request.values.get("Name")if"Name"inflask.request.valueselse""Sex=flask.request.values.get("Sex")if"Sex"inflask.request.valueselse""Age=flask.request.values.get("Age")if"Age"inflask.request.valueselse""res=db.insertRow(No,Name,Sex,Age)elifopt=="delete":No=flask.request.values.get("No")if"No"inflask.request.valueselse""res=db.deleteRow(No)else:res=db.selectRows()db.closeDB()returnjson.dumps(res)
if__name__=="__main__":app.run()@app.route("/",methods=["GET",1.7.3学生管理客户端程序1.7.3学生管理客户端程序如果客户端向服务器发送opt="init",那么服务器创建students表,并返回是否创建成功,如果成功就返回{"msg":"OK"};如果客户端向服务器发送opt="insert",同时发送No,Name,Sex,Age参数,那么服务器向数据库表插入一条学生记录,并返回是否插入成功信息,如果成功就返回{"msg":"OK"};如果客户端向服务器发送opt="delete",同时发送No参数,那么服务器从数据库表中删除学号为No的一条学生记录,并返回是否删除成功的信息,如果成功就返回{"msg":"OK"};如果客户端不向服务器发送opt参数值,那么服务器获取所有的学生记录返回给客户端,如果成功就返回{"msg":"OK","data":rows},其中rows是学生的记录行的列表;如果客户端向服务器发送opt="init",那么服务器创建s客户端程序importurllib.requestimportjson
classStudent:def__init__(self,No,Name,Sex,Age):self.No=Noself.Name=Nameself.Sex=Sexself.Age=Age
defshow(self):print("%-16s%-16s%-8s%-4d"%(self.No,self.Name,self.Sex,self.Age))
students=[]url=":5000"
客户端程序importurllib.requestdeflistStudents():globalstudentsprint("%-16s%-16s%-8s%-4s"%("No","Name","Sex","Age"))forsinstudents:s.show()
definsertStudent(s):globalstudentsi=0while(i<len(students)ands.No>students[i].No):i=i+1if(i<len(students)ands.No==students[i].No):print(s.No+"alreadyexists")returnFalsestudents.insert(i,s)returnTruedeflistStudents():defdeleteRow():globalstudentsNo=input("No=")if(No!=""):foriinrange(len(students)):if(students[i].No==No):st=""try:st="No="+urllib.request.quote(No)st=st.encode()content=urllib.request.urlopen(url+"?opt=delete",st)st=content.readline()st=json.loads(st.decode())st=st["msg"]exceptExceptionasexp:st=str(exp)
if(st=="OK"):delstudents[i]print("删除成功")else:print(st)breakdefdeleteRow():definsertRow():No=input("No=")Name=input("Name=")whileTrue:Sex=input("Sex=")if(Sex=="男"orSex=="女"):breakelse:print("Sexisnotvalid")Age=input("Age=")if(Age==""):Age=0else:Age=int(Age)ifNo!=""andName!="":s=Student(No,Name,Sex,Age)forxinstudents:if(x.No==No):print(No+"alreadyexists")returnst=""try:st="No="+urllib.request.quote(No)+"&Name="+urllib.request.quote(Name)+"&Sex="+urllib.request.quote(Sex)+"&Age="+str(Age)st=st.encode()content=urllib.request.urlopen(url+"?opt=insert",st)st=content.read()st=json.loads(st.decode())st=st["msg"]exceptExceptionasexp:st=str(exp)
if(st=="OK"):insertStudent(s)print("增加成功")else:print(st)else:print("学号、姓名不能为空")definsertRow():definitialize():st=""try:content=urllib.request.urlopen(url+"?opt=init")st=content.read()st=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电商绿色物流行业物流配送模式创新研究报告
- 给砖厂送煤矸石合同范本
- 高端救生衣采购合同范本
- 私人租赁车牌协议书范本
- 深度保洁服务协议书范本
- 职工公寓合租协议书范本
- 离婚了如何写财产协议书
- 瑜伽馆赠送课程合同范本
- 用就业协议代替劳动合同
- 水稻还田合同协议书范本
- 临时厕所施工方案
- 2024-2030年中国独立学院行业转型挑战分析发展规划研究报告
- 历年全国普通话考试真题50套
- 智能物业管理大数据应用方案
- 香港公司股东协议书范本
- DB43T 876.8-2015 高标准农田建设 第8部分:科技服务
- 普通洗车操作流程及操作指导书
- 伤寒与副伤寒患者的护理
- 2024年辽宁电工(高级技师)高频核心题库300题(含解析)
- 北师大版二年级下册竖式计算题练习200道及答案
- DL∕T 5539-2018 采动影响区架空输电线路设计规范
评论
0/150
提交评论