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实现ipsec开权限实例
Nov 11 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
python异步存储数据详解
Mar 19 Python
python实现视频分帧效果
May 31 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
Django 实现对已存在的model进行更改
Mar 28 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
Django Model层F,Q对象和聚合函数原理解析
Nov 12 Python
详解Django的MVT设计模式
Apr 29 Python
Pytorch 实现变量类型转换
May 17 Python
Django中celery的使用项目实例
Jul 07 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
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
nginx下安装php7+php5
2016/07/31 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
常用jQuery代码分享
2015/07/14 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
jQuery实现简单滚动动画效果
2016/04/07 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
微信小程序 按钮滑动的实现方法
2017/09/27 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
Python 中@property的用法详解
2020/01/15 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
2014年教师政治学习材料
2014/06/02 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
出生证明格式
2015/06/15 职场文书
导游词之潮音寺
2019/09/26 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python
MySQL表字段时间设置默认值
2021/05/13 MySQL
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python
logback如何自定义日志存储
2021/08/30 Java/Android
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏
MySQL 计算连续登录天数
2022/05/11 MySQL