Язык «Си шарп»
Вследствие технических ограничений на отображение (стандартные шрифты, браузеры и т. д.) и того обстоятельства, что знак диез ?? не представлен на стандартной клавиатуре, знак номера # был выбран для представления знака диез при записи имени языка программирования. Это соглашение отражено в Спецификации Языка C# ECMA-334. Тем не менее, на практике (например, при размещении рекламы и коробочном… Читать ещё >
Язык «Си шарп» (реферат, курсовая, диплом, контрольная)
ОСОБЕННОСТИ ЯЗЫКА СОДЕРЖАТЕЛЬНАЯ ПОСТАНОВКА ПРОГРАММЫ ОПИСАНИЕ КЛАССОВ И СТРУКТУР, ИСПОЛЬЗУЕМЫХ В ПРОГРАММЕ
ДИАГРАММА КЛАССОВ ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ОПИСАНИЕ АЛГОРИТМА И ЛОГИКИ РАБОТЫ ПРОГРАММЫ ОПИСАНИЕ ПЕРЕМЕННЫХ ТЕСТИРОВАНИЕ ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЮ
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЯ
В наше время люди все больше и больше начинают работать с компьютером, он неотъемлемая часть нашей повседневной жизни, в какой бы сфере человек бы не был занят ему уже не обойтись без компьютера. Работа библиотекарей включает в себя постоянное отслеживание большого числа книг и журналов, которые люди берут для чтения. Именно для того чтобы облегчить работу по отслеживанию за книгами я решил разработать программу которая делала бы это самостоятельно, как только в нее внесут необходимые данные.
C# (произносится си шарп) — объектно-ориентированный язык программирования. Разработан в 1998;2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23 270.
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
Переняв многое от своих предшественников — языков C++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).
ОСОБЕННОСТИ ЯЗЫКА
C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает BCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем. (Однако эта закономерность была нарушена с выходом C# 3.0, представляющего собой расширения языка, не опирающиеся на расширения платформы .NET.) CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др.
Название «Си шарп» (от англ. sharp — диез) происходит от музыкальной нотации, где знак диез, прибавляемый к основному обозначению ноты, означает повышение соответствующего этой ноте звука на полутон/ Это аналогично названию языка C++, где «++» обозначает, что переменная должна быть увеличена на 1.
Вследствие технических ограничений на отображение (стандартные шрифты, браузеры и т. д.) и того обстоятельства, что знак диез ?? не представлен на стандартной клавиатуре, знак номера # был выбран для представления знака диез при записи имени языка программирования. Это соглашение отражено в Спецификации Языка C# ECMA-334. Тем не менее, на практике (например, при размещении рекламы и коробочном дизайне), Майкрософт использует предназначенный музыкальный знак.
Названия языков программирования не принято переводить, поэтому зачастую язык называют по-английски «Си шарп».
СОДЕРЖАТЕЛЬНАЯ ПОСТАНОВКА ПРОГРАММЫ
Программа должна выполнять функцию хранения данных о читателе и о том, какой материал (книга или журнал) он взял.
Должны быть реализованы следующие пункты:
— вывод списка читателей,
— вывод информации о читателе,
— какая книга или журнал были взяты,
— автор и издательство книги или журнала.
ОПИСАНИЕ КЛАССОВ И СТРУКТУР, ИСПОЛЬЗУЕМЫХ В ПРОГРАММЕ
UML диаграмма Рис. 1
Класс читатель
ID читателя (uniqueidentifier) — уникальный номер читателя. Позволяет однозначно идентифицировать читателя среди всех остальных.
Номер читателя (nchar (100)) — номер карточки читателя.
ФИО читателя (nchar (500)) — фамилия, имя и отчество читателя.
Дата рождения читателя (date) — дата, указывающая когда родился читатель.
Дата подписки чтателя (date) — дата, указывающая когда читатель был записан в библиотеку.
Место учебы читателя (nchar (100)) — указывает в какой учебном заведении обучается читатель.
Должность читателя (nchar (100)) — указывает какую должность занимает читатель в указанном учебном заведении.
Класс книга
ID книги (uniqueidentifier) — уникальный номер книги. Позволяет однозначно идентифицировать книгу среди всех остальных.
Название книги (nchar (100)) — название книги.
Автор книги (nchar (100)) — ФИО автора книги.
Год издания книги (nchar (10)) — год, в котором была издана книга.
Издательство (nchar (100)) — Издательство, выпустившее книгу.
Номер читателя (uniqueidentifier) — ID читателя, у которого находится книга.
ДИАГРАММА КЛАССОВ
Рис. 2
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
Программа написана на языке C# и работает под управлением операционной системы MS Windows.
Функциональное назначение:
Программа реализует популярную программу «Организация библиотечного учета». Управление данными осуществляется с помощью мыши и клавиатуры.
ОПИСАНИЕ АЛГОРИТМА И ЛОГИКИ РАБОТЫ ПРОГРАММЫ
После запуска программы на поле генерируется в случайном месте форма, состоящая из одного блока. Программа ждёт нажатия клавиш пользователем. После нажатия на раздел справочники, программа предлагает выбрать одно из полей. Выбрав поле мы можем либо добавить в него данные, либо редактировать, либо удалить. После нажатия клавиши добавить (кнопка на форме) появляется форма, в которую мы записываем информацию. После добавления данные загружаются в таблицу, форма закрывается, данные обновляются. После выбора поля и нажатия на кнопку редактировать (кнопка на форме) появляется форма с выбранной записью, если строка не выделена то значение индекса сбрасывается для избегания ошибки. После внесения изменений обновляются данные в таблице и форма закрывается. При неправильном вводе срабатывает обработчик исключений. Для завершения работы программы достаточно выбрать раздел файл — закрыть.
ОПИСАНИЕ ПЕРЕМЕННЫХ
Идентификатор | Тип | Назначение | |
myDB db | private | Доступ к базе данных | |
Form2 Dialog | public | Создание диалогового окна | |
ShowDialog | public | Показывается диалог | |
CurrentObject | private | Создание нового объекта | |
db.T1.InsertOnSubmit | private | Добавление объекта в базу данных | |
db.SubmitChanges | private | Сохранение изменений | |
Show_T1 | public | Обновление таблицы | |
ТЕСТИРОВАНИЕ
В ходе разработки программы все неполадки были устранены, программа работает корректно, дополнительное тестирование не требуется.
ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЮ
При запуске программы открывается форма. Создается подключение к базе данных, из нее считываются все данные о читателях и в таблицу формы выводятся следующие данные:
Номер читателя.
ФИО читателя.
Дата рождения читателя.
Дата подписки читателя.
Рис. 3
Для удаления записи о читателе необходимо выделить запись и нажать кнопку «Удалить».
Для добавления нового читателе необходимо нажать кнопку добавить, ввести информацию о читателе и нажать кнопку «Ок».
Для редактирования информации о читателе необходимо выделить нужную запись и нажать кнопку «Редактировать».
программа класс листинг алгоритм Рис. 4
Аналогично происходит добавление, редактирование и удаление записей о книгах, которые находятся у читателя Рис. 5
ЗАКЛЮЧЕНИЕ
В результате выполнения курсовой работы была разработана программа на языке Си#, позволяющая отслеживать нахождение материла (книг или журналов) на руках у читателей.
Исходными данными в программе являются люди зарегистрированные в данной библиотеке и имеющие у себя на руках что-то из каталога библиотеки.
Данные вводятся пользователем с клавиатуры и выводятся в окне программы.
1. Абрамян visual Си# в примерах.
2. Агуров сборник примеров в Си#.
3. Климов Си# советы программистам.
4. Культин visual Си#.
ПРИЛОЖЕНИЯ
Листинг программы
Файл Form1. cs
using System;
using System.Collections.Generic;
using System. ComponentModel;
using System. Data;
using System. Drawing;
using System. Linq;
using System. Text;
using System.Windows.Forms;
namespace Курсач
{
public partial class Form1: Form
{
public Form1()
{
InitializeComponent ();
}
public void Show_T1()
{
myDB db = new myDB (); // открывается доступ к базе данных
DG.DataSource = db. T1.Select (m => m);
DG.Columns[" T1S5″ ]. Visible = false;
DG.Columns[" T1S6″ ]. Visible = false;
DG.Columns[" T1ID" ]. Visible = false;
DG.Columns[" T1S1″ ]. HeaderText = «Номер читателя» ;
DG.Columns[" T1S2″ ]. HeaderText = «ФИО» ;
DG.Columns[" T1S3″ ]. HeaderText = «Дата рождения» ;
DG.Columns[" T1S4″ ]. HeaderText = «Дата подписки» ;
}
private void Form1_Load (object sender, EventArgs e)
{
Show_T1();
}
private void toolStripButton1_Click (object sender, EventArgs e)
{
myDB db = new myDB (); // открывается доступ к базе данных
Form2 Dialog = new Form2(); // создается диалоговое окно
Dialog.button3.Enabled = false;
Dialog.button4.Enabled = false;
Dialog.button5.Enabled = false;
Dialog.ShowDialog (); // показывается диалог
if (Dialog.DialogResult == System.Windows.Forms.DialogResult.OK)
{
T1 CurrentObject = new T1(); // Создание нового объекта
CurrentObject.T1ID = Guid. NewGuid ();
CurrentObject.T1S1 = Dialog. textBox1. Text;
CurrentObject.T1S2 = Dialog. textBox2. Text;
CurrentObject.T1S3 = Dialog. dateTimePicker1.Value;
CurrentObject.T1S4 = Dialog. dateTimePicker2.Value;
CurrentObject.T1S5 = Dialog. textBox5. Text;
CurrentObject.T1S6 = Dialog. textBox6. Text;
db.T1.InsertOnSubmit (CurrentObject); //добавление объекта в бд
db.SubmitChanges (); // Сохранение изменений
Show_T1(); //обновление таблицы
}
}
private void toolStripButton2_Click (object sender, EventArgs e)
{
if (DG.SelectedRows.Count ≠ 0)
{
myDB db = new myDB ();
Form2 Dialog = new Form2();
Dialog.nowID=(Guid)DG.SelectedRows[0]. Cells[" T1ID" ].Value;
Dialog.textBox1.Text=DG.SelectedRows[0].Cells[" T1S1″ ].Value.ToString (;
Dialog.textBox2.Text=DG.SelectedRows[0].Cells[" T1S2″ ].Value.ToString (;
Dialog.dateTimePicker1.Value = (System.DateTime)DG.SelectedRows[0]. Cells[" T1S3″ ].Value;
Dialog.dateTimePicker2.Value = (System.DateTime)DG.SelectedRows[0]. Cells[" T1S4″ ].Value;
Dialog.textBox5.Text=DG.SelectedRows[0].Cells[" T1S5″ ].Value.ToString (;
Dialog.textBox6.Text=DG.SelectedRows[0].Cells[" T1S6″ ].Value.ToString (;
Dialog.DG.DataSource = db. T2.Where (m=> m. T2ID == Dialog. nowID).Select (m=>m);
Dialog.button3.Enabled=true;
Dialog.button4.Enabled=true;
Dialog.button5.Enabled=true;
Dialog.ShowDialog ();
if (Dialog.DialogResult==System.Windows.Forms.DialogResult.OK)
{
T1 CurrentObject = db. T1.Where (m=>m.T1ID == Dialog. nowID).Select (m=>m).SingleOrDefault ();
CurrentObject.T1S1=Dialog.textBox1.Text;
CurrentObject.T1S2=Dialog.textBox2.Text;
CurrentObject.T1S3 = Dialog. dateTimePicker1.Value;
CurrentObject.T1S4 = Dialog. dateTimePicker2.Value;
CurrentObject.T1S5=Dialog.textBox5.Text;
CurrentObject.T1S6=Dialog.textBox6.Text;
db.SubmitChanges ();
Show_T1();
}
}
}
private void toolStripButton3_Click (object sender, EventArgs e)
{
if (DG.SelectedRows.Count ≠ 0)
{
myDB db = new myDB ();
T1 CurrentObject = db. T1.Where (m => m. T1ID == (Guid)DG.SelectedRows[0]. Cells[" T1ID" ].Value).Select (m => m).SingleOrDefault ();
db.T1.DeleteOnSubmit (CurrentObject);
db.SubmitChanges ();
Show_T1()
}
}
}
}
Файл Form2. cs
using System;
using System.Collections.Generic;
using System. ComponentModel;
using System. Data;
using System. Drawing;
using System. Linq;
using System. Text;
using System.Windows.Forms;
namespace Курсач
{
public partial class Form2: Form
{
public Guid nowID;
public void Show_T2()
{
myDB db = new myDB ();
DG.DataSource = db. T2.Where (m => m. T2T1 == nowID).Select (m => m);
DG.Columns[" T1″ ]. Visible = false;
DG.Columns[" T2T1″ ]. Visible = false;
DG.Columns[" T2ID" ]. Visible = false;
DG.Columns[" T2S1″ ]. HeaderText = «Название» ;
DG.Columns[" T2S2″ ]. HeaderText = «Автор» ;
DG.Columns[" T2S3″ ]. HeaderText = «Год издания» ;
DG.Columns[" T2S4″ ]. HeaderText = «Издательство» ;
}
public Form2()
{
InitializeComponent ();
}
private void button1_Click (object sender, EventArgs e)
{
DialogResult = System.Windows.Forms.DialogResult.Cancel;
}
private void button2_Click (object sender, EventArgs e)
{
if (textBox1.Text ≠ «» && textBox2. Text ≠ «» && textBox5. Text ≠ «» && textBox6. Text ≠ «»)
DialogResult = System.Windows.Forms.DialogResult.OK;
}
private void Form2_Load (object sender, EventArgs e)
{
Show_T2();
}
private void button3_Click (object sender, EventArgs e)
{
myDB db = new myDB ();
Form3 Dialog = new Form3();
Dialog.ShowDialog ();
if (Dialog.DialogResult == System.Windows.Forms.DialogResult.OK)
{
T2 CurrentObject = new T2();
CurrentObject.T2ID = Guid. NewGuid ();
CurrentObject.T2T1 = nowID;
CurrentObject.T2S1 = Dialog. textBox1. Text;
CurrentObject.T2S2 = Dialog. textBox2. Text;
CurrentObject.T2S3 = Dialog. textBox3. Text;
CurrentObject.T2S4 = Dialog. textBox4. Text;
db.T2.InsertOnSubmit (CurrentObject);
db.SubmitChanges ();
Show_T2();
}
}
private void button4_Click (object sender, EventArgs e)
{
myDB db = new myDB ();
Form3 Dialog = new Form3();
if (DG.SelectedRows.Count ≠ 0) // Если выделен хоть один объект
{
Dialog.textBox1.Text = DG. SelectedRows[0]. Cells[" T2S1″ ].Value.ToString ();
Dialog.textBox2.Text = DG. SelectedRows[0]. Cells[" T2S2″ ].Value.ToString ();
Dialog.textBox3.Text = DG. SelectedRows[0]. Cells[" T2S3″ ].Value.ToString ();
Dialog.textBox4.Text = DG. SelectedRows[0]. Cells[" T2S4″ ].Value.ToString ();
Dialog.ShowDialog ();
if (Dialog.DialogResult == System.Windows.Forms.DialogResult.OK)
{
T2 CurrentObject = db. T2.Where (m => m. T2ID == (Guid)DG.SelectedRows[0]. Cells[" T2ID" ].Value).Select (m => m).SingleOrDefault ();
CurrentObject.T2S1 = Dialog. textBox1. Text;
CurrentObject.T2S2 = Dialog. textBox2. Text;
CurrentObject.T2S3 = Dialog. textBox3. Text;
CurrentObject.T2S4 = Dialog. textBox4. Text;
db.SubmitChanges ();
Show_T2();
}
}
}
private void button5_Click (object sender, EventArgs e)
{
myDB db = new myDB ();
if (DG.SelectedRows.Count ≠ 0)
{
T2 CurrentObject = db. T2.Where (m => m. T2ID == (Guid)DG.SelectedRows[0]. Cells[" T2ID" ].Value).Select (m => m).SingleOrDefault ();
db.T2.DeleteOnSubmit (CurrentObject);
db.SubmitChanges ();
Show_T2();
}
}
}
}
Файл Form3.cs
using System;
using System.Collections.Generic;
using System. ComponentModel;
using System. Data;
using System. Drawing;
using System. Linq;
using System. Text;
using System.Windows.Forms;
namespace Курсач
{
public partial class Form3: Form
{
public Form3()
{
InitializeComponent ();
}
private void Form3_Load (object sender, EventArgs e)
{
}
private void button1_Click (object sender, EventArgs e)
{
DialogResult = System.Windows.Forms.DialogResult.Cancel;
}
private void button2_Click (object sender, EventArgs e)
{
if (textBox1.Text ≠ «» && textBox2. Text ≠ «» && textBox3. Text ≠ «» && textBox4. Text ≠ «»)
DialogResult = System.Windows.Forms.DialogResult.OK;
}
}
}