//主逻辑
import os
import re
import sqlite3
def main():
ctrl=True
while(ctrl):
menu()
option=input("请选择:")
option_str=re.sub("\D","",option)
if option_str in ['0','1','2','3','4','5','6','7']:
option_int=int(option_str)
if option_int==0:
print('您已退出学生信息管理系统')
ctrl=False
elif option_int==1:
insert()
elif option_int==2:
search()
elif option_int==3:
delete()
elif option_int==4:
modify()
elif option_int==5:
sort()
elif option_int==6:
total()
elif option_int==7:
show()
else:
print('输入错误请重新输入')
//菜单
def menu():
print('----------------------学生信息管理系统----------------------\n')
print('--------------------------功能菜单--------------------------\n')
print('1 录入学生信息\n')
print('2 查找学生信息\n')
print('3 删除学生信息\n')
print('4 修改学生信息\n')
print('5 排序\n')
print('6 统计学生总人数\n')
print('7 显示所有学生信息\n')
print('0 退出系统\n')
print('------------------------------------------------------------\n')
print('说明:通过数字键或↑↓方向键选择菜单\n')
def insert():
studentList=[]
mark=True
while mark:
id=input('请输入id:')
if not id:
break
name=input('请输入名字')
if not name:
break
try:
english=int(input('请输入英语成绩:'))
python=int(input('请输入Python成绩:'))
c=int(input('请输入C语言成绩:'))
except():
print('请输入整数成绩!')
continue
student={
'id':id,'name':name,'english':english,'python':python,'c':c}
cur.execute("insert into stu(id,name,english,python,c,total) values ('%s','%s','%d','%d','%d','%d')"%(student['id'],student['name'],student['english'],student['python'],student['c'],student['c']+student['english']+student['python']))
inputMark=input('是否继续添加(y/n):')
if inputMark=='y':
mark=True
else:
mark=False
print('学生信息录入完成!')
//删除
def delete():
mark=True
while mark:
studentID=input('请输入要删除的学生ID:')
sql = "delete from stu where id = '%s'"%studentID
try:
cur.execute(sql)
con.commit()
print('删除学生信息成功!')
except:
print('删除失败...')
Mark=input('是否继续删除(y/n):')
if Mark=='y':
mark=True
else:
mark=False
//排序
def modify():
mark=True
while mark:
studentID=input('请输入需要修改的学生ID')
name=input('请输入姓名:')
english=int(input('请输入英语成绩:'))
python=int(input('请输入Python成绩:'))
c=int(input('请输入c语言成绩:'))
sql = "update stu set name='%s',english='%d',python='%d',c='%d',total='%d' where id = '%s'" % (name,english,python,c,english+python+c,studentID)
try:
cur.execute(sql)
con.commit()
print('修改学生信息成功!')
except:
print('修改失败...')
inputMark=input('是否继续修改其他学生信息(y/n):')
if inputMark=='y':
mark=True
else:
mark=False
//查询
def search():
mark=True
while mark:
studentID=input('请输入需要查询的学生ID')
sql = "select * from stu where id = '%s' " % studentID
try:
cur.execute(sql)
result = cur.fetchall()
name=result[0][1]
english=int(re.sub("\D","",result[0][2]))
python=int(re.sub("\D","",result[0][3]))
c=int(re.sub("\D","",result[0][4]))
print("姓名: '%s',英语成绩: '%d',Python成绩: '%d',C成绩: '%d',总分:'%d'"%(name,english,python,c,english+python+c))
print('查询学生信息成功!')
except:
print('查询失败...')
inputMark=input('是否继续查询(y/n):')
if inputMark=='y':
mark=True
else:
mark=False
//统计
def total():
cur.execute("select * from stu")
result=cur.fetchall()
if result:
print('一共有%d名学生!'%len(result))
else:
print('还没有录入学生信息!')
//排序
def sort():
sql=('select * from stu')
cur.execute(sql)
result=cur.fetchall()
result_a=['id','name','english','python','c']
result_dic=[]
for i in range(len(result)):
result_dic.append(dict(zip(result_a,result[i])))
student_new=result_dic
ascORdesc=input('请选择(0升序;1降序):')
if ascORdesc=='0':
ascORdescBool=False
elif ascORdesc=='1':
ascORdescBool=True
else:
print('您的输入有误,请重新输入!')
sort()
mode=input('请选择排序方式(1按英语成绩排序;2按Python成绩排序;3按C语言成绩排序;4按总成绩排序):')
if mode=='1':
student_new.sort(key=lambda x:x['english'],reverse=ascORdescBool)
elif mode=='2':
student_new.sort(key=lambda x:x['python'],reverse=ascORdescBool)
elif mode=='3':
student_new.sort(key=lambda x:x['c'],reverse=ascORdescBool)
elif mode=='4':
student_new.sort(key=lambda x:x['english']+x['c']+x['python'],reverse=ascORdescBool)
else:
print('您的输入有误,请重新输入!')
sort()
show_student(student_new)
//真·主程序
con=sqlite3.connect('D:\\student.db')
con.execute('create table stu(id primary key,name,english,python,c,total)')
cur=con.cursor()
main()
随手码的 代码规范性健壮性差强人意
不过代码逻辑可以起个参考作用。