300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下

使用链表来实现

class Node(object):

def __init__(self, data, pointer):

self.data = data

self.next = pointer

# 创建单链表

class SingleLinkedList(object):

def __init__(self):

self.head = Node(None, None)

self.point = self.head

def append(self, data):

# 末尾追加节点

new_node = Node(data, None)

self.point.next = new_node

self.point = new_node

def insert(self, data, find):

# 插入数据(前向插入数据)

if not self.head.next:

print('链表为空')

return None

new_node = Node(data, None)

self.point = self.head

while self.point.next.data != find:

self.point = self.point.next

if self.point.next is None:

print('没有找到该元素')

return None

new_node.next = self.point.next

self.point.next = new_node

def delete(self, find):

# 删除节点

# 空链表

if not self.head.next:

print('链表为空')

return None

self.point = self.head

while self.point.next.data != find:

self.point = self.point.next

pointer = self.point.next

self.point.next = self.point.next.next

del pointer

def insert_after_head(self, data):

node = Node(data, None)

# bug 产生没写 if 返回

if not self.head.next:

self.head.next = node

return None

node.next = self.head.next

self.head.next = node

def reverse(self):

local_list = SingleLinkedList()

self.point = self.head

count = 0

while self.point.next:

count += 1

self.point = self.point.next

data = self.point.data

local_list.insert_after_head(data)

return local_list

def get_size(self):

count = 0

self.point = self.head

while self.point.next:

self.point = self.point.next

count += 1

return count

def delete_by_tail(self, num):

size = self.get_size()

assert (num <= size)

assert (num > 0)

pos = size - num

count = 0

self.point = self.head

while count < size:

count += 1

self.point = self.point.next

if count == pos:

pointer = self.point.next

self.point.next = self.point.next.next

del pointer

# 求中间节点 只允许遍历一次

def quick_middle(self):

slow_point = self.head

fast_point = self.head

while fast_point.next.next:

slow_point = slow_point.next

fast_point = fast_point.next.next

if not fast_point.next:

break

if fast_point.next:

slow_point = slow_point.next

return slow_point.data

def check_circle(self):

pass

def sort(self):

# get_size()改变了 self.point 的指向

length = self.get_size()

i, j = 0, 0

flag = 1

while i < length:

self.point = self.head.next

while j < length - i - 1:

if self.point.data > self.point.next.data:

temp = self.point.data

self.point.data = self.point.next.data

self.point.next.data = temp

self.point = self.point.next

j += 1

flag = 0

if flag:

break

i += 1

j = 0

def print(self):

# 打印结点

self.point = self.head

while self.point.next:

self.point = self.point.next

print('{} ->'.format(self.point.data), end=' ')

print('')

class StudentControlSystem(SingleLinkedList):

# 打印菜单

def print_menu(self):

print('*' * 30)

print('-' * 13 + '菜单' + '-' * 13)

print('1.增加学生信息')

print('2.删除学生信息')

print('3.修改学生信息')

print('4.查找学生信息')

print('5.显示所有信息')

print('6.排序')

print('0.退出程序')

print('*' * 30)

# 用户输入

def user_input(self, item):

try:

item = int(item)

except:

pass

# 增加信息

if item == 1:

self.add_info()

# 删除信息

elif item == 2:

find = input('请输入删除的学号:')

self.del_info(find=find)

# 修改信息

elif item == 3:

self.modify_info()

# 查找信息

elif item == 4:

self.search_info()

# 显示信息

elif item == 5:

self.display_info()

# 信息排序

elif item == 6:

self.rank_info()

# 退出程序 保存数据

elif item == 0:

with open('database.txt', 'w') as f:

self.point = self.head

while self.point.next:

self.point = self.point.next

f.writelines('{}\n'.format(self.point.data))

exit()

else:

print('请输入正确的数字')

# id 保证互异性

def unique_id(self, std_id):

self.point = self.head

while self.point.next:

self.point = self.point.next

if self.point.data['id'] == std_id:

return False

return True

# 增加信息

def add_info(self):

# id 不能重复

# 成绩不能超出范围

name = input('姓名:')

std_id = input('学生id:')

while not self.unique_id(std_id=std_id):

print('id重复')

std_id = input('学生id:')

grade = input('学生成绩:')

if eval(grade) < 0 or eval(grade) > 100:

print('超出范围')

grade = input('学生成绩:')

print(name, std_id, grade)

print('请确认无误后保存')

choice = input('y/n')

items = ['y', 'yes', 'Y', 'Yes']

if choice in items:

print(choice)

data = {'id': std_id, 'name': name, 'grade': grade}

self.append(data)

# 删除信息

def del_info(self, find):

print('请确认无误后保存')

choice = input('y/n')

items = ['y', 'yes', 'Y', 'Yes']

if choice in items:

if not self.head.next:

print('链表为空')

return None

self.point = self.head

while self.point.next.data['id'] != find:

self.point = self.point.next

pointer = self.point.next

self.point.next = self.point.next.next

del pointer

# 序列逆序

def reverse(self):

local_list = StudentControlSystem()

self.point = self.head

count = 0

while self.point.next:

count += 1

self.point = self.point.next

data = self.point.data

local_list.insert_after_head(data)

return local_list

# 序列排序

def sort(self, item):

length = self.get_size()

i, j = 0, 0

flag = 1

while i < length:

self.point = self.head.next

while j < length - i - 1:

if int(self.point.data[item]) > int(self.point.next.data[item]):

# self.point.data, self.point.next.data =

# self.point.next.data, self.point.data

temp = self.point.data

self.point.data = self.point.next.data

self.point.next.data = temp

self.point = self.point.next

j += 1

flag = 0

if flag:

break

i += 1

j = 0

# 修改信息

def modify_info(self):

find = input('输入需要修改的学生的id:')

if not self.head.next:

print('链表为空')

return None

self.point = self.head

while str(self.point.next.data['id']) != find:

self.point = self.point.next

if self.point.next is None:

print('没有找到该元素')

return None

name = input('姓名:')

grade = input('学生成绩:')

self.point.next.data['name'] = name

self.point.next.data['grade'] = grade

# 搜索信息

def search_info(self):

find = input('输入需要查找的学生的id:')

if not self.head.next:

print('链表为空')

return None

self.point = self.head

while str(self.point.next.data['id']) != find:

self.point = self.point.next

if self.point.next is None:

print('没有找到该元素')

return None

data = self.point.next.data

print('ID 姓名 成绩')

print('{} {} {}'.format(data['id'], data['name'], data['grade']))

# 信息排序

def rank_info(self):

choice = input('1.成绩排序 2.学号排序:')

order = input('1.升序 2.降序:')

if choice == '1':

item = 'grade'

elif choice == '2':

item = 'id'

else:

return None

self.sort(item=item)

if order == '2':

temp = self.reverse()

temp.display_info()

return None

self.display_info()

# 显示信息

def display_info(self):

self.point = self.head

print('ID 姓名 成绩')

while self.point.next:

self.point = self.point.next

data = self.point.data

print('{} {} {}'.format(data['id'], data['name'], data['grade']))

print('')

def main():

SCS = StudentControlSystem()

try:

with open('database.txt', 'r') as f:

for data in f.readlines():

SCS.append(eval(data))

except:

with open('database.txt', 'w') as f:

pass

while True:

SCS.print_menu()

item = input('请输入你的选择:')

SCS.user_input(item)

if __name__ == "__main__":

main()

运行后

然后就可以插入与查询啦

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持龙方网络。

学生成绩管理系统设计报告python_python实现简易版学生成绩管理系统相关推荐

  1. c语言程序结果好多0,C语言程序成绩管理系统设计报告.docx

    C语言程序成绩管理系统设计报告 郑州轻工业学院实 训 报 告实训名称: 成 绩 管 理 系 统姓 名: 鲁雪颖 院 (系): 软 件 学 院 专业班级: 软件卓越12-01 学 号: 54121344 ...

  2. c语言宿舍管理设计报告,C语言课程设计—学生宿舍管理系统设计报告.doc

    word格式精心整理版 范文范例 学习指导 课 程 设 计 报 告 课程名称 C语言程序设计 课题名称 学生宿舍管理系统 专 业 班 级 学 号 姓 名 指导教师 2012年6月19日 湖南工程学院 ...

  3. 班级成绩管理系统设计c语言,C语言程序设计-班级成绩管理系统.doc

    PAGE 课 程 设 计 报 告 课程名称 C语言程序设计 课题名称 班级成绩管理系统 专 业 机械设计 班 级 1083班 学 号 201013090303 姓 名 陈 玲 珑 指导教师 王 颖 2 ...

  4. java学生成绩管理系统设计报告

    前言 ⽂章有点⻓,请耐⼼看完,绝对有收获!不想听我BB直接进⼊⾯试分享: 准备过程 蚂蚁⾦服⾯试分享 拼多多⾯试分享 字节跳动⾯试分享 最后总结个人所得(供大家参考学习) 当时我⾃⼰也准备出去看看机会 ...

  5. python经济与管理学院学生社团管理系统设计与实现_实验10-大学生社团管理系统的设计和实现...

    系别 专业 班级 姓 名 课程 名称 课程 类型 学时数 实验 名称 大学生社团管理系统的设计与实现 实验目的: 1. 进一步熟悉和掌握前面九个实验当中的各种操作. 2. 能够在实际的事例中灵活应用学 ...

  6. Java毕业设计_高校学生考勤管理系统设计与实现

    高校学生考勤管理系统设计和实现 高校学生考勤管理系统设计和实现mysql数据库创建语句 高校学生考勤管理系统设计和实现oracle数据库创建语句 高校学生考勤管理系统设计和实现sqlserver数据库 ...

  7. JSP学生学籍管理系统设计与实现(源代码+论文+开题报告+外文翻译+答辩PPT)

    cc学院 毕业设计(论文)开题报告 题 目: 基于JSP的学生学籍管理系统 学 科 部: 信工学科部 专 业: 计算机科学与技术 班 级: 学 号: 姓 名: 指导教师: 填表日期: 20 年 月 日 ...

  8. php简单学生管理系统设计与实现,基于PHP的学生成绩管理系统的设计与实现.doc...

    基于PHP的学生成绩管理系统的设计与实现.doc 基于PHP的学生成绩管理系统的设计与实现 摘 要: 我国高等职业教育迎来了蓬勃发展的新局面,各院校招生规模不断扩大,学校的教学管理负担越来越重.为了提 ...

  9. c语言学生成绩设计思路,C语言学生成绩管理系统设计.docx

    沈阳航空航天大学 课程设计报 大作业名称:C语言课程设计 大作业题目:学生成绩管理系统设计 院(系):计算机学院 专业:计算机科学与技术 班 级: 学 号: 姓 名: 指导教师: 完成日期:2016年 ...

最新文章

  1. OpenCV读写YAML/XML文件
  2. “_snprintf”: 不是“std”的成员
  3. Java反斜线(\)路径与转义字符的小坑
  4. Lesson 16.2 图像的基本操作
  5. 走进数据中心,揭秘你所不知道的能耗节省大法
  6. BZOJ 1101: [POI2007]Zap( 莫比乌斯反演 )
  7. 对于以太坊的Solidity语言介绍
  8. 27、简述redis的有哪几种持久化策略及比较?
  9. 终于记住回车和换行cr lf的来由和含义了 -参考: http://www.cnblogs.com/me115/archive/2011/04/27/2030762.html...
  10. HashMap + 软引用进行缓存
  11. SQL SERCER 控制 SERVERICE BROKER 服务
  12. ContentPresenter元素
  13. uCore lab1 操作系统实验
  14. Stata-交乘项专题: 主效应项可以忽略吗?
  15. c语言宏定义在预处理阶段,预处理和宏定义
  16. 千牛卖家工作平台使用教程
  17. pytest和allure生成测试报告
  18. postgresql:字符串累加拼接(聚合分组拼接)
  19. 好友联盟DOS杀毒盘
  20. css3 实现 太极图

热门文章

  1. python为什么没有点击就触发_Ai中没有触发的触发器
  2. json可视化编辑器_推荐一个基于 Vue 的前端界面可视化设计器项目
  3. 有线同步--ASP007
  4. 平板电脑有必要买吗_华为平板M6值得买吗
  5. [codevs 1514] 书架
  6. html实现全选 反选,jquery实现全选、不选、反选的两种方法
  7. 网盘php资料,怎么搜索百度网盘里的资料(php版)
  8. java swing总结,Java 实用经验总结 Swing 篇
  9. 华为如何拍火烧云_华为手机拍照功能介绍-设置通用功能
  10. oracle创建表空间及用户,Oracle创建表空间和用户