stay hungry, stay foolish.求知若饥,虚心若愚。

今天和大家分享一个python的实战案例,很多人在学习过程中都希望通过一些案例来试一下,也给自己一点动力。那么下面介绍一下这次要介绍的内容,这个也是博主最近学的,要相信自己可以搞得定。

那么现在进入正题,实战要求是做一个银行系统,就是我们去银行办业务时候会有个自助的ATM机,现在大部分业务都是由他来解决的。首先自己想一想,用面向对象的思想该怎样实现这个系统呢?都有哪些对象?他们各自的功能都有什么?想到的越多越好,在实现的时候,碰到一个问题解决一个问题,过程当中问题很多,也不是很容易解决,不过也就是这样的过程才能学到新的东西。

一、准备工作

首先走进银行的大门,会有工作人员来询问需要办理什么业务,当然得实话实说了,不过这个和系统没什么关系(* ̄︶ ̄)。接下来,如果要办理的业务是比较大众化的,可以在机器上完成,那么她就会带着我们到一个庞大的小机器旁边。前面他还需要操作几下,来让机器可以为我们工作,有时可以见到招呼一个更高级的员工来输下指纹。这些我们可以理解为管理员来启动系统(有些人是不是觉得哪有这么麻烦,主要我这里说的是银行里面那几台功能比较全的,不单单是简单的自动取款机)。

接下来该办理我们的业务了,都有哪些业务呢?先列举一些:查余额,存款,取款,转账,改个密码,还可以挂失锁卡,对应还能解锁,把最基本的忘记了,没有办卡哪有这些操作呢,开户也得算上,补卡,销户等等。

到这里了,我们和实际情况相比没有实体的卡,所以会有一些差异。剩下的过程中想到了再说。

二、转换思想

前面大概确定了需要实现的功能,最终我们还是要写成代码,所以得从编程的思想来考虑那些需求。

首先要考虑这个系统中有哪些对象,从人到银行的ATM机都有哪些事物。人,银行卡,ATM机,这三个是必须有的了,还需要什么,开始办理业务时候那个帮我们操作的人有很多和我们用户不一样的操作,把他也当做一个对象。

人。人这个对象有哪些属性呢?人有自己的一些信息,还有银行卡,剩下要办理的业务我们人为的给定。

卡。卡也有本身的一些信息。

ATM。atm机的功能就要多一些了,首先就是上面整理出来的那些存取款等等的功能,他都得实现。除此之外还有个工作人员对他的操作,他也得处理一下。

工作人员。他们有启用和关闭这个系统的权利。

大体方向有了,剩下的就一点点的完善。

三、功能实现

先从简单的开始,前面说到,客户和卡的属性还是比较单纯的,那就先把他们解决了。

1 #银行卡:卡号,卡的密码,余额

2 classCard(object):3 def __init__(self, cardId, cardPasswd, cardMoney):4 self.cardId =cardId5 self.cardPasswd =cardPasswd6 self.cardMony = cardMoney

1 #客户:姓名,身份证号,手机号,银行卡(性别年龄那些只是多了个属性,操作时一样的,就不多写了)

2 classUser(object):3 def __init__(self, name, idCard, phone, card):4 self.name =name5 self.idCard =idCard6 self.phone =phone7 self.card = card

以上两个类是对银行卡的客户的一个初始化,里面都是列写了一下必要的属性,比如补卡得用身份证,这里通过身份证号代替,等等。其中人的属性里的卡就是上面定义的卡,人的这一个卡属性就包括卡的内部几个属性。

接下来写一下管理员的功能:

1 importtime2

3 classAdmin(object):4 #为管理员设置个账号密码,为了不随便让人能操作一些危险的内容。

5 admin = "1"

6 passwd = "1"

7

8 #我们把初始的界面就放在管理员的类里了,他是第一个操作这个机器的嘛

9 defprintAdminView(self):10 print("****************************************************")11 print("* *")12 print("* *")13 print("* 欢迎登陆银行 *")14 print("* *")15 print("* *")16 print("****************************************************")17

18 defprintSysFunctionView(self):19 print("****************************************************")20 print("* 开户(1) 查询(2) *")21 print("* 取款(3) 存款(4) *")22 print("* 转账(5) 改密(6) *")23 print("* 锁定(7) 解锁(8) *")24 print("* 补卡(9) 销户(0) *")25 print("* 退出(q) *")26 print("****************************************************")27

28 #这里就是开始时候得验证一下是不是管理员,然后再决定是不是给他这些权利

29 defadminOption(self):30 inputAdmin = input("请输入管理员账号:")31 if self.admin !=inputAdmin:32 print("输入账号有误!")33 return -1

34 inputPasswd = input("请输入管理员密码:")35 if self.passwd !=inputPasswd:36 print("密码输入有误!")37 return -1

38

39 #能执行到这里说明账号密码正确

40 print("操作成功,请稍后······")41 time.sleep(2)42 return 0

上面的代码中有个time.sleep(),这个是为了让系统更生动一些,设置的延迟,来模拟系统在大量数据时操作的时延。

前面几个是比较好理解的,现在开始实现我们的系统的功能。这些就放在ATM机的模块里了,有需求就再修改添加策略。

按照上面的那个目录的顺序来,第一个要实现的功能就是开户。开户就得创建出那一系列的属性。并且这些信息我们还需要存储起来,要不然下次再来的时候就发现自己办的卡已经无效了。这些信息可以使用一个键值对来存储,那么key用哪个属性呢。考虑一下,姓名:可能有重名的,身份证号:这个人也许会办不止一张卡,最保险的就是卡号了,不会有卡号相同的吧。那么卡号作为key,其他的个人信息,银行卡信息都存到value中去。现在就在ATM下初始化一个字典(这里还有点问题,稍后再说)。

1 def __init__(self, allUsers):2 self.allUsers = allUsers #用户字典

1 #开户

2 defcreatUser(self):3 #目标:向用户字典中添加一对键值对(卡号->用户)

4 name = input("请输入您的名字:")5 idCard = input("请输入您的身份证号:")6 phone = input("请输入您的电话号码:")7 prestoreMoney = int(input("请输入预存款金额:"))8 if prestoreMoney <0:9 print("预存款输入有误!开户失败")10 return -1

11

12 onePasswd = input("请设置密码:")13

14 #生成银行卡号

15 cardStr = self.randomCardId() #生成号码通过一个函数来实现,让这里的逻辑更清晰一点

16 card = Card(cardStr, onePasswd, prestoreMoney) #把卡的信息放到这张卡的对象中

17

18 user = User(name, idCard, phone, card) #个人信息也存入客户的对象中

19 #存到字典

20 self.allUsers[cardStr] = user #这就实现了通过一个银行卡号来索引个人信息以及里面的银行卡属性

21 print("开户成功!请记住卡号:" + cardStr)

上面有个生成银行卡没有说,这个其实不难,只要随机生成一组数就可以了,不过这个随机生成的得保证不能和前面已经有的卡号重复了,否则索引就有问题了。

1 #生成卡号

2 defrandomCardId(self):3 whileTrue:4 str = ""

5 for i in range(6):6 ch = chr(random.randrange(ord("0"), ord("9") + 1))7 str +=ch8 #判断是否重复

9 if notself.allUsers.get(str): # 这里是通过找一下原来的字典中是否有这个key,如果没有的话那么这个卡号就合法,前面要有个not,没有找到这个卡号那么我们创建这个卡号10 return str

上面已经可以开通一个账户并存储了,不过我们在真正开户时候都需要输入两次密码来确保密码不会不小心输错,其实后面有些功能也需要验证密码。可以再写一个函数来验证密码,以后使用的时候也可以直接调用。

1 #验证密码

2 def checkPasswd(self, realPasswd): #这里传入的参数就是我们第一次输入的密码,下面要检验第一次输入是不是有误

3 for i in range(3):4 tempPasswd = input("请输入密码:")5 if tempPasswd ==realPasswd:6 returnTrue7 return False

其实后面的一些功能和这个是类似的,这里就不赘述了,先动手试一试,尽量的想的全面些。我会把完整的代码放在最后,可以参考一下。

最终要实现这些功能还是再写一个主程序比较好,更直观,也方便把理清他们之间的关系。首先主程序里需要调用管理员的登录,之后是客户的使用。管理员的登录上面写了,再调用一下就可以。客户的需求需要把每项功能和操作对应起来。先显示出都有哪些功能可以选择,再操作。比如像这样:

1 whileTrue:2 admin.printSysFunctionView()3 #等待用户操作

4 option = input("请输入您的操作:")5 if option == "1":6 #print('开户')

7 atm.creatUser()8 elif option == "2":9 #print("查询")

10 atm.searchUserInfo()11 elif option == "3":12 #print("取款")

13 atm.getMoney()14 elif option == "4":15 #print("存储")

16 atm.saveMoney()17 elif option == "5":18 #print("转账")

19 atm.transferMoney()20 elif option == "6":21 #print("改密")

22 atm.changePasswd()23 elif option == "7":24 #print("锁定")

25 atm.lockUser()26 elif option == "8":27 #print("解锁")

28 atm.unlockUser()29 elif option == "9":30 #print("补卡")

31 atm.newCard()32 elif option == "0":33 #print("销户")

34 atm.killUser()35 elif option == "q":36 #print("退出")

上面这所有的操作,都需要最终长期存储到键值对中,我们这里先用文件来储存,也可以存储到数据库中。既然要长期存储起来,就得把他序列化到磁盘上,使用pickle库。

1 #每次使用前,需要把内容先加载下来

2 filepath = os.path.join(os.getcwd(), "allusers.txt")3 f = open(filepath, "rb")4 allUsers =pickle.load(f)5 atm =ATM(allUsers)6

7 #而在操作结束的时候,要把操作过的内容重新写到磁盘中

8 f = open(filepath, "wb")9 pickle.dump(atm.allUsers, f)10 f.close()

到这里就出现了个问题,pickle.load(),当我们第一次使用时里面并没有存储东西,他自然也就不知道我们想要存储什么样格式的内容。所以第一次我们得手动的创建一个空字典,然后将一组信息存进去。下回使用的时候就可以直接load来使用。

在一开始测试的时候记不得里面存储的内容,我就先写了个查看信息的隐藏功能。后来感觉也许银行后台应该也有这样的功能,就没有删掉,虽然是很简单的显示,至少可以体现出他的思想。有兴趣的同学可以做的更好点。

1 #这是上面使用这个功能的入口,并没有显式的展示出来,仅当管理员这样操作时会调用函数

2 elif option == "1122332244":3 admin.ban(allUsers)4

5 #这里是调用函数后显示所有存储的信息的内容

6 defban(self, allUsers):7 for key inallUsers:8 print("账号:" + key + "\n" + "姓名:" + allUsers[key].name + "\n" + "身份证号:" + allUsers[key].idCard + "\n" + "电话号码:" +allUsers[9 key].phone + "\n" + "银行卡密码:" + allUsers[key].card.cardPasswd + "\n")

上面我只是把系统的其中一部分拿出来解释了一下,需要把里面的功能完善一下。比如把密码验证等等得放到功能里面,还有一些面向对象的操作,需要创建对象,还需要考虑到每个对象之间的关系,比如银行卡的对象作为客户对象的属性,需要通过参数传进去。仔细琢磨一下,把这个系统完成。在下面放上完整的程序,上面东西不是很清晰的话,那就一点一点的看下面的代码,找找感觉。

importtimeimportrandomimportpickleimportosclassCard(object):def __init__(self, cardId, cardPasswd, cardMoney):

self.cardId=cardId

self.cardPasswd=cardPasswd

self.cardMony=cardMoney

self.cardLock= False #后面到了锁卡的时候需要有个卡的状态

classUser(object):def __init__(self, name, idCard, phone, card):

self.name=name

self.idCard=idCard

self.phone=phone

self.card=cardclassAdmin(object):

admin= "1"passwd= "1"

defprintAdminView(self):print("****************************************************")print("* *")print("* *")print("* 欢迎登陆银行 *")print("* *")print("* *")print("****************************************************")defprintSysFunctionView(self):print("****************************************************")print("* 开户(1) 查询(2) *")print("* 取款(3) 存款(4) *")print("* 转账(5) 改密(6) *")print("* 锁定(7) 解锁(8) *")print("* 补卡(9) 销户(0) *")print("* 退出(q) *")print("****************************************************")defadminOption(self):

inputAdmin= input("请输入管理员账号:")if self.admin !=inputAdmin:print("输入账号有误!")return -1inputPasswd= input("请输入管理员密码:")if self.passwd !=inputPasswd:print("密码输入有误!")return -1

#能执行到这里说明账号密码正确

print("操作成功,请稍后······")

time.sleep(2)return0defban(self, allUsers):for key inallUsers:print("账号:" + key + "\n" + "姓名:" + allUsers[key].name + "\n" + "身份证号:" + allUsers[key].idCard + "\n" + "电话号码:" +allUsers[

key].phone+ "\n" + "银行卡密码:" + allUsers[key].card.cardPasswd + "\n")classATM(object):def __init__(self, allUsers):

self.allUsers= allUsers #用户字典

#开户

defcreatUser(self):#目标:向用户字典中添加一对键值对(卡号->用户)

name = input("请输入您的名字:")

idCard= input("请输入您的身份证号:")

phone= input("请输入您的电话号码:")

prestoreMoney= int(input("请输入预存款金额:"))if prestoreMoney <0:print("预存款输入有误!开户失败")return -1onePasswd= input("请设置密码:")#验证密码

if notself.checkPasswd(onePasswd):print("输入密码错误,开户失败!")return -1

#生成银行卡号

cardStr =self.randomCardId()

card=Card(cardStr, onePasswd, prestoreMoney)

user=User(name, idCard, phone, card)#存到字典

self.allUsers[cardStr] =userprint("开户成功!请记住卡号:" +cardStr)#查询

defsearchUserInfo(self):

cardNum= input("请输入您的卡号:")#验证是否存在该卡号

user =self.allUsers.get(cardNum)if notuser:print("该卡号不存在,查询失败!")return -1

#判断是否锁定

ifuser.card.cardLock:print("该卡已锁定!请解锁后再使用其功能!")return -1

#验证密码

if notself.checkPasswd(user.card.cardPasswd):print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")

user.card.cardLock=Truereturn -1

print("账号:%s 余额:%d" %(user.card.cardId, user.card.cardMony))#取款

defgetMoney(self):

cardNum= input("请输入您的卡号:")#验证是否存在该卡号

user =self.allUsers.get(cardNum)if notuser:print("该卡号不存在,取款失败!")return -1

#判断是否锁定

ifuser.card.cardLock:print("该卡已锁定!请解锁后再使用其功能!")return -1

#验证密码

if notself.checkPasswd(user.card.cardPasswd):print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")

user.card.cardLock=Truereturn -1

#开始取款

amount = int(input("验证成功!请输入取款金额:"))if amount >user.card.cardMony:print("取款金额有误,取款失败!")return -1

if amount <0:print("取款金额有误,取款失败!")return -1user.card.cardMony-=amountprint("您取款%d元,余额为%d元!" %(amount, user.card.cardMony))#存款

defsaveMoney(self):

cardNum= input("请输入您的卡号:")#验证是否存在该卡号

user =self.allUsers.get(cardNum)if notuser:print("该卡号不存在,存款失败!")return -1

#判断是否锁定

ifuser.card.cardLock:print("该卡已锁定!请解锁后再使用其功能!")return -1

#验证密码

if notself.checkPasswd(user.card.cardPasswd):print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")

user.card.cardLock=Truereturn -1

#开始存款

amount = int(input("验证成功!请输入存款金额:"))if amount <0:print("存款金额有误,存款失败!")return -1user.card.cardMony+=amountprint("您存款%d元,最新余额为%d元!" %(amount, user.card.cardMony))#转账

deftransferMoney(self):

cardNum= input("请输入您的卡号:")#验证是否存在该卡号

user =self.allUsers.get(cardNum)if notuser:print("该卡号不存在,转账失败!")return -1

#判断是否锁定

ifuser.card.cardLock:print("该卡已锁定!请解锁后再使用其功能!")return -1

#验证密码

if notself.checkPasswd(user.card.cardPasswd):print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")

user.card.cardLock=Truereturn -1

#开始转账

amount = int(input("验证成功!请输入转账金额:"))if amount > user.card.cardMony or amount <0:print("金额有误,转账失败!")return -1newcard= input("请输入转入账户:")

newuser=self.allUsers.get(newcard)if notnewuser:print("该卡号不存在,转账失败!")return -1

#判断是否锁定

ifnewuser.card.cardLock:print("该卡已锁定!请解锁后再使用其功能!")return -1user.card.cardMony-=amount

newuser.card.cardMony+=amount

time.sleep(1)print("转账成功,请稍后···")

time.sleep(1)print("转账金额%d元,余额为%d元!" %(amount, user.card.cardMony))#改密

defchangePasswd(self):

cardNum= input("请输入您的卡号:")#验证是否存在该卡号

user =self.allUsers.get(cardNum)if notuser:print("该卡号不存在,改密失败!")return -1

#判断是否锁定

ifuser.card.cardLock:print("该卡已锁定!请解锁后再使用其功能!")return -1

#验证密码

if notself.checkPasswd(user.card.cardPasswd):print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")

user.card.cardLock=Truereturn -1

print("正在验证,请稍等···")

time.sleep(1)print("验证成功!")

time.sleep(1)#开始改密

newPasswd = input("请输入新密码:")if notself.checkPasswd(newPasswd):print("密码错误,改密失败!")return -1user.card.cardPasswd=newPasswdprint("改密成功!请稍后!")#锁定

deflockUser(self):

cardNum= input("请输入您的卡号:")#验证是否存在该卡号

user =self.allUsers.get(cardNum)if notuser:print("该卡号不存在,锁定失败!")return -1

ifuser.card.cardLock:print("该卡已被锁定,请解锁后再使用其功能!")return -1

if notself.checkPasswd(user.card.cardPasswd):print("密码输入有误,锁定失败!")return -1tempIdCard= input("请输入您的身份证号码:")if tempIdCard !=user.idCard:print("身份证号输入有误,锁定失败!")return -1

#锁定

user.card.cardLock =Trueprint("锁定成功!")#解锁

defunlockUser(self):

cardNum= input("请输入您的卡号:")#验证是否存在该卡号

user =self.allUsers.get(cardNum)if notuser:print("该卡号不存在,解锁失败!")return -1

if notuser.card.cardLock:print("该卡未被锁定,无需解锁!")return -1

if notself.checkPasswd(user.card.cardPasswd):print("密码输入有误,解锁失败!")return -1tempIdCard= input("请输入您的身份证号码:")if tempIdCard !=user.idCard:print("身份证号输入有误,解锁失败!")return -1

#解锁

user.card.cardLock =Falseprint("解锁成功!")#补卡

defnewCard(self):

cardNum= input("请输入您的卡号:")#验证是否存在该卡号

user =self.allUsers.get(cardNum)if notuser:print("该卡号不存在!")return -1tempname= input("请输入您的姓名:")

tempidcard= input("请输入您的身份证号码:")

tempphone= input("请输入您的手机号码:")if tempname !=self.allUsers[cardNum].name\or tempidcard !=self.allUsers.idCard\or tempphone !=self.allUsers.phone:print("信息有误,补卡失败!")return -1newPasswd= input("请输入您的新密码:")if notself.checkPasswd(newPasswd):print("密码错误,补卡失败!")return -1self.allUsers.card.cardPasswd=newPasswd

time.sleep(1)print("补卡成功,请牢记您的新密码!")#销户

defkillUser(self):

cardNum= input("请输入您的卡号:")#验证是否存在该卡号

user =self.allUsers.get(cardNum)if notuser:print("该卡号不存在,转账失败!")return -1

#判断是否锁定

ifuser.card.cardLock:print("该卡已锁定!请解锁后再使用其功能!")return -1

#验证密码

if notself.checkPasswd(user.card.cardPasswd):print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")

user.card.cardLock=Truereturn -1

delself.allUsers[cardNum]

time.sleep(1)print("销户成功,请稍后!")#验证密码

defcheckPasswd(self, realPasswd):for i in range(3):

tempPasswd= input("请输入密码:")if tempPasswd ==realPasswd:returnTruereturnFalse#生成卡号

defrandomCardId(self):whileTrue:

str= ""

for i in range(6):

ch= chr(random.randrange(ord("0"), ord("9") + 1))

str+=ch#判断是否重复

if notself.allUsers.get(str):returnstr#主函数,不在上面的类中

defmain():#界面对象

admin =Admin()#管理员开机

admin.printAdminView()ifadmin.adminOption():return -1

#由于一开始文件里并没有数据,不知道要存的是个字典,先存一个,后面再把这个关了

#allUsers = {}

#提款机对象

filepath = os.path.join(os.getcwd(), "allusers.txt")

f= open(filepath, "rb")

allUsers=pickle.load(f)

atm=ATM(allUsers)whileTrue:

admin.printSysFunctionView()#等待用户操作

option = input("请输入您的操作:")if option == "1":#print('开户')

atm.creatUser()elif option == "2":#print("查询")

atm.searchUserInfo()elif option == "3":#print("取款")

atm.getMoney()elif option == "4":#print("存储")

atm.saveMoney()elif option == "5":#print("转账")

atm.transferMoney()elif option == "6":#print("改密")

atm.changePasswd()elif option == "7":#print("锁定")

atm.lockUser()elif option == "8":#print("解锁")

atm.unlockUser()elif option == "9":#print("补卡")

atm.newCard()elif option == "0":#print("销户")

atm.killUser()elif option == "q":#print("退出")

if notadmin.adminOption():#将当前系统中的用户信息保存到文件当中

f = open(filepath, "wb")

pickle.dump(atm.allUsers, f)

f.close()return -1

elif option == "1122332244":

admin.ban(allUsers)

time.sleep(2)if __name__ == "__main__":

main()

银行系统

上面就是整个系统了,其实主要还是思想,模块较多,没有全部解释,如果程序当中有哪里不理解,可以留言讨论。注意上述完整代码主要是供大家了解整个系统,想要实现还需在自己电脑上重新配置,注意那些文件的路径,还有一个存放信息的txt文件,把他搞懂后,相信让他运行起来不难。

python 银行业务系统程序编程写_python实战案例--银行系统相关推荐

  1. python 银行业务系统程序编程写_python多线程实现代码(模拟银行服务操作流程)

    1.模拟银行服务完成程序代码 目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队.排队等待.叫号服务等功能,代替了人们站队的辛苦. 排队叫号 ...

  2. python从第二行开始写_Python第2课 - 第一个Python程序

    在本节课中,你将运行自己的第一个程序 -- hello_world.py.在这之前,需要熟悉两个概念:命令行模式和Python交互模式.同时掌握输入和输出. 1. 命令行模式和Python交互模式 1 ...

  3. cmd执行python 环境变量应该怎么写_python怎么运行py文件?.py文件cmd命令方法及环境变量配置教程...

    python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写.python在生物信息.统计.网页制作.计算等多个领域都体现出了强大的功能.python和其他脚本语言如java.R ...

  4. python代码说明文档怎么写_Python写完代码怎么用

    Python写完代码怎么用 python运行有两种方式,一种是在python交互式命令行下运行:另一种是使用文本编辑器,在命令行中直接运行. 一.命令行与交互式命令行 首先要搞清楚这个命令行的概念. ...

  5. python获取系统时间为字符串_python怎么获取系统当前的时间

    python获取系统当前的时间的方法:可以利用datetime.datetime.now()函数来获取.具体方法:1.导入datetime包:2.获取当前的时间,如[curr_time = datet ...

  6. python计算器小程序源码_python代码编写计算器小程序

    本文实例为大家分享了python计算器小程序的具体代码,供大家参考,具体内容如下 import tkinter import tkinter.messagebox import math class ...

  7. python计算器小程序源码_python编写计算器程序-python代码编写计算器小程序

    本文实例为大家分享了python计算器小程序的具体代码,供大家参考,具体内容如下 import tkinter import tkinter.messagebox import math class ...

  8. 牛!Python 全栈必备的 150 个实战案例,一次性获得!

    Python 全栈将是你升职加薪的硬通货. 我见过很多的 Python 讲解教程和书籍,它们大都这样讲 Python 的: 先从 Python 的发展历史开始,介绍 Python 的基本语法规则,Py ...

  9. 微信小程序蓝牙BLE开发实战——案例(二)

    微信小程序蓝牙BLE开发实战(二) 上篇主要介绍在开发过程中应用到相关API操作.接下来介绍个人在项目开发中应用蓝牙BLE一些事情. 由于时间比较仓促, 有些注释没那么详细.请理解~写的不好欢迎各位大 ...

最新文章

  1. ubuntu apache2 的负载均衡和反向代理
  2. 9.Verilog端口定义以及模块例化和调用
  3. C语言 | 基于51单片机实现MPU6050的卡尔曼滤波算法(代码类2)
  4. ERROR: No query specified(Mysql数据库报错)
  5. python的两种循环结构_python分支和循环结构
  6. 【Go语言】【15】GO语言的面向对象
  7. 《王者荣耀》回应故障:3个工作日内补发排位赛星积分丢失
  8. Linux passwd系统错误,Linux系统处理”passwd: Authentication token manipulation error”错误...
  9. Struts中提示Invalid result location value/parameter
  10. 阶乘很简单?恕我直言,阶乘相关的面试题你还真不一定懂!
  11. 超越宝典汽配汽修管理系统——“维修业务”模块功能实现
  12. 计算机考试专业知识题库,计算机考试题库:计算机考试练习题(113)
  13. 微信小程序及其兼容性
  14. 服务器的mib文件,snmp 服务器增加 mib
  15. 双卡手机,sim卡状态改变测试
  16. 拉格朗日插值和埃尔米特插值
  17. Fortran简明自学手册
  18. 《薛兆丰经济学讲义》的118个思考题
  19. html从入门到精通胡菘,高职电商网页设计教学实践.docx
  20. MediaPlayer提示“无法播放视频”

热门文章

  1. angular ng2-file-upload 上传多视频、多图片,并本地预览;后端C#接收
  2. 什么是JSON数据格式?
  3. 通过WebMagic框架抓取网页中的手机号(实验练习一)
  4. 运营商劫持狠起来,连json都改
  5. html点击打开二级目录是什么意思,网站二级目录有什么用 为什么要用二级目录...
  6. 20个HTML5/CSS3超酷应用
  7. 织梦网站如何设置404页面
  8. Unity Shader入门精要第七章 基础纹理渐变纹理
  9. 目前Google推出的服务(ZZ)
  10. 江苏中职计算机应用,江苏对口单招计算机应用专业学校