Go實現用戶登錄小程序

寫一個用戶登錄注冊的小程序
運行程序,給出提示
1. 注冊
輸入用戶名、密碼、年齡、性別 {"用戶名": "root", "passwd": "123456", "age": 18, "sex": "男"}
注冊前要判斷是否存在此用戶
2. 登錄
輸入用戶名、密碼
判斷用戶名和密碼是否正確
3. 退出

不限次數登錄注冊,直到按3退出

/*
寫一個用戶登錄注冊的小程序
運行程序,給出提示1. 注冊輸入用戶名、密碼、年齡、性別 {"用戶名": "root", "passwd": "123456", "age": 18, "sex": "男"}注冊前要判斷是否存在此用戶2. 登錄輸入用戶名、密碼判斷用戶名和密碼是否正確3. 退出不限次數登錄注冊,直到按3退出
*/
package mainimport "fmt"func main() {user := make(map[string]map[string]string)user["張三"] = map[string]string{"passwd": "123456", "age": "18", "sex": "男"}user["李四"] = map[string]string{"passwd": "654321", "age": "22", "sex": "女"}for {fmt.Println("**********歡迎來到菜單頁面**********")fmt.Println("按“1”--》注冊")fmt.Println("按“2”--》登錄")fmt.Println("按“3”--》退出")fmt.Println("請輸入您的選擇:")var choice intfmt.Scan(&choice)if choice == 1 {fmt.Println("**********歡迎來到注冊頁面**********")var name stringfmt.Println("請輸入用戶名:")fmt.Scan(&name)flag := 0for k, _ := range user {if k == name {fmt.Println("用戶已存在,請重新輸入用戶名!")flag = 1}}if flag == 0 {var passwd stringfmt.Println("請輸入密碼:")fmt.Scan(&passwd)var age stringfmt.Println("請輸入年齡:")fmt.Scan(&age)var sex stringfmt.Println("請輸入性別:")fmt.Scan(&sex)user[name] = map[string]string{"passwd": passwd, "age": age, "sex": sex}fmt.Println("注冊成功,您的用戶信息為:", user[name])}} else if choice == 2 {fmt.Println("**********歡迎來到登錄頁面**********")var name stringfmt.Println("請輸入用戶名:")fmt.Scan(&name)flag := 0for k, _ := range user {if k == name {// input_passwd:var passwd stringfmt.Println("請輸入密碼:")fmt.Scan(&passwd)if passwd == user[name]["passwd"] {fmt.Println("密碼正確,您的用戶信息如下:")fmt.Println(user[name])flag = 1break} else {fmt.Println("密碼錯誤,請重新輸入!")continue// goto input_passwd}}}if flag == 0 {fmt.Println("用戶名不存在,請重新輸入!")}} else if choice == 3 {break}}}

方法二:

package mainimport ("fmt"
)func main() {// 使用map存儲用戶信息,key是用戶名,value是包含用戶詳細信息的mapusers := make(map[string]map[string]string)// 初始化一些示例用戶users["張三"] = map[string]string{"passwd": "123456", "age": "18", "sex": "男"}users["李四"] = map[string]string{"passwd": "654321", "age": "22", "sex": "女"}for {// 顯示主菜單fmt.Println("**********歡迎來到菜單頁面**********")fmt.Println("按\"1\"-->注冊")fmt.Println("按\"2\"-->登錄")fmt.Println("按\"3\"-->退出")fmt.Print("請輸入您的選擇:")var choice int_, err := fmt.Scan(&choice)if err != nil {fmt.Println("輸入無效,請輸入數字1-3!")continue}switch choice {case 1:registerUser(users)case 2:loginUser(users)case 3:fmt.Println("感謝使用,再見!")returndefault:fmt.Println("無效的選擇,請重新輸入1-3!")}}
}// 注冊用戶函數
func registerUser(users map[string]map[string]string) {fmt.Println("**********歡迎來到注冊頁面**********")// 獲取用戶名并檢查是否已存在var name stringfor {fmt.Print("請輸入用戶名:")fmt.Scan(&name)if _, exists := users[name]; exists {fmt.Println("用戶已存在,請重新輸入用戶名!")} else {break}}// 獲取密碼var passwd stringfmt.Print("請輸入密碼:")fmt.Scan(&passwd)// 獲取年齡var age stringfmt.Print("請輸入年齡:")fmt.Scan(&age)// 獲取性別var sex stringfmt.Print("請輸入性別:")fmt.Scan(&sex)// 創建用戶信息users[name] = map[string]string{"passwd": passwd,"age":    age,"sex":    sex,}fmt.Println("注冊成功!您的用戶信息為:")fmt.Printf("用戶名: %s\n密碼: %s\n年齡: %s\n性別: %s\n", name, passwd, age, sex)
}// 登錄用戶函數
func loginUser(users map[string]map[string]string) {fmt.Println("**********歡迎來到登錄頁面**********")// 獲取用戶名并檢查是否存在var name stringfor {fmt.Print("請輸入用戶名:")fmt.Scan(&name)if user, exists := users[name]; !exists {fmt.Println("用戶名不存在,請重新輸入!")} else {// 獲取密碼并驗證var passwd stringfmt.Print("請輸入密碼:")fmt.Scan(&passwd)if passwd == user["passwd"] {fmt.Println("登錄成功!您的用戶信息如下:")fmt.Printf("用戶名: %s\n密碼: %s\n年齡: %s\n性別: %s\n",name, user["passwd"], user["age"], user["sex"])return} else {fmt.Println("密碼錯誤,請重試!")return}}}
}

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

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

相關文章

鴻蒙藍牙通信

https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-bluetooth-low-energy 藍牙權限 module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.ACCESS_BLUETOOTH","reason": "…

Java:Map

文章目錄Map常用方法Map遍歷的三種方法先獲取Map集合的全部鍵,再通過遍歷來找值Entry對象forEach結合lambda表達式Map 案例分析需求我的代碼(不好)老師的代碼(好)好在哪里另外集合分為Collection和MapMap常用方法 代碼…

fastjson2 下劃線字段轉駝峰對象

在對接第三方或查詢數據庫時,返回的字段是下劃線分隔的,而在業務中需要轉成java對象,java對象的字段是駝峰的,使用fastjson2時,有兩種方法可以實現: 比如數據格式是: {"item_id": &q…

【硬件】藍牙音頻協議

1. 無線音頻傳輸的工作原理 在無線傳輸的過程中,音源設備首先將MP3、FLAC等音頻文件還原為PCM格式。通過藍牙音頻編碼轉為藍牙無線傳輸的文件,發送到音頻設備段。將藍牙無線傳輸的文件再次還原為PCM格式,之后轉為模擬信號并放大,通…

【宇樹科技:未來1-3年,機器人可流水線打螺絲】

在第三屆中國國際供應鏈促進博覽會上,宇樹科技工作人員表示,未來1到3年內,機器人產品有望從單一工業化產品,發展至復合化工業場景,如機器人搬完箱子后,換個 “手” 就能在流水線上打螺絲。在3到10年內&…

Spring AI 1.0版本 + 千問大模型之 文本記憶對話

上篇文章,主要是簡單講解了一下文本對話的功能。由于模型不具備上下文記憶功能,只能一問一答。因此我們需要實現記憶對話功能,這樣大模型回答信息才能夠更加準確。 1、pom依賴 項目構建就不詳細說了,大家可以參考上篇 文本對話 文…

測試學習之——Pytest Day2

一、Pytest配置框架Pytest的配置旨在改變其默認行為,以適應不同的測試需求和項目結構。理解其配置層級和常用參數,是高效使用Pytest的基礎。1. 配置的意義與層級配置的本質在于提供一種機制,允許用戶根據項目特點、團隊規范或特定測試場景&am…

Go-Redis × RediSearch 全流程實踐

1. 連接 Redis ctx : context.Background()rdb : redis.NewClient(&redis.Options{Addr: "localhost:6379",Password: "",DB: 0,Protocol: 2, // 推薦 RESP2// UnstableResp3: true, // 若要體驗 RESP3 Raw* })2. 準備示例數據 u…

深入理解指針(指針篇2)

在指針篇1我們已經了解了整型指針,當然還有很多其他類型的指針,像字符指針、數組指針、函數指針等,他們都有他們的特別之處,讓我們接著學習。1. 指針類型介紹和應用1.1 字符指針變量字符指針變量類型為char*,一般這樣使…

Python+Selenium自動化爬取攜程動態加載游記

1. 引言 在旅游行業數據分析、輿情監測或競品研究中&#xff0c;獲取攜程等平臺的游記數據具有重要價值。然而&#xff0c;攜程的游記頁面通常采用動態加載&#xff08;Ajax、JavaScript渲染&#xff09;&#xff0c;傳統的**<font style"color:rgb(64, 64, 64);backg…

ESP8266服務器建立TCP連接失敗AT+CIPSTART=“TCP“,“192.168.124.1“,8080 ERROR CLOSED

1.檢查服務器端口8081是否開啟監聽2.檢查路由項是否被防火墻攔截方法 1&#xff1a;使用 netsh查看防火墻規則?netsh advfirewall firewall show rule nameall dirout | findstr "8081"如果無輸出&#xff0c;說明防火墻未針對該端口設置規則&#xff08;可能默認攔…

Linux 內存管理(2):了解內存回收機制

目錄一、透明大頁1.1 原理1.2 透明大頁的三大優勢1.3 透明大頁控制接口詳解1.4 使用場景與最佳實踐1.5 問題排查與監控1.6 與傳統大頁的對比二、Linux伙伴系統水位機制詳解2.1 三種核心水位詳解2.2 水位在伙伴系統中的實現2.3 水位觸發機制的實際行為2.4 水位關鍵操作接口2.5 水…

前端學習7:CSS過渡與動畫--補間動畫 (Transition) vs 關鍵幀動畫 (Animation)

一、補間動畫&#xff08;Tween Animation&#xff09;vs 關鍵幀動畫&#xff08;Keyframe Animation&#xff09;概念對比表&#xff1a;補間動畫 (Transition)關鍵幀動畫 (Animation)定義元素從初始狀態到結束狀態的過渡效果通過定義多個關鍵幀控制動畫的中間狀態觸發方式需要…

PyTorch 損失函數詳解:從理論到實踐

目錄 一、損失函數的基本概念 二、常用損失函數及實現 1. 均方誤差損失&#xff08;MSELoss&#xff09; 2. 平均絕對誤差損失&#xff08;L1Loss/MAELoss&#xff09; 3. 交叉熵損失&#xff08;CrossEntropyLoss&#xff09; 4. 二元交叉熵損失&#xff08;BCELoss&…

MinIO深度解析:從核心特性到Spring Boot實戰集成

在當今數據爆炸的時代&#xff0c;海量非結構化數據的存儲與管理成為企業級應用的關鍵挑戰。傳統文件系統在TB級數據面前捉襟見肘&#xff0c;而昂貴的云存儲服務又讓中小企業望而卻步。MinIO作為一款開源高性能對象存儲解決方案&#xff0c;正以其獨特的技術優勢成為開發者的首…

騰訊云服務上下載docker以及使用Rabbitmq的流程

執行以下命令&#xff0c;添加 Docker 軟件源并配置為騰訊云源。sudo yum-config-manager --add-repohttps://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i "s/download.docker.com/mirrors.tencentyun.com\/docker-ce/g" /etc/yu…

UE5 一些關于過場動畫sequencer,軌道track的一些Python操作

刪除多余的軌道 import unreal def execute():movie_scene_actors []sequence_assets []data 0.0# 獲取編輯器實用工具庫lib unreal.EditorUtilityLibrary()selected_assets lib.get_selected_assets()for asset in selected_assets:if asset.get_class() unreal.LevelS…

前端性能優化“核武器”:新一代圖片格式(AVIF/WebP)與自動化優化流程實戰

前端性能優化“核武器”&#xff1a;新一代圖片格式(AVIF/WebP)與自動化優化流程實戰 當你的頁面加載時間超過3秒時&#xff0c;用戶的跳出率會飆升到40%以上。而在所有的前端性能優化手段中&#xff0c;圖片優化無疑是投入產出比最高的一環。一張未經優化的巨大圖片&#xff0…

單元測試學習+AI輔助單測

標題單元測試衡量指標具體測試1、Resource2、MockBean3、Test4、Test模板5、單測示例H2數據庫JSON1、使用方式AI輔助單測使用方法單元測試 單元測試一般指程序員在寫好代碼后&#xff0c;提交測試前&#xff0c;需要驗證自己的代碼是否可以正常工作&#xff0c;同時將自己的代…

Spring Cloud Gateway與Envoy Sidecar在微服務請求路由中的架構設計分享

Spring Cloud Gateway與Envoy Sidecar在微服務請求路由中的架構設計分享 在現代微服務架構中&#xff0c;請求路由層承擔著流量分發、安全鑒權、流量控制等多重職責。傳統的單一網關方案往往面臨可擴展性和可維護性挑戰。本文將從真實生產環境出發&#xff0c;分享如何結合Spri…