精华内容
下载资源
问答
  • 2021-12-15 00:52:43

    1>创建一个Hero类特征name(英雄名字),hp(血量),mp(魔法值), physicsAttack(物理攻击力),magicAttack(魔法攻击力)
    2>创建一个BattleControl战斗管理类,该类有两个字段分别为List ours(存储己方阵营中五个英雄)和List enemy(存储对方五个英雄)类型,分别创建五个英雄和五个敌人分别添加到对应List泛型列表中。添加int类型字段round 记录战斗开始到结束总的回合数。注:英雄名字自定义,血量200 魔法值100 攻击力自定义。
    3>模拟回合制游戏逻辑,初始化完毕后首先己方攻击,每次攻击随机从对方阵营筛选一个敌人进行攻击,
    a)每次造成的伤害为物理攻击和魔法攻击的叠加值,如果没有魔法值那么伤害值只是物理攻击力即可。
    b)每次魔法攻击之后需要减去相应的魔法值,比如魔法攻击力为20,那么魔法值也需要消耗20个点。
    c)攻击的同时输出信息格式:小一攻击了小二,小二剩余血量为80。
    d)己方所有英雄攻击完毕之后,敌人攻击,攻击流程同上。
    4>当某一个敌人或者己方英雄死亡后将死亡角色从对应List泛型列表中移除,某一个阵营全部死亡,游戏结束,开始结算,显示获胜方。显示总的回合数。
    代码如下:

    class Hero{  //英雄类
        private string name;  //英雄名字
        private int hp;  //血量
        private int mp;  //魔法值
        private int physicsAttack;  //物理攻击力
        private int magicAttack;  //魔法攻击力
        public Hero(string name,int hp,int mp,int pA,int mA){
            this.name=name;this.hp=hp;this.mp=mp;this.physicsAttack=pA;this.magicAttack=mA;
        }
        //set and get method:
        public void setName(string name){
            this.name = name;
        }
        public string getName(){
            return this.name;
        }
        public void setHp(int hp){
            this.hp = hp;
        }
        public int getHp(){
            return this.hp;
        }
        public void setMp(int mp){
            this.mp = mp;
        }
        public int getMp(){
            return this.mp;
        }
        public void setPa(int pa){
            this.physicsAttack = pa;
        }
        public int getPa(){
            return this.physicsAttack;
        }
        public void setMa(int ma){
            this.magicAttack = ma;
        }
        public int getMa(){
            return this.magicAttack;
        }
        //judge hero whether liveing
        public bool isLive(){
            if(this.hp <= 0){
                return false;
            }
            return true;
        }
    }
    class BattleControl{  //战斗管理类
        private List<Hero> ours;  //存储己方阵营中五个英雄
        private List<Hero> enemy;  //(存储对方五个英雄)类型
        public BattleControl(){
            this.ours = new List<Hero>();
            this.enemy = new List<Hero>();
        }
        //set get method:
        public void setOurs(List<Hero> ours){
            this.ours = ours;
        }
        public void setEnemy(List<Hero> enemy){
            this.enemy = enemy;
        }
        public List<Hero> getOurs(){
            return this.ours;
        }
        public List<Hero> getEnemy(){
            return this.enemy;
        }
        public void addOurs(Hero h){
            this.ours.Add(h);
        }
        public void addEnemy(Hero h){
            this.enemy.Add(h);
        }
        //待改进:liveOurs和liveEnemy可修改为一个方法进行判断。。。
        //有一个英雄活着则返回为true
        public bool liveOurs(){
            //traverse heros
            int record = 0;
            foreach (Hero h in (this.ours)){
                if(h.isLive()){
                    record++;
                    return true;
                }
            }
            if(0 == record)
                return false;
            return true;
        }
        public bool liveEnemy(){
            //traverse heros
            int record = 0;
            foreach (Hero h in (this.enemy)){
                if(h.isLive()){
                    record++;
                    return true;
                }
            }
            if(0 == record)
                return false;
            return true;
        }
    
    }
    class Test{
        static void war(Hero a,Hero b){
            //a 和 b 开始打斗 
            b.setHp(b.getHp()-a.getPa());  //b.hp = b.hp - a.physicsAttack;
            b.setMp(b.getMp()-a.getMa());  //b.mp = b.mp - a.magicAttack;  
            a.setMp(a.getMp()-a.getMa());//a.mp = a.mp - a.magicAttack;
            Console.WriteLine(a.getName()+"攻击了"+b.getName()+","+b.getName()+"剩余血量为"+b.getHp());
        }
        static int RandomNum(int len){
            Random rd = new Random();
            int random = rd.Next(len);
            return random;
    
        }
        static void Main(){
            //new some heros:
            Hero h1 = new Hero("Sheldon",200,100,40,20);
            Hero h2 = new Hero("Leonard",200,100,30,15);
            Hero h3 = new Hero("Howard",200,100,20,14);
            Hero h4 = new Hero("Raj",200,100,10,13);
            Hero h5 = new Hero("Han",200,100,5,12);
    
            Hero h6 = new Hero("Penny",200,100,40,30);
            Hero h7 = new Hero("Bernadette",200,100,10,19);
            Hero h8 = new Hero("Amy",200,100,10,16);
            Hero h9 = new Hero("Max",200,100,45,10);
            Hero h10 = new Hero("Caroline",200,100,25,7);
    
            BattleControl bc = new BattleControl();
            bc.addOurs(h1);
            bc.addOurs(h2);
            bc.addOurs(h3);
            bc.addOurs(h4);
            bc.addOurs(h5);
    
            bc.addEnemy(h6);
            bc.addEnemy(h7);
            bc.addEnemy(h8);
            bc.addEnemy(h9);
            bc.addEnemy(h10);
            
            //begin war
            //己方开始对战
            int round = 0;  //记录战斗开始到结束总的回合数
            int flag = 1;  //己方为1,敌人为0
            while(true){ 
                if(1 == flag) {
                    int enemy_people = 0;
                    //算一下敌人活着的人数,用于随机敌人的抽取
                    foreach (Hero tmp in (bc.getEnemy())){
                        enemy_people++;
                    }
                    int ours_people = 0;
                    foreach (Hero tmp in (bc.getOurs())){
                        ours_people++;
                    }
                    //随机抽取一个敌人,使用RandomNum(ours_people);函数
                    List<Hero> enemy_list = bc.getEnemy();
                    Hero random_enemy = enemy_list[RandomNum(enemy_people)];
    
                    int record = 0;
                    foreach (Hero h_ours in (bc.getOurs())){
                        record++;
                        //让己方的每一个英雄轮流攻打敌人
                        war(h_ours,random_enemy);
                        if(random_enemy.getHp() < 0 ){
                            //若进此判断,证明random_enemy这个英雄应该被remove
                            bc.getEnemy().Remove(random_enemy);
                            if(!(bc.liveEnemy())){
                                break;
                            }    
                            if(1 == enemy_people){
                                foreach (Hero tmp in (bc.getEnemy())){
                                    if(tmp.isLive()){
                                        random_enemy = tmp;
                                    }
                                }
                                //random_enemy = enemy_list[0];
                            }
                            else if(enemy_people > 1){
                                 random_enemy = enemy_list[RandomNum(enemy_people-1)];
                            }
                            else{
                                break;
                            }
                        }
                    }
                    
                }
    
                //break;
    
                if(-1 == flag) {
                    int enemy_people = 0;
                    foreach (Hero tmp in (bc.getEnemy())){
                        enemy_people++;
                    }
                    int ours_people = 0;
                    foreach (Hero tmp in (bc.getOurs())){
                        ours_people++;
                    }
                    List<Hero> ours_list = bc.getOurs();
                    Hero random_ours = ours_list[RandomNum(ours_people)];
    
                    int record = 0;
                    foreach (Hero h_enemy in (bc.getEnemy())){
                        record++;
                        war(h_enemy,random_ours);
                        if(random_ours.getHp() < 0 ){
                            bc.getOurs().Remove(random_ours);
                            if(!(bc.liveOurs())){
                                break;
                            }
                            if(1 == ours_people){
                                foreach (Hero tmp in (bc.getOurs())){
                                    if(tmp.isLive()){
                                        random_ours = tmp;
                                        }
                                    }
                                }
                                else{
                                    random_ours = ours_list[RandomNum(ours_people-1)];
                                }
                        }
                    }
                } 
               
                flag = -(flag);
                //Console.WriteLine("flag = "+flag);
                round++;
                //当其中一方全部死亡时,跳出while loop
                if(  !(bc.liveOurs()) || !(bc.liveEnemy()) ){
                    break;
                }
    
            }
    
    
            if( bc.liveOurs() && (!(bc.liveEnemy() ))){
                Console.WriteLine("Ours is Successful!   "); 
            }
            else if( bc.liveEnemy() && (!(bc.liveOurs() ))){
                Console.WriteLine("Enemy is Successful!   "); 
            }
            else {
                Console.WriteLine("Equal!   ");
            }
            Console.WriteLine("Sum Round = "+round);
            
    
        }
    }
    
    
    

    使用dotnet run命令运行程序

    运行结果截图:
    在这里插入图片描述

    更多相关内容
  • 大二菜鸟做的很普通的学生管理系统
  • C#大作业.zip

    2019-07-24 09:56:15
    sql2008 vs2010 建表语句word文档里有 ... (2)图书管理:包括添加新的图书信息、修改图书信息、查询图书信息、删除图书信息。 (3)读者管理:包括借书证信息变更、借书证挂失与解除、注销借书证。...
  • 全是自己写的一个十五子游戏,里面有源代码,可执行文件、课程报告
  • #c#小学期大作业 2015-7-20 图书管理系统 使用.net图形界面,sql server数据库 使用前请将data文件夹中的数据库文件附加到SQL Server (本系统为2012版实现)中。 然后直接双击 我的图书管理系统.sln 打开(由VS2013...
  • 这个是一个完整的C#程序 一个图书管理系统包括图书查询,出版社管理,管理员管理,借阅管理等等,C#实训做得一点一点敲出来的,所以这个需要点积分,莫怪莫怪。数据库用的Access,登录账号14110506015 密码123456 ...
  • C#Winform大作业合集

    2021-02-23 20:05:43
    C#Winform大作业合集:住宿管理系统,游戏商人系统,音乐系统,学生管理系统需求,学生管理系统,学生个人信息管理,学生出入信息管理系统,学生成绩管理系统,宿舍入住系统,图书管理系统1,图书管理系统,图书馆...
  • 下载本资源后,如需提交成期末大作业 只需修改帮助中的小组成员名,可在数据库中进行修改,这个网上教程随便一搜就可以查到,跟着做一遍就可以修改 本篇资源也提供完整课程设计报告,自行添加小组成员名即可 课程...
  • visual studio 2017 mysql 2018 角色:管理员、学生 功能:登录、学生选课、管理员排课、培养计划excel导入、教师学生管理、学生选课时段设置、学分限制、课程表、选课结果管理等 采用MVVM模式,即Model-View-...
  • C#课程设计-C#大作业基于ASP.NET+SQL实现的学生信息管理系统源码 内附使用说明和数据库文件,新手也可自己操作,高分必看 基于C#的学生管理信息系统,ASP.NET+SQL Server+Layui,包含sql文件 本系统前后端不分离 ...
  • 免费的,开源的,C#数据库大作业(学生信息管理系统),可能还有未知bug还请各位指正,谢谢,如果可以关注一波就更好了
  • 俺的大作业
  • C#课程设计-C#大作业基于ASP.NET技术的动漫管理系统源码(老司机驾驶舱)。 编写本应用的主要目的是通过.NET技术实践了三层开发的基本思想: 通过ORM框架实现数据访问层,并将数据库操作服务封装为DAO层; 通过razor...
  • C#课程设计-C#大作业基于Windows窗体的学校教务管理系统源码。功能描述 本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程...
  • 包含源代码与综合实验说明书
  • 包含综合实验设计说明书与源代码
  • C#作业 Winform做一个仿真资源管理器 用到TreeView、ListView 实现得非常简单,完成了后退,前进,返回上一级文件,搜索的功能,仅适合C#新手做作业参考
  • C#大作业(音乐播放器)

    2019-12-31 18:31:17
    C# 简易版的音乐播放器,应对大作业绝对够,注释十分全面,调试到位,本人亲写,耗时3小时,各种控件等的都注释的很清晰,希望大家下载观看,用来学习或者提交大作业都是很好的
  • 要求:创建WPF应用程序,完成银行业务管理综合实例。 1、功能模块: 职员管理功的设计与实现 2、功能模块: 职员工资调整的设计与实现 3、功能模块: 取款功能的设计与实现 4、功能模块: 存款查询功能的设计与实现...
  • C#大作业——学生信息管理系统

    千次阅读 多人点赞 2022-06-02 20:50:32
    C# WinForm和数据库结合操作 获取数据框的值 新增数据(连接数据库+执行SQL语句) 工具类——DBhelp封装 优化新增数据 二、多表操作 1:为什么执行多表操作 2:解决方案 3:操作数据 三、登录操作 四:菜单操作 1:...

    gitee项目地址(觉得有用的道友star一下,谢谢)


    一、数据库操作

    建立数据库结构

    1:新建一个数据库

    1:打开 数据库管理软件 navicat/SQLoya
    2:创建连接
    3:选择连接右键新建数据库
    4:展开数据库
    5:右键新建表

    2:表中数据

    唯一的ID:对这个表的标识 类似身份证 唯一。
    id:一般我们都会让它作为主键(非空、自增)

    3:填充表中数据

    新建表的时候: 每个字段都有一个类型
    我们填充数据的时候:要根据类型填充数据
    int:整数 如:1、2、3、…
    varchar:字符串(必须指定长度) 如:‘呆呆’、‘西门吹雪’、…

    表结构展示
    在这里插入图片描述


    对数据的基本操作(添加 修改 删除 查询)

    现在表中添加数据,然后我们展示列表并查询

    1:新增

    语法INSEST INTO + 表名 (字段名1,字段名2,字段3...) VALUES(列表1,列表2,...)
    返回值:受影响的行(执行增删改的时候,都会返回受影响的数据)

    新增一个学生 由于sid自增 我们每次添加数据不需要添加主键;因为sid 会自动添加。

    INSERT INTO student (sname, sage) VALUES("周芷若", 19)
    

    新增多条数据

    INSERT INTO student (sname, sage) VALUES('周一', 18),('周二', 19),('周三', 20)
    

    2:修改

    语法UPDATE + 表名 set 列名 = '新的数据' where 条件

    把id为1的人名字 改成张三

    update student set sname='张三' where sid=1
    

    把周一的名字 改成 周五

    update student set sname='周日' where sname='周一'
    

    3:删除

    语法:DELETE from 表名 + WHERE 条件

    删除学号为1的学生

    DELETE FROM student WHERE sid = 1
    

    在真正的开发中,删除并不是物理删除 而是逻辑删除(即用一个变量表示是否被删除)


    4:查询 单表、多表的查询

    语法SELECT <要查询的字段 sage/sid/全部(*)> from + 表名 where 条件

    查询所有的学生信息(表中所有列)

    SELECT * FROM student
    

    查询学生年龄 和 姓名

    SELECT sname, sage FROM student
    

    条件查询 查询出来年龄是18 的人的名称

    SELECT sname FROM student WHERE sage=18
    

    多个条件 查询年龄是18 而且 姓名是周二的人的所有信息

    SELECT * FROM student WHERE sage=18 AND sname='周二'
    

    模糊查询 查询所有名字里带周

    SELECT * FROM student WHERE sname LIKE '%周%'
    

    为什么需要创建关联表?

    当我们执行班级操作时,如果我们把班级放在学生表中可能会操作不了。
    比如:三个2020班级的学生,查询到数据重复,再比如新增2025班级,但是这个时候还没有学生在2025班级,无法操作学生表怎么办。这个时候我们可以考虑:使用关联表,新建一个班级表。
    在这里插入图片描述


    C# WinForm和数据库结合操作

    获取数据框的值

    // 根据组件的属性name获取 输入框(TextBox)里面的数据
    // this:当前窗口使用 name:属性名 Text:文本
    string sname = this.sname.Text;
    string sage = this.sage.Text;
    

    新增数据(连接数据库+执行SQL语句)

    		private void button1_Click(object sender, EventArgs e)
            {
                // 根据组件的属性name获取 输入框(TextBox)里面的数据
                // this:当前窗口使用 name:属性名 Text:文本
                string sname = this.sname.Text;
                string sage = this.sage.Text;
    
                // 连接数据库的操作 
                // 1: 声明一个数据源 目的:找到我的收据库
                /* 
                 * server:服务 localhost/127.0.0.1(本地) 
                 * port:端口号 MySQL数据库的端口号就是3306 所以契合 
                 * database:数据库 声明我要用哪个数据库 
                 * uid:数据库用户名 
                 * pwd:数据库的密码 
                 */ 
                string url = "server=127.0.0.1; port=3306;database=csharp;uid=root;pwd=root"; 
                // 2:创建 链接 
                // 注意 : 我们链接数据库的时候需要引用 mysql.data.dll
                MySqlConnection con = new MySqlConnection(url); 
                // 3: 打开数据库
                con.Open();
                // MessageBox.Show("打开数据库");
                //4: 声明一个sql 
                // 既然 数据库已经打开了 我是不是可以对数据库进行一些操作
                // 注意:SQL字符串需要用引号括着
                string sql = string.Format("INSERT INTO student (sname,sage) VALUES('{0}', {1})", sname, sage); 
                // 5:创建一个操作 sql的对象(MySqlCommand)
                MySqlCommand com = new MySqlCommand(sql, con); 
                // 6: 执行结束之后 返回一个结果 整数 int 
                // ExecuteNonQuery: 执行增删改的 新增 修改 删除
                int i= com.ExecuteNonQuery(); 
                if (i > 0) {
                    //类似于js中的console.log()提示框
                    MessageBox.Show("新增成功");
                } else {
                    MessageBox.Show("失败"); 
                }
            }
    

    工具类——DBhelp封装

    		private static String connStr = "server=localhost;database=csharp;uid=root;pwd=root;charset=utf8;sslmode=none";
            
            //声明链接
            public static MySqlConnection GetConn()
            {
                MySqlConnection conn = new MySqlConnection(connStr);//
                if (conn.State == ConnectionState.Closed) conn.Open();//判断是否关闭 打开链接
                return conn;//返回链接
            }
            public static void CloseAll(MySqlConnection conn)
            {
                if (conn == null) return;
                if (conn.State == ConnectionState.Open || conn.State == ConnectionState.Connecting)
                    //判断
                    conn.Close();//关闭链接
            }
            public static int ExecuteNonQuery(string sql) // 增删改 封装 返回受影响的行
            {
                MySqlConnection conn = null;
                int result; //提前设置一个返回值
                try
                {
                    conn = GetConn();//获取链接
                    MySqlCommand cmd = new MySqlCommand(sql, conn);
                    result = cmd.ExecuteNonQuery();//执行sql 并返回受影响的行的个数
                }
                finally
                {
                    CloseAll(conn);
                }
                return result;
            }
            public static MySqlDataReader executeQuery(string sql) //查询
            {
                MySqlDataReader res = null;
                MySqlConnection conn = null;
                try
                {
                    MySqlConnection conn1 = GetConn();
                    MySqlCommand cmd = new MySqlCommand(sql, conn1);
                    res = cmd.ExecuteReader();
                }
                finally
                {
                    CloseAll(conn);
                }
                return res;
            }
    

    优化新增数据(通过工具类)

    		private void button1_Click(object sender, EventArgs e)
            {
                string sname = this.sname.Text;
                string sage = this.sage.Text;
                string sql = string.Format("INSERT INTO student (sname,sage) VALUES('{0}', {1})", sname, sage);
                int i = DBhelp.ExecuteNonQuery(sql);
                if (i > 0) {
                    MessageBox.Show("新增成功");
                } else {
                    MessageBox.Show("失败"); 
                }
            }
    

    二、多表操作

    1:为什么执行多表操作

    如图所示:我进行班级操作的时候,此时是没办法操作,周一、周三两人退学,那么2020这个班级就不复存在了。无法操作班级2020。
    在这里插入图片描述

    2:解决方案(创建关联表,操作多表数据)

    在这里插入图片描述

    3:操作数据

    在这里插入图片描述

    多表操作一般情况下只使用查询操作
    多表操作:as(起别名) 此时有问题 没有班级的学生(即gid为NULL)难道 不配被查询嘛?
    SELECT * FROM student AS a, grade AS b WHERE a.gid = b.gid
    高级多表查询:INNER JOIN 内连接 LEFT JOIN 左连接(以左表为主表查询 如果右表没有与之匹配的数据就用null来代替)
    SELECT * FROM student a LEFT JOIN grade b ON a.gid = b.gid


    三、登录操作

    			// 重置按钮:清空输入框里面的值
                this.textBox1.Text = "";
                this.textBox2.Text = "";
                this.radioButton1.Checked = true;
                this.radioButton2.Checked = false;
    			
    			// 点击登录
    			string password = null;
                if (radioButton1.Checked == true)
                {
                    // string.Format格式化字符串
                    string sql = string.Format(@"SELECT password FROM student WHERE username='{0}'", textBox1.Text);
                    // 执行sql    返回一个结果集
                    MySqlDataReader res = DBhelp.executeQuery(sql);
                    // 一行一行 往下读
                    while (res.Read())
                    {
                        password = res["password"].ToString();
                    }
                    if (password.Equals(textBox2.Text))
                    {
                        MessageBox.Show("登录成功");
                    } else
                    {
                        MessageBox.Show("账号密码错误");
                    }
                } else
                {
                    string sql = string.Format(@"SELECT password FROM teacher WHERE username='{0}'", textBox1.Text);
                    MySqlDataReader res = DBhelp.executeQuery(sql);
                    while (res.Read())
                    {
                        password = res["password"].ToString();
                    }
                    if (password.Equals(textBox2.Text))
                    {
                        MessageBox.Show("登录成功");
                    }
                    else
                    {
                        MessageBox.Show("账号密码失败");
                    }
                }
    

    四:菜单操作

    1:显示菜单

    在这里插入图片描述

    					// 创建 学生菜单的实例
                        StudentMenu stu = new StudentMenu();
                        // 这个是展示窗口
                        stu.Show();
                        // 展示窗体之后,把前一个打开的窗体关闭
                        this.Hide();
    

    2:ListView控件的使用

    选择编辑行
    在这里插入图片描述
    在这里插入图片描述
    修改ListView框的属性
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    五:回显数据

    在这里插入图片描述
    在这里插入图片描述

    		string gid = null; //班级号
            StuList s = null; //已经打开就不再new了
    
            private void AddStudent_Load(object sender, EventArgs e)
            {
                string sql = string.Format(@"SELECT * FROM grade");
                MySqlDataReader res = DBhelp.executeQuery(sql);
                while (res.Read())
                {
                    string gname = res["gname"].ToString();
                    this.comboBox1.Items.Add(gname);
                }
                // 设置下拉框初始值
                comboBox1.Items.Insert(0, "请选择");
                this.comboBox1.SelectedIndex = 0;
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                string sql = string.Format(@"insert into student (sname, sage, gid, username) values('{0}', {1}, {2}, '{3}')", textBox1.Text, textBox2.Text, gid, textBox4.Text);
                int i = DBhelp.ExecuteNonQuery(sql);
                if (i > 0)
                {
                    if (s == null)
                    {
                        s = new StuList();
                        s.Show();
                    }
                    else
                    {
                        s.Reload();
                    }
                    DialogResult dialogResult = MessageBox.Show("新增成功,是否需要继续新增", "新增提示", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
                    if (dialogResult == DialogResult.Yes)
                    {
                        this.TopMost = true;
                    }
                    else if (dialogResult == DialogResult.No)
                    {
                        this.Hide();
                    }
                } else
                {
                    MessageBox.Show("新增失败");
                }
            }
    
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                //获取gid
                string sql1 = string.Format(@"SELECT * FROM grade where gname = '{0}'", comboBox1.Text);
                MySqlDataReader res1 = DBhelp.executeQuery(sql1);
                while (res1.Read())
                {
                    gid = res1["gid"].ToString();
                }
            }
    

    六、修改删除数据

    在这里插入图片描述
    双击图中的事件:
    在这里插入图片描述

            private void listView1_SelectedIndexChanged(object sender, EventArgs e)
            {
                //判断有没有选中数据,选中后回显数据
                if (this.listView1.SelectedItems.Count > 0)
                {
                    // 拿到选中数据 索引值从0开始:因为每次选中一行,所有索引值为0
                    ListViewItem lis = this.listView1.SelectedItems[0];
                    string sid = lis.Tag.ToString();
                    string sname = lis.Text;
                    // 获取子菜单
                    string sage = lis.SubItems[1].Text;
                    string gname = lis.SubItems[2].Text;
                    string username = lis.SubItems[3].Text;
                    //把拿到的数据赋值在修改框中
                    textBox1.Text = sname;
                    textBox2.Text = sage;
                    textBox3.Text = gname;
                    textBox4.Text = username;
                }
            }
    

    七、页面之间的传值

    在这里插入图片描述


    在这里插入图片描述

    展开全文
  • C#大作业:点餐及账单管理系统

    热门讨论 2022-01-07 21:50:37
    12.26-1.2 c#大作业 点餐系统(老板和用户两个系统) - 阿萍萍萍 - 博客园 (cnblogs.com) 登录注册界面 员工不可注册,员工可注册。若是两次密码不一致、账号输入为空、账号已有都会进行相应的对话框提醒。 ...

    完成过程中遇到的认为比较难的问题记录,包括解决方案和查找资料的来源:

    12.26-1.2 c#大作业 点餐系统(老板和用户两个系统) - 阿萍萍萍 - 博客园 (cnblogs.com)

    登录注册界面

    员工不可注册,员工可注册。若是两次密码不一致、账号输入为空、账号已有都会进行相应的对话框提醒。

     

    用户界面

     点餐

     在下侧区域中可以进行菜单和购物车的切换,不用再新开一个购物车的窗口

    此外添加了随机摇摇的功能

    购物记录

    我有建议

    员工界面

    账单

    菜品管理

     左侧显示菜单的数据库内容,点击某一行右侧会出现内容详情,增删改查(查找是依据菜品名称),若进行操作成功或不查询不存在菜品会进行提醒。

    信息管理

    还存在的问题:

    1.点餐界面的查询偶尔可以用一次但是第二次就不能变了,偶尔用不了

    2.点餐界面点击数据表内容,num列的时候别的不能显示内容

    3.没有设置加购数量

    4.虽然已经设置过了,但是随即摇摇后显示出来的结果的num与选中文本框的数值不对应,虽然都是随机的

    5.购物记录和账单查看的price不对,只能显示**,且SQL的求和还有问题

    6.问题记录里部分不影响运行的遗留问题

    展开全文
  • C#大作业-vs2013-windows客户端-与数据库交互-实现简单的增删改查功能-附带实验报告文档;C#大作业-vs2013-windows客户端-与数据库交互-实现简单的增删改查功能-附带实验报告文档;
  • C#大作业】你画我猜——设计文档

    千次阅读 2022-04-22 00:02:10
    1 系统功能说明 该系统采用C/S架构,是一种可以联机进行你画我猜的游戏程序,玩家登录后,可选择进出房间,聊天,画图,猜图等功能。 玩家首先用不可重名的用户名登录,之后会进入房间大厅,在大厅里玩家可以自由...

    1 系统功能说明

    该系统采用C/S架构,是一种可以联机进行你画我猜的游戏程序,玩家登录后,可选择进出房间,聊天,画图,猜图等功能。

    玩家首先用不可重名的用户名登录,之后会进入房间大厅,在大厅里玩家可以自由选择想进入的房间,也可以在大厅与其他玩家进行即时聊天。

    进入房间后,聊天窗口会提示玩家进出房间的消息并刷新玩家列表。第一个进入房间的玩家,会默认成为画题的一方,系统会给其作画题目;之后进入的玩家都是猜画的一方,仅能知晓题目的字数。

    玩家均有用户列表,退出房间,即时聊天功能。画家额外拥有刷新题目,五种不同颜色画笔以及擦除的作画功能。猜画玩家专享答题窗口,将猜测的答案发送出去后,系统会提示其正误。只要有一名玩家猜中,此回合游戏就结束,系统将对每个玩家进行弹窗通告某个用户猜对了,并且猜对的玩家成为画题人。若作画玩家中途退出,将任选一名玩家为新的作画人。

    2 运行环境说明

    编译环境:visual studio 2019;

    采用TCP模式,C/S架构,服务端使用WCF服务库,客户端使用WPF应用(.NET Framework);

    系统实现多台计算机联机画板和联机通信。

    3 系统概要设计

    3.1 系统总体功能设计

    用户登录:
    用户名不能为空,不能重复; 大厅有四个游戏房间,房间下面有对应的房间信息(房间号和、房间人数),玩家可随意进入;

    大厅聊天:
    用户user发送消息送到服务器,服务器遍历在线玩家列表发送给所有玩家;
    房间内聊天、房间内猜题:用户user发送消息到服务器,服务端遍历该房间内玩家列表将消息发送给所有玩家;

    墨迹的发送:
    画板新增墨迹之后对墨迹进行打包转化成string类型发送到服务端,服务端发送给该房间内所有玩家,然后进行转化,添加到画板上;

    题目的刷新:
    画题人点击刷新按钮,服务端会读取题库随机返回一个题目,同时对房间内所有玩家题目部分进行相应的更新;

    猜题:
    猜题人猜题,服务端返回相应的提示(正确或者错误),如果正确,所有用户都会收到该用户猜对的信息,猜对的玩家成为新的画题人,其余玩家猜题,画板清空,题目刷新。

    玩家退出房间:
    如果是画题人退出房间,在剩余的猜题人中选取一个成为画题人并更新其面板,清空墨迹信息。房间用户收到退出提示,大厅房间信息更新;

    退出系统:
    如果玩家在游戏房间内退出系统,先执行退出房间,再执行退出系统,大厅消息栏提示用户退出。

    3.2 系统接口设计

    ##服务端实现的接口:
    [OperationContract(IsOneWay = true)]
    void Login(string userName); //登录系统
    
    [OperationContract(IsOneWay = true)]
    void Logout(string userName); //登出系统
    
    [OperationContract(IsOneWay = true)]
    void Talk(string userName, string message); //大厅聊天
    
    [OperationContract(IsOneWay = true)]
    void InRoom(string username, string roomname); //进入游戏房间
    
    [OperationContract(IsOneWay = true)]
    void Room_Talk(string userName, string message); //房间内聊天
    
    [OperationContract(IsOneWay = true)]
    void sendink(string username, string ink); //传送笔迹
    
    [OperationContract(IsOneWay = true)]
    void Guess_talk(string username, string message); //猜题框消息
    
    [OperationContract(IsOneWay = true)]
    void Gusee_win(string username); //猜测正确
    
    [OperationContract(IsOneWay = true)]
    void change_hua(string username); //改变画题人
    
    [OperationContract(IsOneWay = true)]
    void Refersh_Timu(string username); //刷新题目
    
    [OperationContract(IsOneWay = true)]
    void RoomOut(string username); //用户退出房间
    客户端实现的接口:
    [OperationContract(IsOneWay = true)]
    void ShowLogin(string loginUserName, int[] roomcount); //显示新用户登录游戏,进入大厅
    
    [OperationContract(IsOneWay = true)]
    void ShowLogout(string userName); //显示用户退出游戏
    
    [OperationContract(IsOneWay = true)]
            void ShowTalk(string userName, string message); //在大厅发消息显示消息内容
    
    [OperationContract(IsOneWay = true)]
    void InitRoomUsersInfo(string RoomUsersInfo, string ink, bool hua_or_cai, string timu); //初始化房间玩家列表
    
    [OperationContract(IsOneWay = true)]
    void ShowInRoom(string username); //显示用户进入房间
    
    [OperationContract(IsOneWay = true)]
    void ShowOutRoom(string userName); //显示用户退出房间
    
    [OperationContract(IsOneWay = true)]
    void Showlabel(string labelname, int roomusercount); //大厅界面显示四个房间的人数
    
    [OperationContract(IsOneWay = true)]
    void Show_Room_Talk(string userName, string message); //显示在房间里聊天的消息
    
    [OperationContract(IsOneWay = true)]
    void Show_Room_Talk_error(string message); //显示在房间里聊天的消息
    
    [OperationContract(IsOneWay = true)]
    void Show_Guess_Talk(string userName, string message, string daan); //显示猜测聊天框中的聊天消息
    
    [OperationContract(IsOneWay = true)]
    void Showink(string ink); //显示墨迹信息
    
    [OperationContract(IsOneWay = true)]
    void Show_Guess_win(string username); //显示用户猜中
    
    [OperationContract(IsOneWay = true)]
    void Show_Refersh_Timu(string username, string Timu); //刷新题目后,在各个玩家界面显示
    
    [OperationContract(IsOneWay = true)]
    void Show_Cannot_login();//提示用户不能登录
    
    [OperationContract(IsOneWay = true)]
    void InitNewchutiren(string timu); //初始化新的出题人界面
    
    [OperationContract(IsOneWay = true)]
    void change_hua_or_cai(bool hua, string username); //改变画题人和猜题人
    

    4 系统详细设计

    4.1 登录界面模块设计

    4.1.1 模块描述

    用户可以使用不同的用户名称进入游戏,若用户昵称已存在,则不能进入游戏。登录成功后“开始游戏”按钮变成不可点击状态,同时登录界面隐藏,大厅界面出现。

    4.1.2 模块UI

    图4-1 玩家登录界面
    在这里插入图片描述

    4.1.3 模块类设计

    要实现登陆,首先需要用户名,登录成功与登录失败时控件的显示以及提示的消息

    4.2 大厅界面模块设计

    4.2.1 模块描述

    游戏大厅有四个游戏房间,房间下方显示房间信息(房间号、实时房间人数),玩家可以在游戏大厅任意选择一个游戏房间开始游戏;

    右边是聊天界面,玩家可以在这里与其他在线玩家进行即时聊天。

    4.2.2 模块UI

    图4.2 玩家进入大厅,右边有即时聊天窗口,玩家可任人选房间进入游戏
    在这里插入图片描述

    4.2.3 模块类设计

    A. 大厅房间的实时显示
    在这里插入图片描述

    B. 大厅的即时聊天窗口的提示及互动
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    C. 用户点击房间并进入房间的按钮事件
    在这里插入图片描述
    D. 初始化新进房间的用户界面
    在这里插入图片描述
    在这里插入图片描述
    E. 用户在大厅退出游戏及其提示
    在这里插入图片描述

    4.3 游戏房间模块设计

    4.3.1 模块描述

    房间的主要功能:玩家列表的显示、画板的实现、题库的实现、猜测聊天窗口和房间聊天窗口的交互实现。

    4.3.2 模块UI

    图4.3-1第一个进入房间的玩家默认作为画家,有画笔和擦除,刷新题目,即时聊天,退出房间等功能
    在这里插入图片描述
    图4.3.2 后来的玩家作为猜画人,能退出房间,即时聊天,有猜题专栏
    在这里插入图片描述

    4.3.3 模块类设计

    A. 玩家列表

      string[] users = RoomUsersInfo.Split('、');
    
        this.userlist.Items.Clear();
        for (int i = 0; i < users.Length; i++)
        {
            this.userlist.Items.Add(users[i]);
        }
    

    B. 房间聊天的交互式实现
    在这里插入图片描述
    在这里插入图片描述
    C. 猜测聊天框的实现
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    D. 笔刷墨迹信息的交互实现
    在这里插入图片描述
    在这里插入图片描述
    E. 题库的设计原理及实现
    在这里插入图片描述

    5 功能运行效果

    5.1 登录

    图5-1-1 登录注册界面
    在这里插入图片描述

    5.2 大厅

    图5-2-1 玩家进入大厅通告,大厅聊天
    在这里插入图片描述
    图5-2-1 大厅玩家退出通知
    在这里插入图片描述

    5.3 进入房间

    图5-3-1 第一个玩家进入房间,画笔及擦除功能,换题功能,聊天功能,退出功能
    在这里插入图片描述

    图5-3-2 后来的玩家为猜题玩家,有专享的答题窗口
    在这里插入图片描述

    5.4 玩家画图

    图5.4-1画家作画
    在这里插入图片描述

    图5.4-2画家擦除
    在这里插入图片描述

    图5.4-3画家换题,并清空画布
    在这里插入图片描述

    5.5 猜题

    图5.5-1 玩家猜题错误
    在这里插入图片描述

    图5.5-2 玩家猜中
    在这里插入图片描述

    图5.5-3其他玩家界面显示有玩家猜中
    在这里插入图片描述

    图5.5-4 猜中人当画家
    在这里插入图片描述

    图5.5-5 原画家退出,系统随机选一人当画家
    在这里插入图片描述

    展开全文
  • C#大作业讲课稿.doc

    2020-04-17 22:42:41
    C#大作业 .NET开发技术基础 大作业 院 系 电子信息工程学院 专业班级 计算机科学与技术0902 学生姓名 无痕 学号 2009441643 成绩 年 月 日 作业内容一 题目2某公司有不同类型的员工经理秘书普通雇员会计每天早上830...
  • c#大作业之航空订票管理系统
  • 1.设计Form1窗体模板,添加两个botton,两个label,一个panel,和menustrip组件。一个Botton背景添加贴图,另一个设为标视处雷,一个label记分数,另一个label记录时间,在menustrip加上ToolStripMenuItem游戏和...
  • C#大作业理财小狗

    2016-12-30 16:18:19
    软件工程专业实践课最终程序,包括报告和数据库
  • C#大作业-通讯录管理系统

    千次阅读 2021-01-12 20:02:50
    C#大作业-通讯录管理系统 前言 学校本来开设的课程是《面向对象程序设计》,一开始老师老老实实上C++,临近期末了布置一个大作业用于期末考试,让我们做一个带界面的通讯录管理系统,我本想着用QT的,毕竟QT做界面...
  • #北大C#课程大作业——简易版泡泡堂# 两位玩家,三种道具:宝箱,增加同时放置的炸弹个数;威力药水:增加炸弹爆炸波及的范围;加速器:加速移动。 玩家一通过控制↑、↓、←、→键进行上下左右移动,space键放置...
  • c#期末大作业

    2015-06-17 18:17:37
    c#期末大作业

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,180
精华内容 9,672
关键字:

c#大作业

c# 订阅