用C#实现模拟双色球中奖程序 控制台应用程序

用C#实现模拟双色球中奖控制台应用程序

前言

这是我在大一第一学期C#的课程设计,要求编写一个模拟双色球彩票的控制台应用程序,用以实现简单的模拟选购彩票。
一、双色球购号号码生成:
1.系统购号:通过“随机数”产生双色球的各个号码,通过“数组”保存所生成的每一注号码,并生成系统购号记录。
2.手动购号:用户输入要购买的数字,通过“数组”保存所生成的每一注号码,并生成手动购号记录。
二、双色球开奖号码生成:
同每一注系统购号号码生成原理相同。
三、开奖对比:
将开奖结果与手动、系统购号记录进行对比,输出中奖结果并打印。
中奖规则

课题介绍

一、功能要求
(1)用 C#语言实现程序设计;
(2)利用结构体进行相关信息处理;
(3)良好的人机互交;
(4)需求设计,满足功能和非功能需求;
(5)界面设计,内容编排合理,布局合理,易于操作;
(6)结构设计,程序设计合理,逻辑结构清晰,处理流程正确,功能划分明确;
(7)项目设计文档,项目架构设计正确,详细描述数据库设计和项目功能模块设计;
(8)编码可读性,代码编写遵循规范,注释清晰,可读性强;
(9)项目调试,能够熟练调试程序;
(10)项目测试,能够熟练测试程序,找到bug并进行修正;
(11)项目整体运行情况,项目程序能成功运行,无重大Bug,出现Bug也能当场调试通过;
(12)项目答辩,项目讲解较为清晰,能正确回答老师的提问。
二、主要任务
(1)运用本学期所学的控制台应用程序;
(2)熟练掌握数组、随机数、方法、类等;
(3)编写代码;
(4)程序分析与调试。
三、运行环境
(1)Win7 /Win10系统;
(2)Visual Studio 2019 开发环境;
四、开发语言
C#语言。

用到的按键

功能选择: QW ER
数字选择:0123456789
功能确认:Enter

程序设计

一、系统流程
系统流程
二、特色功能的实现
(1)产生模拟奖池;
(2)生成自定义数据库;
(3)打印数据,读取数据;
(4)界面输出优化;
(5)保护用户隐私;
(6)程序结束后可继续查看中奖记录等。
三、运行展示
运行展示
参考文献:

C# 文本文件的读写:
https://www.runoob.com/csharp/csharp-text-files.html;
C# 如何改变控制台输出字体颜色:
https://zhidao.baidu.com/question/1429971132764662059.html;

四、数据保存设计

第1次设计.
用普通数据记录
第【01】注:红色球:01 02 03 04 05 06 蓝色球:07	【系统购号】时间:2019.06.12 22:02:01
第【02】注:红色球:06 14 15 22 29 32 蓝色球:11	【手动购号】时间:2019.06.12 22:02:07
第2次设计.
去掉固定字符
01_01_02_03_04_05_06_07_系统购号_2019.06.12 22:02:01
02_06_14_15_22_29_32_11_手动购号_2019.06.12 22:02:07
第3次设计.
用标记值 _
01_01_02_03_04_05_06_07_2019.06.12 22:02:01
02_06_14_15_22_29_32_11_2019.06.12 22:02:07
第4次设计.
用标记值 X R B T
X01R010203040506B07T2019.06.12 22:02:01
X02R061415222932B11T2019.06.12 22:02:07

核心代码

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//======================================================================
//        Copyright © 2018 摘繁华 All Rights Reserved.
//        filename:Program.cs
//        description:程序入口文件
//        created by 摘繁华 at 2019/10/25
//======================================================================
namespace ConsoleApplication1
{
   
    class Program
    {
   
        public static void Main(string[] args)
        {
   
            Class1 myclass1_guize = new Class1();
            Class3 myclass3_xuanhao = new Class3();
            Class4 myclass4_kaijiang = new Class4();
            myclass4_kaijiang.ShanChuXiTongWenJian();//删除程序启动前创建的系统购号记录
            myclass4_kaijiang.ShanChuShouDongWenJian();//删除程序启动前创建的手动购号记录
            Console.WriteLine("                                             @摘繁华 版权所有");
            Console.WriteLine("你好!欢迎你进入摘繁华的模拟双色球程序!\n");
            Console.WriteLine("===================================================程序开始===================================================");
            int biaojizhi = 1;
            while (biaojizhi != 0)
            {
   
                Console.WriteLine("请选择:1.不了解双色球规则,查看规则【Q/q】; \t2.了解双色球规则,进入模拟【W/w】; \t3.结束本程序【E/e】;");
                string xuanze =Console.ReadLine().ToUpper();
                switch (xuanze)
                {
   
                    case "Q":
                        Console.WriteLine("你选择了查看双色球规则;");
                        myclass1_guize.GuiZe();
                        break;
                    case "W":
                        Console.WriteLine("你选择了进入模拟;");
                        myclass3_xuanhao.HaoMa();
                        break;
                    case "E":
                        Console.WriteLine("你选择了结束程序!");
                        biaojizhi = 0;
                        break;
                    default:
                        Console.WriteLine("你的输入有误,请重新选择!");
                        break;
                }
            }
            Console.WriteLine("===================================================程序结束===================================================");
            Console.WriteLine("程序结束,按任意键退出。");
            Console.WriteLine("                                             @摘繁华 版权所有");
            Console.ReadKey(true);
        }
    }
}

1_游戏规则.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//======================================================================
//        Copyright © 2018 摘繁华 All Rights Reserved.
//        filename:1_游戏规则.cs
//        description:游戏规则文件
//        created by 摘繁华 at 2019/10/25
//======================================================================
namespace ConsoleApplication1
{
   
    class Class1
    {
   
        public void GuiZe()
        {
   
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("一、玩法及说明\n" +
            "双色球投注区分为红球号码区和蓝球号码区,红球号码范围为01~33,蓝球号码范围为01~16。双色球每期从33个红球中\n" +
            "开出6个号码,从16个蓝球中开出1个号码作为中奖号码,双色球玩法即是竞猜开奖号码的6个红球号码和1个蓝球号码,顺\n" +
            "序不限。");
            Console.WriteLine("二、设奖及中奖\n" +
            "|------|-----------|--------|-----------------------------------------------------------------|--------|\n" +
            "|      | 中奖条件  |        |                                                                 |        |\n" +
            "| 奖级 |-----------|中奖说明|                          单注奖金                               |单注赔率|\n" +
            "|      | 红球 |蓝球|        |                                                                 |        |\n" +
            "|------|------|----|--------|-----------------------------------------------------------------|--------|\n" +
            "|      |      |    |        |     当奖池资金低于1亿元时,奖金总额为当期高等奖奖金的75%与奖池中|        |\n" +
            "|      |      |    |        |累积的奖金之和,单注奖金按注均分,单注最高限额封顶500万元。      |        |\n" +
            "|      |      |    |        |     当奖池资金高于1亿元(含)时,奖金总额包括两部分,一部分为当期 |        |\n" +
            "|一等奖|RRRRRR| B  | 中6+1  |高等奖奖金的55 % 与奖池中累积的奖金之和,单注奖金按注均分,单注最|  ——  |\n" +
            "|      |      |    |        |高限额封顶500万元;另一部分为当期高等奖奖金的20%,单注奖金按注均分|        |\n" +
            "|      |      |    |        |,单注最高限额封顶500万元。                                      |        |\n" +
            "|------|------|----|--------|-----------------------------------------------------------------|--------|\n" +
            "|二等奖|RRRRRR|    | 中6+0  |                    当期高等奖奖金的25%                          |  ——  |\n" +
            "|------|------|----|--------|-----------------------------------------------------------------|--------|\n" +
            "|三等奖|RRRRR | B  | 中5+1  |                   单注奖金额固定为3000元                        | 1:1500 |\n" +
            "|------|------|----|--------|-----------------------------------------------------------------|--------|\n" +
            "|      |RRRRR |    | 中5+0  |                                                                 |        |\n" +
            "|四等奖|------|----|--------|                   单注奖金额固定为200元                         | 1:100  |\n" +
            "|      |RRRRR | B  | 中4+1  |                                                                 |        |\n" +
            "|------|------|----|--------|-----------------------------------------------------------------|--------|\n" +
            "|      |RRRR  |    | 中4+0  |                                                                 |        |\n" +
            "|五等奖|------|----|--------|                   单注奖金额固定为10元                          | 1:5    |\n" +
            "|      |RRR   | B  | 中3+1  |                                                                 |        |\n" +
            "|------|------|----|--------|-----------------------------------------------------------------|--------|\n" +
            "|      |RR    | B  | 中2+0  |                                                                 |        |\n" +
            "|      |------|----|--------|                                                                 |        |\n" +
            "|六等奖|R     | B  | 中1+1  |                    单注奖金额固定为5元                          | 1:2.5  |\n" +
            "|      |------|----|--------|                                                                 |        |\n" +
            "|      |      | B  | 中0+1  |                                                                 |        |\n" +
            "|------|------|----|--------|-----------------------------------------------------------------|--------|");
            Console.WriteLine("注:\n" +
            "1、高等奖奖金=奖金总额-固定奖奖金。\n" +
            "2、当奖池奖金超过1亿元(含)时,下期一等奖奖金总额包括两部分,一部分为高等奖奖金的55 % 与奖池奖金之和,单注\n" +
            "奖金按注均分,封顶500万元;另一部分为高等奖奖金的20 %,单注奖金按注均分,封顶500万元。 \n" +
            "3、奖池奖金在1亿元以下时,单注奖金封顶500万元。");
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.WriteLine("你已查看完双色球规则!\n");
        }
    }
}

2_账户资金.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//======================================================================
//        Copyright © 2018 摘繁华 All Rights Reserved.
//        filename:2_账户资金.cs
//        description:账户资金文件
//        created by 摘繁华 at 2019/10/25
//======================================================================
namespace ConsoleApplication1
{
   
    public class Class2_ZiJi
    {
   
        public void ZiJin_shouci()
        {
   
            Class2_ZiJinBianHua myclass_chushiyue = new Class2_ZiJinBianHua();
            Console.WriteLine("为了你的首次体验,系统已为你赠送100元用于购买双色球,你的账户初始余额为:{0:C}元;\n", FormatMoney(myclass_chushiyue.ChuShiYuE(100)));//输出初始余额
        }
        //手动存取金额
        public void ZiJin_cunqu()
        {
   
            Class2_ZiJinBianHua myclass_cunqu = new Class2_ZiJinBianHua();
            Console.WriteLine("请输入你的账户存取额(正为存入,负为取出):");
            int cunruzhi = int.Parse(Console.ReadLine());
            if (cunruzhi >= 0)//输出账户存入的存入额
            {
   
                Console.WriteLine("\t已存入金额为:{0:C}元;", FormatMoney(Math.Abs(cunruzhi)));
            }
            else
            {
   
                if (Math.Abs(cunruzhi) > myclass_cunqu.YuE)
                {
   
                    Console.WriteLine("\t取出金额不能大于账户的余额:{0}元;",FormatMoney(myclass_cunqu.YuE));
                }
                else
                {
   
                    Console.WriteLine("\t已取出金额为:{0:C}元;", FormatMoney(Math.Abs(cunruzhi)));
                }
            }
            //输出账户余额
            myclass_cunqu.CunQu(cunruzhi);
            Console.WriteLine("\t你的账户的余额为:{0:C}元;", FormatMoney(myclass_cunqu.YuE));
        }
        //格式化金额
        public string FormatMoney(int money)
        {
   
            if (money.ToString().Length > 4)
            {
   
                string fenge1 = money.ToString().Substring(0, money.ToString().Length - 4);
                string fenge2 = money.ToString().Substring(money.ToString().Length - 4, 4);
                if (fenge1.Length > 4)
                {
   
                    return FormatMoney(Convert.ToInt32(fenge1)) + "," + fenge2;
                }
                else
                {
   
                    return fenge1 + "," + fenge2;
                }
            }
            else
            {
   
                return money.ToString();
            }
        }
        //购号花费金额
        public void ZiJin_qu(int zhushu)
        {
   
            Class2_ZiJinBianHua myclass_qu = new Class2_ZiJinBianHua();
            int cunruzhi = -2 * zhushu;
            if (cunruzhi < 0)//输出账户存入的存入额
            {
   
                Console.WriteLine("\t已花费金额为:{0:C}元;", FormatMoney(Math.Abs(cunruzhi)));
            }
            //输出账户余额
            myclass_qu.CunQu(cunruzhi);
            Console.WriteLine("\t你的账户的余额为:{0:C}元;", FormatMoney(myclass_qu.YuE));
        }
        //中奖存入金额
        public void ZiJin_cun(int cunruzhi)
        {
   
            Class2_ZiJinBianHua myclass_cun = new Class2_ZiJinBianHua();
            if (cunruzhi > 0)//输出账户存入的存入额
            {
   
                Console.WriteLine("\t你的账户已存入金额为:{0:C}元;", FormatMoney(cunruzhi));
            }
            //输出账户余额
            myclass_cun.CunQu(cunruzhi);
            Console.WriteLine("\t你的账户的余额为:{0:C}元;", FormatMoney(myclass_cun.YuE));
        }
    }
    public class Class2_ZiJinBianHua
    {
   
        public int ChuShiYuE(int chushiyue)//接受初始余额
        {
   
            YuE = chushiyue;
            return YuE;
        }
        public void CunQu(int cunqu) //接受存钱
        {
   
            YuE = YuE + cunqu;
        }
        private static int yue; //余额
        public int YuE
        {
   
            get
            {
   
                return yue;
            }
            set
            {
   
                if (value >= 0)
                    yue = value;
            }
        }
    }
}

3_0模拟选号.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections;
using System.Text;
//======================================================================
//        Copyright © 2018 摘繁华 All Rights Reserved.
//        filename:3_0模拟选号.cs
//        description:模拟选号文件
//        created by 摘繁华 at 2019/10/25
//======================================================================
namespace ConsoleApplication1
{
   
    class Class3
    {
   
        public void HaoMa()
        {
   
            Class3_1 myclass3_1_xitong = new Class3_1();
            Class3_2 myclass3_2_shoudong = new Class3_2();
            Class3_3 myclass3_3_kaijiang = new Class3_3();
            Console.WriteLine();
            Console.WriteLine("         =======================================模拟双色球开始=======================================");
            Class2_ZiJi myclass2_zijin = new Class2_ZiJi();
            myclass2_zijin.ZiJin_shouci(
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值