python学生管理系统

本文详细介绍了如何使用Python构建一个学生信息管理系统,包括创建菜单、文件操作、数据输入与管理等功能,并分享了开发过程中的心得体会和技术应用.
摘要由CSDN通过智能技术生成


前言

例如:随着科技的不断发展,很多人都开启了学习python,本文就介绍了学生信息管理系统


一、使用步骤

代码如下(示例):
首先创建menu.py文件:

def show_menu():
    print('+--------------------------------+')
    print('|  1) 添加学生信息                 |')
    print('|  2) 查看所有学生信息              |')
    print('|  3) 修改学生的成绩                |')
    print('|  4) 删除学生信息                 |')
    print('|  5) 按成绩从高至低打印学生信息      |')
    print('|  6) 按成绩从低至高打印学生信息      |')
    print('|  7) 按年龄从大到小打印学生信息      |')
    print('|  8) 按年龄从小到大打印学生信息      |')
    print('|  9) 保存信息到文件(si.txt)        |')
    print('|  10)从文件中读取数据(si.txt)      |')
    print('|  q) 退出                        |')
    print('+--------------------------------+')

创建一个file.py文件

def save_file(all_info):
    f=open('si.txt','w')
    for i in all_info:
        f.write('|%s|%s|%s|\n' % (i['name'].center(20),str(i['age']).center(6),str(i['score']).center(6)))
    f.close()
def read_file():
    f=open('si.txt','r')
    while True:
        s=f.readline()
        if s=='':
            break
        print(s)
    f.close()

创建main.py文件

from menu import *
from stu_info import *
from sorted import *
from file import *
all_info=[]
while True:
    show_menu()
    num=input('请选择:')
    if num=='1':
        all_info=add_stu_info(all_info)
    elif num=='2':
        show_stu_info(all_info)
    elif num=='3':
        chang_stu_info(all_info)
    elif num=='4':
        del_stu_info(all_info)
    elif num=='5':
        score_high2low(all_info)
    elif num=='6':
        score_low2high(all_info)
    elif num=='7':
        age_high2low(all_info)
    elif num=='8':
        age_low2high(all_info)
    elif num=='9':
        save_file(all_info)
    elif num=='10':
        read_file()
    elif num == 'q':
        break

创建一个student.py文件

#存储学生信息name age score id
class StudentModel:
    def __init__(self,name="",age=0,score=0,id=1):
        self.name=name
        self.age=age
        self.score=score
        self.id=id


class StudentController:
    #公用的变量--类变量
    stu_id=1

    def __init__(self):
        self.__stu_list=[]

    @classmethod
    def __generate_id(cls,stu):
        stu.id=cls.stu_id
        #每插入一个学生增加1
        cls.stu_id+=1

    def insert_student(self):
        name=input('name:')
        age=int(input('age:'))
        score=int(input('score:'))
        id=int(input('id:'))
        #得到一个学生
        stu=StudentModel(name=name,age=age,score=score,id=id)
        StudentController.__generate_id(stu)
        #添加学生
        self.__stu_list.append(stu)
        print(self.__stu_list)
        self.show_student()

    def show_student(self):
        for item in self.__stu_list:
            print('ID:%d-name:%s-age:%d-score:%d'%(item.id,item.name,item.age,item.score))

    def delete_student(self):
        name = input('delete name:')
        for item in self.__stu_list:
            if item.name==name:
                self.__stu_list.remove(item)
                print('delete success')
                break
        self.show_student()

    def change_student(self):
        #获取索引 lst.index('xxx')
        name=input('change name:')
        for item in self.__stu_list:
            if item.name==name:
                score=int(input('change score:'))
                item.score=score

        self.show_student()

    def sort_student(self):
        for i in range(len(self.__stu_list)-1):
            for j in range(len(self.__stu_list)-i-1):
                if self.__stu_list[j].score>self.__stu_list[j+1].score:
                    self.__stu_list[j],self.__stu_list[j+1]=self.__stu_list[j+1],self.__stu_list[j]

        self.show_student()

class StudentView:
    def __init__(self):
        self.controller=StudentController()

    # 私有方法
    def __display_menu(self):
        print("""
        1) 添加学生信息
        2) 显示学生信息
        3) 删除学生信息
        4) 修改学生成绩
        5) 学生成绩升序排序 
        """)

    def __select_menu(self):
        cmd=input('请输入选项:')
        if cmd == '1':
            self.controller.insert_student()

        elif cmd == '2':
            self.controller.show_student()
        elif cmd == '3':
            self.controller.delete_student()
        elif cmd == '4':
            self.controller.change_student()
        elif cmd == '5':
            self.controller.sort_student()
        else:
            print('请输入正确选项')


    def main(self):
        while True:
            self.__display_menu()
            #选择功能
            self.__select_menu()



stu=StudentView()
stu.main()

创建score.py文件

def score_high2low(all_info):
    res=sorted(all_info,key=lambda all_info:all_info['score'],reverse=True)
    print('按成绩从高至低打印学生信息:')
    for n in res:
        print('|%s|%s|%s|' % (n['name'].center(20),str(n['age']).center(6),str(n['score']).center(6)))

def score_low2high(all_info):
    res=sorted(all_info,key=lambda all_info:all_info['score'])
    print('按成绩从低至高打印学生信息:')
    for n in res:
        print('|%s|%s|%s|' % (n['name'].center(20),str(n['age']).center(6),str(n['score']).center(6)))

def age_high2low(all_info):
    res=sorted(all_info,key=lambda all_info:all_info['age'],reverse=True)
    print('按年龄从高至低打印学生信息:')
    for n in res:
        print('|%s|%s|%s|' % (n['name'].center(20),str(n['age']).center(6),str(n['score']).center(6)))

def age_low2high(all_info):
    res=sorted(all_info,key=lambda all_info:all_info['age'])
    print('按年龄从低至高打印学生信息:')
    for n in res:
        print('|%s|%s|%s|' % (n['name'].center(20),str(n['age']).center(6),str(n['score']).center(6)))

创建stu.py

def add_stu_info(all_info):
    while True:
        name = input('请输入学生姓名:')
        if not name:
            break
        age = int(input('请输入学生年龄:'))
        score = int(input('请输入学生成绩:'))
        all_info += [{'name': name, 'age': age, 'score': score}]
    return all_info


def show_stu_info(all_info):
    for i in all_info:
        # print(i)
        print('|%s|%s|%s|' % (i['name'].center(20), str(i['age']).center(6), str(i['score']).center(6)))


def chang_stu_info(all_info):
    flag = 0
    name = input('请输入要修改信息的学生姓名:')
    for j in all_info:
        if j['name'] == name:
            flag = 1
            print('****系统找到该学生的信息****')
            age = int(input('请输入学生年龄:'))
            score = int(input('请输入学生成绩:'))
            j['age'] = age
            j['score'] = score
            print('修改后的学生信息是:',
                  '|%s|%s|%s|' % (j['name'].center(20), str(j['age']).center(6), str(j['score']).center(6)))

    if flag == 0:
        print('系统没有', name, '的学生信息,无法修改')


def del_stu_info(all_info):
    flag = 0
    count = 0
    name = input('请输入学生姓名:')
    for k in all_info:
        if k['name'] == name:
            del all_info[count]
            flag = 1
            print('学生', name, '的信息已经删除')
        count += 1
    if flag == 0:
        print('系统没有', name, '的学生信息,不需要删除')

把以上代码放在一个文件夹,运行代码

总结

心得体会
我认为学生管理系统,可以帮助学校和教师更好地管理学生信息和学习进度。使用Python来开发学生管理系统是一个很好的选择,因为Python是一种简单易学的编程语言,而且具有丰富的库和框架,可以帮助我们快速开发出功能强大的系统。在开发学生管理系统的过程中,我学会了如何设计数据库模型、编写API接口、实现用户权限管理等技能。这些技能不仅可以帮助我更好地理解软件开发的流程,还可以让我在未来的项目中更加熟练地应用。
通过学生管理系统的开发,我也更加深入地了解了学生管理的重要性,以及如何通过科学的方法来提高学生的学习效果。我相信这些经验和知识对我未来的学习和工作都会有很大的帮助。总的来说,开发学生管理系统是一次很有意义的经历,我会继续努力学习,不断提升自己的技能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值