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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

运动会成绩管理系统python_Python 实现简易版成绩管理系统

發(fā)布時(shí)間:2023/12/19 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 运动会成绩管理系统python_Python 实现简易版成绩管理系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

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

實(shí)現(xiàn)效果

保存與讀取信息

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

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

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

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('{}'.format(self.point.data))exit()

增加學(xué)生信息

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

其一,我們要確保學(xué)生 id 不能重復(fù)。當(dāng)我們希望向鏈表中添加數(shù)據(jù)時(shí),首先要迭代整個(gè)鏈表,判斷要添加元素的 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

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

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

# 增加信息def add_info(self): # id 不能重復(fù) # 成績不能超出范圍 name = input('姓名:') std_id = input('學(xué)生id:') while not self.unique_id(std_id=std_id): print('id重復(fù)') std_id = input('學(xué)生id:') grade = input('學(xué)生成績:') if eval(grade) < 0 or eval(grade) > 100: print('超出范圍') grade = input('學(xué)生成績:') print(name, std_id, grade) print('請確認(rèn)無誤后保存') choice = input('y/n') items = ['y', 'yes', 'Y', 'Yes'] if choice in items: data = {'id': std_id, 'name': name, 'grade': grade} self.append(data)

刪除學(xué)生信息

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

def del_info(self, find): print('請確認(rèn)無誤后保存') 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

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

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

def modify_info(self): find = input('輸入需要修改的學(xué)生的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('學(xué)生成績:') self.point.next.data['name'] = name self.point.next.data['grade'] = grade

查找學(xué)生信息

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

def search_info(self): find = input('輸入需要查找的學(xué)生的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']))

顯示學(xué)生信息

該方法就是一邊迭代鏈表,一邊打印節(jié)點(diǎn)對應(yīng)的學(xué)生信息,和上節(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('')

排序

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

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

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

def rank_info(self): choice = input('1.成績排序 2.學(xué)號排序:') 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)介紹了學(xué)生成績管理系統(tǒng)的主要操作。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

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

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

主站蜘蛛池模板: 日韩欧美视频一区 | 欧美特级黄色 | 日韩二区三区 | 国产1区在线 | 邵氏电影《金莲外传2》免费观看 | 国产极品视频 | 免费在线观看亚洲 | 国产真实伦对白全集 | www.成人免费| 女生喷水视频 | 蜜臀麻豆 | 亚洲免费在线观看av | 成人一级影视 | 日韩一级二级三级 | 免费超碰在线 | 国产剧情在线视频 | 国产日产精品一区 | 免费久久久久久 | 亚洲尤物在线 | 丁香激情综合 | 87福利视频 | 国产免费无遮挡 | 人人玩人人弄 | 国产精品视频不卡 | 色婷婷影院 | 亚洲精品无码久久久久 | 青草视频在线 | 成年人av在线| 交视频在线播放 | 欧美综合国产 | 成人里番精品一区二区 | 午夜久久视频 | 内地毛片| 久久精品在线视频 | 在线视频观看免费 | 少妇高潮喷水在线观看 | 成年人免费网站 | 国产高清自拍一区 | 91精品国产精品 | 日韩亚洲欧美综合 | 亚洲视频六区 | 97成人超碰 | 久久亚洲综合色 | 国产精品999在线观看 | 青草视频在线观看视频 | 精品区一区二区 | 成人极品 | 日韩新片王网 | 中文字幕播放 | 成人高潮片免费视频 | 国产高清在线视频 | 国产精品一品二区三区的使用体验 | 国产高清在线 | 狠狠干网站 | 天天色宗合 | 免费一级特黄毛大片 | 亚洲久热 | 成人免费在线 | 中国老妇性视频 | 成人爱爱 | 天堂网站 | 日韩一二三四区 | 成人在线视频一区二区 | 97超碰中文字幕 | 啪啪影音 | 亚洲色图14p | 亚洲视频中文字幕 | 久久国产网站 | 欧美亚洲色综久久精品国产 | 午夜激情av| 波多野结衣一区二区三区在线观看 | 久久手机视频 | 18岁免费观看电视连续剧 | 国产精品视频a | 日韩成人一区二区 | 草莓视频成人在线 | 亚洲天堂网一区二区 | 日韩av一区二区三区在线观看 | 黄色片在线免费观看 | 香蕉黄色网 | 大学生一级片 | 欧美自拍视频 | 一级大黄毛片 | 成人在线观看一区二区 | 国产精品免费大片 | 快色网站| 国产精品日韩精品 | 中文字幕五区 | 国产第一页av | 成人永久免费 | 国产女厕一区二区三区在线视 | 欧美黑人啪啪 | 亚洲一卡二卡在线 | 中国美女洗澡免费看网站 | 婷婷久 | 一本一道精品欧美中文字幕 | 香蕉视频一级片 | 日本黄色免费观看 | 最新网址av|