python:学生管理系统程序(可运行)

简介: 历经几天终于完成了自己写的第一个程序,在这个过程中可谓艰辛啊没写注释,所以大家自己领悟吧,有需要的朋友别抄袭哦!

历经几天终于完成了自己写的第一个程序,在这个过程中可谓艰辛啊

没写注释,所以大家自己领悟吧,有需要的朋友别抄袭哦!

class SqList:
    def __init__(self):
        self.init_capacity = 1
        self.capacity = self.init_capacity
        self.data = [None] * self.capacity
        self.size = 0
    def student(self, number, name, course, grade):
        self.number = number
        self.name = name
        self.course = course
        self.grade = grade
        return f'学号为{self.number},名字为{self.name},课程为{self.course},成绩为{self.grade}'
    def resize(self, new_capacity):
        assert new_capacity >= 0
        old_data = self.data
        self.data = [None] * new_capacity
        self.capacity = new_capacity
        for i in range(self.size):
            self.data[i] = old_data[i]
    def add_to(self, data):
        if self.size == self.capacity:
            self.resize(2 * self.size)
        self.data[self.size] = data
        self.size += 1
    def add_stu(self):
        if self.size == self.capacity:
            self.resize(2 * self.size)
        number_stu, name_stu, course_stu, grade_stu = input("输入学号,姓名,科目,成绩:(以空格为间)").split(" ")
        self.add_to(number_stu)
        self.add_to(name_stu)
        self.add_to(course_stu)
        self.add_to(grade_stu)
        print("添加成功")
    def all_stu(self):
        if self.data == [None]:
            print("暂时无学生的信息")
        else:
            stu = 0
            for i in range(self.size // 4):
                print(self.student(self.data[stu], self.data[stu + 1], self.data[stu + 2], self.data[stu + 3]))
                stu += 4
            # print(self.data)
            # print(self.size)
    def pop_number(self, op):
        num = 0
        while num < self.size and self.data[num] != op:
            num += 1
        for j in range(num + 4, self.size):
            self.data[j - 4] = self.data[j]
        self.size -= 4
        if self.capacity > self.init_capacity and self.size <= self.capacity / 4:
            self.resize(self.capacity // 2)
    def pop_course(self,pop):
        num = 0
        while num < self.size and self.data[num] != pop:
            num += 1
        for j in range(num + 4, self.size):
            self.data[j - 4] = self.data[j]
        self.size -= 4
    def delete_stu(self):
        select=int(input("请选择删除方式(1.学号删除,2.课程删除):"))
        if select==1:
            id_stu = str(input("输入需要删除的学生的学号:"))
            if id_stu in self.data:
                self.pop_number(id_stu)
            else:
                print("无此学生信息")
        elif select==2:
            course_in=str(input("输入要删除的学生的对应课程:"))
            if course_in  in self.data:
                self.pop_course(course_in)
            else:
                print("无此课程")
        else:
            print("请输入正确指令")
    def sort_number(self):
        for i in range(self.size // 4):
            exchange = False
            for j in range(self.size - 4,0, -4):
                if int(self.data[j]) > int(self.data[j - 4]):
                    number, name, course, grade = self.data[j], self.data[j - 1], self.data[j - 2], self.data[j - 3]
                    self.data[j], self.data[j - 1], self.data[j - 2], self.data[j - 3] = self.data[j - 4], self.data[j - 5], self.data[j - 6], self.data[j - 7]
                    self.data[j - 4], self.data[j - 5], self.data[j - 6], self.data[j - 7] = number, name, course, grade
                    exchange = True
            if exchange==False:return
    def sort_grade(self):
        for i in range(self.size // 4):
            exchange = False
            for j in range(self.size - 4,4,-4):
                if int(self.data[j]) < int(self.data[j - 4]):
                    number, name, course, grade = self.data[j], self.data[j - 1], self.data[j - 2], self.data[j - 3]
                    self.data[j], self.data[j -1], self.data[j - 2], self.data[j - 3] = self.data[j - 4], self.data[
                        j - 5], self.data[j - 6], self.data[j - 7]
                    self.data[j - 4], self.data[j - 5], self.data[j - 6], self.data[j - 7] = number, name, course, grade
            if exchange == False: return
        print(self.data)
    def menu_stu(self):
        try:
            while True:
                print('1.显示学生记录\n2.添加一个学生信息\n3.输入学号或课程删除学生记录\n4.按学号递减排序输出学生记录\n5.递减查看学生成绩\n6.退出系统\n')
                select = int(input("输入对应功能数字:"))
                if select == 1:
                    self.all_stu()
                if select == 2:
                    self.add_stu()
                if select == 3:
                    self.delete_stu()
                if select == 4:
                    self.sort_number()
                if select == 5:
                    self.sort_grade()
                if select == 6:
                    print("欢迎下一次使用")
                    break
        except ValueError:
            print("输入有效内容,please!")
use = SqList()
use.menu_stu()
相关文章
|
4天前
|
Java API 开发工具
如何将python应用编译到android运行
【6月更文挑战第27天】本文介绍在Ubuntu 20上搭建Android开发环境,包括安装JRE/JDK,设置环境变量,添加i386架构,安装依赖和编译工具。并通过`p4a`命令行工具进行apk构建和清理。
22 6
如何将python应用编译到android运行
|
17天前
|
前端开发 JavaScript 数据安全/隐私保护
计算机Python项目|django学生成绩管理系统
计算机Python项目|django学生成绩管理系统
|
11天前
|
存储 算法 数据库
Python 抽奖程序限定次数详解
构建Python抽奖程序,限定用户抽奖次数,使用字典存储用户ID及抽奖次数。`LotterySystem`类包含判断、记录和抽奖方法。当用户达到最大抽奖次数(默认3次)时,禁止继续。示例展示如何创建系统,模拟用户抽奖,并扩展功能如动态调整次数和多用户、多奖品池。性能优化可通过数据持久化和并发控制实现。
13 0
|
18天前
|
Python Windows
Python基础教程(第3版)中文版 第18章 程序打包 (笔记)
Python基础教程(第3版)中文版 第18章 程序打包 (笔记)
|
16天前
|
Python 索引
【Python字符串攻略】:玩转文字,编织程序的叙事艺术
【Python字符串攻略】:玩转文字,编织程序的叙事艺术
|
16天前
|
Python 存储 数据处理
【Python数据类型的奥秘】:构建程序基石,驾驭信息之海
【Python数据类型的奥秘】:构建程序基石,驾驭信息之海
|
16天前
|
JavaScript 前端开发 Linux
pipx — 在隔离环境中安装和运行 Python 应用程序
pipx — 在隔离环境中安装和运行 Python 应用程序
|
17天前
|
存储 区块链 Python
怎么把Python脚本打包成可执行程序?
【6月更文挑战第3天】最近根据用户提的需求用python做了一个小工具,但是在给客户使用的时候不能直接发送python文件,毕竟让客户去安装python环境,那就离了大谱了。所以这时候就需要把多个py文件带着运行环境打包成EXE可执行文件。
15 1
|
17天前
|
搜索推荐 区块链 开发者
【python程序打包教程】PyInstaller一键打包Python程序为独立可执行exe文件
【python程序打包教程】PyInstaller一键打包Python程序为独立可执行exe文件
|
1天前
|
分布式计算 并行计算 安全
在Python Web开发中,Python的全局解释器锁(Global Interpreter Lock,简称GIL)是一个核心概念,它直接影响了Python程序在多线程环境下的执行效率和性能表现
【6月更文挑战第30天】Python的GIL是CPython中的全局锁,限制了多线程并行执行,尤其是在多核CPU上。GIL确保同一时间仅有一个线程执行Python字节码,导致CPU密集型任务时多线程无法充分利用多核,反而可能因上下文切换降低性能。然而,I/O密集型任务仍能受益于线程交替执行。为利用多核,开发者常选择多进程、异步IO或使用不受GIL限制的Python实现。在Web开发中,理解GIL对于优化并发性能至关重要。
12 0