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。文件格式如下图:

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

您可能感兴趣的文章:

  • python实现外卖信息管理系统
  • Python实现学生成绩管理系统
  • 名片管理系统python版
  • Python学生成绩管理系统简洁版
  • Python实现学校管理系统
  • Python实现GUI学生信息管理系统
  • python版学生管理系统
  • python实现用户管理系统
  • 一个简单的Python名片管理系统
  • python实现员工管理系统
(0)

相关推荐

  • Python实现学校管理系统

    本文实例为大家分享了Python实现学校管理系统的具体代码,供大家参考,具体内容如下 一.功能分析 此学校管理系统应该可以实现学校的师资力量的调配,学生的入学.学习以及修学或者退学的情况 二.程序解读 1.下面的程序实现了学校管理系统的基本功能,包括: 1)学校的招生 2)讲师的招聘 3)课程的增加 4)等等 2.未实现的功能也有很多,比如: 1)学生类中有一个方法是缴费,也有一个方法是注册,这两个方法应该关联起来,缴费成功后,才可以进行注册 2)每个老师应该可以通过各种方式来查看自己学生的信息

  • Python实现GUI学生信息管理系统

    本文实例为大家分享了Python实现GUI学生信息管理系统的具体代码,供大家参考,具体内容如下 项目环境:  软件环境: OS:RedHat6.3                   Lib:Pygtk                   Language:Python                   Support tool:Glade3 项目简述: ①Glade3设计用户的登录窗口,功能主窗口 ②通过Gtk.Builder初始化,载入界面 ③在Mysql.py文件中实现Python操作数

  • Python学生成绩管理系统简洁版

    讲起学生成绩管理系统,从大一C语言的课程设计开始,到大二的C++课程设计都是这个题,最近在学树莓派,好像树莓派常用Python编程,于是学了一波Python,看了一点基本的语法想写点东西练下手. 开发环境:Ubuntu+Python2.7 代码如下: #coding=utf-8 #保存学生信息 studentList=[] def addInfo(name,addr): tempInfo={} tempInfo['name']=name tempInfo['addr']=addr student

  • python实现用户管理系统

    本文实例为大家分享了python实现用户管理系统的具体代码,供大家参考,具体内容如下 <python核心编程>第七章练习题第五题 一.题目描述 userpw2.py.下面的问题和例题7.1中的管理名字-密码的键值对数据程序有关. (a) 修改那个脚本,使他能记录用户上次的登陆日期和时间(用time模块),并与用户密码一起保存起来.程序的界面要求用户输入用户名和密码的提示.无论用户名是否登陆成功,都应有提示,在用户登陆成功后,应更新相应用户的上次登陆时间戳.如果本次登陆与上次登陆在时间上相差不超

  • python实现员工管理系统

    这是一个简易的员工管理系统,实现最简单的功能: 1.登录用户密码验证(错误三次自动退出) 2.支持文本员工的搜索.添加.删除.修改 3.一级层级多个选项.二级层级多个选项,都支持判空.退出.返回上一层级 4.针对删除和修改有员工当前自动搜索到的结果进行参照修改和特殊提醒是否删除 用到的基础知识点比较多: 1.计数器 2.while True 以及给while做退出层级标记 3.if-elif-else 的嵌套使用 4.continue 和 break 以及简单函数定义def 5.键盘抓取 raw

  • python版学生管理系统

    写一个学生管理系统,最好用python. 我都没学过python呢,只好开始临时抱佛脚,再到网上找找有没有例子看看,下面是我参照另一个博主写的,中间有一些和我不能融合的错误,我已经解决了. input("\n\nPress the enter key to exit.") def functionList(): # 定义功能菜单 print("---------请输入序号选择您要得功能---------") print("") print(&qu

  • 名片管理系统python版

    本文实例为大家分享了python名片管理系统的具体代码,供大家参考,具体内容如下 import os list_all = [] def page(): """输出主页面""" print("*" * 30) print("欢迎使用[名片管理系统]v2.0") print() print("1.新建名片") print("2.查看全部") print("3.

  • Python实现学生成绩管理系统

    本文实例为大家分享了Python实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 基本功能: 输入并存储学生的信息:通过输入学生的学号.姓名.和分数,然后就可以把数据保存在建立的student文件里面. 打印学生的所有信息:通过一个打印函数就可以把所有的信息打印在屏幕上. 修改学生信息:这个功能首先通过查询功能查询出该学生是否存在,如果存在就对该学生的信息进行修改,如果不存在则返回到主界面. 删除学生信息:该功能是对相应的学生进行删除操作,如果学生存在就查找到进行删除. 按学生成绩进行排

  • 一个简单的Python名片管理系统

    字符串和列表学完,自己试着写了一个非常简单的Python名片管理系统. 新萌尝试,大佬们不要喷. 修改名片的功能我偷了个懒,因为我不知道怎么通过定义下标,然后通过下标来修改列表内的字符串. 我的思路是,把用户准备修改的名片删除,再把用户新命名的名片添加即可: 如果有大佬有直接修改的办法,欢迎指点一下. 代码如下: name = [] while True: print("="*50) print(" 欢迎进入名片管理系统V1.0") print("1:添加

  • python实现外卖信息管理系统

    本文为大家分享了python实现外卖信息管理系统的具体代码,供大家参考,具体内容如下 一.需求分析 需求分析包含如下: 1.问题描述 以外卖信息系统管理员身份登陆该系统,实现对店铺信息.派送员信息.客服人员信息.订单信息.配送信息等进行有条件查询以及信息的录入.修改.删除等功能. 2.系统功能描述 (1)信息录入:使用wxpython设计排版编写窗口界面,给出录入信息的接口,通过python语句实现与数据库的连接,从而向数据库中插入相应数据. (2)信息修改:使用wxpython设计排版编写窗口

随机推荐