# 物件導向程式設計實習
## 20240124課堂作業




### 心得
C#前面的部分跟C差不多,不過C#感覺是寫比較底層的,C#是以物件導向為主的,比較期待後面用C#做商務軟體開發。而且根據同學所說,C#跟Android開發的layout都可以用來做UI的,可以用來包裝後端系統,跟我目前在學的東西有一點點關聯
## 20240221課堂作業
#### 註:vs中文套件好像有問題,打中文會出現"?",所以只能用英文
### p1

### p2

```csharp=
//20240221
internal class Program
{
private static void Main(string[] args)
{
Console.Write("Your name? ");
string? name = Console.ReadLine();
Console.Write("Amount of withdrawals:");
int money = Convert.ToInt32(Console.ReadLine());
Console.WriteLine($"Hi! {name},Amount:{money:C0}");
}
}
```
### p3


```csharp!
namespace WinFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = DateTime.Now.ToString();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
Text = "";
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = "Hello";
}
}
}
```
## 20240306課堂作業
### p1

```csharp=
// See https://aka.ms/new-console-template for more information
using static System.Console;
Console.WriteLine("資訊一甲05江寬泓");
Console.WriteLine("");
int num1 = 1_23_4876;
long num2 = 1_23_8009L;
long max = Int64.MaxValue;
long min = Int64.MinValue;
int num3 = 0b1011_110;
int num4 = 0b_11111_1011000;
int num5 = 0x_FCB64;
Console.WriteLine($"Number: {num1:n0},{num2:n0}");
Console.WriteLine($"二進轉十進:{num3:D5},{num4:d5},{num5:d5}");
WriteLine($".NET類別(num1): {num1.GetType()}");
WriteLine($".NET類別(num2): {num2.GetType()}");
WriteLine($"最大值:{max},最小值:{min}");
```
### p2

```csharp=
// See https://aka.ms/new-console-template for more information
using static System.Console;
Console.WriteLine("資訊一甲05江寬泓");
Console.WriteLine("");
float num1 = 1.219618565189f;
double num2 = 1.978465132798984456;
decimal num3 = 1.48978465385463651846m;
double x1 = 0.1;
double x2 = 0.2;
decimal y1 = 0.1m;
Decimal y2 = 0.2m;
WriteLine($"Float : {num1}");
WriteLine($"Double : {num2}");
WriteLine($"Decimal : {num3}");
WriteLine($"Float : {num1:f4}");
WriteLine($"double佔<{sizeof(double)}>位元組");
WriteLine($"Decimal佔<{sizeof(decimal)}>位元組");
```
### p3

```csharp=
// See https://aka.ms/new-console-template for more information
using static System.Console;
Console.WriteLine("資訊一甲05江寬泓");
Console.WriteLine("");
const float square = 3.0579f;
Write("坪數:");
float area = Convert.ToSingle(ReadLine());
WriteLine($"{area}坪 = {square*area}平方公尺");
const float pi = 3.14f;
WriteLine($"圓面積 : {pi * 25.0}");
```
## 20240313課堂作業
### p1
```csharp=
using System.CodeDom.Compiler;
namespace WinFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
textBox2.ReadOnly = true;
textBox1.MaxLength = 3;
textBox1.TabIndex = 0;
}
private void label1_Click(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
try
{
double temp = double.Parse(textBox1.Text);
temp = temp * 9 / 5 + 32;
textBox2.Text = temp.ToString("f1");
textBox1.Focus();
}
catch
{
textBox2.Text = "請輸入溫度數值";
textBox1.Clear();
}
}
}
}
```

### p2
```
namespace WinFormsApp3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string username = Microsoft.VisualBasic.Interaction.InputBox("請輸入姓名", "輸入");
DialogResult dr = MessageBox.Show(username + "歡迎您!", "歡迎", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
Text = username;
}
private void button1_Click(object sender, EventArgs e)
{
try
{
int mon = Int32.Parse(textBox2.Text);
label3.Text = $"提款金額:{mon}";
}
catch
{
MessageBox.Show("請輸入整數", "注意", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
```


## 20240320課堂作業
### p1
```csharp=
using System.Diagnostics.CodeAnalysis;
int sum = 0;
int counter = 0;
for (; ; ) {
counter++;
Console.Write("請輸入值作家總");
int num = Int32.Parse(Console.ReadLine());
sum+= num;
Console.Write("還要繼續嗎?(y繼續,n離開)");
string r = Console.ReadLine();
if (r == "n")
{
break;
}
else
{
continue;
}
}
Console.WriteLine($"輸入{counter}個數值,合計{sum}");
```

## 20240327課堂作業
### p1
```csharp=
// See https://aka.ms/new-console-template for more information
string[] name = { "Molly", "Eric", "Johseph", "Peter", "Iron", "Priyanka" };
int[] age = { 24, 26, 24, 26, 28, 25 };
Console.WriteLine("---年齡符合24歲---");
for(int i=0;i<age.Length; i++)
{
if (age[i] == 24)
{
Console.Write(name[i]+" ");
}
}
Console.WriteLine();
Console.WriteLine();
Array.Sort(age);
int pos = Array.IndexOf(age, 25);
Console.Write($"找到年齡25! 位置:{pos}");
```

### p2
```csharp=
Console.WriteLine(" Mary Tomas John");
Random rnd = new Random(Guid.NewGuid().GetHashCode());
long [] sum = { 0, 0, 0 };
for (int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
long randomNumber = rnd.Next();
sum[j] = sum[j] + randomNumber;
Console.Write($" {randomNumber}");
}
Console.WriteLine();
}
Console.WriteLine("---------------------");
Console.Write("Sum: ");
for(int i = 0;i < 3; i++)
{
Console.Write($"{sum[i]} ");
}
```

### p3
```csharp=
Console.WriteLine("//Can't use Chinese");
int[,,] data = new int[2,2,3]{
{ { 11, 13, 15}, {22, 24, 26} },
{ { 33, 38, 41}, {44, 48, 52} }
};
int findValue = 48;
int table=0,row=0,col = 0;
bool found = false;
//IDE語言套件有問題,不能用中文
Console.WriteLine($"{data.GetLength(0) + 1} table ,{data.Rank - 1}D Array {data.GetLength(1) + 1}*{data.GetLength(2) + 1}");
for (int i = 0; i < data.GetLength(0); i++) {
Console.WriteLine($"--- table {i+1} ---");
for(int j = 0; j < data.GetLength(1); j++) {
for(int k = 0;k < data.GetLength(2); k++) {
if(!found) {
if (data[i,j,k] == findValue) {
table = i + 1;
row = k + 1;
col = j + 1;
found = true;
}
}
Console.Write($"{data[i, j, k]} ");
}
Console.WriteLine();
}
Console.WriteLine();
}
Console.WriteLine($"element: {findValue} is in table {table},row {row},column{col}");
```

## 20240403課堂作業
### p1
```csharp=
namespace ClassWork_0403_p1
{
public partial class Form1 : Form
{
int n = 0;
int sum = 0;
public string[] j = new string[] { "A", "B", "C", "D", "E" };
public Form1()
{
InitializeComponent();
}
public void label1_Click(object sender, EventArgs e)
{}
private void listBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{}
private void textBox1_TextChanged(object sender, EventArgs e)
{}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = $"{j[n]} score";
}
private void button1_Click(object sender, EventArgs e)
{
int number;
if (Int32.TryParse(textBox1.Text, out number))
{
if(number<=100 && number >= 0)
{
listBox1.Items.Add($"{j[n]}: {number}");
if (n != 4)
{
n++;
label1.Text = $"{j[n]} score";
}
else
{
button1.Enabled = false;
}
sum += number;
label2.Text = $"Average: {(double)sum / n:0.##}";
textBox1.Text = "";
}
else
{
MessageBox.Show("score must between 0 to 100!","Warning",MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("Pls Enter enteger!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
textBox1.Text = "";
}
}
}
```

### p2
```csharp=
using System;
namespace ClassWork_0403_p2_version2
{
public partial class Form1 : Form
{
public string[] song = new string[]
{
"Grievous Lady -nothing is but what is not-",
"Stuck in Dreams",
"The Arena",
"Forest Shrine",
"Ignotus",
"Singularity",
"Ether Strike",
"Testify",
"Regression",
"Cyberangle"
};
public string[] artist = new string[]
{
"Team Grimoire vs Laur",
"Nightcall",
"Lindsey Strling",
"Kerusu",
"ak+q",
"Etia",
"Akira Complex",
"void(mournfinale)",
"Gon",
"Hanser"
};
int[] rank = new int[10];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
//rank
int[] rank2 = new int[10];
rank.CopyTo(rank2, 0);
Array.Sort(rank, song);
Array.Sort(rank2, artist);
for (int i = 0; i < rank2.Length; i++)
{
ListViewItem item = new ListViewItem($"{rank[i]}");
item.SubItems.Add(artist[i]);
item.SubItems.Add(song[i]);
listView1.Items.Add(item);
}
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "";
listView1.Columns.Add("Rank", 50);
listView1.Columns.Add("Artist", 150);
listView1.Columns.Add("Song", 300);
for (int i = 0; i < rank.Length; i++)
{
rank[i] = i + 1;
}
button1_Click(sender, e);
}
private void button2_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
string[] song2 = new string[song.Length];
song.CopyTo(song2, 0);
Array.Sort(song, rank);
Array.Sort(song2, artist);
for (int i = 0; i < song2.Length; i++)
{
ListViewItem item = new ListViewItem($"{rank[i]}");
item.SubItems.Add(artist[i]);
item.SubItems.Add(song[i]);
listView1.Items.Add(item);
}
}
private void button3_Click(object sender, EventArgs e)
{
label1.Text = "";
listView1.Items.Clear();
string SearchArtist = textBox1.Text;
string result = $"Can't find {SearchArtist}";
int index = Array.IndexOf(artist, SearchArtist);
if (index != -1)
{
ListViewItem item = new ListViewItem($"{rank[index]}");
item.SubItems.Add(artist[index]);
item.SubItems.Add(song[index]);
listView1.Items.Add(item);
}
else
{
label1.Text = result;
}
}
}
}
```




### p3
```csharp=
namespace ClassWork_0403_p3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
float height;
if (radioButton1.Checked)
{
if (float.TryParse(textBox1.Text, out height))
{
height = height / 100;
}
else
{
label2.Text = "error";
}
}
else
{
height = float.Parse(textBox1.Text);
}
float weight = float.Parse(textBox2.Text);
label2.Text = $"BMI: {(weight/(height*height)).ToString()}";
}
private void Form1_Load(object sender, EventArgs e)
{
label2.Text = "";
}
}
}
```

## 20240410課堂作業
### p1
```csharp=
namespace homeWork_0410_p1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); // 初始化視窗元件
}
// 視窗載入時的初始化設定
private void Form1_Load(object sender, EventArgs e)
{
// 設定圖片顯示模式為拉伸
PicShow.SizeMode = PictureBoxSizeMode.StretchImage;
// 設定初始圖片高度與寬度
PicShow.Height = 90;
PicShow.Width = 90;
// 載入初始圖片
PicShow.Image = Image.FromFile("C:\\Users\\popst\\Pictures\\miyu_art\\pic1.png");
// 設定滑桿最大最小值與初始值
TkbPic.Maximum = 3;
TkbPic.Minimum = 1;
// 設定垂直滾動條的最大最小值與初始值
VsbHeight.Maximum = 180;
VsbHeight.Minimum = 1;
VsbHeight.LargeChange = 1;
VsbHeight.Value = PicShow.Height;
// 設定水平滾動條的最大最小值與初始值
HsbWidth.Maximum = 180;
HsbWidth.Minimum = 1;
HsbWidth.LargeChange = 1;
HsbWidth.Value = PicShow.Width;
// 設定工具提示內容
Ttip.SetToolTip(VsbHeight, $"{VsbHeight.Value}");
Ttip.SetToolTip(HsbWidth, $"{HsbWidth.Value}");
Ttip.SetToolTip(TkbPic, "pic1");
}
// 垂直滾動條滾動事件
private void VsbHeight_Scroll(object sender, ScrollEventArgs e)
{
// 調整圖片高度並更新工具提示內容
PicShow.Height = VsbHeight.Value;
Ttip.SetToolTip(VsbHeight, $"{VsbHeight.Value}");
}
// 水平滾動條滾動事件
private void HsbWidth_Scroll(object sender, ScrollEventArgs e)
{
// 調整圖片寬度並更新工具提示內容
PicShow.Width = HsbWidth.Value;
Ttip.SetToolTip(HsbWidth, $"{HsbWidth.Value}");
}
// 圖片切換滑桿滾動事件
private void TkbPic_Scroll(object sender, EventArgs e)
{
// 切換圖片並更新工具提示內容
PicShow.Image = Image.FromFile($"C:\\Users\\popst\\Pictures\\miyu_art\\pic{TkbPic.Value}.png");
Ttip.SetToolTip(TkbPic, $"pic{TkbPic.Value}");
}
}
}
```


### p2
```csharp=
namespace homeWork_0410_p2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
}
private void timer1_Tick(object sender, EventArgs e)
{
if(DateTime.Now >= dateTimePicker1.Value)
{
timer1.Enabled = false;
MessageBox.Show(textBox1.Text,"warning");
System.Media.SystemSounds.Beep.Play();
}
}
private void Form1_Load(object sender, EventArgs e)
{
dateTimePicker1.CustomFormat = "HH:mm:ss";
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.MinDate = DateTime.Now.AddMinutes(1);
dateTimePicker1.MaxDate = DateTime.Now.AddMinutes(10);
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Interval = 1000;
timer1.Enabled = true;
dateTimePicker1.Enabled = false;
}
}
}
```

## 20240417課堂作業
### p1




