ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

学生信息管理系统2.0

2019-09-23 13:00:07  阅读:219  来源: 互联网

标签:name self 学生 print 信息管理系统 array 2.0 id


# 学生管理系统
import os
#同一个类可以生成无数个对象,这些对象来源于同一个类的属性和方法,当一个对象的方法进行调用的时候,
#对象会将自身作为第一个参数传递到self,接收到这个参数,python就知道是那一个对象调用方法了
#定义学生类
#类写完之后就变成了对象
class Student:
    #__init__(self) 构造方法:只要实例化一个对象的时候,就会在对象被创建中调用,这些参数会自动的传递到init方法中。

    def __init__(self,id,name,age,score):
        self.id = id
        self.name = name
        self.age = age  
        self.score = score
    def __str__(self):  #如果要把一个类的实例变成 str,就需要实现特殊方法__str__()
        #msg = "{'id':" + "'"+self.id +"'"+ ",'name':" + "'" +self.name + "'" + ",'age':" + "'" + self.age+"'}"
        msg = "学生信息:id=" + self.id + ",name=" + self.name + ",age=" + self.age + ",score=" + self.score
        return msg
    # array 模块就是数组,可以存放一组相同类型的数字。这里都存放对应的字符串类型。
    #Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str()将其转换为字符串格式
    #获取id
    def getId(self):
        return self.id
    #获取name
    def getName(self):
        return self.name
    #获取age
    def getAge(self):
        return self.age
    #获取Score
    def getScore(self):
        return self.score
    #设置name
    def setName(self,name):
        self.name = name#因为python的变量不需要定义,在方法里面不加self会当成普通变量
    #设置age
    def setAge(self,age):
        self.age = age
    #设置分数
    def setScore(self,score):
        self.score = score


# 添加学生信息
def addStu(array):
    "添加学生信息"
    print("无输入可按回车结束录入!")
    while True:
        id = input("请输入学生学号:")
        if not id:
            break

        try:
            for i in range(len(array)):# 生成[array[0],array[1]......array[len(array)-1]]
                stu2 = array[i]
                if id == stu2.getId():
                    print("该学号已存在,不能重复添加")
                    return
            name = input("请输入学生姓名:")
            age = input("请输入学生年龄:")
            score = input("请输入学生成绩:")
            stu = Student(id,name,age,score) # 把单个学生添加到总列表中
            array.append(stu)
            print("添加成功:",stu)
        except:
            print("输入无效,不是整形数值....重新录入信息")
            continue
    print("学生信息录入完毕!!!")   


# 删除学生信息
def delStu(array):
    "删除学生信息"
    id = input("请输入要删除的学生学号:")
    for i in range(len(array)):
        stu2 = array[i]
        if id == stu2.getId():
           del array[i]
           return 0
    return 1

# 修改学生信息
def updateStu(array):
    "修改学生信息"
    id = input("请输入要修改的学生学号:")
    for i in range(len(array)):
        stu2 = array[i]
        if id == stu2.getId():
            name = input("请输入要修改的学生姓名:")
            age = input("请输入要修改的学生年龄:")
            score = input("请输入要修改的学生分数:")
            stu2.setName(name)
            stu2.setAge(age)
            stu2.setScore(score)
            print("修改成功")
            return
    print("找不到该学号,没法修改")


# 查询学生信息
def selectStu(array):
    "查询学生信息"
    id = input("请输入要查询的学生学号:")
    try:
        for i in range(len(array)):
            stu2 =array[i]
            if id == stu2.getId():
                print("查询到的学生信息:",stu2)
                return
    except:
        print("查询失败,查不到该学生信息")
        return

#打印学生信息
def printStuInfo(array):
    for i in range(len(array)):
        stu = array[i]
        print(stu)

def meun():
    menu_info = '''+----------------------+
| 1 )添加学生信息(输入名字时为空时结束添加)  
| 2 )删除学生信息                    
| 3 )修改学生信息                                                     
| 4 )查询学生信息                          
| 5 )按学生成绩高-低显示学生信息           
| 6 )按学生成绩低-高显示学生信息                     
| 7 )保存学生信息到文件(students.txt)      
| 8 )从文件中读取数据(students.txt)      
| 9 ) 退出系统                
 ---------------------
'''
    print(menu_info)



def save_info(array):
    try:
        filename = 'write_data.txt' #文件名
        with open(filename, 'w') as f:
            for i in range(len(array)):
                if i == len(array)-1 :
                    stu =array[i]
                    f.write(stu.getId() + ","+stu.getName()+","+stu.getAge()+","+stu.getScore())
                else:
                    stu = array[i]
                    f.write(stu.getId() + ","+stu.getName()+","+stu.getAge() +","+stu.getScore() +"\n")
            f.close()   
    except Exception as e:
        file = open(filename, "x")    # 文件不存在,创建文件并打开

def read_info(array):
    try:
        filename = 'write_data.txt' #文件名
        f=open(filename,"r")
        content = f.readlines()# 整行读取
        print("文件内容:",content)
        array.extend(content) #用新列表拓展原来的列表
        array_temp = [] # 临时变量
        for i in range(len(array)): # 遍历转成学生对象
            print("第"+str(i)+"行:", array[i])
            if isinstance(array[i], str):  # 判断是否为字符串
            #str.split(str1,num):以str1为界限分裂num次,若无参数则为空格
                strArray = str(array[i]).split(",")#将一个字符串分割为子字符串,然后将结果作为字符串数组返回
                id = strArray[0]
                name = strArray[1]
                age = strArray[2]
                score = strArray[3].replace("\n","") #去掉换行符
                student = Student(id,name,age,score)#创建学生对象
                array_temp.append(student)
        del array #马上删除array
        array = array_temp #将新的赋值给原来的
    except:
        print("文件不存在")
        return

def main():
    flag = 0
    array = [] #定义list用于保存学生信息
    while flag != 1:
        meun()
        step = input("请输入你的操作:")
        step = int(step)
        if step == 1:
            addStu(array)
        #print("学生信息打印:", array)
        elif step == 2:
            num = delStu(array)
            if num == 0:
                print("删除成功")
            elif num == 1 or num == 2:
                print("删除失败")
            printStuInfo(array)
        elif step == 3:
            updateStu(array)
            printStuInfo(array)
        elif step == 4:
            selectStu(array)
        elif step == 5:
            printStuInfo(array)
        elif step == 6:
            printStuInfo(array)
        elif step == 7:
            save_info(array)
        elif step == 8:
            read_info(array)
        elif step == 9:
            break
        else:
            print("输入指令错误,请重新输入!!")
    print("退出系统成功")
main()

标签:name,self,学生,print,信息管理系统,array,2.0,id
来源: https://www.cnblogs.com/klstime/p/11571749.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有