python管理系统[完整版](可作大作业参考)

升级版python管理系统2.0 完善了整体结构 美化了系统界面

规则更加细致 新增成绩管理

此专栏会持续更新 有任何大作业或者项目需要参考 可以评论区告诉我

我会持续做出各种项目给大学生作为参考 希望能给你们帮助

个人主页→数据挖掘博主ZTLJQ的主页

 

个人推荐python学习系列:

☄️爬虫JS逆向系列专栏 - 爬虫逆向教学

☄️python系列专栏 - 从零开始学python


目录

定义学生类

定义主类

添加用户的板块

搜索字典索引基本方法

删除方法

修改方法

显示所有信息的方法

退出系统

总成绩方法

平均成绩方法

最高成绩方法

最低成绩方法

主方法

总体代码


 

定义学生类

class Student:
    def __init__(self, name, phone, wx, math, chinese, english):
        self.name = name
        self.phone = phone
        self.wx = wx
        self.math = math
        self.chinese = chinese
        self.english = english

 

定义主类

class Student_main:
    def __init__(self):
        self.user_list = [
            {'name': '张三', 'phone': '19912345678', 'wx': '123456789', 'math': '95', 'chinese': '78', 'english': '82'},
            {'name': '李四', 'phone': '19922345678', 'wx': '223456789', 'math': '89', 'chinese': '62', 'english': '51'},
            {'name': '王五', 'phone': '19932345678', 'wx': '323456789', 'math': '90', 'chinese': '87', 'english': '76'},
            {'name': '赵六', 'phone': '19942345678', 'wx': '423456789', 'math': '66', 'chinese': '98', 'english': '99'}
        ]

 

添加用户的板块

    def add_user(self):
        """
        添加用户的板块
        姓名规则:姓名不能重复
        手机号规则:手机号必须是11位且不能重复
        成绩规则:必须在0-99之间
        :return:
        """
        name = input('请输入姓名:')

        # 判断姓名是不是重复
        for i in self.user_list:
            if i['name'] == name:
                print('此姓名已重复')
                return

        phone = input('请输入手机号(11位手机号):')

        # 判断手机号符不符合规则
        for a in self.user_list:
            if a['phone'] == phone:
                print('此手机号已重复,请检查是否填写错误并重新进入进行填写')
                return
            elif len(phone) != 11:
                print('此手机号不是11位不符合规则,请检查是否输入正确,并重新输入')
                return

        wx = input('请输入微信号:')

        # 判断成绩符不符合规则
        math = input('请输入数学成绩(0-99范围):')
        if int(math) < 0 or int(math) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        chinese = input('请输入语文成绩(0-99范围):')
        if int(chinese) < 0 or int(chinese) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        english = input('请输入英语成绩(0-99范围):')
        if int(english) < 0 or int(english) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        user = {'name': name, 'phone': phone, 'wx': wx, 'math': math, 'chinese': chinese, 'english': english}
        self.user_list.append(user)
        print('添加成功!!')
        print(self.user_list)

 

搜索字典索引基本方法

    def check_index(self, i):
        """
        搜索字典索引基本方法
        原理规则:就是将字典进行排序 第一个字典序号就是从0 开始 也就是 姓名为张三 是序号0 姓名为李四是序号 1 以此类推
        方便后续进行删除修改,直接输入序号进行筛选即可
        :param i:
        :return:
        """
        if not i.isdigit():
            print('您输入的数字不合法')
            return False
        index = int(i)
        if index < 0 or index > len(self.user_list) - 1:
            print('您输入的学生序号不在有效范围内')
            return False

        return True

 

删除方法

    def del_user(self):
        """
        删除方法:用到之前check_index基本索引搜索方法
        给字典进行索引排列 然后根据索引进行删除
        :return:
        """
        index = input('请输入要删除的学生序号(序号从0开始):')

        if self.check_index(index):
            index = int(index)
        else:
            return

        ans = input('您是否真的要删除?(YES or NO):')
        if ans.upper() == 'YES':
            self.user_list.pop(index)
        print('删除成功!!')
        print(self.user_list)

 

修改方法

    def change_user(self):
        """
        修改方法:用到之前check_index基本索引搜索方法
        根据索引进行查找,然后进行修改
        :return:
        """
        index = input('请输入要修改的学生序号(序号从0开始):')

        if self.check_index(index):
            index = int(index)
        else:
            return

        user = self.user_list[index]
        print('您要修改的信息是:\n名字:{name} ,手机号:{phone} ,微信:{wx}, 数学成绩:{math}, 语文成绩:{chinese}, 英语成绩:{english}'.format(**user))

        new_name = input('请输入新的名字:')
        for i in self.user_list:
            if i['name'] == new_name:
                print('修改失败,新名字已存在')
                return

        new_phone = input('请输入新的手机号(11位手机号):')
        for a2 in self.user_list:
            if a2['phone'] == new_phone:
                print('此手机号已重复,请检查是否填写错误并重新进入进行填写')
                return
            elif len(new_phone) != 11:
                print('此手机号不是11位不符合规则,请检查是否输入正确,并重新输入')
                return

        new_wx = input('请输入新的微信号:')

        new_math = input('请输入数学成绩(0-99范围):')
        if int(new_math) < 0 or int(new_math) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        new_chinese = input('请输入语文成绩(0-99范围):')
        if int(new_chinese) < 0 or int(new_chinese) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        new_english = input('请输入英语成绩(0-99范围):')
        if int(new_english) < 0 or int(new_english) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        user['name'] = new_name
        user['phone'] = new_phone
        user['wx'] = new_wx
        user['math'] = new_math
        user['chinese'] = new_chinese
        user['english'] = new_english
        print('修改成功!!')
        print(self.user_list)

 

显示所有信息的方法

    def showall_user(self):
        """
        显示所有信息的方法其实很简单;序号就使用enumerate方法进行排序给序号 其他就是遍历输出
        :return:
        """
        print('所有的学生信息是:')
        print('序号     姓名       手机号           微信号       数学成绩     语文成绩      英语成绩')
        for i, user in enumerate(self.user_list):
            print(i, '\t' + '\t' + user['name'].ljust(5), '\t' + user['phone'], '\t' + user['wx'].ljust(10),
                  '\t' + '\t' + user['math'].ljust(5), '\t' + '\t' + user['chinese'].ljust(5),
                  '\t' + '\t' + user['english'].ljust(5))

 

退出系统

    def exit_sys(self):
        """
        退出系统:就是使用到内置函数exit()结束整个代码的运行
        :return:
        """
        ans = input('请确认您是否要退出--(YES or NO):')
        if ans.upper() == 'YES':
            print('您已成功退出,欢迎下次继续使用!!!')
            exit()
        elif ans.upper() == 'NO':
            print('返回主界面!!')
        else:
            print('您的输入有误,请输入yes或者no(大小写都可以)')

 

总成绩方法

    def all_score(self):
        """
        原理简单
        把所有的成绩进行相加,写一个for循环输出即可
        :return:
        """
        print('本学期每位同学的总成绩如下:')
        for i in self.user_list:
            allscore = int(i['math'])+int(i['chinese'])+int(i['english'])
            print('姓名:{}'.format(i['name']),'总成绩:{}'.format(allscore))

 

平均成绩方法

    def score_avg(self):
        """
        原理很简单
        把全部的成绩加起来,除以长度就可以了,最后结果保留2位小数
        :return:
        """
        print('本学期每位同学的平均成绩如下:')
        for i in self.user_list:
            allscore = int(i['math']) + int(i['chinese']) + int(i['english'])
            score_avg = allscore / 3
            print('姓名:{}'.format(i['name']),'平均成绩:%.2f' % score_avg)

 

最高成绩方法

    def score_max(self):
        """
        原理很简单
        把每一科的科目成绩放入到列表当中,使用max函数进行筛选输出即可
        :return:
        """
        math_list = []
        chinese_list = []
        english_list = []
        for i in self.user_list:
            math_list.append(i['math'])
            chinese_list.append(i['chinese'])
            english_list.append(i['english'])

        math_max = max(math_list)
        chinese_max = max(chinese_list)
        english_max = max(english_list)

        print('下面是各个科目的最高分数:')
        print('数学最高分是:{},语文最高分是:{},英语最高分是:{}'.format(math_max,chinese_max,english_max))

 

最低成绩方法

    def score_min(self):
        """
        原理很简单
        把每一科的科目成绩放入到列表当中,使用min函数进行筛选输出即可
        :return:
        """
        math_list = []
        chinese_list = []
        english_list = []
        for i in self.user_list:
            math_list.append(i['math'])
            chinese_list.append(i['chinese'])
            english_list.append(i['english'])

        math_min = min(math_list)
        chinese_min = min(chinese_list)
        english_min = min(english_list)

        print('下面是各个科目的最高分数:')
        print('数学最高分是:{},语文最高分是:{},英语最高分是:{}'.format(math_min, chinese_min, english_min))

 

主方法

    def start(self):
        """
        启动函数:使用while实现无限循环 然后使用条件判断来执行每一个具体函数
        :return:
        """
        while True:
            print("""➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
  学生管理系统  
️
       1.添加学生信息               5.查询学生的平均分
       2.删除学生信息               6.查询各个科目最高分
       3.修改学生信息               7.查询各个科目最低分
       4.总体成绩信息               8.显示所有学生信息
       END.退出系统                         
                 
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
            """)

            operator = input('请输入要进行的操作(输入开头的数字或字母):')

            # 添加名片内容
            if operator == '1':
                self.add_user()
            elif operator == '2':
                self.del_user()
            elif operator == '3':
                self.change_user()
            elif operator == '4':
                self.all_score()
            elif operator == '5':
                self.score_avg()
            elif operator == '6':
                self.score_max()
            elif operator == '7':
                self.score_min()
            elif operator == '8':
                self.showall_user()
            elif operator == 'END':
                self.exit_sys()
            else:
                print('输入有误,请重新输入...')

 

总体代码


# 定义学生类
class Student:
    def __init__(self, name, phone, wx, math, chinese, english):
        self.name = name
        self.phone = phone
        self.wx = wx
        self.math = math
        self.chinese = chinese
        self.english = english


class Student_main:
    def __init__(self):
        self.user_list = [
            {'name': '张三', 'phone': '19912345678', 'wx': '123456789', 'math': '95', 'chinese': '78', 'english': '82'},
            {'name': '李四', 'phone': '19922345678', 'wx': '223456789', 'math': '89', 'chinese': '62', 'english': '51'},
            {'name': '王五', 'phone': '19932345678', 'wx': '323456789', 'math': '90', 'chinese': '87', 'english': '76'},
            {'name': '赵六', 'phone': '19942345678', 'wx': '423456789', 'math': '66', 'chinese': '98', 'english': '99'}
        ]

    def add_user(self):
        """
        添加用户的板块
        姓名规则:姓名不能重复
        手机号规则:手机号必须是11位且不能重复
        成绩规则:必须在0-99之间
        :return:
        """
        name = input('请输入姓名:')

        # 判断姓名是不是重复
        for i in self.user_list:
            if i['name'] == name:
                print('此姓名已重复')
                return

        phone = input('请输入手机号(11位手机号):')

        # 判断手机号符不符合规则
        for a in self.user_list:
            if a['phone'] == phone:
                print('此手机号已重复,请检查是否填写错误并重新进入进行填写')
                return
            elif len(phone) != 11:
                print('此手机号不是11位不符合规则,请检查是否输入正确,并重新输入')
                return

        wx = input('请输入微信号:')

        # 判断成绩符不符合规则
        math = input('请输入数学成绩(0-99范围):')
        if int(math) < 0 or int(math) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        chinese = input('请输入语文成绩(0-99范围):')
        if int(chinese) < 0 or int(chinese) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        english = input('请输入英语成绩(0-99范围):')
        if int(english) < 0 or int(english) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        user = {'name': name, 'phone': phone, 'wx': wx, 'math': math, 'chinese': chinese, 'english': english}
        self.user_list.append(user)
        print('添加成功!!')
        print(self.user_list)

    def check_index(self, i):
        """
        搜索字典索引基本方法
        原理规则:就是将字典进行排序 第一个字典序号就是从0 开始 也就是 姓名为张三 是序号0 姓名为李四是序号 1 以此类推
        方便后续进行删除修改,直接输入序号进行筛选即可
        :param i:
        :return:
        """
        if not i.isdigit():
            print('您输入的数字不合法')
            return False
        index = int(i)
        if index < 0 or index > len(self.user_list) - 1:
            print('您输入的学生序号不在有效范围内')
            return False

        return True

    def del_user(self):
        """
        删除方法:用到之前check_index基本索引搜索方法
        给字典进行索引排列 然后根据索引进行删除
        :return:
        """
        index = input('请输入要删除的学生序号(序号从0开始):')

        if self.check_index(index):
            index = int(index)
        else:
            return

        ans = input('您是否真的要删除?(YES or NO):')
        if ans.upper() == 'YES':
            self.user_list.pop(index)
        print('删除成功!!')
        print(self.user_list)

    def change_user(self):
        """
        修改方法:用到之前check_index基本索引搜索方法
        根据索引进行查找,然后进行修改
        :return:
        """
        index = input('请输入要修改的学生序号(序号从0开始):')

        if self.check_index(index):
            index = int(index)
        else:
            return

        user = self.user_list[index]
        print('您要修改的信息是:\n名字:{name} ,手机号:{phone} ,微信:{wx}, 数学成绩:{math}, 语文成绩:{chinese}, 英语成绩:{english}'.format(**user))

        new_name = input('请输入新的名字:')
        for i in self.user_list:
            if i['name'] == new_name:
                print('修改失败,新名字已存在')
                return

        new_phone = input('请输入新的手机号(11位手机号):')
        for a2 in self.user_list:
            if a2['phone'] == new_phone:
                print('此手机号已重复,请检查是否填写错误并重新进入进行填写')
                return
            elif len(new_phone) != 11:
                print('此手机号不是11位不符合规则,请检查是否输入正确,并重新输入')
                return

        new_wx = input('请输入新的微信号:')

        new_math = input('请输入数学成绩(0-99范围):')
        if int(new_math) < 0 or int(new_math) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        new_chinese = input('请输入语文成绩(0-99范围):')
        if int(new_chinese) < 0 or int(new_chinese) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        new_english = input('请输入英语成绩(0-99范围):')
        if int(new_english) < 0 or int(new_english) > 99:
            print('您输入的成绩不在范围0-99之间,请重新输入!')
            return

        user['name'] = new_name
        user['phone'] = new_phone
        user['wx'] = new_wx
        user['math'] = new_math
        user['chinese'] = new_chinese
        user['english'] = new_english
        print('修改成功!!')
        print(self.user_list)

    def showall_user(self):
        """
        显示所有信息的方法其实很简单;序号就使用enumerate方法进行排序给序号 其他就是遍历输出
        :return:
        """
        print('所有的学生信息是:')
        print('序号     姓名       手机号           微信号       数学成绩     语文成绩      英语成绩')
        for i, user in enumerate(self.user_list):
            print(i, '\t' + '\t' + user['name'].ljust(5), '\t' + user['phone'], '\t' + user['wx'].ljust(10),
                  '\t' + '\t' + user['math'].ljust(5), '\t' + '\t' + user['chinese'].ljust(5),
                  '\t' + '\t' + user['english'].ljust(5))

    def exit_sys(self):
        """
        退出系统:就是使用到内置函数exit()结束整个代码的运行
        :return:
        """
        ans = input('请确认您是否要退出--(YES or NO):')
        if ans.upper() == 'YES':
            print('您已成功退出,欢迎下次继续使用!!!')
            exit()
        elif ans.upper() == 'NO':
            print('返回主界面!!')
        else:
            print('您的输入有误,请输入yes或者no(大小写都可以)')

    # 以下是成绩系统函数
    def all_score(self):
        """
        原理简单
        把所有的成绩进行相加,写一个for循环输出即可
        :return:
        """
        print('本学期每位同学的总成绩如下:')
        for i in self.user_list:
            allscore = int(i['math'])+int(i['chinese'])+int(i['english'])
            print('姓名:{}'.format(i['name']),'总成绩:{}'.format(allscore))

    def score_avg(self):
        """
        原理很简单
        把全部的成绩加起来,除以长度就可以了,最后结果保留2位小数
        :return:
        """
        print('本学期每位同学的平均成绩如下:')
        for i in self.user_list:
            allscore = int(i['math']) + int(i['chinese']) + int(i['english'])
            score_avg = allscore / 3
            print('姓名:{}'.format(i['name']),'平均成绩:%.2f' % score_avg)

    def score_max(self):
        """
        原理很简单
        把每一科的科目成绩放入到列表当中,使用max函数进行筛选输出即可
        :return:
        """
        math_list = []
        chinese_list = []
        english_list = []
        for i in self.user_list:
            math_list.append(i['math'])
            chinese_list.append(i['chinese'])
            english_list.append(i['english'])

        math_max = max(math_list)
        chinese_max = max(chinese_list)
        english_max = max(english_list)

        print('下面是各个科目的最高分数:')
        print('数学最高分是:{},语文最高分是:{},英语最高分是:{}'.format(math_max,chinese_max,english_max))

    def score_min(self):
        """
        原理很简单
        把每一科的科目成绩放入到列表当中,使用min函数进行筛选输出即可
        :return:
        """
        math_list = []
        chinese_list = []
        english_list = []
        for i in self.user_list:
            math_list.append(i['math'])
            chinese_list.append(i['chinese'])
            english_list.append(i['english'])

        math_min = min(math_list)
        chinese_min = min(chinese_list)
        english_min = min(english_list)

        print('下面是各个科目的最高分数:')
        print('数学最高分是:{},语文最高分是:{},英语最高分是:{}'.format(math_min, chinese_min, english_min))

    def start(self):
        """
        启动函数:使用while实现无限循环 然后使用条件判断来执行每一个具体函数
        :return:
        """
        while True:
            print("""➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
  学生管理系统  
️
       1.添加学生信息               5.查询学生的平均分
       2.删除学生信息               6.查询各个科目最高分
       3.修改学生信息               7.查询各个科目最低分
       4.总体成绩信息               8.显示所有学生信息
       END.退出系统                         
                 
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
            """)

            operator = input('请输入要进行的操作(输入开头的数字或字母):')

            # 添加名片内容
            if operator == '1':
                self.add_user()
            elif operator == '2':
                self.del_user()
            elif operator == '3':
                self.change_user()
            elif operator == '4':
                self.all_score()
            elif operator == '5':
                self.score_avg()
            elif operator == '6':
                self.score_max()
            elif operator == '7':
                self.score_min()
            elif operator == '8':
                self.showall_user()
            elif operator == 'END':
                self.exit_sys()
            else:
                print('输入有误,请重新输入...')


if __name__ == '__main__':
    St = Student_main()
    St.start()

 

 

你可能感兴趣的:(大学生作业-期末-毕设参考,python,开发语言,学习,算法,课程设计)