1. 创建文件夹    USE master
  2. GO
  3. EXEC xp_cmdshell 'mkdir d:\bank', NO_OUTPUT
  4. 建库  
  5. --检验数据库是否存在,如果为真,删除此数据库--  
  6. IF exists(SELECT * FROM sysdatabases WHERE name='bankDB')
  7. DROP DATABASE bankDB
  8. GO
  9. --创建建库bankDB  
  10. CREATE DATABASE bankDB
  11. ON
  12. (
  13. NAME='bankDB_data',
  14. FILENAME='d:\bank\bankDB_data.mdf',
  15. SIZE=3mb,
  16. FILEGROWTH=15%
  17. )
  18. LOG ON
  19. (
  20. NAME= 'bankDB_log',
  21. FILENAME='d:\bank\bankDB_log.ldf',
  22. SIZE=3mb,
  23. FILEGROWTH=15%
  24. )
  25. GO
  26. USE bankDB
  27. 建表
    1. GO
    2. CREATE TABLE userInfo  --用户信息表
    3. (
    4. customerID INT IDENTITY(1,1),
    5. customerName CHAR(8) NOT NULL,
    6. PID CHAR(18) NOT NULL,
    7. telephone CHAR(13) NOT NULL,
    8. address VARCHAR(50)
    9. )
    10. GO
    11. CREATE TABLE cardInfo  --银行卡信息表
    12. (
    13. cardID  CHAR(19) NOT NULL,
    14. curType  CHAR(5) NOT NULL,
    15. savingType  CHAR(8) NOT NULL,
    16. openDate  DATETIME NOT NULL,
    17. openMoney  MONEY NOT NULL,
    18. balance  MONEY NOT NULL,
    19. pass CHAR(6) NOT NULL,
    20. IsReportLoss BIT  NOT NULL,
    21. customerID INT NOT NULL
    22. )
    23. GO
    24. CREATE TABLE transInfo  --交易信息表
    25. (
    26. transDate  DATETIME NOT NULL,
    27. transType  CHAR(4) NOT NULL,
    28. cardID  CHAR(19) NOT NULL,
    29. transMoney  MONEY NOT NULL,
    30. remark  TEXT
    31. )
    32. GO
    33. 加约束
      1. /* userInfo表的约束
      2. customerID  顾客编号    自动编号(标识列),从1开始,主键
      3. customerName    开户名 必填
      4. PID 身份证号    必填,只能是18位或15位,身份证号唯一约束
      5. telephone   联系电话    必填,格式为xxxx-xxxxxxxx或手机号13位
      6. address 居住地址    可选输入
      7. ALTER TABLE userInfo
      8. ADD CONSTRAINT PK_customerID PRIMARY KEY(customerID),
      9. CONSTRAINT CK_PID CHECK( len(PID)=18 or len(PID)=15 ),
      10. CONSTRAINT UQ_PID UNIQUE(PID),
      11. CONSTRAINT CK_telephone CHECK( telephone like '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or telephone like '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or len(telephone)=13 )
      12. GO
      13. /*cardInfo表的约束
      14. cardID  卡号  必填,主健 , 银行的卡号规则和电话号码一样,一般前8位代表特殊含义,
      15. 如某总行某支行等。假定该行要求其营业厅的卡号格式为:1010 3576 xxxx xxx开始
      16. curType 货币  必填,默认为RMB
      17. savingType  存款种类    活期/定活两便/定期
      18. openDate    开户日期    必填,默认为系统当前日期
      19. openMoney   开户金额    必填,不低于1元
      20. balance 余额  必填,不低于1元,否则将销户
      21. pass    密码  必填,6位数字,默认为6个8
      22. IsReportLoss    是否挂失  必填,是/否值,默认为”否”
      23. customerID  顾客编号    必填,表示该卡对应的顾客编号,一位顾客可以办理多张卡
      24. ALTER TABLE cardInfo
      25. ADD CONSTRAINT  PK_cardID  PRIMARY KEY(cardID),
      26. CONSTRAINT  CK_cardID  CHECK(cardID LIKE '1010 3576 [0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]'),
      27. CONSTRAINT  DF_curType  DEFAULT('RMB') FOR curType,
      28. CONSTRAINT  CK_savingType  CHECK(savingType IN ('活期','定活两便','定期')),
      29. CONSTRAINT  DF_openDate  DEFAULT(getdate()) FOR openDate,
      30. CONSTRAINT  CK_openMoney  CHECK(openMoney>=1),
      31. CONSTRAINT  CK_balance  CHECK(balance>=1),
      32. CONSTRAINT  CK_pass  CHECK(pass LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]'),
      33. CONSTRAINT  DF_pass  DEFAULT('888888') FOR pass,
      34. CONSTRAINT  DF_IsReportLoss DEFAULT(0) FOR IsReportLoss,
      35. CONSTRAINT  FK_customerID FOREIGN KEY(customerID) REFERENCES userInfo(customerID)
      36. GO
      37. /* transInfo表的约束
      38. transType       必填,只能是存入/支取
      39. cardID  卡号  必填,外健,可重复索引
      40. transMoney  交易金额    必填,大于0
      41. transDate   交易日期    必填,默认为系统当前日期
      42. remark  备注  可选输入,其他说明
      43. ALTER TABLE transInfo
      44. ADD CONSTRAINT  CK_transType  CHECK(transType IN ('存入','支取')),
      45. CONSTRAINT  FK_cardID  FOREIGN KEY(cardID) REFERENCES cardInfo(cardID),
      46. CONSTRAINT  CK_transMoney  CHECK(transMoney>0),
      47. CONSTRAINT  DF_transDATE DEFAULT(getdate()) FOR transDate
      48. GO
      49. 插入测试数据
        1. 张三开户,身份证:123456789012345,电话:010-67898978,地址:北京海淀
        2. 开户金额:1000 活期   卡号:1010 3576 1234 5678
        3. 李四开户,身份证:321245678912345678,电话:0478-44443333,
        4. 开户金额: 1  定期 卡号:1010 3576 1212 1134
        5. */
        6. SET NOCOUNT ON  --不显示受影响的条数信息
        7. INSERT INTO userInfo(customerName,PID,telephone,address )
        8. VALUES('张三','123456789012345','010-67898978','北京海淀')
        9. INSERT INTO cardInfo(cardID,savingType,openMoney,balance,customerID)
        10. VALUES('1010 3576 1234 5678','活期',1000,1000,1)
        11. INSERT INTO userInfo(customerName,PID,telephone)
        12. VALUES('李四','321245678912345678','0478-44443333')
        13. INSERT INTO cardInfo(cardID,savingType,openMoney,balance,customerID)
        14. VALUES('1010 3576 1212 1134','定期',1,1,2)
        15. SELECT * FROM userInfo
        16. SELECT * FROM cardInfo
        17. GO
        18. /*
        19. 张三的卡号(1010 3576 1234 5678)取款900元,李四的卡号(1010 3576 1212 1134)存款5000元,要求保存交易记录,以便客户查询和银行业务统计。
        20. 说明:当存钱或取钱(如300元)时候,会往交易信息表(transInfo)中添加一条交易记录,
        21. 同时应更新银行卡信息表(cardInfo)中的现有余额(如增加或减少500元)
        22. */
        23. /*--------------交易信息表插入交易记录--------------------------*/
        24. INSERT INTO transInfo(transType,cardID,transMoney)
        25. VALUES('支取','1010 3576 1234 5678',900)
        26. /*-------------更新银行卡信息表中的现有余额-------------------*/
        27. UPDATE cardInfo SET balance=balance-900 WHERE cardID='1010 3576 1234 5678'
        28. /*--------------交易信息表插入交易记录--------------------------*/
        29. INSERT INTO transInfo(transType,cardID,transMoney)
        30. VALUES('存入','1010 3576 1212 1134',5000)
        31. /*-------------更新银行卡信息表中的现有余额-------------------*/
        32. UPDATE cardInfo SET balance=balance+5000 WHERE cardID='1010 3576 1212 1134'
        33. GO
        34. /*--------检查测试数据是否正确---------*/
        35. SELECT * FROM cardInfo
        36. SELECT * FROM transInfo
        37. /*
        38. 常规业务操作
          1. /*---------修改密码-----*/
          2. --1.张三(卡号为1010 3576 1234 5678)修改银行卡密码为123456
          3. --2.李四(卡号为1010 3576 1212 1134)修改银行卡密码为123123
          4. update cardInfo set pass='123456' WHERE cardID='1010 3576 1234 5678'
          5. update cardInfo set pass='123123' WHERE cardID='1010 3576 1212 1134'
          6. SELECT * FROM cardInfo
          7. /*---------挂失帐号---------*/
          8. --李四(卡号为1010 3576 1212 1134)因银行卡丢失,申请挂失
          9. update cardInfo set IsReportLoss=1 WHERE cardID='1010 3576 1212 1134'
          10. SELECT * FROM cardInfo
          11. GO
          12. /*--------查询余额3000~6000之间的定期卡号,显示该卡相关信息-----------------*/
          13. SELECT * FROM cardInfo WHERE ((balance between 3000 and 6000) and (savingType='定期') )
          14. /*--------统计银行的资金流通余额和盈利结算------------------------------*/
          15. --统计说明:存款代表资金流入,取款代表资金.假定存款利率为千分之3,贷款利率为千分之8
          16. DECLARE @inMoney money
          17. DECLARE @outMoney money
          18. DECLARE @profit money
          19. SELECT * FROM transInfo
          20. SELECT @inMoney=sum(transMoney) FROM transInfo WHERE (transType='存入')
          21. SELECT @outMoney=sum(transMoney) FROM transInfo WHERE (transType='支取')
          22. print '银行流通余额总计为:'+ convert(varchar(20),@inMoney-@outMoney)+'RMB'
          23. set @profit=@outMoney*0.008-@inMoney*0.003
          24. print '盈利结算为:'+ convert(varchar(20),@profit)+'RMB'
          25. GO
          26. /*--------查询本周开户的卡号,显示该卡相关信息-----------------*/
          27. SELECT * FROM cardInfo WHERE (DATEDIFF(Day,getDate(),openDate)<DATEPART(weekday,openDate))
          28. /*---------查询本月交易金额最高的卡号----------------------*/
          29. SELECT * FROM transInfo
          30. SELECT DISTINCT cardID FROM transInfo WHERE  transMoney=(SELECT Max(transMoney) FROM transInfo)
          31. /*---------查询挂失帐号的客户信息---------------------*/
          32. SELECT customerName as 客户姓名,telephone as 联系电话 FROM userInfo
          33. WHERE customerID IN (SELECT customerID FROM cardInfo WHERE IsReportLoss=1)
          34. /*------催款提醒:例如某种业务的需要,每个月末,如果发现用户帐上余额少于200元,将致电催款。---*/
          35. SELECT customerName as 客户姓名,telephone as 联系电话,balance as 帐上余额
          36. FROM userInfo INNER JOIN cardInfo ON  userInfo.customerID=cardInfo.customerID WHERE balance<200
          37. /*
          38. 索引和视图
            1. --1.创建索引:给交易表的卡号cardID字段创建重复索引
            2. create NONCLUSTERED INDEX index_cardID ON transInfo(cardID)WITH FILLFACTOR=70
            3. --2.按指定索引查询 张三(卡号为1010 3576 1212 1134)的交易记录
            4. GO
            5. SELECT * FROM transInfo (INDEX=index_cardID) WHERE cardID='1010 3576 1234 5678'
            6. GO
            7. --3.创建视图:为了向客户显示信息友好,查询各表要求字段全为中文字段名。
            8. create VIEW view_userInfo  --银行卡信息表视图
            9. AS
            10. select customerID as 客户编号,customerName as 开户名, PID as 身份证号,
            11. telephone as 电话号码,address as 居住地址  from userInfo
            12. GO
            13. create VIEW view_cardInfo  --银行卡信息表视图
            14. AS
            15. select cardID as 卡号,curType as 货币种类, savingType as 存款类型,openDate as 开户日期,
            16. balance as 余额,pass 密码,IsReportLoss as 是否挂失,customerID as 客户编号  from cardInfo
            17. GO
            18. create VIEW view_transInfo  --交易信息表视图
            19. AS
            20. select transDate as 交易日期,transType as 交易类型, cardID as 卡号,transMoney as 交易金额,
            21. remark as 备注  from transInfo
            22. GO
            23. /*
            24. 存储过程
              1. --1.取钱或存钱的存储过程
              2. --drop proc proc_takeMoney
              3. create procedure proc_takeMoney @card char(19),@m money,@type char(4),@inputPass char(6)=''
              4. AS
              5. print '交易正进行,请稍后......'
              6. if (@type='支取')
              7. if ((SELECT pass FROM cardInfo WHERE cardID=@card)<>@inputPass )
              8. begin
              9. raiserror ('密码错误!',16,1)
              10. return
              11. end
              12. DECLARE @myTransType char(4),@outMoney MONEY,@myCardID char(19)
              13. SELECT @myTransType=transType,@outMoney=transMoney ,@myCardID=cardID FROM transInfo where cardID=@card
              14. DECLARE @mybalance money
              15. SELECT @mybalance=balance FROM cardInfo WHERE cardID=@card
              16. if (@type='支取')
              17. if (@mybalance>=@m+1)
              18. update cardInfo set balance=balance-@m WHERE cardID=@myCardID
              19. else
              20. begin
              21. raiserror ('交易失败!余额不足!',16,1)
              22. print '卡号'+@card+'  余额:'+convert(varchar(20),@mybalance)
              23. return
              24. end
              25. else
              26. update cardInfo set balance=balance+@m WHERE cardID=@card
              27. print '交易成功!交易金额:'+convert(varchar(20),@m)
              28. SELECT @mybalance=balance FROM cardInfo WHERE cardID=@card
              29. print '卡号'+@card+'  余额:'+convert(varchar(20),@mybalance)
              30. INSERT INTO transInfo(transType,cardID,transMoney) VALUES(@type,@card,@m)
              31. GO
              32. --2.调用存储过程取钱或存钱 张三取300,李四存500
              33. --现实中的取款机依靠读卡器读出张三的卡号,这里根据张三的名字查出考号来模拟
              34. declare @card char(19)
              35. select @card=cardID from cardInfo Inner Join userInfo ON
              36. cardInfo.customerID=userInfo.customerID where customerName='张三'
              37. EXEC proc_takeMoney @card,300 ,'支取','123456'
              38. GO
              39. declare @card char(19)
              40. select @card=cardID from cardInfo Inner Join userInfo ON
              41. cardInfo.customerID=userInfo.customerID where customerName='李四'
              42. EXEC proc_takeMoney @card,500 ,'存入'
              43. select * from view_cardInfo
              44. select * from view_transInfo
              45. GO
              46. --3.产生随机卡号的存储过程(一般用当前月份数\当前秒数\当前毫秒数乘以一定的系数作为随机种子)
              47. --drop proc proc_randCardID
              48. create procedure proc_randCardID @randCardID char(19) OUTPUT
              49. AS
              50. DECLARE @r numeric(15,8)
              51. DECLARE @tempStr  char(10)
              52. SELECT  @r=RAND((DATEPART(mm, GETDATE()) * 100000 )+ (DATEPART(ss, GETDATE()) * 1000 )
              53. + DATEPART(ms, GETDATE()) )
              54. set @tempStr=convert(char(10),@r) --产生0.xxxxxxxx的数字,我们需要小数点后的八位数字
              55. set @randCardID='1010 3576 '+SUBSTRING(@tempStr,3,4)+' '+SUBSTRING(@tempStr,7,4)  --组合为规定格式的卡号
              56. GO
              57. --4.测试产生随机卡号
              58. DECLARE @mycardID char(19)
              59. EXECUTE proc_randCardID @mycardID OUTPUT
              60. print '产生的随机卡号为:'+@mycardID
              61. GO
              62. --5.开户的存储过程
              63. --drop proc proc_openAccount
              64. create procedure proc_openAccount @customerName char(8),@PID char(18),@telephone char(13)
              65. ,@openMoney money,@savingType char(8),@address varchar(50)=''
              66. AS
              67. DECLARE @mycardID char(19),@cur_customerID int
              68. --调用产生随机卡号的存储过程获得随机卡号
              69. EXECUTE proc_randCardID @mycardID OUTPUT
              70. while  exists(SELECT * FROM cardInfo WHERE cardID=@mycardID)
              71. EXECUTE proc_randCardID @mycardID OUTPUT
              72. print '尊敬的客户,开户成功!系统为您产生的随机卡号为:'+@mycardID
              73. print '开户日期'+convert(char(10),getdate(),111)+'  开户金额:'+convert(varchar(20),@openMoney)
              74. IF not exists(select * from userInfo where PID=@PID)
              75. INSERT INTO userInfo(customerName,PID,telephone,address )
              76. VALUES(@customerName,@PID,@telephone,@address)
              77. select @cur_customerID=customerID from userInfo where PID=@PID
              78. INSERT INTO cardInfo(cardID,savingType,openMoney,balance,customerID)
              79. VALUES(@mycardID,@savingType,@openMoney,@openMoney,@cur_customerID)
              80. GO
              81. --6.调用存储过程重新开户
              82. EXEC proc_openAccount '王五','334456889012678','2222-63598978',1000,'活期','河南新乡'
              83. EXEC proc_openAccount '赵二','213445678912342222','0760-44446666',1,'定期'
              84. select * from view_userInfo
              85. select * from view_cardInfo
              86. GO
              87. /*
              88. 事务
                1. --1.转帐的事务存储过程
                2. --drop proc proc_transfer
                3. create procedure proc_transfer @card1 char(19),@card2 char(19),@outmoney money
                4. AS
                5. begin tran
                6. print '开始转帐,请稍后......'
                7. DECLARE @errors int
                8. set @errors=0
                9. EXEC proc_takeMoney @card1,@outmoney ,'支取','123123'
                10. set @errors=@errors+@@error
                11. EXEC proc_takeMoney @card2,@outmoney ,'存入'
                12. set @errors=@errors+@@error
                13. if (@errors>0)
                14. begin
                15. print '转帐失败!'
                16. rollback tran
                17. end
                18. else
                19. begin
                20. print '转帐成功!'
                21. commit tran
                22. end
                23. GO
                24. --2.测试上述事务存储过程
                25. --从李四的帐户转帐2000到张三的帐户
                26. --同上一样,现实中的取款机依靠读卡器读出张三/李四的卡号,这里根据张三/李四的名字查出考号来模拟
                27. declare @card1 char(19),@card2 char(19)
                28. select @card1=cardID from cardInfo Inner Join userInfo ON
                29. cardInfo.customerID=userInfo.customerID where customerName='李四'
                30. select @card2=cardID from cardInfo Inner Join userInfo ON
                31. cardInfo.customerID=userInfo.customerID where customerName='张三'
                32. --调用上述事务过程转帐
                33. EXEC proc_transfer @card1,@card2,2000
                34. select * from view_userInfo
                35. select * from view_cardInfo
                36. select * from view_transInfo
                37. GO
                38. /*
                39. 安全
                  1. --1.添加SQL登录帐号
                  2. If not exists(SELECT * FROM master.dbo.syslogins WHERE loginname='sysAdmin')
                  3. begin
                  4. EXEC sp_addlogin 'sysAdmin', '1234'    --添加SQL登录帐号
                  5. EXEC   sp_defaultdb  'sysAdmin' , 'bankDB' --修改登录的默认数据库为bankDB
                  6. end
                  7. go
                  8. --2.创建数据库用户
                  9. EXEC sp_grantdbaccess  'sysAdmin', 'sysAdminDBUser'
                  10. GO
                  11. --3.--------给数据库用户授权
                  12. --为sysAdminDBUser分配对象权限(增删改查的权限)
                  13. GRANT SELECT,insert,update,delete,select  ON transInfo TO sysAdminDBUser
                  14. GRANT SELECT,insert,update,delete,select  ON userInfo TO sysAdminDBUser
                  15. GRANT SELECT,insert,update,delete,select  ON cardInfo TO sysAdminDBUser
                  16. GO

ATM取款机数据库设计的更多相关文章

  1. ATM取款机的数据库模拟开发和实战总结

    一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现高端的业务.有兴趣的可以看看,希望对同胞 ...

  2. 第一周:设计一个简易ATM取款机简易程序(2)

    1.了解用户对ATM取款机功能需求如下: 2.新建一个login函数使用for循环方法和if选择方法编写登陆界面用来及设置ATM内用户的金额和取款机内的金额: 3.使用新建函数方法及if选择方法编写登 ...

  3. 七、Oracle 数据库设计

    1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体. 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证 ...

  4. 大话JS面向对象之开篇万物皆对象------(ATM取款机引发的深思)

    一,总体概要 OO(面向对象)概念的提出是软件开发工程发展的一次革命,多年来我们借助它使得很多大型应用程序得以顺利实现.如果您还没有掌握并使用OO进行程序设计和开发,那么您无疑还停留在软件开发的石器时 ...

  5. Oracle实战训练——ATM取款机业务

    ATM取款机的数据库模拟开发和实战总结 一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现 ...

  6. 数据库设计中的Soft Delete模式

    最近几天有点忙,所以我们今天来一篇短的,简单地介绍一下数据库设计中的一种模式——Soft Delete. 可以说,该模式毁誉参半,甚至有非常多的人认为该模式是一个Anti-Pattern.因此在本篇文 ...

  7. 使用django开发博客过程记录1——数据库设计

    1.数据库设计 2.插入测试数据 3.配置相关问题 1.数据库设计 数据库有简单的三张表:Article.Category.Tag以下是代码 # -*- coding:utf-8 -*- from _ ...

  8. 基于SSM的租赁管理系统0.3_20161225_数据库设计

    数据库设计 1. 概念模型 2. 类模型 3. 生成SQL use test; /*========================================================== ...

  9. 第二天ci项目规划 数据库设计

    第二天ci项目规划 数据库设计 商品 + 用户 + 订单 数据库设计思想和方法 关于商品品牌 ,分类 ,属性 如何表示 用一个字段 还是再设计一张表 品牌和商品 是一种信息 还是两种信息 一张表一般只 ...

随机推荐

  1. 二维数组的查找(JAVA)

    二维数组查找 解题思路:找到该二维数组的特殊点,易知该二维数组左下角的那个点很特殊.从这个点往右看,数值都在变大:而往上看,数值都在变小.所以 我们可以将这个点的索引设为起点(i,j),当比目标数大时 ...

  2. winform中devexpress bindcommand无效的解决方法

    正常绑定,编译运行无报错,但无法执行command fluentAPI.BindCommand(commandButton, (x, p) => x.DoSomething(p), x => ...

  3. 给大厨写的R数据分析代码

    ###************************************** 新老客户统计 ***************************************### dachu &l ...

  4. [JAVA]对象的别名问题

    对于JAVA的基本数据类型,a=b就是把b的内容复制给a.若接着又修改了a,对b是没有影响的. 但是在为对象“赋值”的时候,情况发生了变化.对一个对象进行操作时,我们真正操作的是对象的引用. 下面对两 ...

  5. java 偏向锁、轻量级锁及重量级锁synchronized原理

    Java对象头与Monitor java对象头是实现synchronized的锁对象的基础,synchronized使用的锁对象是存储在Java对象头里的. 对象头包含两部分:Mark Word 和 ...

  6. 函数和对象 及 prototype和__proto__

    对象有  __proto__ 函数有 prototype 对象的__proto__指向构造自己的函数的prototype 但有一例外 var Obj = {v:99}var pObj = Object ...

  7. 如何在hanlp词典中手动添加未登录词

     我们在使用hanlp词典进行分词的时候,难免会出现分词不准确的情况,原因是由于内置词典中并没有收录当前的这个词,也就是我们所说的未登录词,只要把这个词加入到内置词典中就可以解决类似问题,如何操作,下 ...

  8. @RequestParam接收解析不到 POST 提交的 数据

    1.使用postman或者其他发送请求模拟器进行模拟访问,需要指定Headers为Content-Type:application/x-www-form-urlencoded;指定body类型为x-w ...

  9. 使用setup.py安装python包和卸载python包的方法

    使用setup.py安装python包和卸载python包的方法 记录安装后文件的路径 python setup.py install --record files.txt删除这些文件 cat fil ...

  10. zabbix监控windows服务器

    Zabbix agent 在windows上安装部署 1.  下载与解压 地址: http://www.zabbix.com/downloads/2.4.0/zabbix_agents_2.4.0.w ...