C++ кодеры

4.09K
.
Нормально делай - Нормально будет
разработка информационно-справочной системы учета жителей гостиницы
система должна:
*формировать список жителей гостиницы,добавляя в имеющийся или создовая новый список
*просматривать спсисок всех проживающих
*осуществлять поиск свободных номеров
*получать инфу о проживающих,которые должны выехать на определенную дату
*получать информацию о долгожителях гостиницы
@среда разработки:визуал студио 2008/10 на с++
вот такое вот задание подскажите с чего начать
.
Нормально делай - Нормально будет
вот мой курсач по программированию,если че то интересно спрашивайте:
задание
разработка информационно-справочной системы учета жителей гостиницы
система должна:
*формировать список жителей гостиницы,добавляя в имеющийся или создовая новый список
*просматривать спсисок всех проживающих
*осуществлять поиск свободных номеров
*получать инфу о проживающих,которые должны выехать на определенную дату
*получать информацию о долгожителях гостиницы
#include <iostream>
#include <conio.h>
#include <string.h>
#include <iomanip>
#include <fstream>
#include <stdlib.h>
#include <math.h>
using namespace std;
struct jiteli
{char famil [20]; //фамилия жителя
int priezd_dd; int priezd_mm; int priezd_gggg; //число,месяц,год даты приезда
int viezd_dd; int viezd_mm; int viezd_gggg;      //число,месяц,год даты выезда
int v_viezd_n_mm; int v_viezd_n_dd; int v_viezd_n_gggg; //число,месяц,год даты  временного выезда
int v_viezd_k_mm; int v_viezd_k_dd; int v_viezd_k_gggg; //число,месяц,год даты приезда из временного выезда
int dni;//дни проживания.
int nomer;//номер квартиры
};
class gostinica
{
private:int n;
  jiteli *px;
   void udal(int j);
 public:
  gostinica(){} 
  ~gostinica(){if(n>0)delete[]px;}
  int k;
  void create();
  void reading();
  void output();
  void record();
  void find();
  void adding();
  void del();
  void sorting();
};
//______________________________
void gostinica::create()
 {int i;
  px=new jiteli[n];
  if(px==NULL)
   {cout<<"ошибка!";
    getch();
    exit(1);
   }
  n=0;
  adding();
  do{cout<<"Добавить еще?\n";
     cout<<"1-Да\n";
     cout<<"2-Нет\n";
     cin>>i;
     if(i==1)adding();
     }while(i==1);
 }
//______________________________
void main()	
{
	setlocale(LC_CTYPE,"Russian");
int w;
gostinica a;
 while(1)
 {
   cout<<endl;
   cout<<"1. Открыть файл данных или указать путь к файлу\n";
   cout<<"2. Создать новый файл данных\n";
   cout<<"3. Показать список жителей\n";
   cout<<"4. Добавить жителя\n";
   cout<<"5. Удалить жителя\n";
   cout<<"6. Поиск свободных номеров\n";
   cout<<"7. Сортировка долгожителей\n";
   cout<<"8. Сохранить в файл\n";
   cout<<"0. Выход.\n"<<endl;
   cout <<"Введите пункт меню: ";     cin>>w;
   switch(w)
  {case 1:a.reading();break;
   case 2:a.create();break;
   case 3:a.output();getch();break;
   case 4:a.adding();break;
   case 5:a.del();break;
   case 6:a.find();getch();break;
   case 7:a.sorting();break;
   case 8:a.record();break;
   case 0:exit(0);
   default:cout<<"Ошибка!";getch();  }}}
//______________________________
void gostinica::reading()
 {ifstream in;
  char file[100];
  int i;jiteli u;
  cout<<"Полное имя файла:\n";
  cin>>file;
  in.open(file);
  if(in.fail())
  {cout<<file<<" не найден!";getch();exit(1);}
  else {  cout<<endl<<"Файл подключен!"<<endl;}
  n=0;
  do{in>>u.famil>>u.priezd_dd>>u.priezd_mm>>u.priezd_gggg>>u.viezd_dd>>u.viezd_mm>>u.viezd_gggg>>u.v_viezd_n_dd>>u.v_viezd_n_mm>>u.v_viezd_n_gggg>>u.v_viezd_k_dd>>u.v_viezd_k_mm>>u.v_viezd_k_gggg>>u.dni>>u.nomer;
     n++;
    }while(in.good());
  n--;
  in.close();
  px=new jiteli[n];
  if(px==NULL)
   {cout<<"Ошибка: Нет памяти";
    getch();
    exit(1);}
  in.open(file);
  if(in.fail())
   {cout<<"Ошибка: "<<file<<" не открыт!";
    getch();
    exit(1);}
  for(i=0;i<n;i++)
   in>>px[i].famil>>px[i].priezd_dd>>px[i].priezd_mm>>px[i].priezd_gggg>>px[i].viezd_dd>>px[i].viezd_mm>>px[i].viezd_gggg>>px[i].v_viezd_n_dd>>px[i].v_viezd_n_mm>>px[i].v_viezd_n_gggg>>px[i].v_viezd_k_dd>>px[i].v_viezd_k_mm>>px[i].v_viezd_k_gggg>>px[i].dni>>px[i].nomer;
  in.close();}
//  	  
int sravn(jiteli x,jiteli y);
//______________________________
void gostinica::output()//вывод файла
{int i;
cout<<"*************************************************************************"<<endl;
cout<<""<<setw(11)<<"Фамилия"<<setw(11)<<"Приезд"<<setw(12)<<"Выезд"<<setw(16)<<"Вр.Выезд.Н"<<setw(13)<<"Вр.Выезд.К"<<setw(4)<<"Дни"<<setw(6)<<"Номер"<<endl;
cout<<"*************************************************************************"<<endl;
 for(i=0;i<n;i++)
	cout<<i+1<<"."<<setw(9)<<px[i].famil<<setw(5)<<px[i].priezd_dd<<setw(3)<<px[i].priezd_mm<<setw(5)<<px[i].priezd_gggg<<setw(5)<<px[i].viezd_dd<<setw(3)<<px[i].viezd_mm<<setw(5)<<px[i].viezd_gggg<<setw(5)<<px[i].v_viezd_n_dd<<setw(3)<<px[i].v_viezd_n_mm<<setw(5)<<px[i].v_viezd_n_gggg<<setw(5)<<px[i].v_viezd_k_dd<<setw(3)<<px[i].v_viezd_k_mm<<setw(5)<<px[i].v_viezd_k_gggg<<setw(4)<<px[i].dni<<setw(5)<<px[i].nomer<<endl;
}
//______________________________
void gostinica::find()//поиск по номеру
{
  int i,k;
  int p [3];
  cout<<"Введите номер квартиры:\n";
  cin>>k;
 for(i=0;i<n;i++){
	if (px[i].nomer==k){
	cout<<"Номер занят!"<<setw(10)<<px[i].famil<<" Выезд "<<px[i].viezd_dd<<"."<<px[i].viezd_mm<<"."<<px[i].viezd_gggg; 
	if (px[i].v_viezd_n_dd > 0) cout<<" отсутствие с "<<px[i].v_viezd_n_dd<<"."<<px[i].v_viezd_n_mm<<"."<<px[i].v_viezd_n_gggg<<" по "<<px[i].v_viezd_k_dd<<"."<<px[i].v_viezd_k_mm<<"."<<px[i].v_viezd_k_gggg; }
 }

}
//______________________________
void gostinica::record()//сохранение в файл (пока как отчет)сделать как базу
 {int i;
  ofstream out;
  char file[100];
  cout<<"Полное имя файла:\n";
  cin>>file;
  out.open(file);
  if(out==NULL)
   {cout<<file<<" не создан!";
    getch();
	    exit(1); }
 for(i=0;i<n;i++)
	out<<setw(9)<<px[i].famil<<setw(5)<<px[i].priezd_dd<<setw(3)<<px[i].priezd_mm<<setw(5)<<px[i].priezd_gggg<<setw(5)<<px[i].viezd_dd<<setw(3)<<px[i].viezd_mm<<setw(5)<<px[i].viezd_gggg<<setw(5)<<px[i].v_viezd_n_dd<<setw(3)<<px[i].v_viezd_n_mm<<setw(5)<<px[i].v_viezd_n_gggg<<setw(5)<<px[i].v_viezd_k_dd<<setw(3)<<px[i].v_viezd_k_mm<<setw(5)<<px[i].v_viezd_k_gggg<<setw(4)<<px[i].dni<<setw(5)<<px[i].nomer<<endl;
getch();out.close();
}
void gostinica::adding()//добавление
{ jiteli *s;
int i;
int dney;int mes;int let;int dni_mes;//дни .месяцы . года . доп дни 
int v_dney;int v_mes;int v_let;int v_dni_mes;
int kol_dney;int kol_dney2;int v_kol_dney;//всего дней . всего дней вр.выезда
 s=new jiteli[n+1];
 for(i=0;i<n;i++)
   s[i]=px[i];
 cout<<"Введите данные:\n";
 cout<<"  Фамилия:";cin>>s[n].famil;
 cout<<"  Номер квартиры:";cin>>s[n].nomer;
 cout<<"Приезд\n";
 cout<<"  День:";cin>>s[n].priezd_dd;
 cout<<"  Месяц:";cin>>s[n].priezd_mm;
 cout<<"  Год:";cin>>s[n].priezd_gggg;
 cout<<"Выезд\n";
 cout<<"  День:";cin>>s[n].viezd_dd;
 cout<<"  Месяц:";cin>>s[n].viezd_mm;
 cout<<"  Год:";cin>>s[n].viezd_gggg;
 cout<<"Добавить даты временного выезда?\n";
     cout<<"1-Да 2-Нет";
     cin>>i;
	 if(i==1){
 cout<<"Начало временнго выезда\n";
 cout<<"  День:";cin>>s[n].v_viezd_n_dd;
 cout<<"  Месяц:";cin>>s[n].v_viezd_n_mm;
 cout<<"  Год:";cin>>s[n].v_viezd_n_gggg;
 cout<<"Конец временного выезда\n";
 cout<<"  День:";cin>>s[n].v_viezd_k_dd;
 cout<<"  Месяц:";cin>>s[n].v_viezd_k_mm;
 cout<<"  Год:";cin>>s[n].v_viezd_k_gggg;
	 }else { //если нет временного выездаа заполняем 0
	 s[n].v_viezd_n_dd=0;
	 s[n].v_viezd_n_mm=0;
	 s[n].v_viezd_n_gggg=0;
	 s[n].v_viezd_k_dd=0;
	 s[n].v_viezd_k_mm=0;
	 s[n].v_viezd_k_gggg=0;
	 }
  dney=abs(s[n].viezd_dd - s[n].priezd_dd);
 mes=abs(s[n].viezd_mm - s[n].priezd_mm);
 let=s[n].viezd_gggg - s[n].priezd_gggg;

  v_dney=abs(s[n].v_viezd_k_dd - s[n].v_viezd_n_dd);
 v_mes=abs(s[n].v_viezd_k_mm - s[n].v_viezd_n_mm);
 v_let=s[n].v_viezd_k_gggg - s[n].v_viezd_n_gggg;
 
 v_dni_mes=v_mes;
  if (v_dni_mes==1) v_dni_mes=1;if (v_dni_mes==2) v_dni_mes=1;if (v_dni_mes==3) v_dni_mes=2;
 if (v_dni_mes==4) v_dni_mes=2;if (v_dni_mes==5) v_dni_mes=3;if (v_dni_mes==6) v_dni_mes=3;//месяц=30 доп дни 30/31
 if (v_dni_mes==7) v_dni_mes=4;if (v_dni_mes==8) v_dni_mes=4;if (v_dni_mes==9) v_dni_mes=5;
 if (v_dni_mes==10) v_dni_mes=5;if (v_dni_mes==11) v_dni_mes=6;if (v_dni_mes==12) v_dni_mes=7;//фефраль+август/2
 dni_mes=mes;
 if (dni_mes==1) dni_mes=1;if (dni_mes==2) dni_mes=1;if (dni_mes==3) dni_mes=2;
 if (dni_mes==4) dni_mes=2;if (dni_mes==5) dni_mes=3;if (dni_mes==6) dni_mes=3;//месяц=30 доп дни 30/31
 if (dni_mes==7) dni_mes=4;if (dni_mes==8) dni_mes=4;if (dni_mes==9) dni_mes=5;
 if (dni_mes==10) dni_mes=5;if (dni_mes==11) dni_mes=6;if (dni_mes==12) dni_mes=7;//фефраль+август/2
 
kol_dney2=dney + (mes * 30 + dni_mes) + (let * 365);//считаем дни
v_kol_dney=v_dney + (v_mes * 30 + v_dni_mes) + (v_let * 365);//считаем дни временного выезда
kol_dney=kol_dney2 - v_kol_dney;//дни с учетом временного выезда
s[n].dni=kol_dney;//записываем
 n++;
 delete[]px;
 px=s;
 cout<<"Новый житель добавлен!";
 getch();
}
//______________________________
void gostinica::del()//удаление жителя
{
 int i,h,fl;
 output();
 cout<<"Введите номер строки:\n";
 cin>>h;
fl=0;
 for(i=0;i<n;i++)
 if(i==h-1)
   { fl=1;udal(i);
     cout<<endl<<"Удалено!\n";
   }
  if(fl==0)cout<<"Не найдено!\n";
  output();
 getch();
}
//__________
void gostinica::udal(int h)
{int i;
 if(h<0||h>=n){cout<<"нет такой строки";getch();return;}
 for(i=h+1;i<n;i++)
  px[i-1]=px[i];
 n--;
}
//______________________________
void gostinica::sorting()//сортировка по дням
{int i,fl;
 jiteli r;
 do{for(i=0;i<(n-1);i++)
 {fl=0;
      if(px[i+1].dni>px[i].dni)
      {r=px[i];
	  px[i]=px[i+1];
       px[i+1]=r;
	   fl=1;break;} } }  
   while(fl==1);
       cout<<endl<<"Список сортирован!"<<endl;
       cout<<"Для просмотра нажмите 3"<<endl;
}
.
forever young
На первом курсе почти такое же было. Только мне еще надо было бинарное дерево организовать, поиск по нему и удаление элементов дерева
.
Нормально делай - Нормально будет
да мне тож надо было я его за два дня написал а нам давали 2 месяца
.
forever young
Но то был не курсач, а лишь лаба
А на курсовую я писал Морской бой, с графикой с использованием VGA
.
Нормально делай - Нормально будет
у нас тоже была похожая лаба с файлами а с графикой ваще не работали только консоль пока
.
давненько уже это было... Подзабыл... Гг
.
а я вот только начал учиться.. Дошел только до массивов.. Построил сча вполне приличную таблицу умножения (с нормальными столбиками и форматированием)
Мож кто чо ешо предложит сделать простое?)
.
Дайте пожалуйста учебник по С++.
.
какую книгу лучше прочитать ?PHP или C++?
Всего: 168