- Постановка задачи
Написать программу учета книг в библиотеке.Сведения о книгах содержат: фамилию и инициалы автора, название, год издания, количество экземпляров данной книги в библиотеке.Программа должна обеспечить выбор с помощью меню и выполнение одной из следующий функций:
- Добавление данных о книгах вновь поступающих в библиотеку;
- Удаление данных о списываемых книгах;
- Выдача сведений о всех книгах, упорядоченных по фамилиям авторов;
- Выдача сведений о всех книгах, упорядоченных по годам издания.
Хранение данных организовать с применением контейнерного классаlist.2 Решение поставленной задачиВ данной работе необходимо разработать программу, позволяющую хранить данные о всех книгах в библиотек, добавлять новые книги, удалять данные о списываемых книгах. Программа должна хранить информацию о всех книгах в библиотеке в отдельном файле. Для создания программы использовать язык программированияC++Builder6.Исходя из этого для хранения информации нужно использовать следующие данные:
- Фамилию и инициалы автора книги;
- Название книги;
- Год издания книги;
- Количество экземпляров данной книги.
Программа хранит данные с применением контейнерного классаlist. Список (List) хранит элементы в определенной последовательности.Listавтоматически изменяет размер, когда вы добавляете дополнительные элементы.3 Структура программного проектаstruct BookAnsiStringAvtor; // Данные о авторе книгиAnsiStringNazvanie; // Данные о названии книгиAnsiStringData; // Данные года издания книгиint Kolvo; //Данные количества экземпляров>;//—————————————————————————#include #include #pragma hdrstop#include #include #include «Unit1.h»#include «Unit2.h»//—————————————————————————#pragma package(smart_init)#pragma resource «*.dfm»TList *Library = new TList;TMain *Main;//—————————————————————————//различные сортировкиint __fastcall SortAvtor(void*Item1,void*Item2)return CompareText(((Book*)Item1)->Avtor,((Book*)Item2)->Avtor);>int __fastcall SortNazvanie(void*Item1,void*Item2)return CompareText(((Book*)Item1)->Nazvanie,((Book*)Item2)->Nazvanie);>int __fastcall SortData(void*Item1,void*Item2)return CompareText(((Book*)Item1)->Data,((Book*)Item2)->Data);>void __fastcall TMain::FormCreate(TObject *Sender)TabSheet2->Show();StringGrid1->Cells[0][0] ;StringGrid1->Cells[1][0] ;StringGrid1->Cells[2][0] ;StringGrid1->Cells[3][0] ;StringGrid2->Cells[0][0] ;StringGrid2->Cells[1][0] ;StringGrid2->Cells[2][0] ;StringGrid2->Cells[3][0] ;ComboBox1->Items->Clear();int nach = 1900;int konech = 2008;for(int i = nach;i ComboBox1->Items->Add(IntToStr(i));ComboBox1->ItemIndex = konech — nach — 5;>//—————————————————————————void __fastcall TMain::AddBtnClick(TObject *Sender)AnsiString Avtor = Edit1->Text; //добавлениеновыхданныхAnsiString Nazvanie = Edit2->Text; //добавлениеновыхданныхAnsiString Data = ComboBox1->Items->Strings[ComboBox1->ItemIndex];String Kolvo = Edit4->Text;if(Kolvo < 0 )ShowMessage(«Неправильныйформат»);return;>if(Avtor.Trim()==»»||Nazvanie.Trim()==»»||Data.Trim()==»»||Kolvo.Trim()==»»)ShowMessage(«Заполните все поля»);return;>elseBook *b1 = new Book(Avtor,Nazvanie,Data,StrToInt(Kolvo));Library->Add(b1);>for(int i = 0;i < Library->Count; i++)Book*b=(Book*)Library->Items[i];StringGrid1->Cells[0][i+1] = b->Avtor; //ВыводнаэкранStringGrid1->Cells[1][i+1] = b->Nazvanie; //добавленнойкнигиStringGrid1->Cells[2][i+1] = b->Data; //StringGrid1->Cells[3][i+1] = b->Kolvo; //>StringGrid1->RowCount = Library->Count+1;TabSheet1->Show();Edit1->Text = «»;Edit2->Text = «»;Edit4->Text = «»;>//—————————————————————————void __fastcall TMain::DeleteBtnClick(TObject *Sender)if(CheckBox1->Checked)if(StringGrid1->Row != 0)Library->Delete(StringGrid1->Row-1);StringGrid1->RowCount = Library->Count+1;>elseif(StringGrid1->Row != 0)Book*b = (Book*) Library->Items[StringGrid1->Row — 1];if(b->Kolvo < StrToInt(DelBook->Text))ShowMessage(«Выберете меньшее количество книг»);return;>if(b->Kolvo == StrToInt(DelBook->Text))Library->Delete(StringGrid1->Row-1);StringGrid1->RowCount = Library->Count+1;>if(b->Kolvo > StrToInt(DelBook->Text))b->Kolvo -= StrToInt(DelBook->Text);>>>for(int i = 0; i < Library->Count;i++)Book*b = (Book*) Library->Items[i];StringGrid1->Cells[0][i+1] = b->Avtor;StringGrid1->Cells[1][i+1] = b->Nazvanie;StringGrid1->Cells[2][i+1] = b->Data;StringGrid1->Cells[3][i+1] = b->Kolvo;>StringGrid2->Cells[0][0] ;StringGrid2->Cells[1][0] ;StringGrid2->Cells[2][0] ;StringGrid2->Cells[3][0] ;for(int i = 1;i Count;i++)StringGrid2->Cells[0][i]=»»;StringGrid2->Cells[1][i]=»»;StringGrid2->Cells[2][i]=»»;StringGrid2->Cells[3][i]=»»;>>//—————————————————————————void __fastcall TMain::N2Click(TObject *Sender)if(OpenDialog1->Execute())for(int i = Library->Count;i > 0;i—)Library->Delete(i-1);ifstream cFile(OpenDialog1->FileName.c_str(),ios::in);const int MaxLen = 255;char S_Avtor[MaxLen],S_Nazvanie[MaxLen],S_Data[MaxLen];int mDay,q;while(cFile >> S_Data)cFile.getline(S_Avtor,MaxLen);cFile >> q;cFile.getline(S_Nazvanie,MaxLen);AnsiString A = S_Avtor, N = S_Nazvanie, D = S_Data;A = A.Trim();N = N.Trim();D = D.Trim();Book*b1 = new Book(A,N,D,q);Library->Add(b1);>>StringGrid1->RowCount = Library->Count + 1;for(int i = 0;i < Library->Count;i++)Book*b = (Book*) Library->Items[i];StringGrid1->Cells[0][i+1] = b->Avtor;StringGrid1->Cells[1][i+1] = b->Nazvanie;StringGrid1->Cells[2][i+1] = b->Data;StringGrid1->Cells[3][i+1] = b->Kolvo;>TabSheet1->Show();>//—————————————————————————void __fastcall TMain::N3Click(TObject *Sender)char myFile[10];if(SaveDialog1->Execute())if(FileExists(SaveDialog1->FileName))fnsplit(SaveDialog1->FileName.c_str(),0,0,myFile,0);strcat(myFile,».BK»);RenameFile(SaveDialog1->FileName,myFile);>fstream ClientFile(SaveDialog1->FileName.c_str(),ios::out);for(int i = 1;i < StringGrid1->RowCount;i++ )AnsiString S_Avtor = StringGrid1->Cells[0][i];AnsiString S_Nazvanie = StringGrid1->Cells[1][i];AnsiString S_Data = StringGrid1->Cells[2][i];AnsiString S_Kolvo = StringGrid1->Cells[3][i];ClientFile >ClientFile.close();>>//—————————————————————————void __fastcall TMain::N4Click(TObject *Sender)Main->Close();>//—————————————————————————void __fastcall TMain::N_AvtorClick(TObject *Sender)TabSheet1->Show();N_Nazvanie->Checked = false;N_Data->Checked = false;Library->Sort(SortAvtor);for(int i = 0;i < Library->Count;i++)Book*b = (Book*)Library->Items[i];StringGrid1->Cells[0][i+1] = b->Avtor;StringGrid1->Cells[1][i+1] = b->Nazvanie;StringGrid1->Cells[2][i+1] = b->Data;StringGrid1->Cells[3][i+1] = b->Kolvo;>>//—————————————————————————void __fastcall TMain::N_NazvanieClick(TObject *Sender)TabSheet1->Show();N_Avtor->Checked = false;N_Data->Checked = false;Library->Sort(SortNazvanie);for(int i = 0;i < Library->Count;i++)Book*b = (Book*)Library->Items[i];StringGrid1->Cells[0][i+1] = b->Avtor;StringGrid1->Cells[1][i+1] = b->Nazvanie;StringGrid1->Cells[2][i+1] = b->Data;StringGrid1->Cells[3][i+1] = b->Kolvo;>>//—————————————————————————void __fastcall TMain::N_DataClick(TObject *Sender)TabSheet1->Show();N_Avtor->Checked = false;N_Nazvanie->Checked = false;Library->Sort(SortData);for(int i = 0;i < Library->Count;i++)Book*b = (Book*)Library->Items[i];StringGrid1->Cells[0][i+1] = b->Avtor;StringGrid1->Cells[1][i+1] = b->Nazvanie;StringGrid1->Cells[2][i+1] = b->Data;StringGrid1->Cells[3][i+1] = b->Kolvo;>>//—————————————————————————void __fastcall TMain::N6Click(TObject *Sender)Dialog->Show();>//—————————————————————————void __fastcall TMain::ComboBox2Change(TObject *Sender)if(ComboBox2->ItemIndex == 0 )TabSheet1->Show();Library->Sort(SortAvtor);for(int i = 0;i < Library->Count;i++)Book*b = (Book*)Library->Items[i];StringGrid1->Cells[0][i+1] = b->Avtor;StringGrid1->Cells[1][i+1] = b->Nazvanie;StringGrid1->Cells[2][i+1] = b->Data;StringGrid1->Cells[3][i+1] = b->Kolvo;>>if(ComboBox2->ItemIndex == 1)TabSheet1->Show();Library->Sort(SortNazvanie);for(int i = 0;i < Library->Count;i++)Book*b = (Book*)Library->Items[i];StringGrid1->Cells[0][i+1] = b->Avtor;StringGrid1->Cells[1][i+1] = b->Nazvanie;StringGrid1->Cells[2][i+1] = b->Data;StringGrid1->Cells[3][i+1] = b->Kolvo;>>if(ComboBox2->ItemIndex == 2)TabSheet1->Show();Library->Sort(SortData);for(int i = 0;i < Library->Count;i++)Book*b = (Book*)Library->Items[i];StringGrid1->Cells[0][i+1] = b->Avtor;StringGrid1->Cells[1][i+1] = b->Nazvanie;StringGrid1->Cells[2][i+1] = b->Data;StringGrid1->Cells[3][i+1] = b->Kolvo;>>>//—————————————————————————void __fastcall TMain::CheckBox1Click(TObject *Sender)if(CheckBox1->Checked)DelBook->Visible = false;Label5->Visible = false;>elseDelBook->Visible = true;Label5->Visible = true;>>//—————————————————————————void __fastcall TMain::Button1Click(TObject *Sender)StringGrid2->Cells[0][0] ;StringGrid2->Cells[1][0] ;StringGrid2->Cells[2][0] ;StringGrid2->Cells[3][0] ;for(int i = 1;i Count;i++)StringGrid2->Cells[0][i]=»»;StringGrid2->Cells[1][i]=»»;StringGrid2->Cells[2][i]=»»;StringGrid2->Cells[3][i]=»»;>int j=1;if(RadioFio->Checked)for(int i = 0;i < Library->Count;i++)Book*b = (Book*)Library->Items[i];if((AnsiPos(FindEdit->Text,b->Avtor)==True))StringGrid2->Cells[0][j] = b->Avtor;StringGrid2->Cells[1][j] = b->Nazvanie;StringGrid2->Cells[2][j] = b->Data;StringGrid2->Cells[3][j] = b->Kolvo;j++;>>>if(RadioNazvanie->Checked)for(int i = 0;i < Library->Count;i++)Book*b = (Book*)Library->Items[i];if(AnsiPos(FindEdit->Text,b->Nazvanie)==True)StringGrid2->Cells[0][j] = b->Avtor;StringGrid2->Cells[1][j] = b->Nazvanie;StringGrid2->Cells[2][j] = b->Data;StringGrid2->Cells[3][j] = b->Kolvo;j++;>>>>//—————————————————————————4 ТестированиеПри тестировании программы были созданы различные варианты возможных условий работы программы.Тестирование проводилось под операционной системойWindowsXP.Тестирование не выявило ошибок в работе программы. Таким образом, можно утверждать, что в результате выполнения работы была создана функционально завершенная программа рис. 1 – просмотр всех книг в библиотекерис 2. – добавление новой книги
рис. 3 – поиск книгЗаключениеВ результате выполнения работы была создана программа, реализующая учет книг в библиотеке. Программа была протестирована и удовлетворяет всем требованиям, перечисленным при анализе задачи. При написании программы использовались средства объектно-ориентированного программирования средыC++Builder.Список используемой литературы:1. «Объектно – ориентированное программирование », Павловская Т. А., Щупак Ю. А., «Питер», 2005 г.2.http://www.citforum.ru/programming/application/cb2.shtml3. «Энциклопедия программиста »,Калверт Ч., Рейсдорф К., 2005 22
Уроки C# .NET Windows Forms / #1 — Создание приложения на C# с SQL (базами данных)
Ограничение
Для продолжения скачивания необходимо пройти капчу:
Источник: studfile.net
Программирование в Excel. Создание своими руками с помощью VBA и SQL инструмента учёта доходов и расходов
Один из листов, на который выводится помесячный анализ (левая таблица) расходов и доходов с подсвечиванием того периода, когда планируемые расходы превысят доходы, группировкой доходов и расходов по категориям за конкретный месяц, с анализом того сколько потрачено или получено, осталось потратить или получить за месяцаанин
Иногда наступает момент, когда хочется понять куда пропадают деньги? ))) Некоторые начинают вести учет своих доходов и расходов (тут главное понять, что простой их учет, ничего не дает. Учет заводится для того, чтобы анализируя свои доходы и расходы начать планировать свою финансовую деятельность).
Если хорошенько «прошерстить» просторы интернета, то можно найти огромное количество способов и методов учета финансов, начиная от записей карандашом до использования специализированных приложений на компьютере, планшете или телефоне.
Случается так, что иногда предлагаемые способы не всегда удовлетворяют потребности вашего учета, и хочется иметь более гибкий инструмент. В этой статье я предлагаю самостоятельно создать этот инструмент в файле Excel. Правда создание потребует некоторых усилий, так как в этом файле будет одновременно использоваться: программирование на VBA, SQL-запросы и собственные инструменты форматирования Excel, так что в ходе создания своего учета у вас есть возможность научиться или повысить уровень работы с программой Excel (перейдя по этой ссылке, можно посмотреть видео, где показано как это будет работать ).
Кроме того, вручную придется заводить только категории расходов и доходов и сами доходы с расходами, т.е. НИКАКИХ ФОРМУЛ. В принципе даже файл можно скачать на телефон и делать записи в нем по мере необходимости, а вечером в спокойной обстановке, используя компьютер заниматься анализом и планированием.
Источник: dzen.ru
Как написать программу учета
Рано или поздно каждое предприятие сталкивается с необходимостью оптимизации системы учета. Для учета различных областей деятельности существует множество различных программ, но они не всегда отвечают специальным нуждам конкретного лица или компании. В таких случаях необходимо написание новой уникальной, или модификация уже имеющейся программы учета.
Вам понадобится
- Базовая программа учета (1С, Excel, или Access), язык программирования.
Инструкция
1. Определите требования к программе, область предназначения. Для небольших предприятий или частных пользователей можно обойтись несложными вариантами, для крупных компаний, нуждающихся в высокой скорости учета большого количества различных операций, программа должна включать в себя больше опций.
2. Выберите язык программирования. В стандартных программах, не требующих особых опций, лучше отдать предпочтение тому языку программирования, которым вы лучше владеете. Если программа специализированная, то она требует специального языка программирования такого, как, например, 1С.
3. При выборе базы для создания уникальной программы учета следует обратить внимание на то, что каждая программа ориентирована на определенную область деятельности предприятия или компании. Так, например, для бухгалтерского, складского и торгового учета больше подойдут программы, разработанные на основе 1С. Delphi – более универсальна, но имеет большие объемы файлов и работает довольно медленно, поэтому не подходит для тех сфер учета, где скорость является определяющей характеристикой.
4. Выбор базы для создания программы зависит от цели ее написания. Если вы хотите попрактиковаться в программировании учета, то лучше начать с простых баз типа Excel c программой VBA. Более сложным в разработке будет реализация файл-сервера с VBA, можно использовать также Jet-SQL. Более опытные программисты могут разрабатывать клиент-серверы с базой данных на платформе Oracle, SQL Server, DB2, mysql.
5. Тем, кто не знаком с языком программирования, для написания программы лучше обратиться в специализированный сервис, где им помогут подобрать готовую программу согласно их требованиям, или написать новую, которая обеспечит учет необходимой информации.
Источник: expressa.top