ASP.NETWeb开发(C#版)-day1-C#基础+实操

目录

.NET

csharp 复制代码
dotnet5(.NET)合并了.NET Framework、.NET Core(可以跨平台)

实操:创建项目

csharp 复制代码
我用的Visual Studio2022 先创建新项目


csharp 复制代码
再点击下一步后


csharp 复制代码
说明(了解即可):
   在找到相应文件位置后,点击 "生成" 下方会出现 成功 之后 Debug 下会生成很多文件
   其中 xxx.exe 是生成的可执行文件,在.NET平台是一种通用文件



执行


C#基础语法

数据类型

  • 简单数据类型(值类型)
  • 引用类型(值存储在堆里面,地址存储在栈里面)

变量


实操001_变量

csharp 复制代码
namespace Demo001_变量
{
    internal class Program
    {   //"///"是注释 解释说明的作用
        /// <summary>
        /// 主方法,程序的入口
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {

            //声明变量存储数据
            string message;

            //给变量赋值
            message = "欢迎来到C#的世界";

            //使用变量
            Console.WriteLine(message);
            
            //存储员工的信息:工号,姓名,性别,入职日期,基本工资,部门,岗位
			string emplyeeNo, name;
			bool gender;
			DateTime jobInDateTime;
			double salary;
			string departmentName;
			string job;
			
			Console.Write("请输入工号:");
			emplyeeNo = Console.ReadLine();
			Console.Write("请输入姓名:");
			name = Console.ReadLine();
			Console.Write("请输入性别:");
			gender = Convert.ToBoolean(Console.ReadLine());
			Console.Write("请输入入职日期(yyyy-mm-dd):");
			jobInDateTime = Convert.ToDateTime(Console.ReadLine());
			Console.Write("请输入基本工资:");
			salary = Convert.ToDouble(Console.ReadLine());
			Console.Write("请输入部门:");
			departmentName = Console.ReadLine();
			Console.Write("请输入岗位:");
			job = Console.ReadLine();
			
			//输出个人信息
			Console.WriteLine($"工号:{emplyeeNo}\n" +
			    $"姓名:{name}\n" +
			    $"性别:{gender}\n" +
			    $"入职日期:{jobInDateTime}\n" +
			    $"基本工资:{salary}\n" +
			    $"部门:{departmentName}\n" +
			    $"岗位:{job}");
        }
    }
}

如何在一个解决方案 中创建另一个项目

后面的步骤前面有讲过。

csharp 复制代码
注意:
	点击 配置启动项 , 勾选 当前项目

![启动项设置]](https://img-blog.csdnimg.cn/fd028c9cac10418a891dfc2ab073013b.png)




实操002

csharp 复制代码
namespace Demo002_算术运算符
{
    internal class Program
    {
        static void Main(string[] args)
        {
            DateTime dateOfBirth= Convert.ToDateTime("1995-10-2");
            int age = DateTime.Now.Year - dateOfBirth.Year;
            Console.WriteLine("年龄:"+age);
            //age++ 和 ++age 区别
            //先用再加  先加再用

            bool gender = true;
            gender = false;
            //string sex = gender == true ? "男" : "女";
            string sex = !gender ? "男" : "女";
            Console.WriteLine($"性别:{sex}");

            Console.WriteLine();
            Console.Write("请输入账号:");
            string loginId = Console.ReadLine();
            Console.Write("请输入密码:");
            string loginPassword = Console.ReadLine();
            string loginMsg = loginId == "admin" && loginPassword =="123456" ? "登录成功" : "用户名或密码错误,登录失败";
            Console.WriteLine(loginMsg);


            
        }
    }
}


结构



实操003-if else

csharp 复制代码
namespace Demo003_选择结构
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请问是否进行C#学习:(y/n):");
            string input = Console.ReadLine().ToLower();//输入转换为小写     .ToUpper()转化为大写
            if (input != "y" && input != "n") {
                Console.WriteLine("输入有误");
            }
            else
            {
                if (input == "y")
                {
                    Console.WriteLine("继续阅读");
                }
                else
                {
                    Console.WriteLine("停止阅读");
                }
            }
            
        }
    }
}



实操004-多分支

csharp 复制代码
namespace Demo004_多分支
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("*******年终奖判定程序**********");
            Console.WriteLine("请输入基本工资:");
            double salary = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("请输入考核等级(ABCD):");
            char level = Convert.ToChar(Console.ReadLine().ToUpper());
            double reward;//奖金
            if (level < 'A' || level > 'D')
                Console.WriteLine("等级输入有误");
            //多分支
            else
            {
                //if (level == 'A')
                //reward = salary * 6;
                //else if (level == 'B')
                //reward = salary * 3;
                //else if (level == 'C')
                //reward = salary * 2;
                //else
                //reward = salary;


                //只能写等值判断
                switch (level)
                {
                    case 'A':
                        reward = salary * 6;
                        break;
                    case 'B':
                        reward = salary * 3;
                        break;
                    case 'C':
                        reward = salary * 2;
                        break;
                    default:
                        reward = salary;
                        break;
                }
                Console.WriteLine($"年终奖是{reward}");
            }
        }
    }
}





多行注释按钮




实操:循环

csharp 复制代码
namespace Demo005_循环结构
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //for
            int i;//定义在外面比较好
            for(i = 0; i < 3; i++) {
                Console.WriteLine("重要的事情说三遍");
            }
            
            //登录系统,输入用户名和密码,三次有效
            string userName, password;

            for(i = 0;i < 3; i++)
            {
                Console.WriteLine($"第{i + 1}次登录开始......");
                Console.Write("请输入用户名:");
                userName= Console.ReadLine();
                Console.Write("请输入密码:");
                password = Console.ReadLine();

                if(userName == "admin" && password == "admin") {
                    Console.WriteLine("登录成功");
                    break;//强制退出循环
                }
                else if (i < 2) {
                    Console.WriteLine("用户名或密码错误,登录失败");
                }
                else
                {
                    Console.WriteLine("三次机会已用完,账号已锁定");
                }

            }
        }
    }
}



面向对象基础


如何在同一个项目下创建新的.cs文件

实操-类的定义与访问

Employee.cs

csharp 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo006_类的定义和访问
{
    /**
     * 类名:Employee
     * 功能:模拟所有的职员对象
     * 
     */
    public class Employee
    {//internal 去掉也不会报错 internal只能在这里访问到 public是都可以访问到

        //成员变量(字段):特征
        //string employeeNo;//这是私有的private
        public string employeeNo;
        public string name;
        public bool gender;
        public double salary;

        //构造方法:在实例化对象时调用
        //构造方法名称必须与类名一致
        public Employee()
        {//默认存在,但是调用了带参构造,在没有定义无参构造的时候,调用无参会报错,建议带上无参构造
            //Console.WriteLine("正在实例化员工对象...");
        }

        /// <summary>
        /// 带参数构造方法
        /// </summary>
        /// <param name="employeeNo">员工号</param>
        /// <param name="name">姓名</param>
        /// <param name="gender">性别</param>
        /// <param name="salary">工资</param>
        public Employee(string employeeNo, string name, bool gender, double salary)
        {
            //this关键字:正在实例化的对象
            this.employeeNo = employeeNo;
            this.name = name;
            this.gender = gender;
            this.salary = salary;
        }

        //方法:对象的行为能力
        public void ShowEmployeeMsg()
        {
            Console.WriteLine($"{this.employeeNo}\t{this.name}\t{(this.gender == true ? "男" : "女")}\t{this.salary}");
        }
    }
}

Program.cs

csharp 复制代码
namespace Demo006_类的定义和访问
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //实例化对象
            Employee emp01 = new Employee();

            //访问变量:对象名.变量名
            emp01.employeeNo = "1234";
            emp01.name = "张三";
            emp01.gender = true;
            emp01.salary = 6589;

            Employee emp02 = new Employee();
            emp01.employeeNo = "1235";
            emp01.name = "王小二";
            emp01.gender = false;
            emp01.salary = 7800;

            Employee emp03 = new Employee("1236", "rose", false, 6500);

            //Console.WriteLine($"{emp01.employeeNo}\t{emp01.name}\t{(emp01.gender == true? "男":"女")}\t{emp01.salary}");
            //Console.WriteLine($"{emp02.employeeNo}\t{emp02.name}\t{(emp02.gender == true ? "男" : "女")}\t{emp02.salary}");
            //Console.WriteLine($"{emp03.employeeNo}\t{emp03.name}\t{(emp03.gender == true ? "男" : "女")}\t{emp03.salary}");

            //调用方法:对象名.方法名
            emp01.ShowEmployeeMsg();
            emp02.ShowEmployeeMsg();
            emp03.ShowEmployeeMsg();
        }
    }
}

实操-练习

csharp 复制代码
使用OOP的思想模拟个人手机的信息,包含手机品牌,型号,价格和颜色
开机和关机的功能

Phone.cs

csharp 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo007_练习
{
    /**
     * 类名:Phone
     * 功能:模拟手机对象
     * 
     */
    public class Phone
    {
        public string brand;//品牌
        public string type;//型号
        public double price;//价格
        public string color;//颜色

        public Phone()
        {
            Console.WriteLine("正在实例化手机对象...");
        }

        public Phone(string brand, string type, double price, string color)
        {
            this.brand = brand;
            this.type = type;
            this.price = price;
            this.color = color;
        }

        public void OpenPhone()
        {
            Console.WriteLine($"{this.brand}品牌{this.type}型号{this.price}元{this.color}的手机正在开机......");
        }

        public void ClosePhone()
        {
            Console.WriteLine($"{this.brand},{this.type},{this.price},{this.color}" + "关机了");
        }
    }
    
    
}

实操-方法

Employee.cs

csharp 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;

namespace Demo006_类的定义和访问
{
    /**
     * 类名:Employee
     * 功能:模拟所有的职员对象
     * 
     */
    public class Employee //internal 去掉也不会报错 internal只能在这里访问到 public是都可以访问到
    {
        //成员变量(字段):特征
        //string employeeNo;//这是私有的private
        public string employeeNo;
        public string name;
        public bool gender;
        public double salary;

        //构造方法:在实例化对象时调用
        //构造方法名称必须与类名一致
        public Employee() {//默认存在,但是调用了带参构造,在没有定义无参构造的时候,调用无参会报错,建议带上无参构造
            Console.WriteLine("正在实例化员工对象...");
        }

        public Employee(string employeeNo, string name, bool gender, double salary)
        {
            //this关键字:正在实例化的对象
            this.employeeNo = employeeNo;
            this.name = name;
            this.gender = gender;
            this.salary = salary;
        }

        //方法:对象的行为能力
        public void ShowEmployeeMsg()
        {
            Console.WriteLine($"{this.employeeNo}\t{this.name}\t{(this.gender == true ? "男" : "女")}\t{this.salary}");
        }

        //请假
        public void SendMsg(string type,DateTime beginDate,int days,string reason)
        {
            Console.WriteLine($"{this.employeeNo}的员工申请{type}");
            Console.WriteLine($"开始日期:{beginDate}\n" +
                $"请假天数:{days}\n" +
                $"结束日期:{beginDate.AddDays(days)}\n" +
                $"请假事由:{reason}\n");

        }

        //年终奖
        public double GetReward(string level)
        {
            double reward;
            switch (level)
            {
                case "A":
                    reward = this.salary * 6;
                    break;
                case "B":
                    reward = this.salary * 3;
                    break;
                case "C":
                    reward = this.salary * 2;
                    break;
                default:
                    reward = this.salary;
                    break;
            }
            return reward;//返回语句
        }
    }
}

Program.cs

csharp 复制代码
using Demo006_类的定义和访问;

namespace Demo008_方法
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Employee employee1 = new Employee("1234","张三",true,5000);
            employee1.SendMsg("事假", Convert.ToDateTime("2023-11-10 09:00:00"), 2, "家里有事");

            Employee employee2 = new Employee("1235", "李四", true, 6000);
            employee2.SendMsg("婚假", DateTime.Now, 10, "回家结婚");

            Console.Write("请输入考核等级:");
            string inputLevel = Console.ReadLine();
            double money = employee1.GetReward(inputLevel);
            Console.WriteLine($"年终奖金是:{money}");

        }
    }
}

实操:计算器

Calculator.cs

csharp 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo009_Calculator
{
    public class Calculator
    {
       

        public int GetResult(int a, int b, string type)
        {
            int c = 0;
            if (type == "+")
            {
                c = a + b;
            }
            else if (type == "-")
            {
                c = a - b;
            }
            else if (type == "*")
            {
                c = a * b;
            }
            else if (type == "/")
            {
                if (b == 0)
                {
                    Console.WriteLine("除数为0无法计算");
                }
                else
                {
                    c = a / b;
                }
            }
            return c;

        }
    }

    
}

Program.cs

csharp 复制代码
namespace Demo009_Calculator
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //使用OOP思想实现两个数的加减乘除运算。
            Calculator calculator = new Calculator();
            Console.Write("请输入第一个数:");
            int a = Convert.ToInt32(Console.ReadLine());
            Console.Write("请输入第二个数:");
            int b = Convert.ToInt32(Console.ReadLine());
            Console.Write("请输入运算符(+/ - / * / /):");
            string type = Console.ReadLine();

            //计算
            int c = calculator.GetResult(a, b, type);
            Console.WriteLine($"{a}{type}{b}={c}");
        }
    }
}

综合实例

csharp 复制代码
*以OOP的思想实现猜拳游戏:
*计算机和用户实现猜拳,可以出剪刀、石头和布。
*剪刀用0表示,石头用1表示,布用2表示。
*程序启动,系统默认可以玩10局,用户玩完一局之后可以按任意键继续,按q退出,退出后需显示实际玩了几局,用户赢了几局,电脑赢了几局,平了几局,如果用户赢的局数大于电脑赢的局数,显示用户大获全胜;如果电脑赢的局数大于用户赢的局数,显示用户败给了电脑;如果赢的局数相同,显示打成了平手。

*每一局游戏的游戏规则:
*先用户出拳,输入0 - 2为后显示用户出的拳是什么,如果用户出的不是0 - 2,提示用户输入错误,重新输入,直到用户输入正确为止,
*再由电脑随机出拳,电脑产生0 - 2之间的随机数,也要显示电脑出的拳是什么,然后判断电脑和用户的输赢关系,并给出适当的提示,比如本局是用户赢了,还是电脑赢了,还是平局

Player.cs

csharp 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Channels;
using System.Threading.Tasks;

namespace Demo010_综合案例
{ 
    /// <summary>
    /// 玩家类
    /// </summary>
    public class Player
    {
        public string name;//玩家的昵称

        /// <summary>
        /// 玩家出拳
        /// </summary>
        /// <returns></returns>
        public int Throw()
        {
            while (true)
            {
                try
                {
                    Console.WriteLine($"请{this.name}出拳");
                    int point = Convert.ToInt32(Console.ReadLine());

                    if (point >= 0 && point < 3)
                    {
                        return point;
                    }
                    else
                        Console.WriteLine("输入有误,请输入0-2");
                }catch (Exception ex)
                {
                    Console.WriteLine ("输入有误,请输入数字");
                }
            }
        }
    }
}

Computer.cs

csharp 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo010_综合案例
{
    public class Computer
    {

       public int CreateRandomNum()
        {
            Random r = new Random();
            return r.Next(3);
        }

    }
}

GuessGame.cs

csharp 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace Demo010_综合案例
{
    /// <summary>
    /// 猜拳游戏类
    /// </summary>
    public class GuessGame
    {
        Player player = new Player();
        Computer computer = new Computer();

        /// <summary>
        /// 输入玩家的昵称
        /// </summary>
        public void InputePlayName()
        {
            Console.Write("请输入昵称:");
            player.name = Console.ReadLine();
        }

        /// <summary>
        /// 欢迎界面/打印界面
        /// </summary>
        public void ShowMsg() {
            Console.WriteLine("*****************************");
            Console.WriteLine("******欢迎来到猜拳游戏*******");
            Console.WriteLine("*****************************");
        }

        /// <summary>
        /// 程序启动
        /// </summary>
        public void Start()
        {
            this.ShowMsg();
            InputePlayName();

            int p1 = player.Throw();
            int p2 = computer.CreateRandomNum();

            string quan1 = ConvertInToString(p1);
            string quan2 = ConvertInToString(p2);
            Console.WriteLine($"{player.name}出的拳是{quan1}");
            Console.WriteLine($"电脑出的拳是{quan2}");
            Judge(p1, p2);

            Console.WriteLine("是否继续下一局,按任意键继续,按q退出");
            string input = Console.ReadLine().ToLower();
            if(input == "q")
            {
                Console.WriteLine("游戏正在退出...");
                Console.ReadKey();//需要按一个键

            }
            Console.ReadKey();
            Console.Clear();

        }

        /// <summary>
        /// 数字的点数转换为字符串的拳
        /// </summary>
        /// <param name="point">点数</param>
        /// <returns>拳</returns>
        public string ConvertInToString(int point)
        {
            if(point == 0) {
                return "剪刀";
            }
            if (point == 1)
            {
                return "石头";
            }
            return "布";
            
        }
        /// <summary>
        /// 判断输赢
        /// </summary>
        /// <param name="playerPoint">玩家的点数</param>
        /// <param name="computerPoint">电脑的点数</param>
        public void Judge(int playerPoint, int computerPoint)
        {
            //0(剪刀) 1(石头) 2(布)

            //用户赢:0(2)=-2,1(0)=1,2(1)=1
            int diff = playerPoint - computerPoint;
            if (diff == 0) {

                Console.WriteLine("平局");
            }else if (diff ==-2 || diff ==1) {
                Console.WriteLine($"用户{player.name}赢了一局");
            }
            else
            {
                Console.WriteLine("电脑赢了一局");
            }
        }
    }
}

Program.cs

csharp 复制代码
namespace Demo010_综合案例
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //以OOP的思想实现猜拳游戏:
            //计算机和用户实现猜拳,可以出剪刀、石头和布。
            //剪刀用0表示,石头用1表示,布用2表示。
            //程序启动,系统默认可以玩10局,用户玩完一局之后可以按任意键继续,按q退出,退出后需显示实际玩了几局,用户赢了几局,电脑赢了几局,平了几局,如果用户赢的局数大于电脑赢的局数,显示用户大获全胜;如果电脑赢的局数大于用户赢的局数,显示用户败给了电脑;如果赢的局数相同,显示打成了平手。

            //每一局游戏的游戏规则:
            //先用户出拳,输入0 - 2为后显示用户出的拳是什么,如果用户出的不是0 - 2,提示用户输入错误,重新输入,直到用户输入正确为止,
            //再由电脑随机出拳,电脑产生0 - 2之间的随机数,也要显示电脑出的拳是什么,然后判断电脑和用户的输赢关系,并给出适当的提示,比如本局是用户赢了,还是电脑赢了,还是平局
            
            GuessGame guessGame = new GuessGame();
            guessGame.Start();
            Player p = new Player(); 
            p.name = "张三";
            
        }
    }
}
相关推荐
m0_7482561430 分钟前
前端 MYTED单篇TED词汇学习功能优化
前端·学习
geovindu1 小时前
CSharp: Oracle Stored Procedure query table
数据库·oracle·c#·.net
小白学前端6662 小时前
React Router 深入指南:从入门到进阶
前端·react.js·react
yngsqq2 小时前
cad c# 二次开发 ——动态加载dll 文件制作(loada netloadx)
c#
web130933203982 小时前
前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案
前端
outstanding木槿2 小时前
react+antd的Table组件编辑单元格
前端·javascript·react.js·前端框架
好名字08213 小时前
前端取Content-Disposition中的filename字段与解码(vue)
前端·javascript·vue.js·前端框架
隐形喷火龙3 小时前
element ui--下拉根据拼音首字母过滤
前端·vue.js·ui
m0_748241123 小时前
Selenium之Web元素定位
前端·selenium·测试工具
风无雨3 小时前
react杂乱笔记(一)
前端·笔记·react.js