Автоматизированная информационная система на железнодорожном вокзале

Министерство  образования и науки РФ

Государственное образовательное учреждение высшего  профессионального образования 

******************************** 

*************************** 
 
 
 
 
 
 
 
 

Курсовая  работа

по  дисциплине «Объектно-ориентированное  программирование» 

«Автоматизированная информационная система на железнодорожном вокзале» 
 
 
 
 
 
 
 
 
 

                  Выполнил: студент гр. ****

                    Фамилия Имя

                  Проверил: доцент

                      Фамилия Имя 
                   
                   
                   
                   
                   
                   

г. Ваш город*

2009

    СОДЕРЖАНИЕ

  1. Задание…………………………………………………………..3
  2. Метод решения поставленной задачи………………………...4
  3. Блок-схема……………………………………………………...9
  4. Листинг………………………………………………………...10

 

1. ЗАДАНИЕ

     Написать  программу «Автоматизированная  информационная система на железнодорожном  вокзале». Информационная система должна содержать сведения об отправлении поездов дальнего следования. Для каждого поезда указывается: номер поезда, станция назначения, время отправления.

     Программа должна обеспечивать выбор с помощью  меню и выполнение одной из следующих  функций:

  1. первоначальный ввод данных в информационную систему (с клавиатуры или из файла);
  2. вывод сведений по всем поездам;
  3. вывод сведений по поезду с запрошенным номерам;
  4. вывод сведений по тем поездам, которые следуют до запрошенной станции назначения.

 

    2. МЕТОД РЕШЕНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ

    Сначала мы написали класс, используемый для хранения и обработки информации о поездах – класс reis.

    /*

         * класс рейса поездов 

         */

        public class reis

        {

            /*

         * объявляем поля класса

         */

            public String punkt_naznacheniya;

            public String vremya_otpravleniya;

            public int nomer_poezda;

            public reis(String punkt_naznacheniya, String vremya_otpravleniya, int nomer_poezda)

            {

                this.punkt_naznacheniya = punkt_naznacheniya;

                this.vremya_otpravleniya = vremya_otpravleniya;

                this.nomer_poezda = nomer_poezda;

            }

        } 

     Последующие решаемые в программе задачи связаны со взаимдействием созданного объекта класса reis с формой и с ее элементами управления. 

    В ниже приведенном конструкторе класса Form1 мы вызываем читаем  данные из файла db.txt и добавляем их в компонент типа DataGridView – poezda.

private void Form1_Load(object sender, EventArgs e)

        {

            /*

         * загрузка формы 

         */

            t_hour.Text = "Час";

            t_min.Text = "Минута";

            /*

         * чтение данных из файла

         */

            FileStream Stream2 = new FileStream("db.txt", FileMode.Open, FileAccess.Read);

            StreamReader Reader = new StreamReader(Stream2);

            string Str;

            int y;

            int z;

            bool zxc = false;

            do

            {

                Str = Reader.ReadLine();

                if (Str != null)

                {

                    if (zxc == true)

                    {

                        string[] arr = new string[3];

                        y = Str.IndexOf("\t");

                        z = 0;

                        do

                        {

                            arr[z] = Str.Substring(0, y);

                            Str = Str.Substring(y + 1, Str.Length - y - 1);

                            z++;

                            y = Str.IndexOf("\t");

                        }

                        while (y > -1);

                        string[] row = { arr[0], arr[1], Str };

                        poezda.Rows.Add(row);

                    }

                    zxc = true;

                } 

            }

            while (Str != null);

            Reader.Close();

            Stream2.Close();

            } 

    При нажатии на кнопку Добавить поезд выполняется метод добавления нового поезда и button1_Click. После нажатия на эту кнопку, создаётся объект класса reis, свойства которого добавляются в poezda.

     private void button1_Click(object sender, EventArgs e)

        {

            /*

         * добавление нового рейса в  БД

         */

            reis REIS = new reis(txt_punkt.Text, t_hour.Text+":"+t_min.Text, Int16.Parse(txt_nomer.Text));

            FileStream Stream = new FileStream("db.txt", FileMode.Append, FileAccess.Write);

            StreamWriter Writer = new StreamWriter(Stream);

            Writer.WriteLine(REIS.punkt_naznacheniya+"\t"+REIS.vremya_otpravleniya+"\t"+REIS.nomer_poezda.ToString());

            Writer.Close();

            Stream.Close();

            poezda.Rows.Clear();

            /*

         * считывание рейсов из файла

         */

            FileStream Stream2 = new FileStream("db.txt", FileMode.Open, FileAccess.Read);

            StreamReader Reader = new StreamReader(Stream2);

            string Str;

            int y;

            int z;

            bool zxc = false;

            do

            {

                Str = Reader.ReadLine();

                if (Str != null)

                {

                    if (zxc == true)

                    {

                        string[] arr = new string[3];

                        y = Str.IndexOf("\t");

                        z = 0;

                        do

                        {

                            arr[z] = Str.Substring(0, y);

                            Str = Str.Substring(y + 1, Str.Length - y - 1);

                            z++;

                            y = Str.IndexOf("\t");

                        }

                        while (y > -1);

                        string[] row = { arr[0], arr[1], Str };

                        poezda.Rows.Add(row);

                    }

                    zxc = true;

                } 

            }

            while (Str != null);

            Reader.Close();

            Stream2.Close();

            /*

             * очищаем поля ввода

            */

            txt_punkt.Text = "";

            txt_nomer.Text = "";

            t_hour.Text = "0";

            t_min.Text = "00";

        } 

    При нажатии на кнопку Поиск, откроется другая форма – Form2.

      
 
 
 
 
 
 
 
 

       При выборе одной из двух radiobutton и последующем нажатии кнопки Искать вызывается метод button1_Click.

private void button1_Click(object sender, EventArgs e)

        {

            /*

         * поиск

         */

            poisk.Rows.Clear();

            int kol = poezda.Rows.Count;

            kol--;

            for (int i = 0; i < kol; i++)

            {

                if (radioButton1.Checked == true)

                {

                    /*

         * поиск по пункту назначения

         */

                   if (poezda.Rows[i].Cells[0].Value.ToString() == searcher.Text)

                    {

                        string[] str = { poezda.Rows[i].Cells[0].Value.ToString(), poezda.Rows[i].Cells[1].Value.ToString(), poezda.Rows[i].Cells[2].Value.ToString() };

                        poisk.Rows.Add(str);

                    }

                }

                else

                {

                    /*

         * поиск по номеру рейса

         */

                    if (poezda.Rows[i].Cells[2].Value.ToString() == searcher.Text)

                    {

                        string[] str = { poezda.Rows[i].Cells[0].Value.ToString(), poezda.Rows[i].Cells[1].Value.ToString(), poezda.Rows[i].Cells[2].Value.ToString() };

                        poisk.Rows.Add(str);

                    }

                }

            }

    } 
3. БЛОК-СХЕМА

    Блок-схема  чтения из файла

    

    
 
4. ЛИСТИНГ

Form1:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Collections; 
 

namespace fidel

{

    public partial class Form1 : Form

    {

        /*

         * класс рейса поездов

         */

        public class reis

        {

            /*

         * объявляем поля класса

         */

            public String punkt_naznacheniya;

            public String vremya_otpravleniya;

            public int nomer_poezda;

            public reis(String punkt_naznacheniya, String vremya_otpravleniya, int nomer_poezda)

            {

                this.punkt_naznacheniya = punkt_naznacheniya;

                this.vremya_otpravleniya = vremya_otpravleniya;

                this.nomer_poezda = nomer_poezda;

            }

        } 

        public Form1()

        {

            InitializeComponent();

        } 

        private void button3_Click(object sender, EventArgs e)

       {

           

        } 

        private void Form1_Load(object sender, EventArgs e)

        {

            /*

         * загрузка формы 

         */

            t_hour.Text = "Час";

            t_min.Text = "Минута";

            /*

         * чтение данных из файла

         */

            FileStream Stream2 = new FileStream("db.txt", FileMode.Open, FileAccess.Read);

            StreamReader Reader = new StreamReader(Stream2);

            string Str;

            int y;

            int z;

            bool zxc = false;

            do

            {

                Str = Reader.ReadLine();

                if (Str != null)

                {

                    if (zxc == true)

                    {

                        string[] arr = new string[3];

                        y = Str.IndexOf("\t");

                        z = 0;

                        do

                        {

                            arr[z] = Str.Substring(0, y);

                            Str = Str.Substring(y + 1, Str.Length - y - 1);

                            z++;

                            y = Str.IndexOf("\t");

Автоматизированная информационная система на железнодорожном вокзале