C#WinForm基础编程(一)

简介: C#WinForm基础编程

C#WinForm基础编程

视频课:https://edu.51cto.com/course/20906.html

第一章:C#基础入门

单词:int, byte,short,long,float,double,char,boolean,string,date,form,console,write,writeLine,read,text,if,else,switch,name,parse

第一节:数据类型和变量

一、数据类型:
基本数据类型

int,byte,short,long

float,double

char

boolean

扩展数据类型

String,Date…所有定义的类型

Form1 f1=new Form1();

二、声明变量:

数据类型 变量名;int a;

数据类型 变量名=变量值; int a=9; String name=“张无忌”; “name”,“Form1”

字符串的值必须用双引号包裹:“ ”,注意无论什么变量一旦被双引号包裹,都将变成对应的字符串而失去原来的意义。

int a;
a = 8;
a = 78;
string b = "东方不败";
char c = 'n';
double num = 56.5;
bool d = true;
bool e = false;
int f;
f = a;
Console.WriteLine(a);
Console.Read();//仅仅是利用读取方法让程序暂停,能够看到窗口结果。
变量赋值:

int a=9;

int b=a;

是将变量a中的值9复制一份赋值给另一个变量b,变量a中仍然保留原来的值9;

变量命名:

首字母必须是字母、$、下划线_,后面可以跟字母、下划线、数字,不能有特殊字符(&%^#),语言的保留字不能用来命名变量,string ,int,if ,else,true,false,double。。。

第二节:运算符:

一、算术运算符

  • / % + - * ++ –
f = a + num * 5;
int u = a % 5;
int a=9;
Console.WriteLine(a++);
Console.WriteLine(++a);

示例1: 4大碗面,8元一碗;2小碗面,5元一碗;3盘小菜,12每盘;问没人均摊多少?

int bigCount = 4, litCount = 2, caiCount = 3;
double bigPrice = 8, litPrice = 5, caiPrice = 12;
double sum = bigCount * bigPrice + litCount * litPrice + caiCount * caiPrice;
double avg = sum / (bigCount + litCount);
Console.WriteLine(avg);
Console.Read();

二、比较运算符

== > < >= <= !=

int a = 7,b=6;
bool test = a >= b;
Console.Write(test);
Console.Read();

C# 宿舍管理系统 https://edu.csdn.net/course/detail/27107

第二章:判断

第一节:if条件判断

if,switch

一、单个if-else

if(条件){

代码功能

}else{

另一种代码功能

}

示例1:输入一个学生成绩,如果大于等于90分,师傅说给你个武林秘籍,否则,面壁思过

Console.WriteLine("请输入令狐冲的Java成绩");
string sc = Console.ReadLine();//等待用户的窗口输入
double score = double.Parse(sc);//将字符串转化为double类型的值
if (score >= 90)
{
     Console.WriteLine("奖励《葵花宝典》");
}else
{
     Console.WriteLine("面壁思过");
}
Console.ReadLine();
if(txt_num2.Text=="0"){
  txt_result.Text="除数不能为0";
}

登录界面判断用户名和密码是否正确

string username = txt_username.Text;
String pass = txt_pass.Text;
if (username == "admin" && pass == "1234")
{
     //MessageBox.Show("用户名密码正确", "成功提示");
     FmMain fm=new FmMain();//创建主窗体
     fm.Show();//显示主窗体
     this.Hide();//让当前登录窗体隐藏
}
else
{
     MessageBox.Show("用户名或密码错误","提示");
}

退出系统:需要在主窗体的FormClosed事件中添加:Application.Exit();

二、多重if-else

语法:

if(条件1){
 语句1;
}else if(条件2){
 语句2;
}else{
 语句3;
}
判断学生成绩的等级
Console.WriteLine("请输入令狐冲的Java成绩");
string sc = Console.ReadLine();
double score = double.Parse(sc);
if (score >= 90)
{
    Console.WriteLine("优秀");
}
else if(score>=75)
{
    Console.WriteLine("良好");
}else if (score >= 60)
{
    Console.WriteLine("及格");
}else
{
     Console.WriteLine("不及格");
}
Console.Read();
string str=txt_score.Text;
double score=double.Parse(str);
if(score>=90){
  lab_level.Text="优秀";
}else if(score>=75){
  lab_level.Text="良好";
}else if(score>=60){
  lab_level.Text="及格";
}else{
  lab_level.Text="不及格";
}
二元表达式:

变量=表达式?结果1:结果2;

int b = 9;
/* string a;
if (b > 7)
{
    a = "你好";
}else
{
    a = "你渣";
}*/
string a = b>7?"你好":"你渣";
Console.WriteLine(a);
Console.Read();
三、switch结构

语法:

switch(表达式){
  case 常量1:
    语句;
    break;
  case 常量2:
    语句;
    break;
  default
    语句
}

示例3:输入学生的考试名次,第一名:武林盟主,第二名:武当掌门,第三名:峨眉掌门,第四名:逐出师门

string mingci=txt_mingci.Text;
switch(mingci){
  case "第一名":
    MessageBox.Show("武林盟主","比赛结果");
    break;
  case "第二名":
    MessageBox.Show("武当掌门","比赛结果");
    break;
  case "第三名":
    MessageBox.Show("峨眉掌门","比赛结果");
    break;
  default:
    MessageBox.Show("逐出师门","比赛结果");
    break;
}

示例4:输入年份和月份,判断该月有多少天

Console.WriteLine("请输入年份");
int y=int.Parse(Console.ReadLine());
Console.WriteLine("请输入月份");
int m=int.Parse(Console.ReadLine());
switch(m){
  case 1:
  case 3:
  case 5:
  case 7:
  case 8:
  case 10:
  case 12:  
    Console.WriteLine("有31天","月天数计算");
    break;
  case 4:
  case 5:
  case 9:
  case 11:
    Console.WriteLine("有30天","月天数计算");
    break;
  case 2:
    if(y%4==0&&y%100!=0||y%400==0){
      Console.WriteLine("有29天","月天数计算");
    }else{
      Console.WriteLine("有28天","月天数计算");  
    }
    break;
  default:
    Console.WriteLine("你输错了","警告");
    break;
}
四、强制类型转换

int a=9;

double b=a;

double c=888.6;

int d=(int)c;//强制类型转换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RwyEySc0-1672665634017)(assets\1545207092425.png)]

string h=“123”;

//int n=(int)h;//不同类型之间不能进行强制转换

int n=int.Parse(h);

double n=double.Parse(h);

类型转换的流向图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KcFU3Q7J-1672665634019)(assets\1545207180681.png)]

视频课:https://edu.csdn.net/course/detail/27107

第三章:循环

什么是循环?

条件:条件成立

循环的操作,

语法

while(条件){

循环操作

}

第一节:while循环

示例1:从1加到100

int i = 1,sum=0;
 while (i <= 100)
 {
      sum += i;
      i++;
 }
 Console.WriteLine(sum);
 Console.Read();

示例2:循环输入一组学生成绩,求总成绩,当输入成绩为-1时候停止输入。

double sum = 0,score = 0;
while (score != -1)
{
   Console.WriteLine("请输入学生成绩");
   String sco=Console.ReadLine();
   score = double.Parse(sco);
   if (score != -1)
   {
       sum += score;
   }
}
Console.WriteLine("学生总成绩是:"+sum);

示例2:循环输入一组学生成绩,求总成绩和平均成绩

double sum = 0,score = 0,i=0;
while (score != -1)
{
   Console.WriteLine("请输入学生成绩");
   String sco=Console.ReadLine();
   score = double.Parse(sco);
   if (score != -1)
   {
       sum += score;
     i++;
   }
}
Console.WriteLine("学生总成绩是:"+sum);
Console.WriteLine("学生平均成绩是:"+sum/i);

第二节:do-while循环

语法:

do{

循环操作

}while(条件);

示例3:节目彩排

string ans = "";
 do
 {
     Console.WriteLine("欧阳锋弹吉他");
     Console.WriteLine("岳不群跳街舞");
     Console.WriteLine("张无忌拉提琴");
     Console.WriteLine("小尼姑行不行?");
     ans = Console.ReadLine();
 } while (ans == "不行");
 Console.WriteLine("彩排结束");

第三节:for循环

语法:

for(变量的初始化 ; 条件判断 ; 变量的变化){

循环操作

}

示例4:从1+…+100

double sum = 0;
for(int i=1;i<=100;i++)
{
    sum += i;
}
Console.WriteLine("1+...+100="+sum);

示例5:实现以下效果

请输入一个数字:
6
0+6=6
1+5=6
2+4=6
3+3=6
4+2=6
5+1=6
6+0=6
Console.WriteLine("请输入一个数字");
int num = int.Parse(Console.ReadLine());
for(int i=0,j=num ;i<=num ; i++, j--)
{
    Console.WriteLine(i+"+"+j+"="+num);
}

第四节:continue和break

continue是继续进行下一次循环的意思,不管continue后面有多少语句都不再执行,而是回到循环条件,进行下一次循环。

示例:6:说数字游戏,输出1~100之间的数字,不能输出明7和暗7

for(int j = 1; j <= 100; j++)
{
    if (j % 10 == 7 || j / 10 == 7 || j % 7 == 0)
    {
        continue;
    }
    Console.Write(j+"\t");
}
Console.ReadLine();

break是结束循环,调到循环结尾,执行之后的代码。

练习:

1、输出从1~100之间能被3整除的数

2、输出从1~100之间的素数

3、输出9*9乘法表

5、猜数游戏,随机给出一个1~100之间的数,给5次机会,每次猜数后给出提示:大了还是小了,猜对后输出成功。获得随机数:

Random rand=new Random(); rand.Next(1,100);

6.编写程序,输出10000—30000中能同时被3、5、7、23整除的数及个数。

7.编写程序,求100—999中的“水仙花”数(也叫阿姆斯特朗数)及个数。(注:若3个数其各个位数字立方和等于该数本身,即为水仙花数,如153=1+125+27,则153是一个“水仙花”数。)

8.编写程序,求2—999中的同构数(也叫自守数)及其个数。(正整数n若是它平方数的尾部,则称n为同构数。例如:5的平方数是25,且5出现在25的右侧,那么5就是一个同构数。)

9.输出1—999中能被3整除且至少有位数字是5的所有整数及其个数。

10.从键盘输入两个正整数m和n,找出它们的最小公倍数。

11.输出Fibonacci数列1,1,2,3,5,8,13,…中前32项的值。

作业:讲解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6A7Ned7G-1672665634020)(E:\政通路\课堂笔记\S1\C#课堂笔记\assets\image-20200905091805558.png)]

思路:

不要背代码,第一步:观察九九乘法表有9行;有9列;

第一步能不能把九九乘法表的问题,给分解成先输出9行;

第四章:数组

定义:一组连续的内存空间,保存一组同类型的数据,数组有编号(下标)

第一节:数组的声明和遍历

数据类型[] 数组名称=new 数据类型[5];

数据类型[] 数组名称=new 数据类型[5]{数组的元素};

一、数组的声明和遍历

示例1:

int[] arr=new int[6];
string[] names=new string[4]{"王重阳","李逵","张无忌","张三丰"};
arr[0] = 6;
// arr[6] = 88;     数组下标越界
//arr[2]="令狐冲";   整型数组只能装整型值
//Console.WriteLine(names[5]);    数组下标越界
//names.Length 数组长度属性:Length
for(int i = 0; i < names.Length; i++)   //遍历数组中的每一个元素
{
      Console.WriteLine(names[i]);
}

数组一旦创建完毕,它的长度是不能改变的,数组的下标从0开始。最大下标是数组的长度减一。

二、数组的比较大小

示例:2:求学生成绩的最高分(最低分、平均分)

double[] scores = new double[] { 89, 58, 99, 100, 110, 66, 95, 78, 45.6, 98.6, 88 };
double max = scores[0]; //让数组的第一个元素站到擂台上
for (int i = 1; i < scores.Length; i++)
{
    if (scores[i] > max)//将数组中后面的元素依次和擂台上的数进行比较,
    {
        max = scores[i];//比擂台上数字大的站到擂台上
    }
}
Console.WriteLine("学生的最高成绩是:"+max);

三、查找数组中的元素

示例3:查找指定的数值在数组中的位置

int[] arr = new int[] {4,6,8,9,2,11,33,46 };
Console.WriteLine("请输入要查找的数");
string str=Console.ReadLine();
int num = int.Parse(str);
int index = -1;
for(int i = 0; i < arr.Length; i++)
{
    if (num == arr[i])
    {
        index = i;
        break;
    }
}
if (index != -1)
{
    Console.WriteLine("你要找的数字"+num+"在下标为"+index+"的位置");
}else
{
    Console.WriteLine("没有找到你要的数"+num);
}


C#WinForm基础编程(二)https://developer.aliyun.com/article/1433701

目录
相关文章
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
39 3
|
6天前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
42 12
|
1月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
53 4
|
3月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
2月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
225 0
|
3月前
|
API C#
C# 一分钟浅谈:文件系统编程
在软件开发中,文件系统操作至关重要。本文将带你快速掌握C#中文件系统编程的基础知识,涵盖基本概念、常见问题及解决方法。文章详细介绍了`System.IO`命名空间下的关键类库,并通过示例代码展示了路径处理、异常处理、并发访问等技巧,还提供了异步API和流压缩等高级技巧,帮助你写出更健壮的代码。
54 2
|
2月前
|
安全 C# 数据安全/隐私保护
实现C#编程文件夹加锁保护
【10月更文挑战第16天】本文介绍了两种用 C# 实现文件夹保护的方法:一是通过设置文件系统权限,阻止普通用户访问;二是使用加密技术,对文件夹中的文件进行加密,防止未授权访问。提供了示例代码和使用方法,适用于不同安全需求的场景。
153 0
|
3月前
|
安全 程序员 编译器
C#一分钟浅谈:泛型编程基础
在现代软件开发中,泛型编程是一项关键技能,它使开发者能够编写类型安全且可重用的代码。C# 自 2.0 版本起支持泛型编程,本文将从基础概念入手,逐步深入探讨 C# 中的泛型,并通过具体实例帮助理解常见问题及其解决方法。泛型通过类型参数替代具体类型,提高了代码复用性和类型安全性,减少了运行时性能开销。文章详细介绍了如何定义泛型类和方法,并讨论了常见的易错点及解决方案,帮助读者更好地掌握这一技术。
87 11
|
3月前
|
SQL 开发框架 安全
并发集合与任务并行库:C#中的高效编程实践
在现代软件开发中,多核处理器普及使多线程编程成为提升性能的关键。然而,传统同步模型在高并发下易引发死锁等问题。为此,.NET Framework引入了任务并行库(TPL)和并发集合,简化并发编程并增强代码可维护性。并发集合允许多线程安全访问,如`ConcurrentQueue&lt;T&gt;`和`ConcurrentDictionary&lt;TKey, TValue&gt;`,有效避免数据不一致。TPL则通过`Task`类实现异步操作,提高开发效率。正确使用这些工具可显著提升程序性能,但也需注意任务取消和异常处理等常见问题。
60 1
|
2月前
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
140 0