Thursday 21 April 2016

.net ii exam




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;
using System.Collections;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Threading;

namespace inventory
{
    public partial class Form1 : Form
    {
        public SortedList<int, data_format> db = new SortedList<int, data_format>();

        public static Object obj = new Object();

        public static bool gameclose = false;

        public static game_form game_window = new game_form();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Items.Add("regular");
            comboBox1.Items.Add("used");
            comboBox1.Items.Add("bulk");
            comboBox1.SelectedIndex = 0;

            search.Enabled = false;
            add.Enabled = false;
            delete.Enabled = false;
        }

        private void save_Click(object sender, EventArgs e)
        {
            openFileDialog2.Filter = "Text|*.txt";

            string file_path=null;
            if (openFileDialog2.ShowDialog() == DialogResult.OK)
            {
                file_path = openFileDialog2.FileName;
            }

            FileStream stream = new FileStream(file_path, FileMode.Create, FileAccess.Write);

            StreamWriter writter = new StreamWriter(stream);

            foreach (int key_ in db.Keys)
            {
                double price_ = Math.Round(db[key_].price,2);

                string data = string.Format("{0,-5}{1,-10}{2, -10}{3,-20}", key_.ToString(), price_.ToString(), db[key_].manufacture, db[key_].description);

                writter.Write(data + "\n");
            }

            writter.Close();

            stream.Close();

            toolStripStatusLabel1.Text = "file saved";
        }

        private void part_number_TextChanged(object sender, EventArgs e)
        {
            //part # 0-99
            if (Regex.IsMatch(part_number.Text, "^[0-9]{1}$|^[1-9]{1}[0-9]{1}$"))
            {
                search.Enabled = true;
                add.Enabled = true;
                delete.Enabled = true;
            }
            else
            {
                part_number.Text = "invalid";
                search.Enabled = false;
                add.Enabled = false;
                delete.Enabled = false;
            }
        }

        private void price_TextChanged(object sender, EventArgs e)
        {
            //price type double

            try
            {
                double value =  Convert.ToDouble(price.Text);
                add.Enabled = true;
                delete.Enabled = true;
            }
            catch (Exception e1)
            {
                price.Text = "invalid";
                add.Enabled = false;
                delete.Enabled = false;
            }
        }

        private void add_Click(object sender, EventArgs e)
        {
            data_format item = new data_format();
            item.part_number = Convert.ToInt32(part_number.Text);
            item.price = Convert.ToDouble(price.Text);
            item.description = description.Text;
            item.manufacture = manufacture.Text;

            db[item.part_number] = item;

            toolStripStatusLabel1.Text = "part # added/updated";
        }

        private void delete_Click(object sender, EventArgs e)
        {
            int key = Convert.ToInt32(part_number.Text);

            if (db.ContainsKey(key))
            {
                db.Remove(key);
                toolStripStatusLabel1.Text = "part # deleted";
            }
            else
            {
                toolStripStatusLabel1.Text = "part # not found";
            }
        }

        private void search_Click(object sender, EventArgs e)
        {
            int key = Convert.ToInt32(part_number.Text);

            if (db.ContainsKey(key))
            {
                price.Text = db[key].price.ToString();
                manufacture.Text = db[key].manufacture;
                description.Text = db[key].description;
                toolStripStatusLabel1.Text = "deleted";
            }
            else
            {
                toolStripStatusLabel1.Text = "part # not found";
            }
        }

        private void refresh_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = "#      $"+"\n";

            foreach (int key_ in db.Keys)
            {
                string newline = key_.ToString() + "        " + db[key_].price.ToString() + "\n";
                richTextBox1.Text += newline;
            }
        }

        private void load_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "Text|*.txt";

            string file_path = null;
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                file_path = openFileDialog1.FileName;
            }

            FileStream stream = new FileStream(file_path, FileMode.Open, FileAccess.Read);

            StreamReader reader = new StreamReader(stream);

            string data = reader.ReadLine();

            while (data != null)
            {
                int key_ = Convert.ToInt32(data.Substring(0, 2));
                double price_ = Convert.ToDouble(data.Substring(5, 10));
                string manufacture_ = data.Substring(15, 10);
                string description_ = data.Substring(25, 20);

                data_format item = new data_format();
                item.part_number = key_;
                item.price = price_;
                item.description = description_;
                item.manufacture = manufacture_;

                db[key_] = item;

                data = reader.ReadLine();
            }

            stream.Close();
            reader.Close();

            toolStripStatusLabel1.Text = "file loaded";
        }

        private void calculate_Click(object sender, EventArgs e)
        {
            Object selectedItem = comboBox1.SelectedItem;
            string purchase_type = selectedItem.ToString();

            int quantity_ = Convert.ToInt32(quantity.Text);
            double price_ = Convert.ToDouble(price.Text);
            double total_ = price_ * quantity_;

            switch (purchase_type)
            {
                case "bulk":
                 
                    if (quantity_ < 10)
                    {
                    }
                    else if (quantity_ < 20)
                    {
                         total_ -= 0.5 * quantity_;    //bulk purchase discount
                    }
                    else
                    {
                        total_ -=  quantity_;
                    }
                    break;

                case "used":
                    total_ *= 0.9;
                    break;

                default:
                    break;
            }

            total.Text = total_.ToString();
        }

        private void print_Click(object sender, EventArgs e)
        {
            printPreviewDialog1.Document = this.printDocument1;
            printPreviewDialog1.ShowDialog();

            DialogResult print = printDialog1.ShowDialog();
            if (print == DialogResult.OK)
            {
                printDocument1.PrinterSettings.PrinterName = printDialog1.PrinterSettings.PrinterName;
                printDocument1.Print();
            }
        }

        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            Font f = new Font(new FontFamily("arial"), 10, FontStyle.Regular);
            SolidBrush b = new SolidBrush(Color.Black);
            e.Graphics.DrawString("student name", f, b, 0, 0);

            int column = 0;
            int row = 15;

            e.Graphics.DrawString("part#", f, b, column, row);
            e.Graphics.DrawString("price", f, b, column + 100, row);
            e.Graphics.DrawString("manufacture", f, b, column + 200, row);
            e.Graphics.DrawString("description", f, b, column + 300, row);

            int line = 1;
            foreach (int key_ in db.Keys)
            {
                e.Graphics.DrawString(key_.ToString(), f, b, column, row * (line + 1));

                e.Graphics.DrawString(db[key_].price.ToString(), f, b, column + 100, row * (line + 1));

                e.Graphics.DrawString(db[key_].manufacture, f, b, column + 200, row * (line + 1));

                e.Graphics.DrawString(db[key_].description, f, b, column + 300, row * (line + 1));

                line++;
            }

            e.HasMorePages = false;
        }

        private void game_Click(object sender, EventArgs e)
        {
            if (Form1.gameclose == true)
            {
                Thread.CurrentThread.Abort();     //abort previous game
                Form1.gameclose = false;
            }
         
            Form1.game_window.Show();

            ball_game x = new ball_game();
            Thread process = new Thread(new ThreadStart(x.move_ball));
            process.Start();        
        }


    }

    public class data_format
    {
        public int part_number;
        public double price;
        public string manufacture;
        public string description;
    }

    public class ball_game
    {
     
        Pen p = new Pen(Color.Black);      

        public void move_ball()
        {            
         
            //if ball hit wall, it will bonce back
           
                Graphics g = Form1.game_window.CreateGraphics();

                Random r = new Random();

                int turn = 0, x_move = 10, y_move = 10, x_position = r.Next(30, Form1.game_window.Size.Width - 60), y_position = r.Next(30, Form1.game_window.Size.Height - 60);
                           
                while (true)
                {
                    if (Form1.gameclose == true)
                    {
                        Form1.gameclose = false;
                        Thread.CurrentThread.Abort();
                    }

                    g.Clear(Form1.game_window.BackColor);

                    if (x_position > Form1.game_window.Size.Width - 60)
                    {
                        x_move = -x_move;
                    }

                    if (y_position > Form1.game_window.Size.Height - 60)
                    {
                        y_move = -y_move;
                    }

                    if (x_position < 0)
                    {
                        x_move = -x_move;
                    }

                    if (y_position < 0)
                    {
                        y_move = -y_move;
                    }

                    x_position += x_move;
                    y_position += y_move;

                    g.DrawEllipse(p, x_position, y_position, 30, 30);
                    Thread.Sleep(100);
                    turn++;
                }        
        }

 
    }
}

---------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;

namespace inventory
{
    public partial class game_form : Form
    {
        public game_form()
        {
            InitializeComponent();
        }

        private void game_form_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
            this.Hide();  //can't close game_form, otherwise it won't be opened again
            Form1.gameclose = true;          
        }
    }
}

No comments:

Post a Comment