Python实现学生信息管理系统(修改版)

在学习之前先要了解sqlite游标的使用方法python使用sqlite3时游标的使用方法
继上篇博客Python实现学生信息管理系统后,我就觉得写的太复杂了,然后又是一通优化、优化、优化;
本次优化主要修改了:
1.使用游标的方法连接、增、删、改、查数据库;
2.一般二级菜单是不能直接退出程序的,所以去掉了二级菜单退出程序的功能;
3.增加了连表查询;
4.但是还有一点很不满意,就是每次退出后都退出到主菜单而不是当前菜单,这点还没改好,希望小伙伴能一起学习交流!

#-*- coding:utf-8 -*-
import sqlite3
#打开本地数据库用于存储用户信息
cx = sqlite3.connect('student.db')

#在该数据库下创建学生信息表
cx.execute ('''CREATE TABLE StudentTable(
   ID INTEGER PRIMARY KEY   AUTOINCREMENT,
   StuId         INTEGER     NOT NULL,
   NAME           TEXT      NOT NULL,
   CLASS            INT       NOT NULL);''')
print "Table created successfully";

#在该数据库下创建课程信息表
cx.execute ('''CREATE TABLE CourseTable(
   ID INTEGER PRIMARY KEY   AUTOINCREMENT,
   CourseId       INT       NOT NULL,
   Name           TEXT      NOT NULL,
   Teacher            TEXT       NOT NULL,
   Classroom            TEXT      NOT NULL,
   StartTime             CHAR(11)    NOT NULL,
   EndTime                CHAR(11)    NOT NULL);''')
print "Table created successfully";


#在该数据库下创建选课情况信息表
cx.execute ('''CREATE TABLE XuankeTable(
   ID INTEGER PRIMARY KEY   AUTOINCREMENT,
   StuId          INT         NOT NULL,
   CourseId          INT         NOT NULL);''')
print "Table created successfully";

#以上三个表创建完后,再次运行程序时,需要把三个建表代码注释掉,否则会提示:该表已存在。即建表只需建一次。


def insert_stu():#录入学生信息
    cu = cx.cursor()
    stu_id = input("请输入学生学号:")
    cu.execute("SELECT StuId from StudentTable where StuId = '%s';"%stu_id)
    row = cu.fetchone()
    if row:
        print "sorry,该学号已存在,请重新输入"
    else:
        stu_name = raw_input("请输入学生姓名:")
        stu_class = input("请输入学生班级:")
        sql1 = "INSERT INTO StudentTable(StuId,NAME,CLASS)"
        sql1 += " VALUES(%d,'%s',%d);"%(stu_id,stu_name,stu_class)
        cu.execute(sql1)
        cx.commit()
        print "恭喜你,学生录入成功!"
    cu.close()
    

def xuanke():#学生选课
    cu = cx.cursor()
    stu_id = input('请输入要选课的学生学号:')
    sql2 = "select StuId from StudentTable where StuId = %d;"%(stu_id)
    cu.execute(sql2)
    row = cu.fetchone()
    if row:
        sql3 = "select CourseId,Name,Teacher,Classroom, StartTime,EndTime from CourseTable"
        cu.execute(sql3)
        rows = cu.fetchall()
        for row in rows:
            print "CourseId = ", row[0]
            print "Name = ", row[1]
            print "Teacher = ", row[2]
            print "Classroom = ",row[3]
            print "StartTime = ",row[4]
            print "EndTime = ",row[5], "\n"
        cou_id = input("请输入要选的课程号:")
        sql0 = "select CourseId from CourseTable where CourseId =%d;"%(cou_id)
        cu.execute(sql0)
        row = cu.fetchone()
        if row:
            sql = "select StuId CourseId from XuankeTable "
            sql += "where CourseId = %d and StuId=%d;"%(cou_id,stu_id)
            cu.execute(sql)
            rows = cu.fetchone()
            if row:
                print "该课程已选,不能重复选课!"
                break
            else:
                sql3 = "insert into XuankeTable (StuId,CourseId) values (%d,%d)"%(stu_id,cou_id)
                cu.execute(sql3)
                cx.commit()
                print "恭喜你,选课成功!"
        else:
            print "sorry,该课程不存在!"
    else:
        print "sorry,没有该学生号"
    cu.close()
    


def stu_id_search():#按照学生学号查询学生信息
    cu = cx.cursor()
    search_stu_id = input("请输入要查询的学号:")
    sql4 = "SELECT ID,StuId,NAME, CLASS from StudentTable "
    sql4 += "where StuId= %d;" % (search_stu_id)
    cu.execute(sql4)
    row = cu.fetchone()
    if row: 
        print
        print "您要查询的学生信息为:"
        print "ID = ", row[0]
        print "StuId = ", row[1]
        print "NAME = ", row[2]
        print "CLASS = ",row[3], "\n"
    else:
        print "sorry,没有该学生信息!"
    cu.close()


def stu_id_cou():#按照学生学号查询该学生所选课程
    cu = cx.cursor()
    stu_id = input("请输入要查询学生号:")
    sql5 = "select StuId from StudentTable where StuId = %d;"%(stu_id)
    cu.execute(sql5)
    row = cu.fetchone()
    if row :
        sql6 = "select A.*,B.*,C.* from XuankeTable A, CourseTable B, StudentTable C \
        where A.StuId = %d and A.CourseId=B.CourseId and A.StuId=C.StuId"%(stu_id)#连表查询
        cu.execute(sql6)
        rows = cu.fetchall()
        for row in rows:
            print "该学生所选课程为:"
            print "StuId=",row[1]
            print "CourseId=",row[2]
            print "Name = ", row[7]
            print "Teacher = ", row[8]
            print "Classroom = ",row[9]
            print "StartTime = " ,row[10]
            print "EndTime = ",row[11],"\n"
            print
    else:
        print "sorry,没有该学生选课信息!"
    cu.close()


def cou_id_search(): #按照课程号查询课程信息
    cu = cx.cursor()
    cou_id = input("请输入要查询的课程号:")
    sql7 = "select CourseId ,Name,Teacher,Classroom,StartTime,EndTime from CourseTable "
    sql7 += "where CourseId = %d;"%(cou_id)
    cu.execute(sql7)
    row = cu.fetchone()
    if row:
        print "您要查询的课程信息为:"
        print "CourseId = ",row[0]
        print "Name = ", row[1]
        print "Teacher = ", row[2]
        print "Classroom = ",row[3]
        print "StartTime = " ,row[4]
        print "EndTime = ",row[5],"\n"
    else:
        print "sorry,没有该课程信息!"
    cu.close()


def cou_id_stu():#按照课程号查询选择该课程的学生列表
    cu = cx.cursor()
    cou_id = input('请输入课程号:')
    sql8 = "select CourseId from XuankeTable where CourseId =%d;"%(cou_id)
    cu.execute(sql8)
    row = cu.fetchone()
    if row:
        sql9 = "select A.*,B.*,C.* from XuankeTable A, CourseTable B, StudentTable C \
        where A.CourseId = %d and A.CourseId=B.CourseId and A.StuId=C.StuId"%(cou_id)
        cu.execute(sql9)
        rows = cu.fetchall()
        for row in rows:
            print
            print "选择该课程的学生为:"
            print "StuId = ", row[1]
            print "CourseId = ", row[2]
            print "NAME = ", row[14]
            print "CLASS = ",row[15],"\n"
    else:
        print "sorry,没有该课程信息!"
    cu.close()

def menu():
    print '1.进入学生信息系统(学生信息录入)'
    print '2.进入学生选课系统(学生选课操作)'
    print '3.进入学生选课信息系统(学生信息查询和选课情况查询)'
    print '4.退出程序'
    
def student():
    print '1.录入学生信息'
    print '2.返回主菜单'

def Course():
    print '1.开始选课'
    print '2.返回主菜单'

def information():
    print '1.按学号查询学生信息'
    print '2.按学号查看学生选课课程列表'
    print '3.按课程号查看课程信息'
    print '4.按课程号查看选课学生列表'
    print '5.返回主菜单'


while True:
    menu()
    print
    x = raw_input('请输入您的选择菜单号:')
    if x == '1':
        #进入学生信息系统
        student()
        stu = raw_input('您已进入学生录入系统,请再次输入选择菜单:')
        print
        if stu == '1':
            insert_stu()
            continue
        if stu == '2':
            continue
        else:
            print "输入的选项不存在,请重新输入!"
            continue

    if x == '2':
        #进入选课信息系统
        Course()
        cou = raw_input('您已进入学生选课系统,请再次输入选择菜单:')
        print
        if cou == '1':
            xuanke()
            continue
        if cou == '2':
            continue
        else:
            print "输入的选项不存在,请重新输入!"
            continue

    if x == '3':
        #进入学生选课信息表
        information()
        inf = raw_input('您已进入学生选课信息系统,请再次输入选择菜单:')
        print
        if inf == '1':
            stu_id_search()
            continue
        if inf == '2':
            stu_id_cou()
            continue
        if inf == '3':
            cou_id_search()
            continue
        if inf == '4':
            cou_id_stu()
            continue
        if inf == '5':
            continue
        else:
            print "输入的选项不存在,请重新输入!"
            continue

    if x == '4':
        print "谢谢使用!"
        exit()
    else:
        print "输入的选项不存在,请重新输入!"
        continue

创作不易,喜欢的话给喵喵赏点吧~(可怜眼神)
在这里插入图片描述

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
好的,以下是Python实现学生成绩管理系统的简易版: ```python # 定义一个空的学生成绩字典 scores_dict = {} while True: print("欢迎使用学生成绩管理系统!") print("1. 添加学生成绩") print("2. 查看学生成绩") print("3. 修改学生成绩") print("4. 删除学生成绩") print("5. 退出系统") choice = input("请选择功能(输入数字即可):") if choice == "1": # 添加学生成绩 name = input("请输入学生姓名:") score = float(input("请输入学生成绩:")) scores_dict[name] = score print("添加学生成绩成功!") elif choice == "2": # 查看学生成绩 if not scores_dict: print("暂无学生成绩信息!") else: print("学生成绩如下:") for name, score in scores_dict.items(): print(name, ":", score) elif choice == "3": # 修改学生成绩 name = input("请输入要修改成绩的学生姓名:") if name not in scores_dict: print("该学生不存在!") else: new_score = float(input("请输入新的成绩:")) scores_dict[name] = new_score print("修改成绩成功!") elif choice == "4": # 删除学生成绩 name = input("请输入要删除成绩的学生姓名:") if name not in scores_dict: print("该学生不存在!") else: scores_dict.pop(name) print("删除成绩成功!") elif choice == "5": # 退出系统 print("感谢使用学生成绩管理系统!") break else: print("输入有误,请重新输入!") ``` 这段代码实现了一个简单的学生成绩管理系统,可以添加、查看、修改和删除学生成绩,并且具有基本的输入校验功能。学生成绩保存在一个字典中,以学生姓名为键,成绩为值。在程序运行过程中,会循环显示菜单,根据用户输入的选择执行相应的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值