电影管理系统

本文详细介绍了如何设计并实现一个电影管理系统,涵盖了用户管理、电影信息管理、放映时间安排以及在线购票等功能。系统采用前后端分离架构,前端使用React技术栈,后端采用Node.js和Express搭建,数据库选用MongoDB进行数据存储。通过API接口实现数据交互,确保系统的高效稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

<?xml version="1.0" encoding="utf-8" ?>
<ShowList>
  <Movie>
    <Name>不二神探</Name>
    <Poster>不二神探.png</Poster>
    <Director>王子鸣</Director>
    <Actor>李连杰、文章、陈妍希</Actor>
    <Type>动作</Type>
    <Price>60</Price>
    <Schedule>
      <Item>9:00</Item>
      <Item>13:00</Item>
    </Schedule>
  </Movie>
  <Movie>
    <Name>西游降魔篇</Name>
    <Poster>西游降魔篇.png</Poster>
    <Director>郭子健、周星驰</Director>
    <Actor>黄渤、舒淇、文章</Actor>
    <Type>喜剧</Type>
    <Price>60</Price>
    <Schedule>
      <Item>11:20</Item>
      <Item>15:45</Item>
      <Item>19:25</Item>
    </Schedule>
  </Movie>
  <Movie>
    <Name>中国合伙人</Name>
    <Poster>中国合伙人.png</Poster>
    <Director>陈可辛</Director>
    <Actor>黄晓明、邓超、佟大为</Actor>
    <Type>喜剧</Type>
    <Price>70</Price>
    <Schedule>
      <Item>21:00</Item>
      <Item>23:10</Item>
    </Schedule>
  </Movie>
  <Movie>
    <Name>钢铁侠</Name>
    <Poster>钢铁侠.png</Poster>
    <Director>沙恩布莱克</Director>
    <Actor>小罗伯特唐尼</Actor>
    <Type>动作</Type>
    <Price>70</Price>
    <Schedule>
      <Item>17:30</Item>
    </Schedule>
  </Movie>
</ShowList>

 

 

 

 

 

 

 

class Cinema //影院类
    {
        public Cinema()

        {
            Seats = new Dictionary<string, Seat>();
            SoldTicket = new List<Ticket>();
            SeSchedule = new Schedule();
        }
        //座位集合
        public Dictionary<string, Seat> Seats { get; set; }
        //放映计划
        public Schedule SeSchedule { get; set; }
        //已售出电影票
        public List<Ticket> SoldTicket { get; set; }

        public void Save()
        {
            FileStream fs = new FileStream("soldTickets.txt", FileMode.OpenOrCreate);
            StreamWriter writer = new StreamWriter(fs, Encoding.Default);
            for (int index = 0; index < SoldTicket.Count; index++)
            {
                Ticket ticket = SoldTicket[index];
                string info = "|" + ticket.SeScheduleItem.Movie.MovieName + "|" + ticket.SeScheduleItem.Movie.Poster + "|" +
                    ticket.SeScheduleItem.Movie.Director + "|" + ticket.SeScheduleItem.Movie.Actor + "|" + ticket.SeScheduleItem.Movie.MoveType.ToString()
                    + "|" + ticket.SeScheduleItem.Movie.Price + "|" + ticket.SeScheduleItem.Time + "|" + ticket.Seat.SeatName + "|" +
                    ticket.Seat.Color + "|" + ticket.Price + "|";
                if (ticket is FreeTicket)
                {
                    string customerName = ((FreeTicket)ticket).CustomerName;
                    writer.WriteLine("free" + info + customerName);
                }
                else if (ticket is StudentTicket)
                {
                    writer.WriteLine("student" + info + "");
                }
                else
                {
                    writer.WriteLine("" + info + "");
                }
            }
            writer.WriteLine("the end");
            writer.Close();
            fs.Close();
        } 
        public void Load()
        {
            try
            {
                StreamReader reader = new StreamReader("soldTickets.txt", Encoding.GetEncoding("GB2312"));
                string line = reader.ReadLine();
                string[] propertyValues;
                Ticket ticket = null;


                while (line.Trim() != "the end")
                {
                    propertyValues = line.Split('|');
                    string type = propertyValues[0];

                    Movie movie = new Movie(propertyValues[1], propertyValues[2], propertyValues[3], propertyValues[4], (MovieType)Enum.Parse(typeof(MovieType), propertyValues[5]), int.Parse(propertyValues[6]));
                    ScheduleItem scheduleItem = new ScheduleItem();
                    scheduleItem.Time = propertyValues[7];
                    scheduleItem.Movie = movie;
                    string color = propertyValues[9];
                    string endcolor = color.Substring(color.IndexOf("[") + 1, color.Length - 1 - color.IndexOf("[") - 1);
                    Seat seat = new Seat(propertyValues[8], Color.FromName(endcolor));

                    int discount = 10;
                    switch (type)
                    {
                        case "student":
                            discount = 7;
                            ticket = TicketUtil.CreateTicket(scheduleItem, seat, discount, "", type);
                            break;
                        case "free":
                            discount = 0;
                            ticket = TicketUtil.CreateTicket(scheduleItem, seat, discount, propertyValues[11], type);
                            break;
                        default:
                            discount = 10;
                            ticket = TicketUtil.CreateTicket(scheduleItem, seat, discount, "", "");
                            break;
                    }
                    this.SoldTicket.Add(ticket);
                    line = reader.ReadLine();
                }
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("出错了:" + ex.Message);
                SoldTicket = new List<Ticket>();
                throw;
            }
        }

    }


 public class Movie//电影类
    {
        public Movie() { }
        public Movie(string movieName, string poster, string director, string actor, MovieType movieType, int price)
        {
            this.MovieName = movieName;
            this.Poster = poster;
            this.Director = director;
            this.Actor = actor;
            this.MoveType = movieType;
            this.Price = price;
        }

       public string MovieName { get; set; }//电影名字
       public string Poster { get; set; }//图片名
       public string Director { get; set; }//导演
       public string Actor { get; set; }//主演
       public MovieType MoveType { get; set;} //电影类型
       public int Price { get; set; }//定价价格
       

    }

 

public  enum MovieType//电影类型类
    {
     Comedy,
     War,
     Romance,//爱情
     Action,
     Katong,
     Kongbu,
     Maoxian
    }

 


public  class Schedule//放映计划类
    {
      public Schedule()
      {
          Item = new Dictionary<string, ScheduleItem>();
      }
      
      //放映场次
      public Dictionary<string, ScheduleItem> Item { get; set; }
      
      //从Xml中读取文件
      public void LoadItems()
      {
          if (Item == null)
          {
              Item = new Dictionary<string, ScheduleItem>();
          }
          Item.Clear();
          XmlDocument doc = new XmlDocument();
          doc.Load("ShowList.xml");
          XmlNode feednode = doc.DocumentElement;

          //中间变量
          string movieName = null;
          string playBill = null;
          string director = null;
          string actor = null;
          string movieType = null;
          string price = null;

          foreach (XmlNode node in feednode.ChildNodes)
          {
              if (node.Name == "Movie")
              {
                  foreach (XmlNode subNode in node.ChildNodes)
                  {
                      switch (subNode.Name)
                      {
                          case "Name":
                              movieName = subNode.InnerText;
                              break;
                          case "Poster":
                              playBill = subNode.InnerText;
                              break;
                          case "Director":
                              director = subNode.InnerText;
                              break;
                          case "Actor":
                              actor = subNode.InnerText;
                              break;
                          case "Type":
                              movieType = subNode.InnerText;
                              break;
                          case "Price":
                              price = subNode.InnerText;
                              break;
                          case "Schedule":
                              foreach (XmlNode scheduleNode in subNode.ChildNodes)
                              {
                                  ScheduleItem item = new ScheduleItem();
                                  item.Time = scheduleNode.InnerText;
                                  item.Movie.MovieName = movieName;
                                  item.Movie.Poster = playBill;
                                  item.Movie.Director = director;
                                  item.Movie.Actor = actor;
                                 // item.Movie.MoveType = (MovieType)Enum.Parse(typeof(MovieType), movieType);
                                  item.Movie.Price = int.Parse(price);
                                  Item.Add(item.Time, item);
                              }
                              break;
                          default:
                              break;
                      }
                  }
              }
          }
      }
    }

 

public class ScheduleItem //放映场次
    {
       public ScheduleItem()
       {
           Movie=new Movie();
       }
       public string Time{get; set; }//放映时间
       public Movie Movie { get; set; } //本场放映的电影
       

 

 public  class Seat//座位类
    {
     

      public string SeatName { get; set; }//座位号
      public Color Color { get; set; }//卖出座位号颜色
      public Seat(string  seatName,Color color)
      {
          this.SeatName = seatName;
          this.Color = color;
      }
    }

 

internal class StudentTicket : Ticket
    {
        //学生票子类
        public int Discount { get; set; }  //折扣
        public StudentTicket(ScheduleItem scheduleItem, Seat seat, int discount) :
            base(scheduleItem, seat)
        {
            this.Discount = discount;
        }

        public override void CalcPrice()
        {
            this.Price = this.SeScheduleItem.Movie.Price * Discount / 10;

        }

        public override void Print()
        {
            string fileName = this.SeScheduleItem.Time.Replace(":", "-") + " " + this.Seat.SeatName + ".txt";
            FileStream fs = new FileStream(fileName, FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine("***************************");
            sw.WriteLine("     青鸟影院 (学生)");
            sw.WriteLine("---------------------------");
            sw.WriteLine(" 电影名:\t{0}", this.SeScheduleItem.Movie.MovieName);
            sw.WriteLine(" 时间:  \t{0}", this.SeScheduleItem.Time);
            sw.WriteLine(" 座位号:\t{0}", this.Seat.SeatName);
            sw.WriteLine(" 价格:  \t{0}", this.Price.ToString());
            sw.WriteLine("***************************");
            sw.Close();
            fs.Close();
        }

        public override void Show()
        {
            MessageBox.Show("已售出!\n\n " + this.Discount + "折学生票!");
        }
    }

 

 public class Ticket//票类
    {
       //无参构造
        public Ticket() { }

        public Ticket(ScheduleItem scheduleItem, Seat seat)
        {
            this.SeScheduleItem = scheduleItem;
            this.Seat = seat;
        }

       public ScheduleItem SeScheduleItem { get; set; } //放映场次
       public  Seat Seat { get; set; }//所属座位
       public  int price { get; set; } //票价
        //计算票价
       public int Price { get; set; }  //票价

      
       public virtual void CalcPrice()
       {
           this.Price = this.SeScheduleItem.Movie.Price;
       }
       public virtual void Print()
       {
           string fileName = this.SeScheduleItem.Time.Replace(":", "-") + " " + this.Seat.SeatName + ".txt";
           FileStream fs = new FileStream(fileName, FileMode.Create);
           StreamWriter sw = new StreamWriter(fs);
           sw.WriteLine("***************************");
           sw.WriteLine("        青鸟影院");
           sw.WriteLine("---------------------------");
    

           sw.WriteLine(" 时间:  \t{0}", this.SeScheduleItem.Time);
           sw.WriteLine(" 座位号:\t{0}", this.Seat.SeatName);
           sw.WriteLine(" 价格:  \t{0}", this.Price.ToString());
           sw.WriteLine("***************************");
           sw.Close();
           fs.Close();
       }

     //显示当前售票出售信息
       public virtual void Show()
       {
           MessageBox.Show("已售出");
       }
    }

 


 class TicketUtil
    {
        //工具类

        public static Ticket CreateTicket(ScheduleItem scheduleItem, Seat seat, int discount, string customerName, string type)
        {
            Ticket newTicket = null;
            switch (type)
            {
                case "student":
                    newTicket = new StudentTicket(scheduleItem, seat, discount);
                    break;
                case "free":
                    newTicket = new FreeTicket(scheduleItem, seat, customerName);
                    break;
                case "":
                    newTicket = new Ticket(scheduleItem, seat);
                    break;
                default:
                    break;
            }
            return newTicket;
        }
    }

 

 class FreeTicket:Ticket   //免费票类
    {
        public string CustomerName { get; set; }

        public FreeTicket() { }
        public FreeTicket(ScheduleItem scheduleItem, Seat seat, string customerName)
            : base(scheduleItem, seat)
        {
            this.CustomerName = customerName;
        }

        public override void CalcPrice()
        {
            this.Price = 0;

        }

        public override void Print()
        {
            string fileName = this.SeScheduleItem.Time.Replace(":", "-") + " " + this.Seat.SeatName + ".txt";
            FileStream fs = new FileStream(fileName, FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine("***************************");
            sw.WriteLine("     青鸟影院 (赠票)");
            sw.WriteLine("---------------------------");
            sw.WriteLine(" 电影名:\t{0}", this.SeScheduleItem.Movie.MovieName);
            sw.WriteLine(" 时间:  \t{0}", this.SeScheduleItem.Time);
            sw.WriteLine(" 座位号:\t{0}", this.Seat.SeatName);
            sw.WriteLine(" 姓名:  \t{0}", this.CustomerName);
            sw.WriteLine("***************************");
            sw.Close();
            fs.Close();
        }

        public override void Show()
        {
            base.Show();
        }
    }

 


namespace Day_11
{
    public partial class

        FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
        }
        string key = null;
        Cinema cinema ;
        int tic = 0;
        //影院类
        private Dictionary<string, Label> labels = new Dictionary<string, Label>();
        private Seat seat; //座位类
        Label lable1;
       
        private void FrmMain_Load(object sender, EventArgs e)
        {
            this.label2.Text = "";
            this.label13.Text = "";
            this.label6.Text = "";
            this.label8.Text = "";
            this.label12.Text = "";
            this.label4.Text = "";
            this.comboBox1.Enabled = false;
            this.radioButton1.Checked = true;
            this.textBox3.Enabled = false;
            cinema = new Cinema();
            zuowei();
            
            cinema.Load();
        }

 //动态加载座位
        public void zuowei()
        {
          

            for (int i = 0; i <= 6; i++)
            {
                for (int j = 0; j <= 6; j++)
                {
                    lable1 = new Label();
                    lable1.Text = (i + 1).ToString() + "-" + (j + 1).ToString(); //设置座位号
                    lable1.BackColor = Color.Yellow; //设置背景颜色
                    lable1.Size = new System.Drawing.Size(50, 25); //设置尺寸
                    lable1.Location = new Point(((j + 1) * 100), ((i + 1) * 40)); //设置坐标
                    lable1.TextAlign = ContentAlignment.MiddleCenter; //对齐
                    tabPage2.Controls.Add(lable1);
                    lable1.Click+=lable1_Click;
                    labels.Add(lable1.Text, lable1);
                    seat = new Seat((j + 1).ToString() + "-" + (i + 1).ToString(), Color.Yellow);
                    cinema.Seats.Add(seat.SeatName, seat);
                }

            }
        }
        private void InitTreeView()
        {
            //首先将TreeView的所有节点清空
            treeView1.BeginUpdate();
            treeView1.Nodes.Clear();

            string movieName = null;
            TreeNode movieNode = null;
            foreach (ScheduleItem item in cinema.SeSchedule.Item.Values)
            {
                //判断树形结构中是否已经有了电影名称
                if (movieName != item.Movie.MovieName)
                {
                    movieNode = new TreeNode(item.Movie.MovieName);
                    treeView1.Nodes.Add(movieNode);
                }
                TreeNode timeNode = new TreeNode(item.Time);
                movieNode.Nodes.Add(timeNode);
                //遍历一项,改变movieName的值作为下一次遍历名称是否重复的依据
                movieName = item.Movie.MovieName;
            }
            treeView1.EndUpdate();
        }


       
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {

            TreeNode node = treeView1.SelectedNode;
            
            if (node == null) return;
            if (node.Level != 1) return;
            key = node.Text;
            //将详细信息显示
            this.label2.Text = cinema.SeSchedule.Item[key].Movie.MovieName;
            this.label4.Text = cinema.SeSchedule.Item[key].Movie.Director;
            this.label6.Text = cinema.SeSchedule.Item[key].Movie.Actor;
            this.label8.Text = cinema.SeSchedule.Item[key].Movie.MoveType.ToString();
            this.label10.Text = cinema.SeSchedule.Item[key].Time;
            this.label12.Text = cinema.SeSchedule.Item[key].Movie.Price.ToString();
            this.pictureBox1.Image = Image.FromFile(cinema.SeSchedule.Item[key].Movie.Poster);
            this.label14.Text = "";

            //清空座位
            ClearZuo();

            //遍历该场电影的座位销售情况
            foreach (Ticket ticket in cinema.SoldTicket)
            {
                foreach (Seat seat in cinema.Seats.Values)
                {
                    if ((ticket.SeScheduleItem.Time == key) && (ticket.Seat.SeatName == seat.SeatName))
                    {
                        seat.Color = Color.Red;
                    }
                }
                xiugaizuowei();
            }

           

        }

        //清空座位
        public void ClearZuo()
        {
            foreach (Seat seat in cinema.Seats.Values)
            {
                seat.Color = Color.Yellow;
            }
        }

        //学生折扣控件
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //根据当前选中的电影,设置优惠价
            if (this.label12.Text != "")
            {
                int price = int.Parse(this.label12.Text);
                int discount = int.Parse(this.comboBox1.Text);

                this.label4.Text = (price*discount/10).ToString();

            }
        }

        //修改座位
        public void xiugaizuowei()
            
        {
            foreach (string key in cinema.Seats.Keys)
            {
                labels[key].BackColor = cinema.Seats[key].Color;
            }


        }

        //保存按钮
        private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            cinema.Save();
        }

        //继续销售按钮
        private void 继续销售ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //判断放映列表是否为null
            if (cinema.SeSchedule.Item.Count == 0)
            {
                cinema.SeSchedule.LoadItems();
            }

            InitTreeView();
        }



        
        //退出事件
        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult close;
            close = MessageBox.Show("是否保存当前销售状态?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
            if (close == DialogResult.Yes)
            {
                //退出时保存Cinema对象
                cinema.Save();
            }
            cinema.Save();
            this.Dispose();
        }

        //获取最新播放列表事件
        private void 获取最新播放列表ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            cinema.SeSchedule.LoadItems();
            cinema.SoldTicket.Clear();
            InitTreeView();
        }

    

        //点击座位 
        
       
        
        private void lable1_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(this.label2.Text))
            {
                MessageBox.Show("您还没有选择电影!");
                return;
            }
            tic++;
            //try
            //{
                string seatNum= ((Label) sender).Text.ToString();
          //  MessageBox.Show(seatNum.ToString());
                string customerName = this.textBox3.Text.ToString();
                int discount = 0;
                string type = "";
                if (this.radioButton3.Checked)
                {
                    type = "student";
                    if (this.comboBox1.Text == null)
                    {
                        MessageBox.Show("请输入折扣数");
                    }
                    else
                    {
                        discount = int.Parse(this.comboBox1.Text);
                    }
                }
                else if (this.radioButton2.Checked)
                {
                    if (String.IsNullOrEmpty(this.textBox3.Text))
                    {
                        MessageBox.Show("请输入赠票者姓名!");
                    }
                    else
                    {
                        type = "free";
                    }
                }

                //调用工具类创建票
                Ticket newTicket = TicketUtil.CreateTicket(cinema.SeSchedule.Item[key],
                    cinema.Seats[seatNum], discount, customerName, type);
                if (cinema.Seats[seatNum].Color == Color.Yellow)
                {
                    //打印
                    DialogResult result;
                    result = MessageBox.Show("是否购买?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    if (result == DialogResult.Yes)
                    {

                        cinema.Seats[seatNum].Color = Color.Red;
                        newTicket.CalcPrice();
                        cinema.SoldTicket.Add(newTicket);
                        xiugaizuowei();
                        label14.Text = newTicket.Price.ToString();
                        newTicket.Print();
                        
                    }
                    else if (result == DialogResult.No)
                    {
                        return;
                    }
                }
                else
                {
                    //显示当前售出票的信息
                    foreach (Ticket tickets in cinema.SoldTicket)
                    {
                        //判断是否为同场次,同电影,同座位号
                        if (tickets.Seat.SeatName == seatNum &&
                            tickets.SeScheduleItem.Time == treeView1.SelectedNode.Text &&
                            tickets.SeScheduleItem.Movie.MovieName == treeView1.SelectedNode.Parent.Text)
                        {
                            tickets.Show();
                        }
                    }
                }
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show(ex.Message);
            //}
        }
        //普通票
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            this.comboBox1.Enabled = false;
            this.textBox3.Text = "";
            this.textBox3.Enabled = false;
            this.comboBox1.Text = "";
            this.label14.Text = "";
        }
        //赠票
        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            this.textBox3.Enabled = true;
            this.comboBox1.Enabled = false;
            this.comboBox1.Text = "";
            //设置优惠票
            this.label14.Text = "0";
        }
        //学生票
        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {
            this.textBox3.Enabled = false;
            this.textBox3.Text = "";
            this.comboBox1.Enabled = true;
            this.comboBox1.Text = "7";
            //根据当前选中的电影,设置优惠价
            if (this.label12.Text != "")
            {
                int price = int.Parse(this.label12.Text);
                int discount = int.Parse(this.comboBox1.Text);
                this.label14.Text = (price * discount / 10).ToString();
            }
        }


 

 

 

 

 

速成(SuCMS)影视管理系统简介 速成影视管理系统(SuCms,速成cms)是一套专为不同需求的站长而设计的视频点播系统,灵活,方便,人性化设计简单易用是最大的特色,是快速架设视频网站首选,只需3分钟即可建立一个海量的视频讯息的行业网站。 速成cms采用PHP MYSQL架构,原生PHP代码带来卓越的访问速度和负载能力免去您的后顾之优。速成cms支持一键转换原max的模板和数据,实现网站无缝迁移到新平台。众多人性化功能设计,超前定时执行任务,让您处理数据得心应手,您只需要专心做内容运营,其它的交给我们。 为符合SEO要求开发大量功能,比如百度结构化数据生成,搜索引擎地图等。全新设计的专题管理,同时支持主分类,扩展分类,剧情分类三种分类方式,让网站内容与众不同。简单易用丰富的模板标签,方便网站模板设计制作,让网站更显专业。 速成cms是基于PHP MySql技术开发的开源CMS,完全开源 、没有任何加密代码,强劲功能、卓越性能、安全健壮。超级易用、模板已开发、资源丰富。构架稳健,平滑升级。 速成cms安装说明: 程序运行环境:PHP5.0 MySql5.0以上 默认提供两套模板,default为默认精简模板,default2为演示模板 将upload文件夹里的文件全部上传至网页服务器后,执行以下操作: 1.请设置index.php,index.html为默认文档名。 2.请运行http://域名/install/index.php进行程序安装 3.安装完毕后为了安全请删除安装目录 4.后台默认目录为/admin,安装后建议修改后台管理路径 速成(SuCMS)影视管理系统前台页面 速成(SuCMS)影视管理系统后台管理 后台路径:域名/admin 用户名与密码:admin(安装时可设置) 后台页面 相关阅读 同类推荐:站长常用源码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值