圆月山庄资源网 Design By www.vgjia.com
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。文件格式如下图:
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月07日
2024年11月07日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]