班级学生成绩管理程序,需维护学生的成绩表,成绩表包含学号,姓名,语文、数学和英语成绩,主要功能有:1)增加学生成绩(用命令insert就能完成)2)修改学生成绩(用命令update就能完成)3)删除学生成绩(用命令 delete就能完成),4)导入成绩(从文本文件中批量导入成绩,学号,姓名,语文、数学和英语成绩每个字段占用一行,考虑成绩必须有效),5)导出成绩(按学号顺序导出,成绩也按语数英的顺序显示),6)成绩统计,可以统计出各科的最高分、最低分和平均分,7)分段统计。程序可以统计各个分数段的人数,各科都是,8)成绩排
I
名(各科的排名)。
import os
import sqlite3
import traceback
from dbHelper import dbHelper
class Student:
def __init__(self):
self.name = ''
self.ID = ''
self.score1 = 0#语文
self.score2 = 0#数学
self.score3 = 0#英语
self.sum =0
#计算总分的方法
def sumscore(self):
self.sum=self.score1+self.score2+self.score3
#输入学生的信息
def input(self):
self.name=input("请输入学生的姓名:")
self.ID=input("请输入学生的学号:")
self.score1=int(input("请输入学生语文的分数:"))
self.score2=int(input("请输入学生数学的分数:"))
self.score3=int(input("请输入学生英语的分数:"))
self.sumscore()
#判断学号是否存在
def searchByID(stulist, ID):
for item in stulist:
if item.ID == ID:
return True
else:
return False
#添加学生
def Add(stulist,stu):
DB = dbHelper("db/students.db")
if searchByID(stulist,stu.ID) == True:
print("学号已存在")
return False
print("是否保存学生信息?")
nChoose=input("输入Y/N")
if nChoose == 'Y' or nChoose == 'y':
stulist.append(stu)
sql = "INSERT INTO students (name,ID,score1,score2,score3,sum) VALUES (?,?,?,?,?,?)"
DB.exec_sql(sql,(stu.name,stu.ID,stu.score1,stu.score2,stu.score3,stu.sum))
print("保存成功")
#删除学生信息
def Del(stulist,ID):
DB = dbHelper("db/students.db")
flag = False # 判断是否有该学生学号的变量
for item in stulist:
if item.ID==ID:
stulist.remove(item)
flag == True
sql = "delete from students where ID = ?"
DB.exec_sql(sql, (ID,))
print("删除成功")
if flag == False:
pass
print("没有该学号")
#修改学生信息(删除旧学生信息,添加一个新学生信息)
def Change(stulist,ID):
flag = False
for item in stulist:
if item.ID==ID:
stulist.remove(item)
flag == True
sql="delete from students where ID=?"
DB.exec_sql(sql,(ID,))
stu = Student()
stu.input()
Add(stulist, stu)
if flag != False:
return
print("没有该学生学号")
#显示所有学生列表
def display(stulist):
sql = "select * from students "
print("姓名 学号 语文 数学 英语 总分")
for item in DB.query(sql):
print("{} {} {} {} {} {}".format(item[0], item[1],item[2], item[3],item[4], item[5]))
#成绩排序
def Sort():
sql="select * from students order by sum desc"
print(" 姓名 学号 语文 数学 英语 总分")
DB.query(sql)
for item in DB.query(sql):
print("{} {} {} {} {} {}".format(item[0], item[1], item[2], item[3], item[4], item[5]))
#查询学生信息
def Search(stulist,ID):
print("姓名 学号 语文 数学 英语 总分")
flag = False
for item in stulist:
if item.ID == ID:
flag == True
sql = "select * from students where ID=?"
for item in DB.query_params(sql, (ID,)): # DB.quert_params:Mysql有参查询数据语句
print("{} {} {} {} {} {}".format(item[0], item[1], item[2], item[3], item[4], item[5]))
if flag == False:
pass
print("没有该学生的学号")
#初始化
def Init(stulist):
print("初始化。。。")
sql="select * from students"
for item in DB.query(sql):
stu = Student()
stu.ID=item[0]
stu.name=item[1]
stu.score1=int(item[2])
stu.score2 = int(item[3])
stu.score3 = int(item[4])
stu.sum = item[5]
stulist.append(stu)
print("初始化成功")
main()
def main():
while True:
print("******************")
print("******菜单********")
print("***1.增加学生信息***")
print("***2.查询学生信息***")
print("***3.删除学生信息***")
print("***4.修改学生信息***")
print("***5.显示学生信息***")
print("***6.排序学生成绩***")
print("***0.退出学生系统***")
print("******************")
nChoose=input("请输入你的选择:")
if nChoose == '1':
stu=Student()
stu.input()
Add(stulist,stu)
if nChoose == '2':
ID = input("请输入需要查询的学生学号ID:")
Search(stulist,ID)
if nChoose == '3':
ID = input("请输入需要删除的学生学号ID:")
Del(stulist,ID)
if nChoose == '4':
ID = input("请输入需要修改的学生学号ID:")
Change(stulist,ID)
if nChoose == '5':
display(stulist)
if nChoose == '6':
Sort()
if nChoose == '0':
print("成功退出!")
break
#主程序
if __name__=='__main__':
stulist=[]
DB = dbHelper("db/students.db")
Init(stulist)