Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 29

Путеводитель по кафедрам факультета

15.12.2013, 17:44. Показов 2891. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приложение должно выполнять функции путеводителя по кафедрам одного из факультетов университета :
1. схематически отображать расположение корпусов, аудиторий и кабинетов на этажах каждого корпуса с возможностью изменения масштаба изображения;
2. осуществлять поиск сведений о заданной кафедре (фамилия зав. кафедрой, количество преподавателей, количество профессоров и доцентов и др.) с отображением ее территориального расположения;
3. осуществлять редактирование базы данных (изменение сведений о кафедрах).
Разработать интерфейс приложения.

Вот что имеется на данный момент:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//Переход к этажам
 int a;
 a = StrToInt(CSpinEdit1->Text);
 if (a==1)
 Image1->Picture->LoadFromFile ("схема 1 этажа.jpg");
   if (a==2)
  Image1->Picture->LoadFromFile ("схема 2 этажа.jpg");
    if (a==3)
   Image1->Picture->LoadFromFile ("схема 3 этажа.jpg");
     if (a==4)
    Image1->Picture->LoadFromFile ("схема 4 этажа.jpg");
      if (a==5)
     Image1->Picture->LoadFromFile ("схема 5 этажа.jpg");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Image1->Picture->LoadFromFile ("общая карта универа.jpg");
Button1->Visible = False;
Button2->Visible = False;
CSpinEdit1->Visible = False;
Label1->Visible = False;
SpeedButton1->Visible = True;
//Label2->Visible = True;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
//Переход с общей карты университета на первый (второй) этаж
Image1->Picture->LoadFromFile ("схема второго этажа.jpg");
Button1->Visible = True;
Button2->Visible = True;
SpeedButton1->Visible = False;
CSpinEdit1->Visible = True;
Label1->Visible = True;
//Label2->Visible = False;
CSpinEdit1->Text = 2;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//Возврат к общей карте университета.
Image1->Picture->LoadFromFile ("общая карта универа.jpg");
Form1->ShowHint = true;
}
//---------------------------------------------------------------------------
Проблемы возникли со 2 и 3 пунктами задачи.
Была идея, чтобы при выборе кафедры (например, по нажатии на SpeedButton на схеме одного из этажей) выходила вторая форма, на которой в Memo или StringGrid выводилась информация о выбранной кафедре. Через StringGrid1->Cells[0,0] не получилось, да и с функцией изменения и сохранения информации идей не было. Решил сделать через Memo, ноне знаю, как сие действо реализовать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2013, 17:44
Ответы с готовыми решениями:

Путеводитель по книжкам про C++ Builder
Несколько лет назад попытался повысить свой уровень путем осваивания C++ Builder. Накупил кучу книжек. Начал с Архангельского. Всем...

Отсортировать студентов по кафедрам и посчитать средний бал по кафедрам
Помогите написать прогу:ввести фамилию,кафедру,специальность,оценку студента.Отсортировать студентов по кафедрам и посчитать средний бал...

Деревья. Выдать список аудиторий принадлежащих нескольким кафедрам.
в университете информация об имеющихся компьютерах задана двумя деревьями. В первом из них сыновьям корневой вершины соответствуют...

28
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
15.12.2013, 18:43
лично мне не понятно что вы хотите то получить в результате...
как должно выглядеть то что вы хотите, и что нужно чтоб оно так выглядело?
0
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 29
15.12.2013, 18:54  [ТС]
Как должно выглядеть? Описать сложно, но попробую...
На схеме этажа будет находится кнопка, при нажатии на которую будет выводится ещё одна форма, на которой будут расположены несколько объектов: Memo, Button, OpenDialog и SaveDialog ну и ещё что-то, в зависимости от ситуации.
В Memo будет выводится информация о кафедре из определённого текстового файла (для определённой кафедры):
фамилия зав. кафедрой
количество преподавателей
количество профессоров
количество доцентов
и тд и тп...

Button будет служить для сохранения текста в Memo, в случае его изменения. Конечно, было бы лучше, что бы возможность сохранения была возможна только в случае, если текст был изменён, но не знаю, возможно это или нет.
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
15.12.2013, 21:12
то есть выходит что - на одном этаже всего 1 кафедра? я Вас правильно понял ?
да и OpenDialog и SaveDialog для чего?
сохранять изменения в мемо конечно можно, просто опишите обработчик, который будет смотреть изменялось ли что либо и автоматически сохраняло изменения...
0
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 29
16.12.2013, 08:10  [ТС]
Именно так, на каждом этаже по одной кафедре.
SaveDialog...насколько я помню, он будет нужен для сего действия:

C++
1
2
3
if (StatusBar1 –> Panels –> Items[0]> Text == “Без имени”)
     SpeedButton5 –> Click();
       else Memo1 –> Lines –> SaveToFile(StatusBar1 –> Panels –> Items[0]> Text);
просто опишите обработчик, который будет смотреть изменялось ли что либо и автоматически сохраняло изменения...
Вот тут, если можно, поподробнее, ибо я не совсем понимаю, как это сделать.
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
16.12.2013, 08:57
самое простое это создать переменую....
типа int.
Теперь смотрите, изначально переменная int равна Memo1->Text.Length(). (только тут важно чтоб переменной int значение присваивалось единожды, допустим при прорисовке формы после того как memo заполнится нужным текстом)
При закрытии формы или закрытии проекта ставите условие...
if (переменная int!=Memo1->Text.Length())
тогда пересохраняем.
Хочу заметить, что если в тексте есть ошибка, и вы ее допустим исправите, суммарная длина текста не изменится и сохранения не будет...подумайте над более детальным алгоритмом.
для сохранения текста в файл предлагаю использовать StringList.
Опять же пока писал уже усомнился в простоте реализации...так как среды нет под рукой могу ошибиться...но подумайте над этим вариантом..
1
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 29
16.12.2013, 10:09  [ТС]
а как сделать, что бы при нажатии Button на Unit1 в Memo на Unit2 текст загружался? Что-то никак не додумаюсь.
Прописал:

C++
1
Form2->ShowModal();
а дальше идеи кончились.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
16.12.2013, 10:49
Цитата Сообщение от Apache812 Посмотреть сообщение
при нажатии Button на Unit1 в Memo на Unit2 текст загружался?
C++
1
2
3
4
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Memo1->Lines->Add("Death");
}
0
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 29
16.12.2013, 11:04  [ТС]
SatanaXIII, переход ко второй форме происходит, но Memo остаётся пустым.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
16.12.2013, 11:17
Цитата Сообщение от Apache812 Посмотреть сообщение
ShowModal
Поменяйте местами вот эти две строки:
C++
1
2
3
4
5
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Memo1->Lines->Add("Death");
Form2->ShowModal();
}
1
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 29
16.12.2013, 12:35  [ТС]
SatanaXIII, благодарю, заработало.

Добавлено через 1 час 15 минут
а как реализовать сохранение?
Я попробовал сделать по совету выше сказанному, вот что вышло:

C++
1
2
3
4
5
6
void __fastcall TForm2::Memo1Change(TObject *Sender)
{
int c;
c = Memo1->Text.Length();
if (c!=Memo1->Text.Length())
}
Пробовал после этого прописать
C++
1
Save1->Enabled = true;
но ничего не происходит.
Попытался сделать вот в этом духе:
C++
1
2
3
if (StatusBar1->Panels->Items[0]->Text == "Без имени")
     Save1->Click();
       else Memo1->Lines->SaveToFile(StatusBar1->Panels->Items[0]->Text);
но без соответствующих объектов на форме этого не сделать.
Как можно реализовать быстрое сохранение текстового файла при изменении текста, или только через SaveDialog?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
16.12.2013, 13:00
Цитата Сообщение от Apache812 Посмотреть сообщение
но без соответствующих объектов на форме этого не сделать.
Ну так набросайте и используйте.
Цитата Сообщение от Apache812 Посмотреть сообщение
реализовать быстрое сохранение текстового файла при изменении текста
В исконную задумку не вникал.
C++
1
2
3
4
5
6
#include <fstream>
std::ofstream outLog( (GetCurrentDir()+"\\outLog.txt").c_str(), ios_base::out);// std::ofstream::app );
 
outLog << Memo1->Text.c_str();
 
outLog.close();
0
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 29
16.12.2013, 13:05  [ТС]
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Ну так набросайте и используйте.
в принципе можно, лишним, по крайней мере, не станет.

C++
1
2
3
4
5
6
#include <fstream>
std::ofstream outLog( (GetCurrentDir()+"\\outLog.txt").c_str(), ios_base::out);// std::ofstream::app );
 
outLog << Memo1->Text.c_str();
 
outLog.close();
Ты уж извини меня, пожалуйста, я знаю только два языка: русский и русский разговорный. Можешь сказать, что тут написано? Не, не так..что тут делается и как?
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
16.12.2013, 13:18
Цитата Сообщение от Apache812 Посмотреть сообщение
Код C++
void __fastcall TForm2::Memo1Change(TObject *Sender)
{
int c;
c = Memo1->Text.Length();
if (c!=Memo1->Text.Length())
}
это не будет работать.... так как c всегда равна Memo1->Text.Length().
C++
1
2
int c;
c = Memo1->Text.Length();
я думаю это надо сделать где нибудь в FormCreate, после того как Memo уже быдет заполнено текстом...
об этом я писал и выше...
ну получается глобальную переменную опишите и используйте ее потом тут
C++
1
if ("глобальная переменная"!=Memo1->Text.Length())
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
16.12.2013, 13:34
Цитата Сообщение от Apache812 Посмотреть сообщение
в принципе можно, лишним, по крайней мере, не станет.
Не. Одно дело, когда они нужны, то их стоит добавлять. А просто так набросать и пусть валяются это плохой подход.
Цитата Сообщение от Apache812 Посмотреть сообщение
Ты уж извини меня, пожалуйста, я знаю только два языка: русский и русский разговорный. Можешь сказать, что тут написано? Не, не так..что тут делается и как?
А на каком из них вы программируете? Х)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <fstream> // Подключается заголовок для работы с файлом
std::ofstream // Определяется, что это будет выходной файл (для записи)
outLog // название файла для использования внутри программы, для обращения к файлу из кода
( (GetCurrentDir() // Получение текущей директории, откуда запущена программа
+"\\outLog.txt") // Дописывание к ней имени файла - как он сохранится в операционной системе
.c_str() // Делает из строки массив символов
, ios_base::out);// Флаг, показывающий, что файл перезапишется
 
outLog // В этот файл
<< // записывается
Memo1->Text.c_str(); // текст из Memo1
 
outLog.close(); // файл закрывается и доступ к нему прекращается
Вот здесь поподробнее: http://cppstudio.com/uchebniki... jlami-v-s/
1
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 29
16.12.2013, 17:17  [ТС]
Цитата Сообщение от demon_7 Посмотреть сообщение
это не будет работать.... так как c всегда равна Memo1->Text.Length().
C++
1
2
int c;
c = Memo1->Text.Length();
я думаю это надо сделать где нибудь в FormCreate, после того как Memo уже быдет заполнено текстом...
об этом я писал и выше...
ну получается глобальную переменную опишите и используйте ее потом тут
C++
1
if ("глобальная переменная"!=Memo1->Text.Length())
Тут есть одна проблема - как её объявить. Если объявлять как
C++
1
c = Memo1->Text.Length()
То Memo принимается за переменную и выдаёт ошибку:
[C++ Error] Unit2.cpp(11): E2303 Type name expected
[C++ Error] Unit2.cpp(11): E2451 Undefined symbol 'Memo1'
А на каком из них вы программируете? Х)
Чаще всего на втором, он более эффективен)

А что касается StatusBar, возможно стоит попробовать. Я как-то использовал его, когда текстовый редактор делал.
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
16.12.2013, 17:26
Цитата Сообщение от Apache812 Посмотреть сообщение
Тут есть одна проблема - как её объявить. Если объявлять как
Код C++
C++
1
c = Memo1->Text.Length()
То Memo принимается за переменную и выдаёт ошибку:
не уверен но может все таки так ?
C++
1
c = StrToInt (Memo1->Text.Length())
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,870
Записей в блоге: 12
16.12.2013, 17:47
Цитата Сообщение от demon_7 Посмотреть сообщение
не уверен
- не пиши... Length() - это функция, уже возвращающая целочисленное значение, что ты собрался преобразовывать из строки в целое в таком случае?
0
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 29
16.12.2013, 17:47  [ТС]
Может и так, но всё равно ошибку выдаёт.

Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <vcl.h>
#pragma hdrstop
 
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
int c;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::N1Click(TObject *Sender)
{
Memo1->CopyToClipboard();
N3->Enabled = true;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::N2Click(TObject *Sender)
{
Memo1->CutToClipboard();
N3->Enabled = true;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::N3Click(TObject *Sender)
{
Memo1->PasteFromClipboard();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::N4Click(TObject *Sender)
{
if (Memo1->Lines->Count > 0)
{
    if(MessageBox(0,"Вы уверены, что хотите очистить текстовое поле?",
                               "Подтверждение очистки", MB_YESNO) == IDYES)
      if(MessageBox(0,"Вы точно уверены?",
                               "Подтверждение очистки", MB_YESNO) == IDYES)
        if(MessageBox(0,"Не передумали ещё?",
                               "Есть ещё время одуматься", MB_YESNO) == IDYES)
           if(MessageBox(0,"Не говорите, что Вас не предупреждали...",
                               "Последняя попытка", MB_YESNO) == IDYES)
  Memo1->Clear();
}
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::Exit1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::N5Click(TObject *Sender)
{
Memo1-> Font=FontDialog1-> Font;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
с = StrToInt (Memo1->Text.Length());
if (c!=Memo1->Text.Length())
Save1->Enabled = true;
}
//---------------------------------------------------------------------------


Может я что-то не туда вставил?
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
16.12.2013, 18:22
Цитата Сообщение от UI Посмотреть сообщение
- не пиши... Length() - это функция, уже возвращающая целочисленное значение, что ты собрался преобразовывать из строки в целое в таком случае?
я ж написал что не уверен..... sory =(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2013, 18:22
Помогаю со студенческими работами здесь

Путеводитель по городу
Всем привет! Прошу помочь мне с курсовой работой &quot;Путеводитель по городу&quot;. Мне необходима любая помощь. Заранее благодарен.

Путеводитель по разделу
Литература по бд Access и VBA: Cправка Microsoft, самоучитель Taurion, И.Харитонова, В.Михеева &quot;Ms Access&quot; Матвеев Microsoft...

NTI - ССЫЛКА-ПУТЕВОДИТЕЛЬ СПРАВОЧНИК ДЛЯ ПУТЕШЕСТВУЮЩИХ ПО НОРВЕГИИ
Здравствуйте, мы просто хотим некоторую обратную связь для нашей новой странице информации о поездках и в Норвегии. Конечно, изображения,...

Путеводитель для университета, 2gis отдыхает. Есть схемы, как подключить обьекты?
Доброго времени суток! Совсем недавно начал изучать Android программирование, столкнулся с такой проблемой. 1) Сущесвует картинка...

БД студентов факультета
Требуется создать базу данных студентов факультета с возможностью доступа для нескольких человек, организацией поиска по различным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru