python实现学生管理系统
作者:bobopeng 发布时间:2022-12-18 02:42:22
标签:python,管理系统
python写的简单的学生管理系统,练习python语法。
可以运行在windows和linux下,python 2.7。
#!/usr/local/bin/python
# -*- coding:utf-8 -*-
import os
import re
#定义学生类
class Student:
def __init__(self):
self.name = ''
self.ID = ''
self.score = 0
#根据学生分数进行从大到小的冒泡排序
def BuddleSortByScore( stulist ):
n = len( stulist )
for i in range( n ):
for j in range( n - i - 1):
if stulist[j].score < stulist[j+1].score:
#tmp = stulist[j+1]
#stulist[j+1] = stulist[j]
#stulist[j] = tmp
stulist[j],stulist[j+1] = stulist[j+1],stulist[j]
#按顺序输出所有学生的信息
def PrintAllStudentInfo( stulist ):
print u"______________________学生列表_______________"
for i in range( len(stulist) ):
print u"姓名:" ,
print stulist[i].name,
print " " ,
print u"学号:" ,
print stulist[i].ID ,
print " " ,
print u"分数:" ,
print stulist[i].score
print "____________________________________________"
#增加一个学生,增加成功返回True,否则返回False
def Add( stulist , stu ):
if searchByID( stulist , stu.ID ) == 1:
print u"此ID已经存在!"
return False
stulist.append( stu )
#给出是否保存更新数据的选择
print "Do you want to save the result ?"
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.score) )
file_object.write( "\r\n" )
file_object.close()
return True
else:
stulist.remove(stu)
#根据ID删除一个学生的信息,删除成功则返回True,否则返回false
def DeleteByID( stulist , ID ):
for stu in stulist:
if stu.ID == ID:
stulist.remove( stu )
#选择是否保存已经改变的内容
print "Do you want to save the changed result ?"
nChoose = raw_input("Choose:Y/N:")
if nChoose == 'Y' or nChoose == 'y':
file_object = open("students.txt" , "w+")
for stu2 in stulist:
file_object.write(stu2.ID)
file_object.write(" ")
file_object.write(stu2.name)
file_object.write(" ")
file_object.write(str(stu2.score))
file_object.write("\r\n")
file_object.close()
print u"删除成功!"
return True
print u"删除失败!"
return False
#根据姓名删除一个学生的信息,删除成功返回True,否则返回False
def DeleteByName( stulist , name ):
pos = searchByName( stulist , name )
if pos != -1:
del stulist[pos]
#选择是否保存已经改变的内容
print "Do you want to save the changed result ?"
nChoose = raw_input("Choose:Y/N:")
if nChoose == 'Y' or nChoose == 'y':
file_object = open("students.txt" , "w+")
for stu2 in stulist:
file_object.write(stu2.ID)
file_object.write(" ")
file_object.write(stu2.name)
file_object.write(" ")
file_object.write(str(stu2.score))
file_object.write("\r\n")
file_object.close()
print u"删除成功!"
return True
else:
print u"删除失败!"
print pos
return False
#根据学号查找一个学生是否存在,存在返回学生在列表中的下标,否则返回-1
def searchByID( stulist , ID ):
for i in range( len(stulist) ):
if stulist[i].ID == ID:
print u"姓名:" ,
print stulist[i].name ,
print " " ,
print u"学号:" ,
print stulist[i].ID ,
print " " ,
print u"分数:" ,
print stulist[i].score
return i
return -1
#根据姓名查找一个学生是否存在,存在返回学生在列表中的下标,否则返回-1
def searchByName( stulist , name ):
for i in range( len(stulist) ):
if stulist[i].name == name:
print u"姓名:" ,
print stulist[i].name ,
print " " ,
print u"学号:" ,
print stulist[i].ID ,
print " " ,
print u"分数:" ,
print stulist[i].score
return i
return -1
#初始化,读取文件,更新学生信息
def Init( stulist ):
print u"初始化......"
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 u"初始化成功!"
#查找菜单
def QueryMenu( stulist ):
while True:
print "******************************"
print u"根据学生的学号进行查找-------1"
print u"根据学生的姓名进行查找-------2"
print u"离开查找模块----------------3"
print "******************************"
nChoose = raw_input("请输入你的选择")
if nChoose == "1":
ID = raw_input("请输入你要输入查找的ID:")
searchByID( stulist , ID )
elif nChoose == "2":
name = raw_input("请输入你要查找的姓名:")
searchByName( stulist , name )
elif nChoose == "3":
return
else:
print u"选择输入错误,请重新输入!"
#删除模块
def DeleteMenu( stulist ):
while True:
print "*****************************"
print u"根据学生的学号进行删除------1"
print u"根据学生的姓名进行删除------2"
print u"离开删除模块---------------3"
print "******************************"
nChoose = raw_input("请进行选择:")
if nChoose == "1":
ID = raw_input("请输入你要删除的ID:")
DeleteByID( stulist , ID )
elif nChoose == "2":
name = raw_input("请输入你要删除的姓名:")
DeleteByName( stulist , name )
elif nChoose == "3":
return
else:
print u"您的选择有误,请重新输入!"
#菜单
def menu( stulist ):
while True:
print "***********************"
print u"--------菜单------------"
print u"增加学生信息---------1"
print u"查找一个学生的信息----2"
print u"删除一个学生的信息----3"
print u"输出所有学生的信息----4"
print u"根据分数排序---------5"
print u"退出程序-------------6"
print "------------------------"
print "************************"
nChoose = raw_input("请输入你的选择:")
if nChoose == "1":
stu = Student()
stu.name = raw_input("请输入学生的姓名:")
#匹配学生ID是否满足0--9中的数字
while True:
stu.ID = raw_input("请输入学生的ID:")
#创建编译一个正则表达式的模板
p = re.compile( '^[0-9]{3}$' )
if p.match( stu.ID ):
break
else:
print "学生的ID输入错误,正确形式应该为0--9之间的三位数字!"
#匹配学生的分数是否满足0--100之间
while True:
stu.score = eval( raw_input("请输入学生的分数:") )
#利用普通的符号来判断分数是否符合标准
#if stu.score >= 0 and stu.score <= 100:
# break
#利用正则表达式来判断分数是否符合标准
if re.match( "^[0-9]" ,str(stu.score) ) and stu.score<=100 and stu.score >= 0 :
break
else:
print u"分数不满足实际情况,应该为0--100之间的数字!"
if Add( stulist , stu ) == 1:
print u"学生信息增加成功!"
else:
print u"学生信息增加失败!"
elif nChoose == "2":
QueryMenu( stulist )
elif nChoose == "3":
DeleteMenu( stulist )
elif nChoose == "4":
PrintAllStudentInfo( stulist )
elif nChoose == "5":
BuddleSortByScore( stulist )
print "Do you want to save the sorted result?"
choose = raw_input("please input your choice:Y/N:")
if choose == 'Y' or choose == 'y':
file_object = open("students.txt","w+")
for stu2 in stulist:
file_object.write(stu2.ID)
file_object.write(" ")
file_object.write(stu2.name)
file_object.write(" ")
file_object.write(str(stu2.score))
file_object.write("\r\n")
elif nChoose == "6":
return
else:
print u"输入有误,请重新输入!"
#测试函数部分
if __name__ == '__main__':
#定义一个列表用来存储所有学生的信息
stulist = []
#初始化,从文件中读取信息
Init( stulist )
#菜单函数
menu( stulist )
运行需要读写文件Students.txt。文件格式如下图:
更多学习资料请关注专题《管理系统开发》。
来源:http://blog.csdn.net/junbopengpeng/article/details/18234083
0
投稿
猜你喜欢
- 本文实例主要是对turtle的使用,实现Python+turtle动态绘制一棵树的实例,具体代码:# drawtree.pyfrom tur
- alt的准确含义是,当照片不存在或者load错误时的提示。但同时img也同时支持alt和title,再有某些浏览器的错误解析,因此经常被误导
- 下面是列表合并的4种方法,其中的代码都在Python3下测试通过,在Python2下运行应该也没问题,时间关系就没测试,遇到问题可以联系小编
- 近日,有关微软Open XML标准的问题又引发了某些业内人士的关注。其一是因为日前ISO(国际标准组织)成员南非和巴西相继就ISO批准微软的
- 描述:下午快下班的时候公司供应链部门的同事跑过来问我能不能以程序的方法帮他解决一些excel表格每周都需要手工重复做的事情,Excel 是数
- 时间格式化函数,代码简单但较实用代码很简单,谁都能看懂Function fmstr(str, str1, Lens) Dim str2For
- 为了画个图,被numpy这个模块的安装真的折腾疯了!!!一直装不上,花了几个小时,看了网上的很多教程、方法发现总结得不是很全,这里总结一下,
- 1.元组的概念Python中的元组和列表很相似,元组也是Python语言提供的内置数据结构之一,可以在代码中直接使用。元组和列表就像是一个孪
- 一、前言:当数据库服务器建立好以后,我们首先要做的不是考虑要在这个支持数据库的服务器运行哪些受MySQL提携的程序,而是当数据库遭到破坏后,
- 1、DataFrame返回的不是对象。2、DataFrame查出来的数据返回的是一个dataframe数据集。3、DataFrame只有遇见
- 如何去读取一个没有表头的二维csv文件(如下图所示)?并以元组的形式表现数据:((1.0, 0.0, 3.0, 180.0), (2.0,
- 在一次ASP程序中不能正常连接MSSQL出现出错信息如下:以下为引用的内容:HTTP/1.1 200 OK S
- 主要使用IE各个阶段实现的一些方法,从中也可以看出IE的发展史。暂时提供到IE4的判定。var isIE = window.ActiveXO
- 一、Tensorlow结构import tensorflow as tfimport numpy as np#创建数据x_data = np
- 题目:如何在python中实现整数的二进制循环移位?概述在python中,可以通过<<以及>>运算符实现二进制的左移
- python书写爬虫的一个框架,它也提供了多种类型爬虫的基类,scrapy用途广泛,可以用于数据挖掘、监测和自动化测试首先要先安装pytho
- 大家都知道,在ASP中可以使用Request.ServerVariables("REMOTE_ADDR")来取得客户端的
- <% '************************************************
- 1、灵活运用样式 熟悉网页设计的网友就知道,调用Style的方法很多,我们可以单击鼠标右键选择Custon Style来调用Style标准,
- 这个javascript划词搜索功能,在很多地方我们都会看到,特别是装了浏览器插件的时候,当我们用鼠标选择一段文字的时候,就会出现搜索提示,