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。文件格式如下图:
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“python实现学生管理系统”评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新动态
2024年11月26日
2024年11月26日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]