Разработка программы для упрощения работы с электронной записной книжкой
Описание данных, используемых при решении задачи. Структура программного модуля. Составление блок-схемы процедуры заполнения класса ZapisBook из текстового файла. Описание разработанной программы для упрощения работы с электронной записной книжкой.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 03.10.2013 |
Размер файла | 687,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
3
Содержание
Введение
1 Проектирование программного модуля
1.1 Постановка задачи
1.2 Математическое (логическое) описание задачи
1.3 Описание данных, используемых при решении задачи
2 Разработка программного модуля
2.1 Структура программного модуля
2.2 Описание разработанной программы
3 Тестирование программного модуля
4 Руководство программиста
Заключение
Список использованных источников
Приложения
Приложение А. Код программы
Приложение Б. Входные и выходные формы программы
Введение
В современном мире компьютерные технологии играют важную роль во всех отраслях. Компьютеры используются повсеместно - в банках, научных организациях, финансовых учреждениях, машиностроительных предприятиях, домах, гостиницах и отелях. Они используются для различных целей - от проведения простых вычислений, игр и формального набора текстовых документов до проектирования различных задач, моделирования, работы со сложнейшей графикой.
Компьютеры в своей работе используют инженеры, конструкторы, администраторы, писатели, художники, композиторы и музыканты. На базе компьютеров созданы самые совершенные медицинские приборы. Без компьютеров сегодня невозможно создание промышленных роботов, автоматических линий. Положено начало применению персональных компьютеров в обучении.
Компьютерные технологии - одна из самых молодых наук и, возможно, самая быстроразвивающаяся. Буквально за 20 лет компьютеры стали неотъемлемой частью практически любой сферы деятельности человека. Они быстро эволюционировали из громоздких, дорогих, ненадежных, медленно работающих машин в компактные недорогие и, что самое главное, быстрые и надежные устройства. Современный персональный компьютер в десятки раз мощнее первых ПК, не говоря уже вообще о первых компьютерах. Современный ПК позволяет проводить сложнейшие расчеты, работать с графикой, выполнять моделирование и просто послушать музыку или посмотреть фильмы.
В настоящее время для ПК разработано огромное количество программ, позволяющих выполнять различные функции с минимальным участием пользователя. Одним из достоинств программы является полная ориентация на пользователя. Максимальная функциональность и удобство интерфейса программы - вот основные требования, предъявляемые к разработчикам программных продуктов. Начинающему работу за компьютером человеку должно быть понятно, как обращаться с программой и ее основными функциями. Чтобы дать разработчикам программ возможность разрабатывать такое программное обеспечение, необходимо создавать соответствующие языки программирования.
Языки программирования развивались параллельно с компьютерами. Первым языком программирования был машинный код, который использовался для пробивания перфокарт к первым компьютерам, но он требовал огромных познаний в области организации компьютеров. Затем был придуман Assembler, который очень сильно облегчил работу программистам. Однако и он оставался машинно-ориентированным языком. На смену ему пришли более простые Pascal и С, а затем Basic, C++, Delphi, С++ Builder. На сегодняшний день наиболее популярен язык программирования С++ Builder, основанный на языке С. Этот язык наиболее прост и понятен. С++Builder называют объектно-ориентированным языком программирования. Большинство современных приложений разрабатывается именно на этом языке.
Таким образом приложение «Записная книжка» включающее в себя немало современной функциональности, разрабатывается на трех языках программирования: С/C++, C++ Builder, C#.
1. Проектирование программного модуля
1.1 Постановка задачи
Описать класс «запись», содержащий следующие закрытые поля:
* фамилия, имя;
* номер телефона;
* дата рождения (массив из трех чисел).
Предусмотреть свойства для получения состояния объекта.
Описать класс «записная книжка», содержащий закрытый массив записей. Обеспечить следующие возможности:
* вывод на экран информации о человеке, номер телефона которого введен
с клавиатуры; если такого нет, выдать на дисплей соответствующее сообщение;
* поиск людей, день рождения которых сегодня или в заданный день;
* поиск людей, день рождения которых будет на следующей неделе;
* поиск людей, номер телефона которых начинается на три заданных цифры.
Написать программу, демонстрирующую все разработанные элементы классов.
1.2 Математическое (логическое) описание задачи
Создаваемый модуль представляет собой класс Zapis, состоящий из следующих закрытых полей:
«Фамилия» - хранит в себе фамилию.
«Имя» - хранит в себе имя
«Телефон» - хранит в себе телефон
«Дата рождения » - хранит в себе дату рождения.
А также класс ZapisBook, представляющий собой закрытый массив элементов типа Zapis.
Для работы с модулем были описаны методы позволяющие выводить информацию на экран, осуществлять поиск информации из класса по критериям.
1.3 Описание данных, используемых при решении задачи
В программном продукте «Записная книжка» исходными данными являются сведения о контактах. Данные извлекаются из файла, затем заносятся в массив класса и выводятся на экран.
В приложении, написанном на языке программирования C++Builder, данные отображаются в сетке StringGrid.
. Информация, считающаяся из файла, записывается в поля класса:.
- фамилия (Fam) - поле типа string
- имя (Name) - поле типа string .
- телефон (tel) - поле типа string
- дата рождения(data) - массив типа int, состоящий из трех элементов, хранящих день, месяц и год рождения.
2. Разработка программного модуля
2.1 Структура программного модуля
Блок-схема процедуры заполнения класса ZapisBook из текстового файла (в соответствии с рисунком 1):
Рисунок 1 - Блок-схема процедуры заполнения класса
Блок-схема процедуры вывода информации из класса ZapisBook в компонент Stringgrid (в соответствии с рисунком 2):
Рисунок 2- Блок-схема процедуры вывода информации из класса
Блок-схема для поиска данных (в соответствии с рисунком 3):
Рисунок 3.Лист 1 - Блок-схема для поиска данных по дате
Рисунок 3.Лист 2 - Блок-схема для поиска данных по дате
Рисунок 3.Лист 3 - Блок - схема для поиска данных по дате
2.2 Описание разработанной программы
Данная программа была разработана на трех языках программирования: Microsoft Visual C++ (консольное приложение), С++ Builder, Microsoft Visual C#(консольное приложение) для реализации возможности автоматизированного ввода информации по сотрудникам предприятия, с целью последующего хранения данной информации, её обработки, а так же для оперативного доступа к уже имеющейся в базе данных информации. программа электронный записная книжка
Общий интерфейс программы достаточно прост, пользователю знакомому с Windows, не составит большого труда научиться работать с ней.
Для того чтобы выполнить какую-либо операцию необходимо нажать соответствующую кнопку.
Программы, в соответствии с поставленными задачами, работают при помощи обработки файлов содержащих структуру данных. Обработка данных содержит следующие пункты: добавление записи, удаление записи, вывод информации пользователю.
При запуске программы открывается главная форма с размещенной на ней сеткой данных StringGrid. В ней отображаются данные, которые сохраняются в текстовом документе.
Программа позволяет отобразить данные в таблице, результаты поиска.
Общий интерфейс программы достаточно прост и пользователю, знакомому с Windows, не будет составлять большого труда научиться работать с ней.
Для того чтобы выполнить какую-либо операцию необходимо нажать соответствующую кнопку. К примеру, для того, чтобы совершить поиск по дате необходимо выбрать нужный критерий и нажать кнопку «Поиск».
3. Тестирование программного модуля
Тестирование программы можно произвести в три этапа.
1. Тестирование устойчивости. Проверялась реакция программы на некорректный ввод данных, значения которых выходят за допустимый диапазон.
2. Тестирование функциональности. Выполнялась проверка правильности предоставленной информации. Данные во всех случаях успешно проверены.
3. Тестирование применимости. Выполнялась проверка удовлетворения способов использования требованиям задания (время реакции приложения на команды пользователя, понятность интерфейса, устойчивость вычислительного процесса).
Таблица 1 Отчёт выполнения тестирования
П/п |
Этап тестирования |
Ошибки |
Отметка об исполнении |
|
1 |
Тестирование устойчивости |
Нет |
Выполнено |
|
2 |
Тестирование функциональности |
Нет |
Выполнено |
|
3 |
Тестирование применимости |
Нет |
Выполнено |
Технические характеристики компьютера, на котором проводилось тестирование:
- процессор Pentium IV 2.40 Gg
- 1024 оперативной памяти, DDR2 5300;
- видеокарта Radeon 9600 Pro ;
- монитор LG FLATRON F730B;
- жёсткий диск Samsung, объём 320Гб.
Тестирование показало, что программа работает без ошибок. Никаких отклонений в работе ее не обнаружено. Загрузка происходит быстро и составляет не более 15 секунд.
4. Руководство программиста
Данное приложение имеет интуитивно понятный интерфейс, не требует дополнительных знаний.
Ограничениями в области использования программ могут выступать системные требования, связанные с операционной системой, данный продукт разработан под операционную систему Windows, и не имеет возможности запуска на MacOS, Unix, Linux и иных операционных системах.
Для начала работы нужно запустить project.exe. После этого появиться форма с элементами управления (кнопки и поля ввода) и сеткой данных, в которую помещается информация из текстового файла.
Для добавления в базу нужно добавить информацию в текстовый документ «notebook.txt», в одну строку и разделенную точкой с запятой.
Для того чтобы совершить поиск по данным нужно выбрать нужный критерий и нажать на кнопку «Поиск». Возможен поиск по двум направлениям: по дате рождения и по номеру телефона.
При поиске по дате необходимо выбрать один из пунктов: «День рождения сегодня», «День рождения на следующей недели» или «В другой день». Если выбран критерий «В другой день», то нужно ввести в поле ввода необходимую дату.
При поиске по номеру телефона необходимо выбрать один из пунктов: «По номеру или «по трем цифрам». Для начала поиска нужно ввести в поле ввода искомые данные и нажать кнопку «Поиск»
Заключение
В результате выполнения курсового проекта была разработана программа для упрощения работы с электронной записной книжкой.
Кроме этого были расширены некоторые знания из данной предметной области и укреплены знания объектно-ориентированных языков программирования C/C++, C++Builder, C#. При реализации проекта были пройдены этапы описания и постановки задачи, кодирования программы на алгоритмический язык и тестирования полученного приложения.
На основании вышеизложенного можно сделать вывод, что использование курсового проекта заметно упростит ведение записей имеющихся контактов.
Список использованных источников
1. Ишкова, Э. А. С++. Начала программирования / Э. А.Ишкова. - М.: «Бином», 2000. -304 с.
2. Культин, Н. Б. С/С++ в задачах и примерах / Н. Б. Культин. - СПб.: БХВ-Петербург, 2002. - 592 с.
3. Павловская, Т. А. С/С++. Программирование на языке высокого уровня: учебник / Т. А.Павловская. - СПб.: Питер, 2006. - 461 с.
4. Павловская, Т.А. С/С++. Структурное программирование: практи-кум / Т.А. Павловская, Ю.А. Щупак - СПб.: Питер, 2003. - 240 с.
5. Подбельский, В.В. Язык С++:учеб. пособие / В.В. Подбельский - М.: Финансы и статистика, 2005. - 560с.
6. Шелест, В. Д. Программирование / В. Д. Шелест - СПб: БХВ - Петербург, 2002. - 288 с.
7. Шилдт, Г. Программирование на BORLAND C++ для профессионалов: пер. с англ./ Г. Шилдт - Минск.: Попурри, 1998. - 800 с.
1. 8. Шилдт, Г. Теория и практика С++: пер. с англ. / Г. Шилдт. - СПб.: БХВ-Петербург, 2001. - 416 с.
8. Методические рекомендации для учащихся по выполнению курсового проекта по дисциплине "Конструирование программ и языки програмирования", 2011.
9. ГОСТ 19.402-2000 ЕСПД. Описание программы.
10. ГОСТ 19.404-79 ЕСПД. Пояснительная записка. Требования к содержанию и оформлению.
11. ГОСТ 19.504-79 ЕСПД. Руководство программиста. Требования к содержанию и оформлению.
Приложение А
Код программы:
Листинг программы в Microsoft Visual C#. WindowsFormsApplication
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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void vivod()
{
ZapisBook zn = new ZapisBook("notebook.txt");
List<Zapis> mans = zn.vivod();
int i = 0;
dataGridView1.RowCount = 2;
if (mans.Count != 0)
{
foreach (Zapis z in mans)
{
dataGridView1.Rows[i].Cells[0].Value = mans[i].Famil;
dataGridView1.Rows[i].Cells[1].Value = mans[i].Name;
dataGridView1.Rows[i].Cells[2].Value = mans[i].Telefon;
dataGridView1.Rows[i].Cells[3].Value = Convert.ToString(mans[i].Date[0]) + "." + Convert.ToString(mans[i].Date[1]) + "." + Convert.ToString(mans[i].Date[2]);
dataGridView1.RowCount += 1;
i++;
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void Form1_Activated(object sender, EventArgs e)
{
vivod();
}
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked == true)
{
for (int i = 0; i < dataGridView1.RowCount; i++)
{
dataGridView1.Rows[i].Cells[0].Value = "";
dataGridView1.Rows[i].Cells[1].Value = "";
dataGridView1.Rows[i].Cells[2].Value = "";
dataGridView1.Rows[i].Cells[3].Value = "";
}
dataGridView1.RowCount = 1;
ZapisBook zn = new ZapisBook("notebook.txt");
List<Zapis> mans = zn.SearchMans();
if (mans.Count != 0)
{
dataGridView1.RowCount = mans.Count;
for (int j = 0; j < mans.Count; j++)
{
dataGridView1.Rows[j].Cells[0].Value = mans[j].Famil;
dataGridView1.Rows[j].Cells[1].Value = mans[j].Name;
dataGridView1.Rows[j].Cells[2].Value = mans[j].Telefon;
dataGridView1.Rows[j].Cells[3].Value = Convert.ToString(mans[j].Date[0]) + "." + Convert.ToString(mans[j].Date[1]) + "." + Convert.ToString(mans[j].Date[2]);
}
}
else MessageBox.Show("Искомых записей нет");
}
if (radioButton2.Checked == true)
{
for (int i = 0; i < dataGridView1.RowCount; i++)
{
dataGridView1.Rows[i].Cells[0].Value = "";
dataGridView1.Rows[i].Cells[1].Value = "";
dataGridView1.Rows[i].Cells[2].Value = "";
dataGridView1.Rows[i].Cells[3].Value = "";
}
dataGridView1.RowCount = 1;
ZapisBook zn = new ZapisBook("notebook.txt");
List<Zapis> mans = zn.SearchMansNextWeek();
if (mans.Count != 0)
{
dataGridView1.RowCount = mans.Count;
for (int j = 0; j < mans.Count; j++)
{
dataGridView1.Rows[j].Cells[0].Value = mans[j].Famil;
dataGridView1.Rows[j].Cells[1].Value = mans[j].Name;
dataGridView1.Rows[j].Cells[2].Value = mans[j].Telefon;
dataGridView1.Rows[j].Cells[3].Value = Convert.ToString(mans[j].Date[0]) + "." + Convert.ToString(mans[j].Date[1]) + "." + Convert.ToString(mans[j].Date[2]);
}
}
else MessageBox.Show("Искомых записей нет");
}
if (radioButton3.Checked == true)
{
string[] Words = maskedTextBox1.Text.Split(new char[] { '.' });
int dd = Convert.ToInt32(Words[0]);
int dm = Convert.ToInt32(Words[1]);
for (int i = 0; i < dataGridView1.RowCount; i++)
{
dataGridView1.Rows[i].Cells[0].Value = "";
dataGridView1.Rows[i].Cells[1].Value = "";
dataGridView1.Rows[i].Cells[2].Value = "";
dataGridView1.Rows[i].Cells[3].Value = "";
}
dataGridView1.RowCount = 1;
ZapisBook zn = new ZapisBook("notebook.txt");
List<Zapis> mans = zn.SearchMans(dd, dm);
if (mans.Count != 0)
{
dataGridView1.RowCount = mans.Count;
for (int j = 0; j < mans.Count; j++)
{
dataGridView1.Rows[j].Cells[0].Value = mans[j].Famil;
dataGridView1.Rows[j].Cells[1].Value = mans[j].Name;
dataGridView1.Rows[j].Cells[2].Value = mans[j].Telefon;
dataGridView1.Rows[j].Cells[3].Value = Convert.ToString(mans[j].Date[0]) + "." + Convert.ToString(mans[j].Date[1]) + "." + Convert.ToString(mans[j].Date[2]);
}
}
else MessageBox.Show("Искомых записей нет");
}
}
private void button2_Click(object sender, EventArgs e)
{
if (radioButton4.Checked == true)
{
dataGridView1.RowCount = 1;
for (int i = 0; i < dataGridView1.RowCount; i++)
{
dataGridView1.Rows[i].Cells[0].Value = "";
dataGridView1.Rows[i].Cells[1].Value = "";
dataGridView1.Rows[i].Cells[2].Value = "";
dataGridView1.Rows[i].Cells[3].Value = "";
}
int j = 0;
string telefon = textBox2.Text;
ZapisBook zn = new ZapisBook("notebook.txt");
Zapis mans = zn.SearchTelefon(telefon);
dataGridView1.Rows[j].Cells[0].Value = mans.Famil;
dataGridView1.Rows[j].Cells[1].Value = mans.Name;
dataGridView1.Rows[j].Cells[2].Value = mans.Telefon;
dataGridView1.Rows[j].Cells[3].Value = Convert.ToString(mans.Date[0]) + "." + Convert.ToString(mans.Date[1]) + "." + Convert.ToString(mans.Date[2]);
dataGridView1.RowCount += 1;
}
if (radioButton5.Checked == true)
{
dataGridView1.RowCount = 1;
for (int i = 0; i < dataGridView1.RowCount; i++)
{
dataGridView1.Rows[i].Cells[0].Value = "";
dataGridView1.Rows[i].Cells[1].Value = "";
dataGridView1.Rows[i].Cells[2].Value = "";
dataGridView1.Rows[i].Cells[3].Value = "";
}
string telefon = textBox2.Text;
ZapisBook zn = new ZapisBook("notebook.txt");
List<Zapis> mans = zn.SearchMans3NumTel(telefon);
dataGridView1.RowCount = mans.Count;
for (int j = 0; j < mans.Count; j++)
{
dataGridView1.Rows[j].Cells[0].Value = mans[j].Famil;
dataGridView1.Rows[j].Cells[1].Value = mans[j].Name;
dataGridView1.Rows[j].Cells[2].Value = mans[j].Telefon;
dataGridView1.Rows[j].Cells[3].Value = Convert.ToString(mans[j].Date[0]) + "." + Convert.ToString(mans[j].Date[1]) + "." + Convert.ToString(mans[j].Date[2]);
}
}
}
private void radioButton1_Click(object sender, EventArgs e)
{
vivod();
}
private void radioButton2_Click(object sender, EventArgs e)
{
vivod();
}
private void radioButton3_Click(object sender, EventArgs e)
{
vivod();
}
private void radioButton4_Click(object sender, EventArgs e)
{
vivod();
}
private void radioButton5_Click(object sender, EventArgs e)
{
vivod();
}
}
}
Классы :
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
class Zapis
{
// закрытые члены класса: фамилия, имя, телефон, дата рождения
private String _famil;
private String _name;
private String _telefon;
private Int32[] _date = new Int32[3];
// конструстор класса
public Zapis(String f, String n, String t, Int32 d, Int32 mn, Int32 y)
{
Famil = f.Trim();
Name = n.Trim();
Telefon = t.Trim();
Date[0] = d;
Date[1] = mn;
Date[2] = y;
}
// свойства для доступа к закрытым членам класса
public String Famil
{
get { return _famil; }
set { _famil = value; }
}
public String Name
{
get { return _name; }
set { _name = value; }
}
public String Telefon
{
get { return _telefon; }
set { _telefon = value; }
}
public Int32[] Date
{
get { return _date; }
set { _date = value; }
}
// виртуальный метод, который можно переопределить в наследных классах.
public virtual void print()
{
Console.WriteLine("{0} {1}, родился {2}.{3}.{4}, его номер телефона: {5}",
Name, Famil, Date[0], Date[1], Date[2], Telefon);
}
}
}
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
class ZapisBook
{
//private Zapis[] _mass = new Zapis[0];
// закрытый массив записей
private List<Zapis> _mass = new List<Zapis>();
//конструктор класса, подгружает из файла данные
public ZapisBook(String filename)
{
StreamReader sr = new StreamReader(filename);
String text = sr.ReadToEnd();
String[] lines = text.Split(new String[] { "\n", "\r" }, StringSplitOptions.RemoveEmptyEntries);
foreach (String s in lines)
{
String[] zap = s.Split(new String[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
_mass.Add(new Zapis(zap[0], zap[1], zap[2], Int32.Parse(zap[3]), Int32.Parse(zap[4]), Int32.Parse(zap[5])));
}
}
public List<Zapis> vivod()
{
List<Zapis> mas = new List<Zapis>();
foreach (Zapis z in _mass)
mas.Add(z);
return mas
;
}
// поиск человека по телефону
public Zapis SearchTelefon(String tel)
{
foreach (Zapis z in _mass)
if (z.Telefon == tel) return z;
return null;
}
// поиск людей, день рождения которых сегодня
public List<Zapis> SearchMans()
{
DateTime dt = DateTime.Now;
List<Zapis> mas = new List<Zapis>();
foreach (Zapis z in _mass)
if (z.Date[0] == dt.Day && z.Date[1] == dt.Month)
mas.Add(z);
return mas;
}
// поиск людей, день рождения которых в заданный день
public List<Zapis> SearchMans(Int32 day, Int32 month)
{
List<Zapis> mas = new List<Zapis>();
foreach (Zapis z in _mass)
if (z.Date[0] == day && z.Date[1] == month)
mas.Add(z);
return mas;
}
// поиск людей, день рождения которых будет на следующей неделе
public List<Zapis> SearchMansNextWeek()
{
// указатель на начало следующей недели
DateTime dt_now = DateTime.Now;
DayOfWeek dw = dt_now.DayOfWeek;
Int32 n = (dw == DayOfWeek.Sunday) ? 1 : DayOfWeek.Saturday - dw + 2;
// указатель указывает на понедельник следующей недели
dt_now = dt_now.AddDays(n);
List<Zapis> mas = new List<Zapis>();
foreach (Zapis z in _mass)
{
// день рождения человека из записи.
DateTime dt = new DateTime(dt_now.Year, z.Date[1], z.Date[0]);
// если дата рождения входит в диапазон следующего понедельника и следующего воскресенья
if (dt.DayOfYear >= dt_now.DayOfYear && dt.DayOfYear < dt_now.DayOfYear + 7)
mas.Add(z);
}
return mas;
}
// поиск людей, номер телефона которых начинается на три заданных цифры
public List<Zapis> SearchMans3NumTel(String num)
{
List<Zapis> mas = new List<Zapis>();
foreach (Zapis z in _mass)
if (z.Telefon.StartsWith(num))
mas.Add(z);
return mas;
}
}
}
Листинг программы в Microsoft Visual C#. ConsoleApplication
using System;
using System.Collections.Generic;
namespace ConsoleApplication3
{
class Program
{
static void Main()
{
ZapisBook zn = new ZapisBook("notebook.txt");
Console.Write("Введите номер телефона: ");
String tel = Console.ReadLine();
Zapis man = zn.SearchTelefon(tel.Trim());
if (man != null)
{
Console.WriteLine("С заданным номером телефона {0} нашлась запись:", tel);
man.print();
}
else
Console.WriteLine("С заданным номером телефона {0} записей не нашлось", tel);
List<Zapis> mans = zn.SearchMansNextWeek();
if (mans.Count != 0)
{
Console.WriteLine("На следующей неделе день рождение у следующих сотрудников:");
foreach (Zapis z in mans)
z.print();
}
else
Console.WriteLine("На следующей неделе именников нет");
Console.Write("Введите первые 3 цифры телефона: ");
tel = Console.ReadLine();
mans = zn.SearchMans3NumTel(tel);
if (mans.Count != 0)
{
Console.WriteLine("С первыми цифрами телефона {0}* нашлись записи:", tel);
foreach (Zapis z in mans)
z.print();
}
else
Console.WriteLine("С первыми цифрами телефона {0}* записей не нашлось.", tel);
Console.ReadLine();
}
}
}
С++ Builder
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Unit1.h"
#include "File1.h"
#include "File2.h"
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Zapis *abonent;
ZapisBook *book;
void print()
{
Form1->StringGrid1->RowCount=book->GetCount()+1;
for (int i=0;i<book->GetCount();i++)
{
Form1->StringGrid1->Cells[0][i+1]=book->GetZapis(i)->GetFam();
Form1->StringGrid1->Cells[1][i+1]=book->GetZapis(i)->GetName();
Form1->StringGrid1->Cells[2][i+1]=book->GetZapis(i)->GetTel();
Form1->StringGrid1->Cells[3][i+1]=book->GetZapis(i)->GetDate_Day()+"."+book->GetZapis(i)->GetDate_Month()+"."+book->GetZapis(i)->GetDate_Year();
}
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
abonent = new Zapis("Fam", "Imya", "Tel", 14, 4, 2013);
book = new ZapisBook();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
print();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
StringGrid1->Cells[0][0]="Фамилия";
StringGrid1->Cells[1][0]="Имя";
StringGrid1->Cells[2][0]="Телефон";
StringGrid1->Cells[3][0]="Дата рождения";
print();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (RadioGroup2->ItemIndex==0) {
abonent = new Zapis("Fam", "Imya", "Tel", 14, 4, 2013);
abonent=book->SearchTelefon(Edit2->Text);
if(abonent!=NULL){
StringGrid1->RowCount=2;
for (int i=0;i<book->GetCount();i++) {
Form1->StringGrid1->Cells[0][i+1]=abonent->GetFam();
Form1->StringGrid1->Cells[1][i+1]=abonent->GetName();
Form1->StringGrid1->Cells[2][i+1]=abonent->GetTel();
Form1->StringGrid1->Cells[3][i+1]=abonent->GetDate_Day()+"."+abonent->GetDate_Month()+"."+abonent->GetDate_Year();
}
}
else ShowMessage("С заданным номером телефона записей не нашлось");
}
if (RadioGroup2->ItemIndex==1) {
int k=book->GetCount(),m=1;
int *mas= new int[k];
String str,massiv="",st;
str=Edit2->Text;
int l=0, pos=0;
for (int i=0;i<book->GetCount();i++) {
st=Form1->StringGrid1->Cells[2][i+1];
pos=st.Pos(str);
if(strstr((Form1->StringGrid1->Cells[2][i+1]).c_str(),str.c_str())!=NULL && pos==1)
mas[i]=i;
else mas[i]=book->GetCount()+1;
massiv+=" "+IntToStr(mas[i]);
}
for(int i=0;i<StringGrid1->ColCount;i++)
for(int j=1; j<StringGrid1->RowCount;j++)
StringGrid1->Cells[i][j] = "";
StringGrid1->RowCount=1;
for (int i=0;i<book->GetCount();i++) {
if (mas[i]!=book->GetCount()+1) {
StringGrid1->RowCount+=1;
Form1->StringGrid1->Cells[0][m]=book->GetZapis(i)->GetFam();
Form1->StringGrid1->Cells[1][m]=book->GetZapis(i)->GetName();
Form1->StringGrid1->Cells[2][m]=book->GetZapis(i)->GetTel();
Form1->StringGrid1->Cells[3][m]=book->GetZapis(i)->GetDate_Day()+"."+book->GetZapis(i)->GetDate_Month()+"."+book->GetZapis(i)->GetDate_Year();
m++;
} else l++;
}if (l==book->GetCount()){
ShowMessage("С заданным номером телефона записей не нашлось");
print();}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
{
if (RadioGroup1->ItemIndex ==2)
MaskEdit1->Visible=True;
else MaskEdit1->Visible=False;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if (RadioGroup1->ItemIndex==0) {
// print();
int k=book->GetCount();
int *mas= new int[k];
TDate dt = Date();
TDate dr;
//dt += 7;
int day, month, day_grid, month_grid;
day = atoi(FormatDateTime("dd", dt).c_str());
month = atoi(FormatDateTime("mm", dt).c_str());
for (int i=0; i<book->GetCount(); i++)
{
dr = StrToDate(Form1->StringGrid1->Cells[3][i+1]);
day_grid = atoi(FormatDateTime("dd", dr).c_str());
month_grid = atoi(FormatDateTime("mm", dr).c_str());
if (day_grid == day && month_grid == month) mas[i] = i;
else mas[i]=book->GetCount()+1;
}
k=0;
for(int i=0;i<StringGrid1->ColCount;i++)
for(int j=1; j<StringGrid1->RowCount;j++)
StringGrid1->Cells[i][j] = "";
StringGrid1->FixedRows=1;
StringGrid1->RowCount=2;
for (int i=0; i<book->GetCount(); i++) {
if (mas[i]!=book->GetCount()+1) {
StringGrid1->RowCount += 1;
Form1->StringGrid1->Cells[0][k+1]=book->GetZapis(i)->GetFam();
Form1->StringGrid1->Cells[1][k+1]=book->GetZapis(i)->GetName();
Form1->StringGrid1->Cells[2][k+1]=book->GetZapis(i)->GetTel();
Form1->StringGrid1->Cells[3][k+1]=book->GetZapis(i)->GetDate_Day()+"."+book->GetZapis(i)->GetDate_Month()+"."+book->GetZapis(i)->GetDate_Year();
k++;
}
}
if (k==0) ShowMessage("Работников не найдено");
}
if (RadioGroup1->ItemIndex==1) {
// print();
int k=book->GetCount();
int *mas= new int[k];
TDate dt = Date();
TDate dr;
dt += 7;
int day, month, day_grid, month_grid;
day = atoi(FormatDateTime("dd", dt).c_str());
month = atoi(FormatDateTime("mm", dt).c_str());
for (int i=0; i<book->GetCount(); i++)
{
dr = StrToDate(Form1->StringGrid1->Cells[3][i+1]);
day_grid = atoi(FormatDateTime("dd", dr).c_str());
month_grid = atoi(FormatDateTime("mm", dr).c_str());
if (day_grid == day && month_grid == month) mas[i] = i;
else mas[i]=book->GetCount()+1;
}
k=0;
StringGrid1->RowCount=1;
for (int i=0; i<book->GetCount(); i++) {
if (mas[i]!=book->GetCount()+1) {
StringGrid1->RowCount += 1;
Form1->StringGrid1->Cells[0][k+1]=book->GetZapis(i)->GetFam();
Form1->StringGrid1->Cells[1][k+1]=book->GetZapis(i)->GetName();
Form1->StringGrid1->Cells[2][k+1]=book->GetZapis(i)->GetTel();
Form1->StringGrid1->Cells[3][k+1]=book->GetZapis(i)->GetDate_Day()+"."+book->GetZapis(i)->GetDate_Month()+"."+book->GetZapis(i)->GetDate_Year();
k++;
}
}
if (k==0) ShowMessage("Работников не найдено");
}
if (RadioGroup1->ItemIndex==2) {
//print();
int k=book->GetCount();
int *mas= new int[k];
TDate dt = StrToDate(MaskEdit1->Text);
TDate dr;
int day, month, day_grid, month_grid;
day = atoi(FormatDateTime("dd", dt).c_str());
month = atoi(FormatDateTime("mm", dt).c_str());
for (int i=0; i<book->GetCount(); i++)
{
dr = StrToDate(Form1->StringGrid1->Cells[3][i+1]);
day_grid = atoi(FormatDateTime("dd", dr).c_str());
month_grid = atoi(FormatDateTime("mm", dr).c_str());
if (day_grid == day && month_grid == month) mas[i] = i;
else mas[i]=book->GetCount()+1;
}
k=0;
StringGrid1->RowCount=1;
for (int i=0; i<book->GetCount(); i++) {
if (mas[i]!=book->GetCount()+1) {
StringGrid1->RowCount += 1;
Form1->StringGrid1->Cells[0][k+1]=book->GetZapis(i)->GetFam();
Form1->StringGrid1->Cells[1][k+1]=book->GetZapis(i)->GetName();
Form1->StringGrid1->Cells[2][k+1]=book->GetZapis(i)->GetTel();
Form1->StringGrid1->Cells[3][k+1]=book->GetZapis(i)->GetDate_Day()+"."+book->GetZapis(i)->GetDate_Month()+"."+book->GetZapis(i)->GetDate_Year();
k++;
}
}
if (k==0) ShowMessage("Работников не найдено");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
#ifndef File1_h
#define File1_h
#include <string.h>
using namespace std;
class Zapis
{
// закрытые члены класса: фамилия, имя, телефон, дата рождения
private:
String _famil;
String _name;
String _telefon;
int _date[3];
// свойства для доступа к закрытым членам класса
public:
// конструстор класса
Zapis(String, String, String, int, int, int);
String GetName();
String GetFam();
String GetTel();
String GetDate_Day();
String GetDate_Month();
String GetDate_Year();
};
// конструстор класса
Zapis::Zapis(String f, String n, String t, int d, int mn, int y) {
_famil = f.Trim();
_name = n.Trim();
_telefon = t.Trim();
_date[0] = d;
_date[1] = mn;
_date[2] = y;
}
String Zapis::GetName() {
return _name;
}
String Zapis::GetFam() {
return _famil;
}
String Zapis::GetTel() {
return _telefon;
}
String Zapis::GetDate_Day() {
return _date[0];
}
String Zapis::GetDate_Month() {
return _date[1];
}
String Zapis::GetDate_Year() {
return _date[2];
}
#endif
#ifndef File2_h
#define File2_h
#include "File1.h"
#include <string.h>
#include <stdio.h>
using namespace std;
class ZapisBook
{
private:
// закрытый массив записей
Zapis *_mass[100];
int _count;
public:
//конструктор класса, подгружает из файла данные
ZapisBook();
GetCount();
Zapis* GetZapis(int);
Zapis* SearchTelefon(String);
SearchMans(int *,int);
};
//конструктор класса, подгружает из файла данные
ZapisBook::ZapisBook() {
_count = 0;
FILE *f;
char c, *cstr, *words[100] = {0}, *p;
String str;
int i;
f = fopen("notebook.txt", "r");
str = "";
while ( !feof(f) ) {
c = fgetc(f);
if ( c == EOF ) break;
if (c == '\n') {
cstr = str.c_str();
p = strtok(cstr, ";");
i = 0;
if (p) {
words[i++] = p;
}
do {
p = strtok('\0', ";");
if (p) {
words[i++] = p;
}
} while(p);
_mass[_count] = new Zapis(words[0], words[1], words[2], atoi(words[3]), atoi(words[4]), atoi(words[5]));
_count++;
str = "";
} else {
str += c;
}
}
MessageDlg(str,mtConfirmation,TMsgDlgButtons()<<mbYes<<mbNo, 0);
fclose(f);
}
ZapisBook::GetCount() {
return _count;
}
Zapis* ZapisBook::GetZapis(int i) {
return _mass[i];
}
Zapis* ZapisBook::SearchTelefon(String tel)
{
for(int i=0; i<GetCount();i++)
if (GetZapis(i)->GetTel() == tel)return GetZapis(i);
return NULL;
}
// поиск людей, день рождения которых сегодня
ZapisBook::SearchMans(int *mass,int k)
{
AnsiString day, month, year, hour, min, sec;
day = FormatDateTime("dd", Date());
month = FormatDateTime("mm", Date());
year = FormatDateTime("yyyy", Date());
/* char *p,*cstr;
String str,dat[3],dd="";
TDateTime dt = Date();
str=DateToStr(dt);
cstr = str.c_str();
int i = 0;
p = strtok(cstr, ".");
if (p) {
dat[i++] = p;
}
*/
int l=0;
for(int i=0; i<GetCount();i++)
if (GetZapis(i)->GetDate_Day()==day &&GetZapis(i)->GetDate_Month()== month){
mass[i]=i;
} else mass[i]=0;
return *mass;
}
#endif
Приложение Б
Входные и выходные формы программы
Рисунок 1. Главная форма программы в Microsoft C#
Рисунок 2. Главная форма программы Microsoft C++ Builder
Рисунок 3. Консольное приложение Microsoft C#
Размещено на Allbest.ru
Подобные документы
Написание программы на языке Delphi - создание электронной записной книжки. Описание типов "запись", полей и массива, составление процедур. Создание приветствия и редактирование записи. Создание команды для вызова справки. Принцип работы программы.
контрольная работа [17,9 K], добавлен 23.09.2010Программирование игр с использованием визуальных компонентов. Описание операторов, используемых при практической реализации разработанной программы. Работа над созданием программы "Морской бой", постановка задачи, алгоритм реализации работы, блок-схема.
курсовая работа [175,9 K], добавлен 10.05.2010Программа по организации заполнения массива объектов приложения из внешнего файла данных формата csv. Описание модуля Def.h, Plant.h и Main.cpp. Контрольный пример работы программы. Рассмотрение передачи неправильного имени файла в качестве параметра.
курсовая работа [567,9 K], добавлен 27.01.2013Проект программы "Крестики-нолики". Блок-схема алгоритма. Описание работы программного продукта. Инструкция по инсталляции. Инструкция программисту, возможность доработки с целью упрощения исполняемых кодов. Инструкция по проверке и тестированию.
курсовая работа [235,8 K], добавлен 05.12.2009Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.
курсовая работа [81,7 K], добавлен 18.08.2014Изучение условий поставленной задачи и используемых данных для разработки программы хранения информации о рейсах поезда. Описание разработанных функций, листинга, блок-схем алгоритмов и дерева функции. Рассмотрение сценария диалога данной программы.
курсовая работа [532,7 K], добавлен 20.07.2014Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.
курсовая работа [215,3 K], добавлен 01.09.2010Разработка принципиальной схемы, выбор управляющего микроконтроллера. Общий алгоритм работы программы. Блок анализа и реализации команд, принятых от персонального компьютера. Описание используемых интерфейсов. Формат данных RS-232C, листинг программы.
курсовая работа [1,2 M], добавлен 26.12.2012Преобразование матрицы по заданным правилам. Методика работы с массивами, основанная на классических алгоритмах. Разработка и описание блок-схемы алгоритма. Листинг программы, экраны работы и отладки программы. Инструкция для пользователей программы.
контрольная работа [338,4 K], добавлен 29.01.2013Характеристика программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит результаты на экран. Описание переменных в программе, ее блок-схема и алгоритм работы. Листинг программы. Описание входных данных и результат вычислений.
курсовая работа [721,4 K], добавлен 10.11.2010