C#程序学习笔记
控制台编程基础
基础信息
C#是一个现代的、通用的、面向对象的编程语言,它是由微软开发的
开发工具:VS
新建项目

注意这里要选第二个
C#程序的结构
第一段代码(输出hello world)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace CSPro002
{ internal class Program {
static void Main(string[] args) { Console.WriteLine("Hello,world!"); } } }
|
先看这个helloworld的代码,观察一下程序结构
个人的理解是:利用了C++的namespace,同时main方法和类中定义方法的模式又是java的
总之就是先声明namespace,在namespace中定义类
在类中定义方法。
C#语言的特点
- C#是大小写敏感的
- 所有的语句和表达式比如以分号结尾
- 程序运行从main方法开始
- 与java不同,文件名可以不同于类的名称
C#程序执行步骤原理
- 程序员编写源代码(调用.net framework类库)
- 源代码被编译,编译成中间代码MSIL(支持多种语言格式源代码编译成相同的中间代码)
- 中间代码在framework中的公共语言运行时CLR环境中被二次编译成机器语言
- 经过二次编译的代码在操作系统平台下运行。.net framework : 主要包括公共语言运行时CLR和类库
C#的注释
简单的分成单行和多行
控制台输出
不换行输出
1 2 3
| Console.Write("Hello"); Console.Write("world!");
|
换行输出
1 2 3
| Console.WriteLine("Hello"); Console.WriteLine("world!");
|
转义字符
- 空格:用于分割字符
- 制表符(\t):用于定位显示的数据,与word中Tabl的文字效果类型
- 换行符(\n):用于是现在新的一行输出信息。
- 其他转义字符:如单双引号等
示例:输出姓名、年龄、分数列表,要求类似表格形式排列整齐
1 2 3
| Console.Write("姓名\t年龄\t分数\n" + "jack\t23\t78\n" + "tom\t20\t80\n");
|
示例:输出 我爱“C#”编程
1
| Console.WriteLine("I love \"C#\" coding");
|
变量和数据类型
变量和常量
变量:在程序运行给过程中,存储的内容可以被改变
常量:在程序运行的过程中,存储的内容不能被改变
变量和常量都是在计算机内部申请的存储空间,在这块空间上操作数据
变量举例:
1 2 3
| int age - 20; age - 21; Console.WriteLine(age);
|
常量举例:
1 2 3
| const double PI = 3.14; PI = 3.15;
|
数据类型
基本类型如下:(能够表示的数据范围由小到大)
整型:byte(sbyte) (u)short (u)int (u)long
小数:float double
布尔: bool
字符:char
引用类型:String类型不是基本数据类型,是一种特殊的引用类型。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace CSPro003 { internal class Program { static void Main(string[] args) { int age; age = 18; int age2 = 18; Console.WriteLine(age); Console.WriteLine(age2);
const double PI = 3.14; Console.WriteLine(PI);
byte n1 = 20; Console.WriteLine(n1);
float n2 = 10.1f; Console.WriteLine(n2); char n3 = 'a'; Console.WriteLine(n3); bool n4 = false; Console.WriteLine(n4);
Console.WriteLine("byte空间"+sizeof(byte)+"最小值"+byte.MinValue + "最大值:" + byte.MaxValue); Console.WriteLine("sbyte空间"+sizeof(sbyte) +"最小值"+ sbyte.MinValue + "最大值:" + sbyte.MaxValue); Console.WriteLine("short空间"+sizeof(short) +"最小值"+ short.MinValue + "最大值:" + short.MaxValue); Console.WriteLine("ushort空间"+sizeof(ushort) +"最小值"+ ushort.MinValue + "最大值:" + ushort.MaxValue); Console.WriteLine("int空间"+sizeof(int) +"最小值"+ int.MinValue + "最大值:" + int.MaxValue); Console.WriteLine("uint空间"+sizeof(uint) +"最小值"+ uint.MinValue + "最大值:" + uint.MaxValue); Console.WriteLine("long空间"+sizeof(long) +"最小值"+ long.MinValue + "最大值:" + long.MaxValue); Console.WriteLine("float空间"+sizeof(float) +"最小值"+ float.MinValue + "最大值:" + float.MaxValue); Console.WriteLine("double空间"+sizeof(double) +"最小值"+ double.MinValue + "最大值:" + double.MaxValue); Console.WriteLine("char空间"+sizeof(char)); Console.WriteLine("bool空间"+sizeof(bool));
string str1 = "hello"; Console.WriteLine(str1);
int age1 = 50; int age2 = 40; int age3 = 25; Console.WriteLine("age1" + age1 +"age2" + age2 + "age3" + age3); Console.WriteLine("刘备年龄:{0},关于年龄:{1},张飞年龄:{2}",age1,age2,age3); } } }
|
运算符、表达式和数据类型
表达式
表达式:表达式是指由操作数和运算符组成的用于完成某种运算功能的语句。
运算符
算数运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
表格中的示例假设整数变量A的值为10,变量B 的值为20;

其中+运算符,除了数学运算,还可以再输出的过程中进行数据拼接,例如:
窗口化编程基础
前面的学习过程还是按照传统的应用台控制系统学的,但是从上第一节课开始我才知道这学期要学的是窗体应用,
这一点和这学期的培养方案也有关系,因为培养方案来看这学期学的主要是图形化开发。
然后我打算结合视频和已经有的知识直接来开发大作业。
图书管理系统设计
1、分为管理员和普通用户
2、主要功能:登陆,注册,图书的管理(增删改查),借还书
3、数据库
管理员表:只需要账号(id)密码(password);
用户表:id,name ,sex,pwd;
图书表:id,name,autor,publisher,库存。
借书表:用户id,图书id,日期
表名和值
admin:id,pwd;
user:id,name,sex,pwd;
book:id,name,author,publisher,number;
lend:uid,bid,datetime
1、在表格控件dataGridView1中显示所有的数据,从数据库中读取数据显示在表格控件中。
2、点击返回按钮buttonBack,返回Admin_Main.cs
3、有一个label组件labelChosenBook,点击dataGridView1中的一行的值(已经设置了每次获取都是获取一整行)会把id值和name值传给这个label组件,修改这个组件的text值为当前选择的id+name
4、点击buttonDelete,进行验证,当前是否有在dataGridView1中选择值,如果有,就弹窗,是否确认删除,如果确认,就执行删除操作,删除选择的dataGridView1中的值。将数据库中的那一行消息删除。删除成功或者失败都通过弹窗提示。
5、点击buttonChange,只需要跳转到
6、点击buttonRefresh,刷新表格
7、点击btnSearchById,先判断textBoxId中的值是否是数字,如果不是则通过弹窗提示,如果是则获取textBoxId中的值作为Id来查询数据,并显示在dataGridView1中,
8、点击btnSearchByName,获取textBoxName中的值作为id来查询数据,并且显示在dataGridView1。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| Admin_BookManage.cs
Admin_Main.cs
BookAdd.cs
BookChange.cs
Dao.cs
Data.cs
Login.cs
Program.cs
Reset.cs
User_lend.cs
User_Main.cs
Userregister.cs
User_return.cs
你好,我正在学习一个C# 这是我开发的一个管理系统。请帮我修改User_land.cs的代码,帮我完成一些需求。 1、首先类似Admin_BookManage.cs界面,在User_land.cs中的dataGridView1中显示所有图书数据。 2、其次在用户同样可以通过btnSearchById获取textBoxId中的值查询,btnSearchByName则是获取textBoxName的值查询,然后如果是通过通过btnSearchById获取textBoxId中的值查询,将唯一的查询结果的id+name赋值给labelChosenBook标签的text值。并且选中该图书,获取该书的id 3、点击buttonLend的时候执行咨询操作,先判断现在是否有选中的图书,如果没有则弹窗没有,如果有,再判断该字段的number值是否大于0,如果不满足则再弹窗提示,如果满足则执行借书操作,生成一条lend表的字段信息,uid为当前用户id,bid为书本的id,datetime获取当前时间即可,然后将Book表中的该书本字段信息中的number值-1。 如果要满足上述功能,请告诉我要如何修改代码?
|
需要补充的NuGet包
| 包名称 |
版本 |
作用 |
| System.Text.Json |
≥6.0 |
JSON解析 |
| Microsoft.CSharp |
≥4.7 |
动态类型支持 |
| System.Net.Http.Json |
≥5.0 |
HTTP内容处理 |