Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2008, 21:08   #1
Жека:)
Пользователь
 
Регистрация: 25.10.2008
Сообщений: 30
По умолчанию поиск и сравнение в Бд на C++

Создал программу, но не могу придумать как должны работать пункты:
3 пункт, показывающий список студентов, сдавших все экз. на 5
4 пункт, показывающий список студентов, имеющих тройки
Жека:) вне форума Ответить с цитированием
Старый 05.12.2008, 21:10   #2
Жека:)
Пользователь
 
Регистрация: 25.10.2008
Сообщений: 30
По умолчанию

Код:
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <string.h>
struct man {
	char familija[64];
	char inicialy[64];
	char ERM[64];
	char matematika[64];
	char russkij[64];
	char elektro[64];
	char elektron[64];
	char ots[64];
	} student;
char menu_char[9] [50] = {"1. Sozdat spisok studentov",
			  "2. Prosmotret spisok studentov",
			  "3. Spisok studentov, sdavshih vse ekzameny na 5",
			  "4. Spisok studentov, imejyshih 3",
			  "5. Spisok studentov, imejushih ne bolee odnoj 2",
			  "6. Dobavit zapis v spisok",
			  "7. Poisk zapisi v spiske",
			  "8. Spravka",
			  "9. Vyhod"};
char in_name[64];
int active;
void load_menu(void)
  {
    for (int i = 0; i < 9; i++)
    {
      textbackground(16);
      textcolor(15);
      if (i==active)
      textcolor(4);
      gotoxy(32,i+10);
      cprintf ("%s", menu_char[i] );
    }
  }
inline void input(void)
  {
    textbackground(16);
    textcolor(15);
    gotoxy(0,0);
    clrscr();
  }

void main(void)
{
  char key;
  int k;
  label:
  clrscr();
  do
  {
    _setcursortype(0);
    load_menu();
    key = getch();
    switch(key)
    {
      case 80: active++;
      break;
      case 72: active--;
    }
    if (active > 8)
    active = 8;
    if (active < 0)
    active = 0;
  }
  while(key!=13);
  if (active == 0)
  {
    input();
    _setcursortype(1);
    cout << "Vvedite kolichestvo studentov: ";
    cin >> k;
    ofstream emp_file("STUDENTS.DAT");
    for (int i = 0; i < k; i++)
{
    cout << "Vvedite familiju studenta: ";
    cin >> student.familija;
    cout << "Vvedite inicialy: ";
    cin >> student.inicialy;
    cout << "Vvedite otsenku po ERM: ";
    cin >> student.ERM;
    cout << "Vvedite otsenku po matematike: ";
    cin >> student.matematika;
    cout << "Vvedite otsenku po russkomu jazyku: ";
    cin >> student.russkij;
    cout << "Vvedite otsenku po elektrotehnike: ";
    cin >> student.elektro;
    cout << "Vvedite otsenku po elektronnoj tehnike: ";
    cin >> student.elektron;
    emp_file.write((char *) &student, sizeof(man));
    ifstream emp_file("students.dat", ios::app);
}
    goto label;
  }
Жека:) вне форума Ответить с цитированием
Старый 05.12.2008, 21:11   #3
Жека:)
Пользователь
 
Регистрация: 25.10.2008
Сообщений: 30
По умолчанию

продолжение
Код:
  if (active == 1)
  {
    input();
    _setcursortype(0);
    ifstream emp_file("STUDENTS.DAT");
     while (! emp_file.eof())
	{
      emp_file.read((char *) &student, sizeof(man));

      cout << "Familija studenta: " <<student.familija << endl;
      cout << "Inicialy: " << student.inicialy << endl;
      cout << "Otsenka po ERM: " << student.ERM << endl;
      cout << "Otsenka po matematike: " << student.matematika << endl;
      cout << "Otsenka po russkomu jazyku: " << student.russkij << endl;
      cout << "Otsenka po elektrotehnike: " << student.elektro << endl;
      cout << "Otsenka po elektronnoj tehnike: " << student.elektron << endl;
    }
    gotoxy(55,25);
    cout << "Nazhmite probel";
    while(!kbhit());
    goto label;
  }
  if (active == 2)
  {
    input();
    _setcursortype(0);
    ifstream emp_file("STUDENTS.DAT");
     while (! emp_file.eof())
	{
      emp_file.read((char *) &student, sizeof(man));

      cout << "Familija studenta: " <<student.familija << endl;
      cout << "Inicialy: " << student.inicialy << endl;
      cout << "Otsenka po ERM: " << student.ERM << endl;
      cout << "Otsenka po matematike: " << student.matematika << endl;
      cout << "Otsenka po russkomu jazyku: " << student.russkij << endl;
      cout << "Otsenka po elektrotehnike: " << student.elektro << endl;
      cout << "Otsenka po elektronnoj tehnike: " << student.elektron << endl;
    }
    gotoxy(55,25);
    cout << "Nazhmite probel";
    while(!kbhit());
    goto label;
  }

  if (active == 3)
  {
        input();
    _setcursortype(0);
    ifstream emp_file("STUDENTS.DAT");
      while (! emp_file.eof())
      {
      emp_file.read((char *) &student, sizeof(man));

           }
     gotoxy(55,25);
    cout << "Nazhmite probel";
    while(!kbhit());
    goto label;
  }

  if (active == 4)

  if (active == 5)
    {
    input();
    ofstream emp_file("students.dat", ios::app);
    cout << "Vvedite familiju studenta: ";
    cin >> student.familija;
    cout << "Vvedite inicialy: ";
    cin >> student.inicialy;
    cout << "Vvedite otsenku po ERM: ";
    cin >> student.ERM;
    cout << "Vvedite otsenku po matematike: ";
    cin >> student.matematika;
    cout << "Vvedite otsenku po russkomu jazyku: ";
    cin >> student.russkij;
    cout << "Vvedite otsenku po elektrotehnike: ";
    cin >> student.elektro;
    cout << "Vvedite otsenku po elektronnoj tehnike: ";
    cin >> student.elektron;
    emp_file.write((char *) &student, sizeof(man));
    //k++;
    goto label;
      }
  if (active == 6)
  {
    input();
    _setcursortype(1);
    cout << "Vvedite familiju studenta: ";
    cin >> in_name;
    _setcursortype(0);
    ifstream emp_file("STUDENTS.DAT");
    //for (int i=0; i<k; i++)
    while (! emp_file.eof())
	{
      emp_file.read((char *) &student, sizeof(man));
      if (strcmp(in_name, student.familija)==0)
      {
	cout << student.familija << " " << student.inicialy << endl;
	cout << "Otsenka po ERM: " << student.ERM << endl;
	cout << "Otsenka po matematike: " << student.matematika << endl;
	cout << "Otsenka po russkomu jazyku: " << student.russkij << endl;
	cout << "Otsenka po elektrotehnike: " << student.elektro << endl;
	cout << "Otsenka po elektronnoj tehnike: " << student.elektron << endl;
      }
    }
    gotoxy(55,25);
    cout << "Nazhmite probel";
    while (!kbhit());
    goto label;
  }

  if (active == 7)
  {
    input();
    _setcursortype(0);
    cout << "                                Spravka"
	 << endl
	 << endl
	 << endl
	 << endl;
    cout << "            1) a. programma sozdaet na diske fajl - STUDENTS.DAT "
	 << endl
	 << "               b. zapisyvaet informaciju o studente (imja i otsenki) "
	 << endl
	 << endl
	 << endl
	 << "            2) programma schityvaet iz fajla informaciju o studente "
	 << endl
	 << endl
	 << endl
	 << "            3) opisanie programmy "
	 << endl
	 << endl
	 << endl
	 << "            4) vyhod iz programmy ";
    gotoxy(55,25);
    cout << "Nazhmite probel";
    while(!kbhit());
    goto label;
  }
  input();
  textcolor(7);
  clrscr();
}
Жека:) вне форума Ответить с цитированием
Старый 05.12.2008, 21:58   #4
Жека:)
Пользователь
 
Регистрация: 25.10.2008
Сообщений: 30
По умолчанию

помогите плз
Жека:) вне форума Ответить с цитированием
Старый 06.12.2008, 07:06   #5
Жека:)
Пользователь
 
Регистрация: 25.10.2008
Сообщений: 30
По умолчанию

Совсем никто не знает?
Жека:) вне форума Ответить с цитированием
Старый 07.12.2008, 12:56   #6
Жека:)
Пользователь
 
Регистрация: 25.10.2008
Сообщений: 30
По умолчанию

помогите плз
Жека:) вне форума Ответить с цитированием
Старый 07.12.2008, 13:14   #7
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Ну если файл не очень большой, то я бы создал такое:
Массив твоих структур и при запуске программы (или еще как нить) забивал бы этот массив данными из файла...
Ну а в массиве иска ть - это проще паренной репы и выводить данные строки!
После вывода массив можно удалить!
StarWorm вне форума Ответить с цитированием
Старый 07.12.2008, 15:00   #8
Жека:)
Пользователь
 
Регистрация: 25.10.2008
Сообщений: 30
По умолчанию

Тобишь, без массива никак?
Жека:) вне форума Ответить с цитированием
Старый 07.12.2008, 17:55   #9
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

А тебе самому этот гемор нужен??? Я тебе говорю как оно легче будет... С файлом вообще сложно работать как с таковым!
StarWorm вне форума Ответить с цитированием
Старый 07.12.2008, 18:02   #10
Жека:)
Пользователь
 
Регистрация: 25.10.2008
Сообщений: 30
По умолчанию

А можно код? Hе знаю как это сделать.
Жека:) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение изображений DeDoK Общие вопросы Delphi 1 11.10.2008 21:16
Сравнение с таблицей Sanek777 Общие вопросы Delphi 0 26.09.2008 00:04
Сравнение строк Elm0 Паскаль, Turbo Pascal, PascalABC.NET 2 02.06.2008 09:31
Сравнение Си и Ассемблера... Sota Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 25.07.2007 16:15
Сравнение 2-х файлов asale Microsoft Office Excel 17 03.06.2007 15:58