银行管理系统(使用SQL Server)-Python快速编程入门(第2版)-人民邮电出版社-阶段案例
阶段案例—银行管理系统
题目描述
银行管理系统是一个集开户、查询、取款、存款、转账、锁定、解锁、退出等一系列业务于一体的管理系统,随着计算机技术在金融行业的广泛应用,银行企业采用管理系统替代了传统手工记账的方式,这极大地缩短了用户办理基础储蓄业务的时间,提升了银行企业的形象。
假设现有一银行管理系统,该系统的“欢迎登录银行管理系统”界面和“功能菜单”界面分别如图所示
***************************************************
*** ***
*** ***
*** 欢迎登录银行管理系统 ***
*** ***
*** ***
***************************************************图:"欢迎登录银行管理系统"界面
**************************************************
*** ***
*** 1.开户(1) 2.查询(2) ***
*** 3.取款(3) 4.存款(4) ***
*** 5.转账(5) 6.锁定(6) ***
*** 7.解锁(7) ***
*** ***
*** 退出(Q) ***
*** ***
**************************************************图:"功能菜单"界面
银行管理系统启动后会显示“欢迎登录银行管理系统”界面,并要求工作人员按照提示输入管理员的账户和密码,输入正确的账户和密码后方可进入“功能菜单”界面,否则直接退出银行管理系统。管理员信息输入正确和输入错误的提示信息如图8-7所示。
请输入管理员账户:admin
请输入密码:12345
请输入密码:123
操作成功,请稍后…… 图:输入正确的账号密码
请输入管理员账户:ad
管理员账户输入错误……图:输入错误的账号
请输入管理员账户:admin
输入密码有误……图:输入错误的密码
图示的“功能菜单”界面显示了银行管理系统的全部功能,包括开户、查询、取款、存款、转账、锁定、解锁和退出,每个功能的介绍如下。
- 开户功能:用户根据提示依次输入姓名、身份证号、手机号、预存金额、密码等信息,输入无误后会获取系统随机生成的一个不重复的由6位数字组成的卡号。
- 查询功能:用户根据提示输入正确的卡号、密码后,可以查询卡中余额,若连续3次输入错误的密码,则卡号会被锁定。
- 取款功能:用户根据提示输入正确的卡号、密码后,可以看到系统显示的卡中余额,之后输入取款金额,会看到系统显示取款后的卡中余额。如果用户连续3次输入错误的密码,那么用户的卡号会被锁定;如果用户输入的取款金额大于卡中余额或小于0,那么系统进行是示并返回“功能菜单”界面。
- 存款功能:用户根据提示输入正确的卡号、密码后,可以看到系统显示的卡中余额,后输入存款金额,会看到系统显示取款后的卡中余额。如果用户输入的存款金额小于0,那么系统进行提示并返回“功能菜单”界面。
- 转账功能:用户根据提示分别输入转出卡号和转入卡号,之后输入转账金额,并再大确认是否执行转账功能,确定执行转账功能后,转出卡与转入卡做相应金额计算;取消转账功能后,回退到之前的操作。如果用户连续3次输入错误的密码,那么用户的卡号会被锁定。
- 锁定功能:用户根据提示输入卡号、密码后,会看到系统显示的锁定成功的信息。3定的卡号不能进行查询、取款、存款、转账等操作。
- 解锁功能:用户根据提示输入卡号、密码后,会看到系统显示的解锁成功的信息。锁的卡号可以重新进行查询、取款、存款、转账等操作。
- 退出功能:工作人员根据提示输入管理员的账户和密码,如果输入了错误的账户密码,会返回到系统的“功能菜单”界面;如果输入正确的账户和密码,那么会退出系统。
本案例要求编写程序,实现一个基于面向对象的、具有上述功能的银行管理系统。
数据库准备
数据库配置
使用SSMS(Microsoft SQL Server Management Studio,版本:v18.9.1。如非此版本请手动创建数据库,因为可能会出现不兼容的情况。)
创建新用户
右键数据库名选择属性
选择安全性并按如图配置
右键登录名创建新用户
选择常规并配置用户名密码
选择安全对象并授权(要求能够查询,修改,添加,删除数据库的元素)
如图配置即可完成
配置完毕之后可以登录数据库试试
数据库文件准备
参考脚本如下
USE [master]
GO
/****** Object: Database [bank] Script Date: 2021/5/5 19:12:05 ******/
CREATE DATABASE [bank]CONTAINMENT = NONEON PRIMARY
( NAME = N'bank', FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\bank.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )LOG ON
( NAME = N'bank_log', FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\bank_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )WITH CATALOG_COLLATION = DATABASE_DEFAULT
GO
ALTER DATABASE [bank] SET COMPATIBILITY_LEVEL = 150
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [bank].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [bank] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [bank] SET ANSI_NULLS OFF
GO
ALTER DATABASE [bank] SET ANSI_PADDING OFF
GO
ALTER DATABASE [bank] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [bank] SET ARITHABORT OFF
GO
ALTER DATABASE [bank] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [bank] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [bank] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [bank] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [bank] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [bank] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [bank] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [bank] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [bank] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [bank] SET DISABLE_BROKER
GO
ALTER DATABASE [bank] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [bank] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [bank] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [bank] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [bank] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [bank] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [bank] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [bank] SET RECOVERY FULL
GO
ALTER DATABASE [bank] SET MULTI_USER
GO
ALTER DATABASE [bank] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [bank] SET DB_CHAINING OFF
GO
ALTER DATABASE [bank] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF )
GO
ALTER DATABASE [bank] SET TARGET_RECOVERY_TIME = 60 SECONDS
GO
ALTER DATABASE [bank] SET DELAYED_DURABILITY = DISABLED
GO
ALTER DATABASE [bank] SET ACCELERATED_DATABASE_RECOVERY = OFF
GO
EXEC sys.sp_db_vardecimal_storage_format N'bank', N'ON'
GO
ALTER DATABASE [bank] SET QUERY_STORE = OFF
GO
USE [bank]
GO
/****** Object: User [root] Script Date: 2021/5/5 19:12:06 ******/
CREATE USER [root] FOR LOGIN [root] WITH DEFAULT_SCHEMA=[dbo]
GO
/****** Object: Table [dbo].[account] Script Date: 2021/5/5 19:12:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[account]([name] [varchar](20) NOT NULL,[id] [varchar](50) NOT NULL,[password] [varchar](50) NOT NULL,[balance] [float] NOT NULL,[telephone_number] [varchar](50) NOT NULL,[is_lock] [int] NOT NULL,[id_card] [varchar](50) NOT NULL,CONSTRAINT [PK_account] PRIMARY KEY CLUSTERED
([id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT [dbo].[account] ([name], [id], [password], [balance], [telephone_number], [is_lock], [id_card]) VALUES (N'Alice', N'178324', N'154737', 0, N'16574358756', 1, N'126467198709394765')
INSERT [dbo].[account] ([name], [id], [password], [balance], [telephone_number], [is_lock], [id_card]) VALUES (N'Dennis', N'189612', N'156464', 2035.1, N'16455631735', 0, N'164536199801017635')
INSERT [dbo].[account] ([name], [id], [password], [balance], [telephone_number], [is_lock], [id_card]) VALUES (N'Jobs', N'234244', N'163736', 0, N'16745461746', 0, N'164564199801017844')
INSERT [dbo].[account] ([name], [id], [password], [balance], [telephone_number], [is_lock], [id_card]) VALUES (N'Lincoln', N'234534', N'144563', 10000, N'15463656473', 0, N'219033198811129034')
INSERT [dbo].[account] ([name], [id], [password], [balance], [telephone_number], [is_lock], [id_card]) VALUES (N'Bidden', N'254546', N'132412', 0, N'16443745627', 1, N'164567199807081535')
INSERT [dbo].[account] ([name], [id], [password], [balance], [telephone_number], [is_lock], [id_card]) VALUES (N'Trump', N'324555', N'154632', 0, N'16735482798', 0, N'183647198902038464')
INSERT [dbo].[account] ([name], [id], [password], [balance], [telephone_number], [is_lock], [id_card]) VALUES (N'Maldives', N'325455', N'123212', 0, N'16744753877', 1, N'145666199802031846')
INSERT [dbo].[account] ([name], [id], [password], [balance], [telephone_number], [is_lock], [id_card]) VALUES (N'Bob', N'329574', N'174465', 0, N'16755748375', 0, N'174657199802031324')
INSERT [dbo].[account] ([name], [id], [password], [balance], [telephone_number], [is_lock], [id_card]) VALUES (N'Lucy', N'345656', N'154635', 100000, N'15746587368', 0, N'198773199908091846')
INSERT [dbo].[account] ([name], [id], [password], [balance], [telephone_number], [is_lock], [id_card]) VALUES (N'Bill', N'384594', N'154635', 0, N'15463641546', 1, N'153635199901017834')
INSERT [dbo].[account] ([name], [id], [password], [balance], [telephone_number], [is_lock], [id_card]) VALUES (N'Antone', N'685630', N'132354', 0.8, N'15464538775', 0, N'419817199897111735')
GO
USE [master]
GO
ALTER DATABASE [bank] SET READ_WRITE
GO
数据库创建效果
源代码
# coding=utf-8
# sqlserver的连接
import random
import pymssqlclass MSSQL:def __GetConnect(self):"""得到连接信息返回: conn.cursor()"""self.conn = pymssql.connect(host='主机名(可以是localhost)', user='用户名(要求此用户有操作数据库数据的权限)', password='密码', database='数据库名', charset="utf8")cur = self.conn.cursor()if not cur:raise (NameError, "连接数据库失败")else:return curdef ExecQuery(self, sql):"""执行查询语句返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段"""cur = self.__GetConnect()cur.execute(sql)result_list = cur.fetchall()# 查询完毕后必须关闭连接self.conn.close()return result_listdef ExecNonQuery(self, sql):"""执行非查询语句"""cur = self.__GetConnect()try:cur.execute(sql)except Exception as ex:print(ex)self.conn.commit()self.conn.close()class Account:def new_account(self):name = input('欢迎成为我们的新用户,请输入您的姓名')account = str(random.randint(100000, 999999))password = input('请输入您的密码')repeat_password = input('请再输入一次')if password == repeat_password:telephone = input('请输入您的电话')import re#使用正则表达式匹配电话号码pattern_telephone = re.compile(R"^1[3578]\d{9}$")phone_match_result = pattern_telephone.match(telephone)if phone_match_result is not None:#使用正则表达式匹配身份证号码id_card = input('请输入您的身份证号码')pattern_id_card=re.compile(R"^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2]["R"1-9])|10|20|30|31)\d{3}[0-9Xx]$")id_card_match_result = pattern_id_card.match(id_card)if id_card_match_result is not None:money=input('请输入预存金额')da = MSSQL()sql = 'INSERT INTO account VALUES(' + "'" + name + "','" + account + "','" + password + "'," + money + ",'" + telephone + "'," + "0" + ",'" + id_card + "')"da.ExecNonQuery(sql)else:print('身份证号码无效')else:print("手机号码无效")else:print('注册失败,您输入的密码不一致')def find(self):d = MSSQL()account = input('欢迎使用ATM存取款一体机,请插入银行卡')sql = 'SELECT * FROM account WHERE id=' + accountresult_list = d.ExecQuery(sql)if len(result_list) == 0:print('非法卡,请重试')else:user_message = result_list[0]for i in range(3):password = input('请输入密码')if password == user_message[2]:print('亲爱的客户您好,您的信息如下')def check_account():if user_message[5] == 0:print('姓名', user_message[0], '\n账号', user_message[1], '\n余额', user_message[3], '\n手机号',user_message[4], '\n账户正常\n身份证号', user_message[6])else:print('您的账户已锁定,无法查询')returncheck_account()print('查询完毕,请取走卡片。\n谢谢您的光临')returnelse:print('密码错误,请重试')print('密码错误次数过多,银行卡已锁定')sql = 'UPDATE account SET is_lock=1 WHERE id=' + "'" + user_message[1] + "'"d.ExecNonQuery(sql)def get_money(self):account = input('欢迎使用ATM存取款一体机,请插入银行卡')d = MSSQL()sql = 'SELECT * FROM account WHERE id=' + accountresult_list = d.ExecQuery(sql)if len(result_list) == 0:print('非法卡,请重试')else:for i in range(3):password = input('请输入密码')user_message = result_list[0]if password == user_message[2]:if user_message[5] == 0:print('您的余额为', user_message[3])money = float(input('请取款'))if money > user_message[3]:print('您的余额不足,取款失败')returnelif money < 0:print('您的输入有误,取款失败')returnelse:money_ = user_message[3]money_ = str(money_ - money)sql = 'UPDATE account SET balance=' + money_ + ' WHERE id=' + "'" + user_message[1] + "'"d.ExecNonQuery(sql)print('取款成功,请核对。')returnelse:print('您的银行卡已锁定,无法操作')returnelse:print('密码错误,请重试')print('密码错误次数过多,银行卡已锁定')sql = 'UPDATE account SET is_lock=1 WHERE id=' + "'" + user_message[1] + "'"d.ExecNonQuery(sql)print('取款结束,请取走卡片。\n谢谢您的光临')def save_money(self):account = input('欢迎使用ATM存取款一体机,请插入银行卡')d = MSSQL()sql = 'SELECT * FROM account WHERE id=' + accountresult_list = d.ExecQuery(sql)if len(result_list) == 0:print('非法卡,请重试')else:for i in range(3):password = input('请输入密码')user_message = result_list[0]if password == user_message[2]:if user_message[5] == 0:print('您的余额为', user_message[3])money = float(input('请存款'))if money < 0:print('您的输入有误,存款失败')returnelse:money_ = user_message[3]money_ = str(money_ + money)sql = 'UPDATE account SET balance=' + money_ + ' WHERE id=' + "'" + user_message[1] + "'"d.ExecNonQuery(sql)print('存款成功,请核对。')returnelse:print('您的银行卡已锁定,无法操作')returnelse:print('密码错误,请重试')print('密码错误次数过多,银行卡已锁定')sql = 'UPDATE account SET is_lock=1 WHERE id=' + "'" + user_message[1] + "'"d.ExecNonQuery(sql)print('存款结束,请取走卡片。\n谢谢您的光临')def transfer_money(self):account = input('欢迎使用ATM存取款一体机,请插入银行卡')d = MSSQL()sql = 'SELECT * FROM account WHERE id=' + accountresult_list = d.ExecQuery(sql)if len(result_list) == 0:print('非法卡,请重试')else:user_message = result_list[0]for i in range(3):password = input('请输入密码')if password == user_message[2]:if user_message[5] == 0:print('您的余额为', user_message[3])person = input('请输入转到的银行卡号')money = float(input('请输入转账金额'))if money < 0:print('您的输入有误,转账失败')returnelse:make_sure_transfor=input('您确定转账?输入Y继续,输入其他退出')if make_sure_transfor=='Y':sql = 'SELECT * FROM account WHERE id=' + "'" + person + "'"de = d.ExecQuery(sql)if len(de) == 0:print('无效卡号,请核对')returnelse:if money > user_message[3]:print('您的余额不足,转账失败')returnelse:money_ = user_message[3]money_ = str(money_ - money)sql1 = 'UPDATE account SET balance=' + money_ + ' WHERE id=' + "'" + user_message[1] + "'"d.ExecNonQuery(sql1)money__ = de[0][3]money__ = str(money__ + money)sql2 = 'UPDATE account SET balance=' + money__ + ' WHERE id=' + "'" + person + "'"d.ExecNonQuery(sql2)print('转账成功,请核对。')returnelse:returnelse:print('您的银行卡已锁定,无法操作')returnelse:print('密码错误,请重试')print('密码错误次数过多,银行卡已锁定')sql = 'UPDATE account SET is_lock=1 WHERE id=' + "'" + user_message[1] + "'"d.ExecNonQuery(sql)print('转账结束,请取走卡片。\n谢谢您的光临')def lock(self):account = input('欢迎使用ATM存取款一体机,请输入银行卡卡号')d = MSSQL()sql = 'SELECT * FROM account WHERE id=' + accountresult_list = d.ExecQuery(sql)if len(result_list) == 0:print('非法卡,请重试')else:user_message = result_list[0]for i in range(3):password = input('请输入密码')if password == user_message[2]:if user_message[5] == 0:print('您的余额为', user_message[3])is_lock = input('您确定要锁定您的银行卡吗?输入1锁定银行卡,输入其他字符返回')if is_lock != '1':returnelse:sql = 'UPDATE account SET is_lock=1 WHERE id=' + "'" + user_message[1] + "'"d.ExecNonQuery(sql)print('锁定成功')returnelse:print('您的银行卡已锁定,无法操作')returnelse:print('密码错误,请重试')print('密码错误次数过多,银行卡已锁定')sql = 'UPDATE account SET is_lock=1 WHERE id=' + "'" + user_message[1] + "'"d.ExecNonQuery(sql)print('挂失结束。\n谢谢您的光临')def un_lock(self):account = input('欢迎使用ATM存取款一体机,请输入银行卡卡号')d = MSSQL()sql = 'SELECT * FROM account WHERE id=' + accountresult_list = d.ExecQuery(sql)if len(result_list) == 0:print('非法卡,请重试')else:user_message = result_list[0]for i in range(3):password = input('请输入密码')if password == user_message[2]:if user_message[5] == 1:print('您的余额为', user_message[3])is_lock = input('您确定要解锁您的银行卡吗?输入0解锁银行卡,输入其他字符返回')if is_lock != '0':returnelse:sql = 'UPDATE account SET is_lock=0 WHERE id=' + "'" + user_message[1] + "'"d.ExecNonQuery(sql)print('解锁成功')returnelse:print('您的银行卡未锁定,无法操作')returnelse:print('密码错误,请重试')print('密码错误次数过多,银行卡已锁定')sql = 'UPDATE account SET is_lock=1 WHERE id=' + "'" + user_message[1] + "'"d.ExecNonQuery(sql)print('挂失结束。\n谢谢您的光临')def welcome():welcome_ = '''
********************************************
*** ***
*** ***
*** 欢迎登录银行管理系统 ***
*** ***
*** ***
********************************************'''print(welcome_)def main_menu():menu = '''
**************************************************
*** ***
*** 1.开户(1) 2.查询(2) ***
*** 3.取款(3) 4.存款(4) ***
*** 5.转账(5) 6.锁定(6) ***
*** 7.解锁(7) ***
*** ***
*** 退出(Q) ***
*** ***
**************************************************'''print(menu)def login():acc = input('请输入管理员账户:')if acc != 'admin':print('管理员账户输入错误......')exit(0)p_s_w_d = input('请输入密码:')if p_s_w_d != '12345':print('输入密码有误......')exit(0)print('操作成功,请稍后......')def choose():a = Account()choose_ = input('请输入您的操作')if choose_ == '1':a.new_account()elif choose_ == '2':a.find()elif choose_ == '3':a.get_money()elif choose_ == '4':a.save_money()elif choose_ == '5':a.transfer_money()elif choose_ == '6':a.lock()elif choose_ == '7':a.un_lock()elif choose_ == 'Q':exit(0)else:print('输入错误')def main():welcome()login()while True:main_menu()choose()if __name__ == '__main__':main()
银行管理系统(使用SQL Server)-Python快速编程入门(第2版)-人民邮电出版社-阶段案例相关推荐
- Python快速编程入门 第2版 实训案例及课后编程题
目录 本文档仅供参考,更新了 第2章 第3章 第4章 第5章 第6章 第7章 本文档仅供参考,更新了6.7章 第2章 2.4.1打印购物小票 蚂蚁森林是支付宝客户端发起"碳账户"的 ...
- 【python快速编程入门 第2版】第一章 python概述 习题
一.填空题 1.Python是面向___对象的高级语言. 2.Python 可以在多种平台运行,这体现了Python语言_可移植性的特性. 3.Python模块的本质是.py文件. 4.使用impor ...
- Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)
全文目录 ==先导知识== 1 认识Python 1.1.1 Python的发展历程 1.1.2 Python语言的特点 2. Python解释器的安装与Python程序运行 1.2.1 安装Pyth ...
- python快速编程入门教程-终于懂得python快速编程入门教程
为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...
- [转载] Python快速编程入门课后程序题答案
参考链接: Python程序添加两个矩阵 前言 本文只是简单的整理了一下课后习题的编程题,具体的填空.选择.判断可以见:Python快速编程入门课后习题答案 第一章 1.编写一个Python程序,输出 ...
- 黑马程序员 python快速编程入门课后答案_Python快速编程入门课后程序题答案
前言 本文只是简单的整理了一下课后习题的编程题,具体的填空.选择.判断可以见:Python快速编程入门课后习题答案 第一章 1.编写一个Python程序,输出如下图效果. ++++++++++ + ...
- Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)
全文目录 ==先导知识== 学习目标: 2.1 代码格式 2.1.1 注释 2.1.2 缩进 2.1.3 语句换行 2.2 标识符和关键字 2.2.1 标识符 2.2.2 关键字 2.3 变量和数据类 ...
- Python快速编程入门课后习题答案
文章目录 前言 第一章 一.填空题 二.判断题 三.选择题 四.简答题 第二章 一.填空题 二.判断题 三.选择题 四.简答题 第三章 一.填空题 二.判断题 三.选择题 四.简答题 第四章 一.单选 ...
- Python快速编程入门课后程序题答案
前言 本文只是简单的整理了一下课后习题的编程题,具体的填空.选择.判断可以见:Python快速编程入门课后习题答案 第一章 1.编写一个Python程序,输出如下图效果. ++++++++++ + ...
最新文章
- 51单片机学习笔记(郭天祥版)(4)——练习、动态扫描、练习、数码管消影...
- 创建和应用Java包文件的两种方式(转)
- python的序列类型及其特点_Fluent Python 笔记——序列类型及其丰富的操作
- C# BackgroudWorker
- OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
- 阿里内核月报2017年01月
- java连接mysql数据库 R_Java连接Mysql数据库详细代码实例
- EAR、JAR、WAR(IT)
- 初学objective c语言4 dealloc
- 容量规划的一些探讨与实践
- linux下的关机重启
- 使用python实现深度神经网络--学习笔记
- dell服务器主板型号怎么看,我不懂硬件,帮我看看DELL600M的主板是什么型号
- pygame按键持续按下响应
- 关于Winxp U盘无法复制磁盘写保护解决办法
- java游戏服务端实现
- 中兴B860AV2.1B电视盒子刷机固件
- OpenGL | 设置视口glViewport 裁剪glScissor 屏幕截图 glReadPixel
- 公司欠债不还,法人不再被列入失信黑名单啦
- 3.2.2对中文的考察2
热门文章
- 微信内测朋友圈内容转发功能;快手前副总裁侵占756万余元,一审获刑7年;​俄罗斯法院驳回苹果上诉,将继续进行反垄断调查|极客头条
- 织梦DedeCMS搜索页面搜索结果总数调用方法
- python12306爬虫_爬虫12306返回数据怎么解析
- 华为云数据中心建设全面复工进行中,预计2021年投入使用
- 2021消防设施操作员考试实操口述题及答案解析
- 北纬三十度“神命谷”旅游策划方案
- FreeMarker 模板生成 PDF电子凭证/图片
- IDEA 程序包不存在,找不到符号但是明明存在对应的jar包 的解决方案
- 1-5分钟上手自动化测试——Airtest+Poco快速上手
- 反混淆JavaScript