python报告书.docx
《python报告书.docx》由会员分享,可在线阅读,更多相关《python报告书.docx(20页珍藏版)》请在冰豆网上搜索。
python报告书
南阳理工学院
《Python程序开发》课程设计报告
大学生信息管理系统
一、课程设计内容
此课程设计是大学生信息管理系统,通过管理员进行管理操作,对学生信息和成绩的添加,修改,删除等,也可进行单科成绩的升序排列,便于该科老师对学生的了解。
此系统可以提高工作质量和效率,提高信息资源的利用率和管理水平,能够实现大学生信息管理与相关信息的保存和读取。
二、需求分析
业务需求:
现在是信息化的时代,各个高校也有自己的数据库、服务器,相比于之前纸质化、文件化的管理,网络管理更具有安全性、便利性以及降低了人为出错的因素。
功能需求:
能够实现数据库与相关信息的保存和读取;通过数据库访问基本信息;实现学生信息添加、修改、显示等功能;实现数据的增加、删除、修改等基本功能。
用例图:
三、功能设计
管理员用户登录模块:
管理员登录后自动将登录信息存入数据库随后进入操作界面,在对学生信息进行增删查改更新数据库后退出系统。
数据库设计:
E-R图
四、详细实现
4.1登录功能的实现
登录功能:
用户登录时只需输入账号、密码,系统会连接数据库与数据库中的信息进行比对,当信息一致时登录成功,每次输入密码出错都会提示弹窗。
4.2添加学生信息的实现
添加学生信息功能:
管理员将学生的姓名、学号等信息填入方框内,设置变量接受方框内的信息,连接数据库,将接受的信息传入到数据库的student表中,同时提交数据后,会通过连接数据库查找所有的学生信息从而将其展示出来。
4.3修改学生信息的实现
修改学生信息学号、姓名、民族时可以通过查询姓名直接修改,课程成绩也可直接修改,最后把学生修改后的信息和成绩更新到数据库表中,关闭连接。
4.4删除学生信息的实现
删除学生信息功能:
通过输入学生姓名,点击删除,会将该学生的名字返回给后台,后台接受数据,通过连接数据库进行姓名的比对,当查找到该学生信息时,进行删除操作,当删除成功时设置“数据删除成功”弹窗。
4.5查看学生信息的实现
显示学生信息功能:
通过输入要查询的学生姓名,连接数据库查找student表中的所有信息,返回的元组信息,通过for循环遍历将数据添加到页面上进行展示。
4.6成绩排序的实现
先通过查询得到所有学生信息返回一个元组,将元组转换成列表形式通过内置sort方法根据学生成绩进行排序输出。
4.7求平均成绩
显示学生信息功能:
通过输入要查询的学生姓名,连接数据库查找student表中的所有信息,返回的元组信息,通过for循环遍历将成绩返回出来然后进行求平均值
4.7打包exe文件的实现
在Pycharm终端中输入pipinstallpyinstaller进行下载,随后输入pyinstaller-F--onefileMain.py进行打包。
五、源代码
importpymysql
defmysql_show():
try:
db=pymysql.connect(host="localhost",user="root",password="12356789",database="student")
print('数据库连接成功!
')
cur=db.cursor()
a=str(input("请输入要查询学生的姓名:
"))
sql='select*fromstudentwherename=%s'
value=a
cur.execute(sql,value)
results=cur.fetchall()
forrowinresults:
name=row[0]
id=row[1]
adress=row[3]
sex=row[2]
jiqi=row[4]
python=row[5]
yingyu=row[6]
print('学号:
%s\n姓名:
%s\n地址:
%s\n性别:
%s\n机器学习成绩:
%s\nPython程序设计成绩:
%s\n英语成绩:
%s\n:
'%(
name,id,adress,sex,jiqi,python,yingyu))
exceptpymysql.Errorase:
print("数据查询失败"+str(e))
db.rollback()
db.close()
defmysql_paixu():
try:
db=pymysql.connect(host="localhost",user="root",password="12356789",database="student")
print('数据库连接成功!
')
cur=db.cursor()
print("1.机器学习")
print("2.python程序设计")
print("3.英语")
a=int(input("请选择要排序的成绩:
"))
ifa==1:
print("升序排列为:
")
sql='SELECT*FROMstudentORDERBYjiqi'
cur.execute(sql)
mit()
results=cur.fetchall()
forrowinresults:
name=row[0]
id=row[1]
adress=row[3]
sex=row[2]
jiqi=row[4]
python=row[5]
yingyu=row[6]
print('学号:
%s\n姓名:
%s\n地址:
%s\n性别:
%s\n机器学习成绩:
%s\nPython程序设计成绩:
%s\n英语成绩:
%s\n:
'%(
name,id,adress,sex,jiqi,python,yingyu))
ifa==2:
print("升序排列为:
")
sql='SELECT*FROMstudentORDERBYpython'
cur.execute(sql)
mit()
results=cur.fetchall()
forrowinresults:
name=row[0]
id=row[1]
adress=row[3]
sex=row[2]
jiqi=row[4]
python=row[5]
yingyu=row[6]
print('学号:
%s\n姓名:
%s\n地址:
%s\n性别:
%s\n机器学习成绩:
%s\nPython程序设计成绩:
%s\n英语成绩:
%s\n'%(
name,id,adress,sex,jiqi,python,yingyu))
ifa==3:
print("升序排列为:
")
sql='SELECT*FROMstudentORDERBYyingyu'
cur.execute(sql)
mit()
results=cur.fetchall()
forrowinresults:
name=row[0]
id=row[1]
adress=row[3]
sex=row[2]
jiqi=row[4]
python=row[5]
yingyu=row[6]
print('学号:
%s\n姓名:
%s\n地址:
%s\n性别:
%s\n机器学习成绩:
%s\nPython程序设计成绩:
%s\n英语成绩:
%s\n'%(
name,id,adress,sex,jiqi,python,yingyu))
exceptpymysql.Errorase:
print("数据更新失败"+str(e))
db.rollback()
db.close()
defmysql_delete():
try:
db=pymysql.connect(host="localhost",user="root",password="12356789",database="student")
print('数据库连接成功!
')
cur=db.cursor()
a=str(input("请输入要删除的学生的姓名:
"))
sql='deletefromstudentwherename=%s'
value=a
cur.execute(sql,value)
mit()
print('数据删除成功')
exceptpymysql.Errorase:
print("数据删除失败"+str(e))
db.rollback()
db.close()
defmysql_update_chengji():
try:
db=pymysql.connect(host="localhost",user="root",password="12356789",database="student")
print('数据库连接成功!
')
cur=db.cursor()
s=str(input("请选择要修改的学生姓名:
"))
print("1.机器学习")
print("2.python程序设计")
print("3.英语")
a=int(input("请选择要修改的成绩:
"))
ifa==1:
b=str(input("请输入新的机器学习的成绩:
"))
sql='updatestudentsetjiqi=%swherename=%s'
value=(b,s)
cur.execute(sql,value)
mit()
print('数据更新成功')
ifa==2:
c=str(input("请输入新的python程序设计的成绩:
"))
sql='updatestudentsetpython=%swherename=%s'
value=(c,s)
cur.execute(sql,value)
mit()
print('数据更新成功')
ifa==3:
d=str(input("请输入新的英语的成绩:
"))
sql='updatestudentsetyingyu=%swherename=%s'
value=(d,s)
cur.execute(sql,value)
mit()
print('数据更新成功')
exceptpymysql.Errorase:
print("数据更新失败"+str(e))
db.rollback()
db.close()
defmysql_update_xinxi():
try:
db=pymysql.connect(host="localhost",user="root",password="12356789",database="student")
print('数据库连接成功!
')
cur=db.cursor()
s=str(input("请选择要修改的学生姓名:
"))
name=str(input("请输入修改的学生姓名:
"))
adress=str(input("请输入修改的学生的地址:
"))
sex=str(input("请输入修改学生的性别:
"))
id=str(input("请输入修改的学生的学号:
"))
jiqi=str(input("请输入修改的学生的机器学习成绩:
"))
python=str(input("请输入修改的学生的python程序设计成绩:
"))
yingyu=str(input("请输入修改的学生的英语成绩:
"))
sql='updatestudentsetid=%s,name=%s,sex=%s,adress=%s,jiqi=%s,python=%s,yingyu=%swherename=%s'
value=(id,name,sex,adress,jiqi,python,yingyu,s)
cur.execute(sql,value)
mit()
print('数据更新成功')
exceptpymysql.Errorase:
print("数据更新失败"+str(e))
db.rollback()
db.close()
defmysql_insert():
try:
db=pymysql.connect(host="localhost",user="root",password="12356789",database="student")
print('数据库连接成功!
')
cur=db.cursor()
name=str(input("请输入添加的学生姓名:
"))
adress=str(input("请输入添加的学生的地址:
"))
sex=str(input("请输入添加的学生的性别:
"))
id=str(input("请输入添加的学生的学号:
"))
jiqi=str(input("请输入添加的学生的机器学习成绩:
"))
python=str(input("请输入添加的学生的python程序设计成绩:
"))
yingyu=str(input("请输入添加的学生的英语成绩:
"))
sql='insertignoreintostudent(id,name,sex,adress,jiqi,python,yingyu)values(%s,%s,%s,%s,%s,%s,%s)'
value=(id,name,sex,adress,jiqi,python,yingyu)
a=cur.execute(sql,value)
mit()
ifa==0:
print("您添加的信息已存在,请重新添加!
!
!
")
else:
print('数据插入成功')
exceptpymysql.Errorase:
print("数据插入失败"+str(e))
db.rollback()
db.close()
defjisuan_avgchengji():
try:
db=pymysql.connect(host="localhost",user="root",password="12356789",database="student")
print('数据库连接成功!
')
cur=db.cursor()
a=str(input("请输入要计算学生成绩的姓名:
"))
sql='select*fromstudentwherename=%s'
value=a
cur.execute(sql,value)
results=cur.fetchall()
forrowinresults:
name=row[0]
id=row[1]
adress=row[3]
sex=row[2]
jiqi=row[4]
python=row[5]
yingyu=row[6]
print('学号:
%s\n姓名:
%s\n地址:
%s\n性别:
%s\n机器学习成绩:
%s\nPython程序设计成绩:
%s\n英语成绩:
%s\n'%(
name,id,adress,sex,jiqi,python,yingyu))
sum_chengji=(jiqi+python+yingyu)/3
print("平均成绩:
",sum_chengji)
exceptpymysql.Errorase:
print("数据查询失败"+str(e))
db.rollback()
db.close()
defmain():
whileTrue:
print("--------------------------")
print("请输入以下命令进行操作:
")
print("\t1添加学生信息")
print("\t2修改学生信息")
print("\t3删除学生信息")
print("\t4修改学生成绩")
print("\t5查看学生信息")
print("\t6对学生成绩进行排序")
print("\t7计算学生平均成绩")
print("\texit退出系统!
")
cmd=input("请输入命令:
")
ifcmd=='exit':
#退出系统!
break
elifcmd=='1':
#添加学生信息
print("--------------------------")
whileTrue:
s=input("请选择是否继续(按任意键继续,输入q返回上级菜单):
")
ifs=='q':
break
else:
mysql_insert()
elifcmd=='2':
#修改学生信息
print("--------------------------")
whileTrue:
s=input("请选择是否继续(按任意键继续,输入q返回上级菜单):
")
ifs=='q':
break
else:
mysql_update_xinxi()
elifcmd=='3':
#删除学生
print("--------------------------")
whileTrue:
s=input("请选择是否继续(按任意键继续,输入q返回上级菜单):
")
ifs=='q':
break
else:
mysql_delete()
elifcmd=='4':
#修改学生成绩
print("--------------------------")
whileTrue:
s=input("请选择是否继续(按任意键继续,输入q返回上级菜单):
")
ifs=='q':
break
else:
mysql_update_chengji()
elifcmd=='5':
print("--------------------------")
whileTrue:
s=input("请选择是否继续(输入q返回上级菜单):
")
ifs=='q':
break
else:
mysql_show()
elifcmd=='6':
#按姓名或者学号查找学生,显示学生信息及三门课的成绩,以及排名
print("--------------------------")
whileTrue:
s=input("请选择是否继续(输入q返回上级菜单):
")
ifs=='q':
break
else:
mysql_paixu()
elifcmd=='7':
#按姓名或者学号查找学生,显示学生信息及三门课的成绩,以及排名
print("--------------------------")
whileTrue:
s=input("请选择是否继续(输入q返回上级菜单):
")
ifs=='q':
break
else:
jisuan_avgchengji()
user=str(input("请输入登录的用户名:
"))
password=str(input("请输入登录的密码:
"))
ifuser=='root'andpassword=='123456':
print("登陆成功,欢迎您的使用!
!
!
")
main()
else:
print("登录失败,请重新登录!
!
!
")
六、运行及调试
1.管理员登录页面:
运行大学生信息管理系统.py文件进入登录页面,管理员需在登录页面输入正确的用户名和密码。
2.添加学生信息:
3.修改学生信息:
4.查看学生信息:
5.查看成绩排名:
6.查看学生的平均成绩
七、课程设计小结
通过此次课程设计,使我更加扎实的掌握了有关python方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
过而能改,善莫大焉。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。
最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。
在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!
我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
更重要的是,在实验课上,我们学会了很多学习的方法。
而这是日后最实用的,真的是受益匪浅。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
这对于我们的将来也有很大的帮助。
以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。
就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。