разработка информационно-справочной системы учета жителей гостиницы
система должна:
*формировать список жителей гостиницы,добавляя в имеющийся или создовая новый список
*просматривать спсисок всех проживающих
*осуществлять поиск свободных номеров
*получать инфу о проживающих,которые должны выехать на определенную дату
*получать информацию о долгожителях гостиницы
@среда разработки:визуал студио 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;
}
На первом курсе почти такое же было. Только мне еще надо было бинарное дерево организовать, поиск по нему и удаление элементов дерева
да мне тож надо было я его за два дня написал а нам давали 2 месяца
Но то был не курсач, а лишь лаба
А на курсовую я писал Морской бой, с графикой с использованием VGA
у нас тоже была похожая лаба с файлами а с графикой ваще не работали только консоль пока
давненько уже это было... Подзабыл... Гг
а я вот только начал учиться.. Дошел только до массивов.. Построил сча вполне приличную таблицу умножения (с нормальными столбиками и форматированием)
Мож кто чо ешо предложит сделать простое?)
Дайте пожалуйста учебник по С++.
какую книгу лучше прочитать ?PHP или C++?