日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2025/3/13 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学生成绩管理系统设计报告python_python实现简易版学生成绩管理系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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实现简易版学生成绩管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。