基于Python的学生信息管理系统(sql)

//主逻辑
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()

随手码的 代码规范性健壮性差强人意
不过代码逻辑可以起个参考作用。

发布了1 篇原创文章 · 获赞 0 · 访问量 41
展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览