python做一個系統代碼_python初學者,用python3實現基本的學生管理系統代碼實例...

這篇文章分享了管理系統,python學生管理系統的使用,這篇文章非常詳細地介紹了通過示例代碼實現的學生管理系統,該系統對每個人的研究或工作都有一定的參考學習價值。

這個是用python實現的基本的增刪改查的學生管理系統吧,其中主要是對輸入的數據進行合法性檢測的問題,這次又對函數進行了練習!掌握函數更加熟練了!二話不說先貼代碼,一切問題請看注釋,都很詳細,適合python3初學者!

"""

學生管理系統

主要特點:1.可以檢測學號是否重復/有誤(不為純數字)

2.可以檢測手機號是否合法(是否為純數字)

3.可以檢測性別是否為男或者女

4.能選擇性修個學生的某個屬性信息,比如只修改某個學生的手機號碼

5.能夠實現基本的增刪改查

6.優化了代碼

"""

name_list = [] # 存儲學生信息字典,學生信息用字典存,再用列表存儲字典

# 菜單

def display_menu():

print("-"*30)

print(" 學生管理系統 v8.8 ")

print("1.添加學生信息")

print("2.刪除學生信息")

print("3.修改學生信息")

print("4.查詢單個學生信息")

print("5.查詢所有學生信息")

print("6.退出系統")

print("-"*30)

# 選擇序號的獲得

def get_choice():

selected_key = input("請輸入選擇的序號:")

return selected_key

# 檢查性別是否合法

def check_sex(new_sex):

flag = True

while flag:

if new_sex == '男' or new_sex == '女':

flag = False

else:

new_sex = input("輸入性別有誤,請重新輸入(男/女):")

return new_sex

# 檢查電話號碼是否合法

def check_phone(new_phone):

flag = True

while flag:

if new_phone.isdigit():

flag = False

else:

new_phone = input("您輸入的電話號碼有誤,請重新輸入:")

return new_phone

# 檢查學號是否重復或者有誤

def check_id(new_id):

flag = True

while flag:

# 先檢查是不是純數字再去考慮是否重復的事情,如果不是純數字直接pass

if new_id.isdigit():

for i in range(len(name_list)):

if name_list[i]['id'] == new_id:

new_id = check_id(input("您輸入的學號重復,請重新輸入:"))

flag = False

else:

new_id = input("您輸入的學號有誤,請重新輸入:")

return new_id

# 添加學生信息

def add_name():

new_info = {}

new_id = check_id(input("請輸入學號:"))

new_info['id'] = new_id

new_name = input("請輸入姓名:")

new_info['name'] = new_name

new_sex = check_sex(input("請輸入性別(男/女):"))

new_info['sex'] = new_sex

new_phone = check_phone(input("請輸入電話號碼:"))

new_info['phone'] = new_phone

name_list.append(new_info)

print("添加成功!")

# 查詢所有學生信息

def find_all():

print("="*30)

for name in name_list:

print(name['id'], name['name'], name['sex'], name['phone'])

print("=" * 30)

# 刪除學生信息

def del_name():

del_id_is = input("請輸入要刪除的學生學號:")

flag = False

index = 0

for i in range(len(name_list)):

if name_list[i]['id'] == del_id_is:

flag = True

index = i

break

if flag:

name_list.pop(index)

print("刪除成功!")

else:

print("學生未找到!請檢查學號輸入是否有誤!")

# 名字修改細節函數

def choice_of_name(index):

while True:

choice = input("請輸入要修改學生的(1.id 2.姓名 3.性別 4.電話號碼,5.全部修改):")

if choice == '5':

new_id = input("請輸入新的學號:")

name_list[index]['id'] = new_id

new_name = input("請輸入新的姓名:")

name_list[index]['name'] = new_name

new_sex = check_sex(input("請輸入性別(男/女):"))

name_list[index]['sex'] = new_sex

new_phone = check_phone(input("請輸入電話號碼:"))

name_list[index]['phone'] = new_phone

break

elif choice == '1':

new_id = input("請輸入新的學號:")

name_list[index]['id'] = new_id

break

elif choice == '2':

new_name = input("請輸入新的姓名:")

name_list[index]['name'] = new_name

break

elif choice == '3':

new_sex = check_sex(input("請輸入性別(男/女):"))

name_list[index]['sex'] = new_sex

break

elif choice == '4':

new_phone = check_phone(input("請輸入電話號碼:"))

name_list[index]['phone'] = new_phone

break

else:

print("輸入有誤,請重新輸入!")

# 修改學生信息

def re_name():

id_is = input("請輸入要修改的學生學號:")

flag = False

index = 0

# 先找到要修改的學生的下標

for i in range(len(name_list)):

if name_list[i]['id'] == id_is:

flag = True

index = i

break

if flag:

choice_of_name(index)

print("修改成功!")

else:

print("修改失敗,學生信息未找到!")

# 查詢單個學生信息

def find_name():

find_id_is = input("請輸入要查詢的學生學號:")

flag = False

index = 0

for i in range(len(name_list)):

if name_list[i]['id'] == find_id_is:

flag = True

index = i

break

if flag:

print("學生查詢到,學生信息為:")

print(name_list[index]['id'], name_list[index]['name'], name_list[index]['sex'], name_list[index]['phone'])

else:

print("學生未找到!")

def main():

exit_name = True

while exit_name:

display_menu()

key = get_choice()

if key == '1':

add_name()

elif key == '2':

del_name()

elif key == '3':

re_name()

elif key == '4':

find_name()

elif key == '5':

find_all()

elif key == '6':

exit_name = False

else:

print("請輸入正確的數值!")

main()

以上所述是小編給大家介紹的用python實現學生管理系統詳解整合,希望對大家有所幫助,

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370556.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370556.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370556.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python入門筆記

Python變量和數據類型 數據類型 print語句 注釋 Python的注釋以 # 開頭,后面的文字直到行尾都算注釋 # 這一行全部都是注釋... print hello # 這也是注釋 什么是變量 定義字符串 字符串可以用或者""括起來表示。 如果字符串本身包含怎么辦?比如…

1058. 選擇題(20)

原題: https://www.patest.cn/contests/pat-b-practise/1058 思路: 本題主要就是怎么讀取數據的問題, 一定要注意scanf函數匹配到 空格或者回車會結束當前變量的賦值, 并且會丟棄這個空格或回車. 關于如何判斷一項答題是否正確, 可以采用循環一個一個判斷, 也可拼成 字符串用st…

使用Spring和Hibernate進行集成測試有多酷

我有罪,直到現在才寫集成測試(至少針對數據庫相關事務)。 因此,為了消除內感,我閱讀了如何在周末以最少的努力實現這一目標。 提供了一個小示例,描述了如何使用Spring和Hibernate輕松實現這一目標。 通過集…

假設mysql數據表t1有字段_使用ROMA Connect集成數據

概述ROMA Connect支持接入多種類型的數據源,并通過數據集成任務實現源端到目標端的數據集成轉換。ROMA Connect支持相同結構數據之間進行集成轉換,也支持異構數據之間進行集成轉換。本章節通過完成一個SQL Server到MySQL的數據集成配置樣例,幫…

vue-wechat-title

html中的title安裝:npm install vue-wechat-title --save1.在mian.js中//網頁titleimport VueTitle from vue-wechat-title Vue.use(VueTitle);2. 路由中加下 title { path: /, component: Index, meta: { title: 首頁 } }3. 在app.vue 中修改 router-view &a…

如何保證input的輸入值不會隨著提交 而變空_如何對web界面的應用進行測試?

一、輸入框:1、字符型輸入框:(1)字符型輸入框:英文全角、英文半角、數字、空或者空格、特殊字符“~!#¥%……&*?[]{}”特別要注意單引號和&符號。禁止直接輸入特殊字符時&…

CentOS6.x下,tomcat - web項目部署

1. 安裝tomcat tomcat安裝方法&#xff1a;http://www.cnblogs.com/vurtne-lu/p/6478440.html 2. 配置tomcat 修改server.xml文件 <!-- 使用 80 端口 (也可以使用其它端口)--> <Connector port"80" protocol"HTTP/1.1"connectionTimeout"200…

dedecms列表頁面隨機縮略圖調用

如果要利用dedecms制作扁平化主題&#xff0c;大概也能夠遇到相似的問題&#xff0c;那就是dedecms的縮略圖機制&#xff0c;在沒有縮略圖的情況下顯示單一的默認圖片&#xff0c;如果是wordpress可以很方便的定義函數調用隨機的縮略圖&#xff0c;即便是在沒有設置縮略圖并且文…

使用地圖觸發功能處理相干事件

本文介紹如何通過使用映射觸發器來處理一致性事件。 基本上&#xff0c;建議使用Oracle Coherence中的分布式數據管理來研究Oracle Coherence API的基本配置和實現。 映射觸發器是Oracle Coherence提供最高度定制的緩存管理系統的最重要功能之一。 MapTrigger代表一個功能代理…

阿里云服務器mysql莫名丟失_mysql數據庫丟失

mysql數據庫丟失云服務器(Elastic Compute Service&#xff0c;簡稱ECS)是阿里云提供的性能卓越、穩定可靠、彈性擴展的IaaS(Infrastructure as a Service)級別云計算服務。云服務器ECS免去了您采購IT硬件的前期準備&#xff0c;讓您像使用水、電、天然氣等公共資源一樣便捷、高…

01-HTML深入

1.1 瀏覽器的工作原理 把一些標簽解析成用戶可視化的頁面 1.2 HTML中的標簽與元素 在HTML中以<xx>開始&#xff0c;以</xx>結束&#xff0c;比如<html></html>等。 標簽和其內容統稱為元素&#xff0c;比如&#xff1a;<xx>h5</xx> 元素…

gitlab使用_使用 Docker 部署 Gitlab

GitLab 是一個用于倉庫管理系統的開源項目&#xff0c;使用Git作為代碼管理工具&#xff0c;并在此基礎上搭建起來的web服務&#xff0c;具有wiki和issue跟蹤功能。GitLab是當前應用非常廣泛的源代碼管理系統。1. 安裝docker引擎并啟動2. 獲取gitlab鏡像包查看下載好的鏡像3. 在…

js--webSocket入門

Websocket 1.websocket是什么&#xff1f; WebSocket是為解決客戶端與服務端實時通信而產生的技術。其本質是先通過HTTP/HTTPS協議進行握手后創建一個用于交換數據的TCP連接&#xff0c; 此后服務端與客戶端通過此TCP連接進行實時通信。 2.websocket的優點 以前我們實現推送技術…

node.js繼承

person.js module.exports function(){   this.name "person";   this.sleep function(){     console.log("sleep in the night");   }   this.eat function(){     console.log(eat food);   }} student.js var util require(&qu…

研究死鎖–第5部分:使用顯式鎖定

在我的上一個博客中&#xff0c;我研究了使用Java的傳統synchronized關鍵字和鎖排序來修復破碎的&#xff0c;死鎖的余額轉移示例代碼。 但是&#xff0c;有一種替代方法稱為顯式鎖定。 這里&#xff0c;將鎖定機制稱為顯式而非隱式的想法是&#xff0c; 顯式表示它不是Java語…

mysql 經典入門教程_MySQL 經典入門教程

MySQL 經典入門教程1 定義數據庫中的表&#xff1a;一行叫一條記錄。每一列叫一個屬性&#xff0c;或一個字段。主鍵&#xff1a;表中的某個特殊字段&#xff0c;具有唯一的確定的值&#xff0c;可以根據該字段唯一的確定一條記錄外鍵&#xff1a;表中的某個字段的值為另一張表…

druid連接池初始化慢_7、SpringBoot -連接池(Durid)

一導入相關核心包<dependencies>二 在application.ymlspring三、配置Druid Datasource(可選)Configuration五、監控訪問 http://localhost:8080/druid&#xff0c; 使用上面配置的賬號密碼。四、自動配置原理源代碼Configuration說明DataSourceProperties 配置相關 首先找…

負載均衡與反向代理

如果用域名 映射多了Ip &#xff1b; 外網應該用來實現 GSLB 1 輪詢pstream nginxDemo { server 127.0.0.1:8081; server 127.0.0.1:8082; } 最少鏈接web請求會被轉發到連接數最少的服務器上。 upstream nginxDemo { least_conn; server 127.0.…

使用工廠方法模式設計最佳實踐

在前面的“設計模式”示例中&#xff0c;我們解釋了當今常用的“工廠”模式。 在本節中&#xff0c;我們將了解具有更多抽象的更高級的解決方案。 該模式稱為工廠方法設計模式。 定義&#xff1a; Factory方法模式提供了一種用于創建對象的方法&#xff0c;但是將對象創建委托…

偏導數

引入 一元函數導數&#xff1a; 在一元函數中&#xff0c;我們已經知道導數就是函數的變化率&#xff08;對于一個一元函數&#xff0c;x增大了多少&#xff0c;y增大了多少&#xff0c;這個就是變化率&#xff09;。對于二元函數我們同樣要研究它的“變化率”。在xOy平面內&am…