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

歡迎訪問 生活随笔!

生活随笔

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

python

python简易版成绩管理系统_Python 实现简易版成绩管理系统

發(fā)布時間:2024/9/19 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python简易版成绩管理系统_Python 实现简易版成绩管理系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上一次,公眾號介紹了如何使用 Python 實現(xiàn)單鏈表,下面讓我們一探單鏈表的簡單應用:在命令行,實現(xiàn)簡易版成績管理系統(tǒng)。

這次的簡易版成績管理系統(tǒng),主要有六大功能:增加學生信息、刪除學生信息、修改學生信息、查找學生信息、顯示學生信息、按 ID 排序。

實現(xiàn)效果如下:

保存與讀取信息

首先判斷當前路徑下,是否存在database.txt這個文件。如果不存在的話,就新建一個。如果存在的話,就按行讀取數(shù)據(jù)。其中,eval函數(shù)將讀取的字符床解析為字典。然后,將學生信息存儲在單鏈表中。

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

接著,如果用戶選擇退出程序的話,就遍歷學生信息,并且以字符串的形式按行存儲學生信息。

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()

增加學生信息

由于本次實現(xiàn)的成績管理系統(tǒng)比較簡易,我們只對學生 id 和 成績進行限制。

其一,我們要確保學生 id 不能重復。當我們希望向鏈表中添加數(shù)據(jù)時,首先要迭代整個鏈表,判斷要添加元素的 id 是否已經(jīng)在鏈表中存在。

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

其二,我們要確保學生成績在 0 ~ 100 分之間。當用戶完成輸入時,需要判斷是否要保存數(shù)據(jù),如果否,那么就不進行插入數(shù)據(jù)操作。為了降低用戶誤輸入造成的影響,我們設定四種用戶可能輸入的字符:[‘y’, ‘yes’, ‘Y’, ‘Yes’]。

最后,我們以字典的形式插入學生信息。

# 增加信息

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:

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

self.append(data)

刪除學生信息

刪除學生信息的方法,與上一節(jié)我們提到的單鏈表的刪除操作相類似。最大的不同之處,我們不再比較整個的 data 域。而是取出 data 關鍵字 id 所對應的值,將其與用戶輸入的 id 相比較。

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

修改學生數(shù)據(jù)

由于姓名之類的信息有可能會重復,而我們已經(jīng)確保學生 id 的唯一性。所以進行修改操作時,我們以學生 id 為搜索項。如果找到了該學生 id,我們就直接更改其對應的姓名與成績等信息。

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

查找學生信息

查找學生信息,與修改學生信息的區(qū)別在于:找到對應的學生 id 之后,就直接打印 id 所對應的學生信息。

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']))

顯示學生信息

該方法就是一邊迭代鏈表,一邊打印節(jié)點對應的學生信息,和上節(jié)的單鏈表的打印操作差不多。

# 顯示信息

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('')

排序

最后,我們要實現(xiàn)排序操作。

首先,要實現(xiàn)鏈表版的冒泡排序。冒泡排序(順序形式),從左向右,兩兩比較,如果左邊元素大于右邊,就交換兩個元素的位置。其中,每一輪排序,序列中最大的元素浮動到最右面。也就是說,每一輪排序,至少確保有一個元素在正確的位置。這樣接下來的循環(huán),就不需要考慮已經(jīng)排好序的元素了,每次內層循環(huán)次數(shù)都會減一。其中,如果有一輪循環(huán)之后,次序并沒有交換,這時我們就可以停止循環(huán),得到我們想要的有序鏈表了。

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

對于學生信息,我們可以通過成績與學號這兩個關鍵字進行排序。用戶除了可以選擇按成績還是按學號排序,還可以選擇順序還是逆序排序。如果用戶選擇逆序的話,只要通過 reverse 方法,我們就可以創(chuàng)建一個新的 SCS 對象,其中新對象的數(shù)據(jù)順序與原對象的數(shù)據(jù)順序完全相反。該方法,也是基于單鏈表 reverse 操作的改進。最后排好序,我們只需完整顯示數(shù)據(jù)即可。

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 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

以上,我們已經(jīng)介紹了學生成績管理系統(tǒng)的主要操作。如需源碼,請在微信公眾號:Python高效編程 回復學生即可。·

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的python简易版成绩管理系统_Python 实现简易版成绩管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 成年人视频免费在线观看 | 国产男女网站 | 精品少妇人妻AV无码专区在线 | 欧美女人一区二区 | 一区二区三区www | 人人看人人澡 | 四虎国产成人永久精品免费 | 国产网站免费 | 日本少妇bbwbbw精品 | 中文字幕乱码人妻无码久久 | 进去里在线观看 | 福利片第一页 | 97免费在线视频 | 久久亚洲精选 | 国产九区 | av资源在线免费观看 | 夜夜操免费视频 | 欧美大片视频在线观看 | 日韩爱爱免费视频 | 丰满放荡岳乱妇91ww | 国产精品suv一区二区88 | 爱爱的网站 | 日剧再来一次第十集 | 亚洲精品一线 | 人人澡人人干 | 久草精品视频在线观看 | 欧美午夜性春猛交 | 精品国产欧美一区二区三区成人 | 草草在线影院 | 小草av| 日韩手机在线视频 | 亚洲成人网在线 | 中文字幕乱码在线人视频 | 永久免费看片 | 久久综合狠狠 | 欧洲成人免费视频 | 中文字幕一区二区人妻在线不卡 | 露出调教羞耻91九色 | 精品人妻午夜一区二区三区四区 | 五月激情五月婷婷 | 蜜臀久久99精品久久久久久宅男 | 日韩一级一区 | av网站久久 | 九九九久久久精品 | 色乱码一区二区三区 | 精品人成 | 先锋影音中文字幕 | 精品欧美一区二区精品久久 | av不卡中文字幕 | 国产野外作爱视频播放 | 国模大尺度视频 | 亚洲色成人www永久在线观看 | 少妇高潮惨叫久久久久久 | 一级在线免费观看 | 97香蕉久久夜色精品国产 | 99热这里只有精品在线观看 | 国产无码精品在线播放 | av体验区 | 久久久久久中文字幕 | 噜啪啪| 一级黄色大片免费看 | av免费网站在线观看 | 色偷偷资源 | 毛片aaaaa| 视频在线观看视频 | 91福利一区 | 日日麻批免费视频播放 | 精品在线一区 | av资源在线 | 欧美日本在线看 | 九九热这里有精品 | 淫语视频 | 免费黄色a级片 | 日韩和欧美的一区二区 | 99成人国产精品视频 | av.www| 色偷偷伊人 | 色偷偷视频 | 性国产精品 | 中文av网站 | 永久av在线免费观看 | 国产老熟女伦老熟妇露脸 | 国产精品久久久久999 | 欧美成人乱码一区二区三区 | 天堂av官网 | 国产精品无码一区 | jizz日本女人 | 嫩草影院一区二区 | 人人亚洲| 老司机成人在线 | 亚洲性视频网站 | 日皮视频网站 | 亚洲国产精品久久人人爱 | 爱草视频 | 久久久在线 | 成年人黄色片网站 | 91久久综合 | 九一在线观看免费高清视频 | 国产一级一级国产 |