前言

最近学了一点python语法,所以写一个小程序练习一下。当然程序中有许多不完美的地方,仅供各位小伙伴参考呀,并且欢迎大家留言指出不合理的地方奥~


学生信息管理系统

1、系统介绍

该系统主要考察 python 基础语法的应用,包括循环、分支、函数、类和文件的应用等。

2、系统实现功能

  • 增加学生信息
  • 删除学生信息
  • 修改学生信息
  • 查询学生信息
  • 展示所有学生信息
  • 保存学生信息到 .txt 文件中
  • 退出系统

3、功能实现

(1)show_menu():打印系统菜单函数,定义为类的静态方法。
(2)add_student():增加学生信息函数,该函数可以一次增加任意数量的学生信息,而非每次只能添加一名学生;通过 for 循环依次由用户输入待添加的学生信息,若系统中不存在相同学号即可添加成功,若学号已存在,则无法添加。如果系统中还没有添加任何学生信息,则可以直接添加。
(3)delete_student():删除学生信息函数,函数先判断系统中是否有学生信息,若系统为空,则无法删除;否则按学号遍历系统中已经存在的学生信息查找是否有用户需要删除的学生信息,若存在则删除,否则返回无法删除提示。
(4)modify_student():修改学生信息函数,具体实现同删除学生信息函数类似,不同之处在于修改学生信息部分的实现,本文定义了一个类方法,实现学生的三项信息可以不全修改,若用户输入回车则对应项信息保持原值,如此不要求用户将学生的所有信息全部修改。
(5)search_student():查询学生信息函数,具体实现同删除学生信息函数类似。
(6)show_all():展示所有学生信息函数,函数先判断系统中是否有学生信息,若系统为空,则无法显示;否则依次打印学生信息。
(7)data():保存学生信息函数,函数先判断系统中是否有学生信息,若系统为空,则无法保存;否则利用open()函数打开指定 .txt 文件写入学生信息,最后记得关闭文件。
(8)退出系统由 python 内置函数 exit() 实现。

4、主函数实现

在无限循环中判断用户输入为哪个功能代码相应地调用对应实现函数即可。若用户输入代码错误则系统给出错误提示。

5、程序源码

(1)系统功能实现程序如下:

class StudentManageSystem:
    student_list=[]          #初始化学生列表为空

    #系统菜单展示
    @staticmethod
    def show_menu():
        print("*"*50)
        print("*******欢迎登录学生信息管理系统!*******")
        print("         1:添加学生信息")
        print("         2:删除学生信息")
        print("         3:修改学生信息")
        print("         4:查询学生信息")
        print("         5:显示所有学生信息")
        print("         6:保存学生信息")
        print("         0:退出程序")
        print("***********************************")

    #添加学生信息
    def add_student(self):
        student_number=int(input("请输入添加学生人数:"))
        for i in range(student_number):
            print("请输入第%d位学生信息"%(i+1))
            sno=input("请输入学生学号:")
            sname=input("请输入学生姓名:")       #学生姓名、年龄不唯一
            sage=input("请输入学生年龄:")
            student=[sno,sname,sage]
            #判断学号是否已经存在
            if len(self.student_list)==0:      #初始时学生列表为空,故学号肯定不存在,可直接添加
                self.student_list.append(student)
                print("学号为%s的同学添加成功!"%sno)
            else:
                for each in self.student_list:
                    if each[0]==sno:
                        print("学号%s已存在!不能重复添加!"%sno)
                        break
                else:
                    self.student_list.append(student)
                    print("学号为%s的同学添加成功!"%sno)

    #删除学生信息
    def delete_student(self):
        if len(self.student_list)==0:
            print("系统中学生列表为空,无法删除学生信息,请先添加学生信息!")
        else:
            sno = input("请输入需要删除的学生学号:")
            for each in self.student_list:
                if each[0]==sno:
                    self.student_list.remove(each)
                    print("删除成功!")
                    break
            else:
                print("系统中没有学号为%s的学生信息,无法删除!"%sno)

    #修改学生信息时用户不输入则保持原值
    def user_input(self,message,info):
        s=input(message)
        if len(s)==0:
            return info
        else:
            return s

    #修改学生信息
    def modify_student(self):
        if len(self.student_list)==0:
            print("系统中学生列表为空,无法修改学生信息,请先添加学生信息!")
        else:
            sno = input("请输入需要修改的学生学号:")
            for each in self.student_list:
                if each[0]==sno:
                    each[0]=self.user_input("请输入学号【回车不修改】",each[0])
                    each[1] = self.user_input("请输入姓名【回车不修改】", each[1])
                    each[2] = self.user_input("请输入年龄【回车不修改】", each[2])
                    print("修改成功!")
                    break
            else:
                print("系统中没有学号为%s的学生信息,无法修改!"%sno)

    #查询学生信息
    def search_student(self):
        if len(self.student_list)==0:
            print("系统中学生列表为空,无法查询学生信息,请先添加学生信息!")
        else:
            sno = input("请输入需要查询的学生学号:")
            for each in self.student_list:
                if each[0]==sno:
                    print("学号:%s\t姓名:%s\t年龄:%s"%(each[0],each[1],each[2]))
                    break
            else:
                print("系统中没有学号为%s的学生信息,无法查询!" % sno)

    #显示所有学生信息
    def show_all(self):
        if len(self.student_list)==0:
            print("系统中学生列表为空,无法展示学生信息,请先添加学生信息!")
        else:
            print("学号\t姓名\t年龄\t")
            for each in self.student_list:
                print("%s\t%s\t%s\t"%(each[0],each[1],each[2]))

    #保存学生信息
    def data(self):
        if len(self.student_list)==0:
            print("系统中学生列表为空,无法展示学生信息,请先添加学生信息!")
        else:
            data_file=open("此处改为自己本地的路径\学生信息.txt","a")       #以追加的方式保存学生信息
            data_file.write("学号\t姓名\t年龄\t\n")
            for each in self.student_list:
                data_file.write(each[0]+"\t"+each[1]+"\t"+each[2]+"\n")
            data_file.close()
            print("保存成功!")

(2)主程序如下:

from project import StudentManageSystem as sms

sms.show_menu()
ss=sms()     #实例化对象

while True:
    opt=input("请输入功能前面的代码:")
    if opt=="1":
        ss.add_student()
    elif opt=="2":
        ss.delete_student()
    elif opt=="3":
        ss.modify_student()
    elif opt=="4":
        ss.search_student()
    elif opt=="5":
        ss.show_all()
    elif opt=="6":
        ss.data()
    elif opt=="0":
        print("系统关闭成功,欢迎下次登陆!")
        exit()
    else:
        print("功能代码错误,请重新输入!")

6、运行结果

(1)增加学生信息
在这里插入图片描述
(2)其他功能
在这里插入图片描述
(3)保存 .txt 文件的内容
在这里插入图片描述


若有任何问题欢迎各位小伙伴评论区留言交流呀~
希望大家都走在开满鲜花的路上呀~


版权说明

原文作者:早知晓
博文链接:Click here
转载请注明出处,谢谢合作~


Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐