Python实现学生成绩管理系统


Posted in Python onApril 05, 2020

本文实例为大家分享了Python实现学生成绩管理系统的具体代码,供大家参考,具体内容如下

基本功能:

输入并存储学生的信息:通过输入学生的学号、姓名、和分数,然后就可以把数据保存在建立的student文件里面。

打印学生的所有信息:通过一个打印函数就可以把所有的信息打印在屏幕上。

修改学生信息:这个功能首先通过查询功能查询出该学生是否存在,如果存在就对该学生的信息进行修改,如果不存在则返回到主界面。

删除学生信息:该功能是对相应的学生进行删除操作,如果学生存在就查找到进行删除。

按学生成绩进行排序: 这个功能是按照学生的成绩进行排序,对学生的信息进行操作。

查找学生信息:这个功能通过输入学号,查找该学生的信息,如果有该学号就输出该学生的信息,没有该学号就提示输入的学号不存在。

初始化功能

系统在开始使用之前先进行初始化功能,判断students.txt文件中是否保存的有学生的信息,如果有就把文件的内容读取出来,供接下来的操作使用,如用没有就初始化一个空的列表,用来保存用户的输入,程序中接下来的所有数据都会保存在该列表中相当与一个数据缓冲区。

首先是打开文件操作,对文件中的内容进行读取操作,由于在文件中保存的内容是由空格进行分割的,并且每一个学生的信息都占用一行,首先读出所有的内容,先进行按照换行进行分割,得到每个人的信息,然后再对每个人的信息进行安装空格分隔,得到每个人的详细信息包括用户的姓名,学号,成绩。

def Init(stulist): #初始化函数 
 print "初始化......" 
 file_object = open('students.txt', 'r') 
 for line in file_object: 
 stu = Student() 
 line = line.strip("\n") 
 s = line.split(" ") 
 stu.ID = s[0] 
 stu.name = s[1] 
 stu.score = s[2] 
 stulist.append(stu) 
print "初始化成功!"

成绩排序实现

这部分代码是按照学生成绩的高低进行排序,在实现的时候,首先是把所有人的成绩放到一个列表里面然后使用插入排序,按照成绩的大小对StuList中保存的学生信息的地址进行排序

def Sort(stulist): #按学生成绩排序
 Stu = []
 sum_count = []
 for li in stulist:
 temp = []
 temp.append(li.ID)
 temp.append(li.name)
 temp.append(int(li.score1))
 temp.append(int(li.score2))
 temp.append(int(li.score3))
 temp.append(int(li.sum))
 sum_count.append(int(li.sum))
 Stu.append(temp)

 #print sum_count
 #print Stu;
 #print stulist
 insertSort(sum_count, stulist)
 #print stulist;
 display(stulist)

def insertSort(a, stulist): 
 for i in range(len(a)-1): 
 #print a,i 
 for j in range(i+1,len(a)): 
 if a[i]<a[j]: 
 temp = stulist[i] 
 stulist[i] = stulist[j] 
 stulist[j] = temp

界面截图如下:

Python实现学生成绩管理系统

源码:

# -*- coding: UTF-8 -*-

import os
import re
import numpy as np

class Student: #定义一个学生类
 def __init__(self):
 self.name = ''
 self.ID =''
 self.score1 = 0
 self.score2 = 0
 self.score1 = 0
 self.sum = 0


def searchByID(stulist, ID): #按学号查找看是否学号已经存在
 for item in stulist:
 if item.ID == ID:
 return True

def Add(stulist,stu): #添加一个学生信息
 if searchByID(stulist, stu.ID) == True:
 print"学号已经存在!"
 return False
 stulist.append(stu)
 print stu.name,stu.ID, stu.score1, stu.score2, stu.score3, stu.sum;
 print "是否要保存学生信息?"
 nChoose = raw_input("Choose Y/N")
 if nChoose == 'Y' or nChoose == 'y':
 file_object = open("students.txt", "a")
 file_object.write(stu.ID)
 file_object.write(" ")
 file_object.write(stu.name)
 file_object.write(" ")
 file_object.write(str(stu.score1))
 file_object.write(" ")
 file_object.write(str(stu.score2))
 file_object.write(" ")
 file_object.write(str(stu.score3))
 file_object.write(" ")
 file_object.write(str(stu.sum))
 file_object.write("\n")
 file_object.close()
 print u"保存成功!"

def Search(stulist, ID): #搜索一个学生信息
 print u"学号 姓名 语文 数学 英语 总分"
 count = 0
 for item in stulist:
 if item.ID == ID:
 print item.ID, '\t' ,item.name,'\t', item.score1,'\t',item.score2, '\t', item.score3, '\t',item.sum
 break
 count = 0
 if count == len(stulist):
 print "没有该学生学号!"

def Del(stulist, ID): #删除一个学生信息
 count = 0
 for item in stulist:
 if item.ID == ID:
 stulist.remove(item)
 print "删除成功!"
 break
 count +=1
 # if count == len(stulist):
 # print "没有该学生学号!"
 file_object = open("students.txt", "w")
 for stu in stulist:
 print stu.ID, stu.name, stu.score1,stu.score2, stu.score3, stu.sum
 file_object.write(stu.ID)
 file_object.write(" ")
 file_object.write(stu.name)
 file_object.write(" ")
 file_object.write(str(stu.score1))
 file_object.write(" ")
 file_object.write(str(stu.score2))
 file_object.write(" ")
 file_object.write(str(stu.score3))
 file_object.write(" ")
 file_object.write(str(stu.sum))
 file_object.write("\n")
 file_object.close()
 # print "保存成功!"
 file_object.close()
def Change(stulist, ID):
 count = 0
 for item in stulist:
 if item.ID == ID:
 stulist.remove(item)
 file_object = open("students.txt", "w")
 for stu in stulist:
 #print li.ID, li.name, li.score
 file_object.write(stu.ID)
 file_object.write(" ")
 file_object.write(stu.name)
 file_object.write(" ")
 file_object.write(str(stu.score1))
 file_object.write(" ")
 file_object.write(str(stu.score2))
 file_object.write(" ")
 file_object.write(str(stu.score3))
 file_object.write(" ")
 file_object.write(str(stu.sum))
 file_object.write("\n")
 # print "保存成功!"
 file_object.close()
 stu = Student()
 stu.name = raw_input("请输入学生的姓名")
 while True:
 stu.ID = raw_input("请输入学生的ID")
 p = re.compile('^[0-9]{3}$')
 if p.match(stu.ID):
 break
 else:
 print "输入的有错误!"
 while True:
 stu.score1 = int(raw_input("请输入学生语文成绩"))
 if stu.score1 <= 100 and stu.score1 > 0 :
 break
 else:
 print "输入的学生成绩有错误!"
 while True:
 stu.score2 = int(raw_input("请输入学生数学成绩"))
 if stu.score2 <= 100 and stu.score2 > 0 :
 break
 else:
 print "输入的学生成绩有错误!"
 while True:
 stu.score3 = int(raw_input("请输入学生英语成绩"))
 if stu.score3 <= 100 and stu.score3 > 0 :
 break
 else:
 print "输入的学生成绩有错误!"
 stu.sum = stu.score1 + stu.score2 + stu.score3
 Add(stulist,stu)
def display(stulist): #显示所有学生信息
 print u"学号 姓名 语文 数学 英语 总分"
 for item in stulist:
 print item.ID, '\t' ,item.name,'\t', item.score1,'\t',item.score2, '\t', item.score3, '\t',item.sum

def Sort(stulist): #按学生成绩排序
 Stu = []
 sum_count = []
 for li in stulist:
 temp = []
 temp.append(li.ID)
 temp.append(li.name)
 temp.append(int(li.score1))
 temp.append(int(li.score2))
 temp.append(int(li.score3))
 temp.append(int(li.sum))
 sum_count.append(int(li.sum))
 Stu.append(temp)

 #print sum_count
 #print Stu;
 #print stulist
 insertSort(sum_count, stulist)
 #print stulist;
 display(stulist)

def insertSort(a, stulist): 
 for i in range(len(a)-1): 
 #print a,i 
 for j in range(i+1,len(a)): 
 if a[i]<a[j]: 
 temp = stulist[i] 
 stulist[i] = stulist[j] 
 stulist[j] = temp 
 #return a 

def Init(stulist): #初始化函数
 print "初始化......"
 file_object = open('students.txt', 'r')
 for line in file_object:
 stu = Student()
 line = line.strip("\n")
 s = line.split(" ")
 stu.ID = s[0]
 stu.name = s[1]
 stu.score1 = s[2]
 stu.score2 = s[3]
 stu.score3 = s[4]
 stu.sum = s[5]
 stulist.append(stu)
 file_object.close()
 print "初始化成功!"
 main()

def main(): #主函数 该程序的入口函数
 while True:
 print "*********************"
 print u"--------菜单---------"
 print u"增加学生信息--------1"
 print u"查找学生信息--------2"
 print u"删除学生信息--------3"
 print u"修改学生信息--------4"
 print u"所有学生信息--------5"
 print u"按照分数排序--------6"
 print u"退出程序------------0"
 print "*********************"

 nChoose = raw_input("请输入你的选择:")
 if nChoose == "1":
 stu = Student()
 stu.name = raw_input("请输入学生的姓名")
 while True:
 stu.ID = raw_input("请输入学生的ID")
 p = re.compile('^[0-9]{3}$')
 if p.match(stu.ID):
 break
 else:
 print "输入的有错误!"
 while True:
 stu.score1 = int(raw_input("请输入学生语文成绩"))
 if stu.score1 <= 100 and stu.score1 > 0 :
 break
 else:
 print "输入的学生成绩有错误!"
 while True:
 stu.score2 = int(raw_input("请输入学生数学成绩"))
 if stu.score2 <= 100 and stu.score2 > 0 :
 break
 else:
 print "输入的学生成绩有错误!"
 while True:
 stu.score3 = int(raw_input("请输入学生英语成绩"))
 if stu.score3 <= 100 and stu.score3 > 0 :
 break
 else:
 print "输入的学生成绩有错误!"
 stu.sum = stu.score1 + stu.score2 + stu.score3
 Add(stulist,stu)

 if nChoose == '2':
 ID = raw_input("请输入学生的ID")
 Search(stulist, ID)

 if nChoose == '3':
 ID = raw_input("请输入学生的ID")
 Del(stulist, ID)
 if nChoose == '4':
 ID = raw_input("请输入学生的ID")
 Change(stulist, ID)

 if nChoose == '5':
 display(stulist)

 if nChoose == '6':
 Sort(stulist)


 if nChoose == '0':
 break

if __name__ == '__main__':
 stulist =[]
Init(stulist)

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 参数列表中的self 显式不等于冗余
Dec 01 Python
python改变日志(logging)存放位置的示例
Mar 27 Python
Python中的Numeric包和Numarray包使用教程
Apr 13 Python
Python中用PIL库批量给图片加上序号的教程
May 06 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
使用python模拟高斯分布例子
Dec 09 Python
Python模块的定义,模块的导入,__name__用法实例分析
Jan 07 Python
Pytorch mask_select 函数的用法详解
Feb 18 Python
基于Pyinstaller打包Python程序并压缩文件大小
May 28 Python
PyQt5 QThread倒计时功能的实现代码
Apr 02 Python
Django 如何实现文件上传下载
Apr 08 Python
python numpy中multiply与*及matul 的区别说明
May 26 Python
名片管理系统python版
Jan 11 #Python
Python学生成绩管理系统简洁版
Apr 05 #Python
Python实现学校管理系统
Jan 11 #Python
Python实现GUI学生信息管理系统
Apr 05 #Python
使用python 爬虫抓站的一些技巧总结
Jan 10 #Python
python版学生管理系统
Jan 10 #Python
python实现用户管理系统
Jan 10 #Python
You might like
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
python创建进程fork用法
2015/06/04 Python
Python多线程实现同步的四种方式
2017/05/02 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
详解python配置虚拟环境
2019/04/08 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
幼儿园教师节活动方案
2014/02/02 职场文书
护理专科自荐书范文
2014/02/18 职场文书
装修设计师求职信
2014/02/26 职场文书
工作保证书范文
2014/04/29 职场文书
人事任命书格式
2014/06/05 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
求职信格式范文
2015/03/19 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
Golang中channel的原理解读(推荐)
2021/10/16 Golang