C++ Telefon Rehberi

Telefon rehberi.cpp

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <Windows.h>
#define SIL system("CLS");// bundan sonra system("cls");kullanacagım her yere sil yazarsam da aynı şey olur.
int N = 0;//Asagida her fonksiyon icin ayrı ayrı N degeri tenımlamamak icin başta tanımlarsak direk bu degere ulaşabiliriz.
struct dogumtarihi
{
	char gun[10];
	char ay[10];
	char yil[10];
};
struct adres
{
	char il[100];
	char mahalle[100];
	char sokak[100];
	char numara[100];
	char epostaadresi[100];
};
struct Rehber
{
	char Isim[100];
	char Soyad[100];
	char evtelefonu[100];
	char ceptelefonu[100];
	char istelefonu[100];
	struct adres adresler;
	struct dogumtarihi dogum;
}KisiBilgileri[BUFSIZ];

void menu();//MENÜ YAPMA FONKSİYONU.
void kisiEkle(struct Rehber KisiBilgileri[BUFSIZ]);//KİŞİ EKLEME FONKSİYONU.
void arama(struct Rehber KisiBilgileri[BUFSIZ]);//MENUDE ARAMA İÇİN YAPILAN FONKSİYON.
void ekranaYazdir(struct Rehber KisiBilgileri[BUFSIZ], int sayac);//EKRANA GORUNTULEMEK İÇİN YAZILAN FONKSİYON.
void txtYaz(struct Rehber KisiBilgileri[BUFSIZ]);//DOSYA İÇİNE YAZMAK İÇİN YAPTIĞIM FONKSİYON.
void guncelle(struct Rehber KisiBilgileri[BUFSIZ]);//GUNCELLEME YAPMAK İÇİN YAPILAN FONKSİYON.
void silme(struct Rehber KisiBilgileri[BUFSIZ]);//SİLME İŞLEMİ YAPMAK İÇİN YAPILAN FONKSİYON.

void main()   //MAIN
{
	FILE *rehber;//Dosya tanımlama islemi
	rehber = fopen("Rehber.csv", "r");//dosya acma işlemi
	char secim;
	char cikis = 'h';//programin kapanmamasi icin
	if (rehber == NULL)
	{
		printf("Dosya Bulunamadi...\n");
	}
	else
	{
		while (!feof(rehber))//dosyanın sonuna gelene kadar 
		{
			fscanf(rehber, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
				&KisiBilgileri[N].Isim,
				&KisiBilgileri[N].Soyad,
				&KisiBilgileri[N].evtelefonu,
				&KisiBilgileri[N].ceptelefonu,
				&KisiBilgileri[N].istelefonu,
				&KisiBilgileri[N].adresler.il,
				&KisiBilgileri[N].adresler.mahalle,
				&KisiBilgileri[N].adresler.sokak,
				&KisiBilgileri[N].adresler.numara,
				&KisiBilgileri[N].adresler.epostaadresi,
				&KisiBilgileri[N].dogum.gun,
				&KisiBilgileri[N].dogum.ay,
				&KisiBilgileri[N].dogum.yil);
			N++;
		}
		fclose(rehber);//rehbberi kapama.
	}
	do
	{
		SIL
			menu();
		char devamET = 'h';
		char switch_on;
		switch_on = getch();
		switch (switch_on)//switch case ile menu yapımı
		{
		case '1':/// KISI EKLE ///
			do
			{
				kisiEkle(KisiBilgileri);
				printf("Kisi Eklemeye devam edecekmisiniz? [e]\n");
				devamET = tolower(getch());//cevabi kucuk harfe cevirme
				txtYaz(KisiBilgileri);
			} while (devamET == 'e');
			continue;
		case '2':/// GORUNTULE ///
			for (int i = 0; i < N; i++)
			{
				ekranaYazdir(KisiBilgileri, i);
				getch();//kaldirirsan hepsini tek seferde gosterir
			}
			printf("\nMenuye donmek icin bir tusa basin\n");
			getch();
			continue;
		case '3':/// ARAMA ///
			arama(KisiBilgileri);
			printf("\nMenuye donmek icin bir tusa basin\n");
			getch();
			continue;
		case '4':/// GUNCELLE ///
			guncelle(KisiBilgileri);
			txtYaz(KisiBilgileri);
			printf("Guncellemeye devam edecekmisiniz? [e]\n");
			devamET = tolower(getch());
			printf("\nMenuye donmek icin bir tusa basin\n");
			getch();
			continue;
		case '5':/// SIL ///
			silme(KisiBilgileri);
			txtYaz(KisiBilgileri);
			printf("Kisi silmeye devam edecekmisiniz? [e]\n");
			devamET = tolower(getch());
			printf("Menuye donmek icin bir tusa basin\n");
			getch();
			continue;
		case '6':/// cikis ///
			char cik[] = "rehberden cikiyorsunuz";
			for (int i = 0; i < 23; i++)
			{
				printf("%c", cik[i]);
				Sleep(200);//animasyonla rehberden cikiyorsunuz yazdırırken kac saniyede olacağını belirleme
			}
			cikis = 'e';
			break;
		}
	} while (cikis == 'h');
}
void menu()//menu yapimi
{
	printf("\n\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260");
	printf("\n\260\260                      //\\\\               \260");
	printf("\n\260\260 1.Ekle              //  \\\\              \260");
	printf("\n\260\260                    //    \\\\             \260");
	printf("\n\260\260 2.Goruntule       //      \\\\	           \260");
	printf("\n\260\260                  //TELEFON \\\\	   \260");
	printf("\n\260\260 3.Ara           //REHBERİNE \\\\          \260");
	printf("\n\260\260                //            \\\\	   \260");
	printf("\n\260\260 4-Guncelle    //              \\\\        \260");
	printf("\n\260\260              //                \\\\       \260");
	printf("\n\260\260 5-Sil       //   HOSGELDİNİZ    \\\\	   \260");
	printf("\n\260\260            //                    \\\\     \260");
	printf("\n\260\260 6-Cikis     -----------------------     \260");
	printf("\n\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260");
	printf("\n\n");
	printf("Lutfen bir secenek giriniz..\n\n");
}
void ekranaYazdir(struct Rehber KisiBilgileri[BUFSIZ], int sayac)
{
	printf("\n** %2d **************\n", sayac + 1);
	printf("    ADI : %s\n", KisiBilgileri[sayac].Isim);
	printf("SOY ADI : %s\n", KisiBilgileri[sayac].Soyad);
	printf("EV TEL NO  : %s\n", KisiBilgileri[sayac].evtelefonu);
	printf("CEP TEL NO:%s \n", KisiBilgileri[sayac].ceptelefonu);
	printf("Is TEL NO: %s\n", KisiBilgileri[sayac].istelefonu);
	printf("ADRESLER....\n");
	printf("İL:%s\n", KisiBilgileri[sayac].adresler.il);
	printf("MAHALLE:%s\n", KisiBilgileri[sayac].adresler.mahalle);
	printf("SOKAK:%s\n", KisiBilgileri[sayac].adresler.sokak);
	printf("Numara:%s\n", KisiBilgileri[sayac].adresler.numara);
	printf("E-POSTA ADRESİ:%s\n", KisiBilgileri[sayac].adresler.epostaadresi);
	printf("Dogum tarihi Gun:%s\n", KisiBilgileri[sayac].dogum.gun);
	printf("Dogum tarihi Ay:%s\n", KisiBilgileri[sayac].dogum.ay);
	printf("Dogum tarihi Yil:%s\n", KisiBilgileri[sayac].dogum.yil);
}
void kisiEkle(struct Rehber KisiBilgileri[BUFSIZ])
{
	printf("Lutfen Kisi Bilgilerini Kucuk Harflerle Giriniz\n");
	printf("ISIM         \t: ");
	flushall();
	gets(KisiBilgileri[N].Isim);
	printf("SOYISIM      \t: ");
	flushall();
	gets(KisiBilgileri[N].Soyad);
	printf("EV  TEL NO   \t: ");
	flushall();
	gets(KisiBilgileri[N].evtelefonu);
	printf("CEP TEL NO   \t: ");
	flushall();
	gets(KisiBilgileri[N].ceptelefonu);
	printf("IS TEL NO   \t: ");
	flushall();
	gets(KisiBilgileri[N].istelefonu);
	printf("IL   \t: ");
	flushall();
	gets(KisiBilgileri[N].adresler.il);
	printf("MAHALLE   \t: ");
	flushall();
	gets(KisiBilgileri[N].adresler.mahalle);
	printf("SOKAK   \t: ");
	flushall();
	gets(KisiBilgileri[N].adresler.sokak);
	printf("NUMARA  \t: ");
	flushall();
	gets(KisiBilgileri[N].adresler.numara);
	printf("E-POSTA ADRESI   \t: ");
	flushall();
	gets(KisiBilgileri[N].adresler.epostaadresi);
	printf("Dogum tarihi gun   \t: ");
	flushall();
	gets(KisiBilgileri[N].dogum.gun);
	printf("Dogum tarihi ay   \t: ");
	flushall();
	gets(KisiBilgileri[N].dogum.ay);
	printf("Dogum tarihi yil   \t: ");
	flushall();
	gets(KisiBilgileri[N].dogum.yil);

	N++;
}
void guncelle(struct Rehber KisiBilgileri[BUFSIZ])
{
	int guncellenecekKisininNumarasi;
	int sec;//Guncellenecek bilginin numarasidir.
	for (int i = 0; i < N; i++)
	{
		ekranaYazdir(KisiBilgileri, i);
	}
	printf("-----Guncellemek istediginiz kisinin numarasini giriniz:---\n");
	scanf("%d", &guncellenecekKisininNumarasi);
	guncellenecekKisininNumarasi--;
	SIL
		ekranaYazdir(KisiBilgileri, guncellenecekKisininNumarasi);

	printf("1. Ad\n");
	printf("2. Soyad\n");
	printf("3. EvtEL_\n");
	printf("4. Ceptel\n");
	printf("5. Istel\n");
	printf("6. IL\n");
	printf("7. Mahalle\n");
	printf("8. Sokak\n");
	printf("9. Numara\n");
	printf("10. Epostaadresi\n");
	printf("11. Dogum tarihi Gun\n");
	printf("12. Dogum tarihi Ay \n");
	printf("13. Dogum tarihi Yil \n");
	printf("Hangisini guncellmek istiyor isiniz?");
	scanf("%d", &sec);//bu seceneklere gore kisinin neyinin degiseceğini belirleriz
	if (sec == 1)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].Isim);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].Isim);//boylelikle yeni bilgi eski bilgi yerine gecer.
	}
	else if (sec == 2)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].Soyad);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].Soyad);
	}
	else if (sec == 3)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].evtelefonu);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].evtelefonu);
	}
	else if (sec == 4)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].ceptelefonu);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].ceptelefonu);
	}
	else if (sec == 5)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].istelefonu);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].istelefonu);
	}
	else if (sec == 6)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].adresler.il);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].adresler.il);
	}
	else if (sec == 7)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].adresler.mahalle);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].adresler.mahalle);
	}
	else if (sec == 8)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].adresler.sokak);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].adresler.sokak);
	}
	else if (sec == 9)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].adresler.numara);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].adresler.numara);
	}
	else if (sec == 10)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].adresler.epostaadresi);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].adresler.epostaadresi);
	}
	else if (sec == 11)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].dogum.gun);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].dogum.gun);
	}
	else if (sec == 12)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].dogum.ay);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].dogum.ay);
	}
	else if (sec == 13)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].dogum.yil);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].dogum.yil);
	}
}
void arama(struct Rehber KisiBilgileri[BUFSIZ])
{
	SIL
		char aranacakisim[BUFSIZ];
	char yanit = 'e';
	char secenek = 0;
	do
	{
		printf("Isme gore arama icin 1 i \nSoy isme gore arama yapmak icin 2'a basiniz..\n");
		secenek = getch();
		char Bayrak = 'H';
		if (secenek == '1')
		{
			printf("\n Aradiginiz Kisinin Adini Giriniz..\n");
			flushall();
			gets(aranacakisim);
			for (int i = 0; i <= N; i++)
			{
				if (strcmp(KisiBilgileri[i].Isim, aranacakisim) == 0)//teker teker kontrol etmede strcmp kullanırız
				{
					ekranaYazdir(KisiBilgileri, i);
					Bayrak = 'E';
				}
			}
			if (Bayrak == 'H')
			{
				printf(" Aradiginiz Kisi Bulunamadi!..\n");
			}
		}
		else if (secenek == '2')
		{
			printf("\n Aradiginiz Kisinin Soy Adini Giriniz..\n");
			flushall();
			gets(aranacakisim);
			for (int i = 0; i <= N; i++)
			{
				if (strcmp(KisiBilgileri[i].Soyad, aranacakisim) == 0)
				{
					ekranaYazdir(KisiBilgileri, i);
					Bayrak = 'E';
				}
			}
			if (Bayrak == 'H')
			{
				printf(" Aradiginiz Kisi Bulunamadi!..\n");
			}
		}
		printf(" Aramaya Devam Etmek Istiyor musunuz ? < Evet >\n");
		yanit = tolower(getch());
	} while (yanit == 'e');
}
void silme(struct Rehber KisiBilgileri[BUFSIZ])
{
	int silinenecekKisininNumarasi = 0;
	char silEmin;
	int sec;//Silinellenecek bilginin numarasidir.
	for (int i = 0; i < N; i++)
	{
		ekranaYazdir(KisiBilgileri, i);
	}
	printf("Silmek istediginiz kisinin numarasini giriniz lutfen\n");
	scanf("%d", &silinenecekKisininNumarasi);
	SIL
		silinenecekKisininNumarasi--;
	ekranaYazdir(KisiBilgileri, silinenecekKisininNumarasi);
	printf("\nBu kisinin dogru kisi olduguna emin misiniz?");
	silEmin = tolower(getch());
	if (silEmin == 'e')
	{
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].Isim, KisiBilgileri[N - 1].Isim);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].Soyad, KisiBilgileri[N - 1].Soyad);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].evtelefonu, KisiBilgileri[N - 1].evtelefonu);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].istelefonu, KisiBilgileri[N - 1].istelefonu);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].ceptelefonu, KisiBilgileri[N - 1].ceptelefonu);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].adresler.il, KisiBilgileri[N - 1].adresler.il);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].adresler.mahalle, KisiBilgileri[N - 1].adresler.mahalle);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].adresler.sokak, KisiBilgileri[N - 1].adresler.sokak);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].adresler.numara, KisiBilgileri[N - 1].adresler.numara);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].adresler.epostaadresi, KisiBilgileri[N - 1].adresler.epostaadresi);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].dogum.gun, KisiBilgileri[N - 1].dogum.gun);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].dogum.ay, KisiBilgileri[N - 1].dogum.ay);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].dogum.yil, KisiBilgileri[N - 1].dogum.yil);
		N--;
	}
}
void txtYaz(struct Rehber KisiBilgileri[BUFSIZ])
{
	FILE *rehber;//dosya acma
	rehber = fopen("Rehber.csv", "w");//dsyaya yazma
	if (rehber == NULL)
	{
		printf("DOsya bulunamadi\n");
	}
	else
	{
		for (int i = 0; i < N; i++)
		{
			//fprintfler ile dosyaya yazma
			fprintf(rehber, "%s\t", KisiBilgileri[i].Isim);
			fprintf(rehber, "%s\t", KisiBilgileri[i].Soyad);
			fprintf(rehber, "%s\t", KisiBilgileri[i].evtelefonu);
			fprintf(rehber, "%s\t", KisiBilgileri[i].ceptelefonu);
			fprintf(rehber, "%s\t", KisiBilgileri[i].istelefonu);
			fprintf(rehber, "%s\t", KisiBilgileri[i].adresler.il);
			fprintf(rehber, "%s\t", KisiBilgileri[i].adresler.mahalle);
			fprintf(rehber, "%s\t", KisiBilgileri[i].adresler.sokak);
			fprintf(rehber, "%s\t", KisiBilgileri[i].adresler.numara);
			fprintf(rehber, "%s\t", KisiBilgileri[i].adresler.epostaadresi);
			fprintf(rehber, "%s\t", KisiBilgileri[i].dogum.gun);
			fprintf(rehber, "%s\t", KisiBilgileri[i].dogum.ay);
			fprintf(rehber, "%s\n", KisiBilgileri[i].dogum.yil);
		}
	}
	fclose(rehber);//dosyayı kapama
}

Feet ,inç ve Cm Dönüşümleri C++

1 feet = 30,48 cm && 1 cm = 0,0328

1 inç = 2.54 cm && 1 cm = 0.3937

#include "iostream"
#include "locale.h"

using namespace std;

void feet_cevir();
void inc_cevir();
void feetcm();
void cmfeet();
void inccm();
void cminc();


int feet,inc,cm;
int main()
{
	setlocale(LC_ALL, "Turkish");
	cout << "~~Uzunluk Birimi Çevirme~~" << endl;
	cout << "1)feet-cm " << endl;
	cout << "2)inç-cm" << endl;
	cout << "\nislemi seç" << endl;
	int secim;
	cin >> secim;

	switch (secim)
	{
	case 1:
		feet_cevir();
		break;
	case 2:
		inc_cevir();
		break;
	default:
		break;
	}
	system("pause");
	return 0;
}

void feet_cevir(){
	cout << "Feet - Cm işlemleri" << endl;
	cout << "1) feet-cm" << endl;
	cout << "2) cm-feet" << endl;
	cout << "\nislemi seç" << endl;
	int feet_secim;
	cin >> feet_secim;

	switch (feet_secim)
	{
	case 1:
		feetcm();
		break;
	case 2:
		cmfeet();
		break;
	default:
		break;
	}
}

void inc_cevir(){
	cout << "inc - Cm işlemleri" << endl;
	cout << "1) inc-cm" << endl;
	cout << "2) cm-nc" << endl;
	cout << "\nislemi seç" << endl;
	int inc_secim;
	cin >> inc_secim;

	switch (inc_secim)
	{
	case 1:
		inccm();
		break;
	case 2:
		cminc();
		break;
	default:
		break;
	}

	
}


void feetcm(){
	cout << "\feet - cm dönüştürücüsü" << endl;
	cout << "feet : ";
	cin >> feet;
	if (feet < 0)
		cout << "hatalı giriş.";
	else
	{
		cm = 0.0328*feet;
		cout << "cm :  " << cm << endl;
	}
	
}

void cmfeet(){
	cout << "\cm - feet dönüştürücüsü" << endl;
	cout << "cm : ";
	cin >> cm;
	if (cm < 0)
		cout << "hatalı giriş.";
	else
	{
		feet = 39.48*cm;
		cout << "feet :  " << feet << endl;
	}
	
}


void inccm(){
	cout << "\inc - cm dönüştürücüsü" << endl;
	cout << "inc : ";
	cin >> inc;
	if (inc < 0)
		cout << "hatalı giriş.";
	else
	{
		cm = 0.393*inc;
		cout << "cm :  " << cm << endl;
	}

}

void cminc(){
	cout << "\cm - feet dönüştürücüsü" << endl;
	cout << "cm : ";
	cin >> cm;
	if (cm < 0)
		cout << "hatalı giriş.";
	else
	{
		inc = 2.54*cm;
		cout << "inc :  " << inc << endl;
	}
}

Güncel Dev Anketler

Buraya anketler eklenecektir sizin istediğiniz bir anket olursa yorum yapmanız yeterlidir.

Yazılım Mühendisliği Hava yolu Şirketi Dökümantasyonu

Yazılım Mühendisliği Dersi Proje Ödevi

HAVA YOLLARI

hazırlayan : B110910002 İbrahim Kaya

İçerik
İçerik ii
Değiştirme Geçmişi ii
1. Giriş 1
1.1 Amaç 1
1.2 Doküman Standartları 1
1.3 Hedef Kitle ve Okuma Tavsiyeleri 1
1.4 Ürün Kapsamı 1
1.5 Referanslar 1
2. Genel Tanımlama 1
2.1 Yazılım Bakış Açısı – IPO(Input-Process-OutPut) Diyagramı 1
2.2 Ürün Fonksiyonları, Veri Akış Diyagramları (DFD) 2
2.3 Kullanıcı Sınıfları ve Davranışları Use Case Diyagramları 2
2.4 Ortam, Teknoloji ve Donanımı 2
2.5 Tasarım ve Uygulama Kısıtları 2
2.6 Kullanıcı Dökümantsayonun Taşıması Gereken Özellikler 2
2.7 Kabuller ve Etkileşimler 2
3. Harici Arayüz Gereksinimleri 3
3.1 Kullanıcı Arayüzleri 3
3.2 Donanım Arayüzleri 3
3.3 Yazılım Arayüzleri 3
3.4 İletişim Arayüzleri 3
4. Sistem Özellikleri 3
4.1 Sistem Özelliği 1 4
4.2 Sistem Özelliği 2 (vs..) 4
5. Diğer Fonksiyonel Olmayan Gereksinimler 4
5.1 Performans Gereksinimleri 4
5.2 Sağlık Gereksinimleri 4
5.3 Güvenlik Gereksinimleri 5
5.4 Yazılım Kalite Özellikleri 5
5.5 İş Kuralları 5
6. Diğer Gereksinimler 5
7. Gelecekte Yapılması Planlananlar 5
8. Uzama Planı 5
Değiştirme Geçmişi
İsim Tarih Değişikliğin Sebebi Versiyoniyeleri

1. Giriş
1.1 Amaç
İnsanların online uçak bileti almayı kolaylaştırmak ve güvenli bir şekilde sağlamak.
Uçuş kurallarını öğrenmek
Havayolu şirketlerini öğrenmek
Nereden nereye uçuş yapabileceğini öğrenmek
1.2 Doküman Standarı

1.3 Hedef Kitle ve Okuma Tavsiyeleri
tları


• Yolcular
• Personel
• Tasarımcı
• Programcı
• Testci
• Şirketler
1.4 Ürün Kapsamı
• Bilet satış işleminin karmaşası, yavaşlığı
• çalışan personel sayısı
• raporlama
• işgücünden kazanç sağlama
1.5 Referanslar
• Havayolu şirketi,
• seyahat acentesi,
• IATA ( Uluslararası Hava Taşıyıcıları Birliği),
• Vergi Usul Kanunu Genel Tebliği,
• personel yönetmeliği ve talimatlar. ,
• THY yönetimi
• Bilet satış kanunları,
• online alışveriş kanunları

2. Genel Tanımlama
2.1 Yazılım Bakış Açısı – IPO(Input-Process-OutPut) Diyagramı

Pilot: Ana pilot,yardımcı pilot
Hostes(Personel) : Personel adı,soyadı,cinsiyeti,eğitimi,kıdem yılı

Kanun: Vergi oranları

Yapılan hava yolları websitesi o şirketin veri tabanını kullanır.Bu websitesinde bilet alabilir aldıktan sonra e-bilet numarası ile istediği zaman kontrol edebilir.

IPO_e-bilet

2.2 Ürün Fonksiyonları, Veri Akış Diyagramları (DFD)

DB_Sauhy : Üyelerin kayıtları ve her bir üyenin önceden yaptığı seyahatler.

 

dfd_e-bilet

 

2.3 Kullanıcı Sınıfları ve Davranışları Use Case Diyagramları
İnsan kaynakları
Muhasebe
Departman Yöneticisi

 

 

use-case_e-bilet

 

2.4 Ortam, Teknoloji ve Donanım
Mevcut yazılım Websitesi üzerinden çalışmaktadır.
Php ile hazırlanmıştır.
Xampp Server kullanılmıştır.
Localde çalışılmıştır..
Mysql veritabanına kaydeder.

MySQL sunucu üzerinden mevcut personel veri tabanı ile entegre çalışacaktır.

2.5 Tasarım ve Uygulama Kısıtları

Zaman kısıtlaması
Maliyet kısıtlaması
Arayüz kısıtlaması(belirli arayüz kullanılacak)
Veritabanı kısıtlamaları(belirli tablo sayısı)
2.6 Kullanıcı Dökümantsayonun Taşıması Gereken Özellikler
Kullanıcıların web sitesinde karşılaşabileceği sorunlar öngörülerek web sitesine sıkça sorulan sorular butonu eklenerek kullanıcıların ihtiyaçları karşılanmaya çalışılmıştır.

2.7 Kabuller ve Etkileşimler
Çalışanlardan USD ödeme alanlar için merkez bankası kurları baz alınır.
-Hava şartlarına göre uçağın rötar yapması
-Uçağın arızalanması
-Açil durumlarda(yangın,uçağın kaçırılması vb.)
Bilet fiyatları verilerini anlık olarak firmalardan alınıp düzenlenir.
Personellerin ücretleri çalışma süresi ve çalışma ücreti baz alınarak ödenir.

3. Harici Arayüz Gereksinimleri
3.1 Kullanıcı Arayüzleri
Kullanıcıların kolay uyum sağlayabilmesi için, mevcutta kullanılan logo şirketin logosu şekilde tasarlanmalıdır.
Ana ekran bulunmalı, bu ekrandan bütün işlemlere kısayol olmalıdır.
Kullanıcı arayüzü basit ve sade olmalı bir kullanıcı fazla sekmelerle uğraşmayarak rahat bir kullanım sağlamalı.
Çıkış işlemlerinden önce onay alınmalıdır.
Kullanıcı tek bir butona tıklayarak işlemlerini yapabilecektir.

 

 

yzlm_interface

Donanım Arayüzleri
Personel sicillerini personel kartlarından otomatik olarak okuyan bir barkod okuyucu
3.2 Yazılım Arayüzleri
e-bilet satış sistemi yazılımı.

Kullanıcı bilgileri bu tablolarda tutulmalıdır.

 

vt_interface

3.3 İletişim Arayüzleri
Havayollarında bulunan havayolu şirketinin ulaşılabilecek telefon numaraları ve eposta adresi
iletişim bilgilerinde yer alır ayrıca harita üzerinden konum gösterebilir.

Bilet teslim işlemleri için kargo şirketleriyle iletişim kurulması.
Banka ödeme talimatları bankaların sunduğu web service üzeriden sağlanacaktır.
Kullanıcılara bilet aldıklarına dair bilgi için e-posta ve telefonlarına kısa mesaj gönderilecek.

 

iletisim

 

4. Sistem Özellikleri

İnternet bağlantısı yeterli.
4.1 Ödemeler otomatik olarak bankalara gitmeli
4.1.1 Tanımlama ve Öncelik
Sistemimizde kişilere yapılacak ödeme tutarlarının banka bilgileri ile beraber, ilgili bankalara yönlendirilmesi.
Çok önemli.
Yetişkinler çocuklar ve bebekler ile farklı bir fiyat belirlenir ona göre belirli indiimler yapılır.İş adamları için business class önceliği vardır ve bu öncelik kendi aralarında da oturucağı koltuğa göre para vermesi gerekir.Koltuklarda öncelik zamanında alınan biletle alakalıdır.
4.1.2 Uyarı/Cevap Sırası
Ödeme tutarlarının hesaplanması ön koşuldur.
Banka hesap bilgisi tanımlanmadan ödemeler bankaya geçilemeyecektir.
Yabancı para birimi ile ödeme yapılacak personel için ön çevirim yapılmalıdır.
Menüde eksik bilgi bulunmamalıdır.

Listeye manual mudahale edilmemelidir. Listeyi kimse görememelidir.
Listede eksik bulunursa bütün liste beklemeye alınmalıdır.

4.1.3 Fonksiyonellik Gereksinimleri
Kümülatif vergi matrahı 7000 ytl üzerinde ise 15%, altındaysa 10% vergi alınır.
Lojman giderleri alınıp bürüt maaşa eklenir.

İşlemler azami yarım saat içinde iptal edilebilmelidir.
Raporlar Excel ortamında da görüntülenebilmelidir
4.2 IK yöneticisi raporu

 

 

5. Diğer Fonksiyonel Olmayan Gereksinimler
5.1 Performans Gereksinimleri
Rezervasyon işleminin yapılabilmesi için bankaların 5 saniye içinde yanıt vermesi gerekir.
Muhasebe yöneticisi Raporlarının en fazla 30 dakikada çıkarılması.
Sistem günlük 200 bin bilet satış işlemini yapabilecek şekilde tasarlanmalıdır.
Yedekleme işlemi, kullanıcıları rahatsız etmeyecek şekilde kullanımın en az olduğu zaman dilimleri tespit edilerek yapılmalıdır.

5.2 Sağlık Gereksinimleri
Veri tabanının ve sistemin sağlıklı bir şekilde çalışması için yedekleme işlemleri periyodik yapılmalı.
Veri tabanında şişme önlenmeli ve bilgiler sürekli kontrol altında tutulmalıdır.

5.3 Güvenlik Gereksinimleri
Kredi kartı bilgileri istenirken kullanıcıların güvende hissetmesi için kredi kartının cv kodu istenir
Kullanıcılar sadece giriş yaptıkları taktirde bilet satın alma işlemi gerçekleştirebilir.
Misafir olarak sisteme girenler organizasyon bilgilerini görebilir.
Gerçek kişilerin bilet alması için telefon numarası ve kimlik numarası ile doğrulama alınmalıdır.

5.4 Yazılım Kalite Özellikleri

5.5 İş Kuralları

 

6. Diğer Gereksinimler

Sitenin yayınlanması için bir domain alınmalı.
Bankalarla gerekli anlaşmalar yapılmalı.
Online alışveriş sitesi olarak gerekli izinler alınmalıdır.
Yapılan web sitesi şirketinin devlete vergi konusunda sıkıntı yaşanmamış olması
7. Gelecekte Yapılması Planlananlar
Yurtdışı bankaları ile ileride senkronize olacaktır
Uygulamanın mobil cihazlara taşınabilmesi
Web sitesinin bir çok dil desteği eklenmesi

8. Uzama Planı
Projenin uzaması durumunda çok önem arz etmeyen sonradan güncelleme ile eklelenebilecek sayfaların çıkarılması(iletişim sayfası,hakkındaa sayfası,sıkça sorulan sorular kısmı olabilir.)
9. Test Planı
Sistemin testi için tanımlanan kullanıcı grubundan temsili olarak tanımlanan organizasyonlara bilet alması istenmiştir. Bu grubun yaptığı işlemler esnasında sistemin doğruluğu, güvenliği, hızlılığı ve açıkları test edilmiştir.

10. Bakım planı
Sistem kullanıma geçtikten sonra oluşabilecek sorunlar dahilinde geçici bakım yapılır. Eğer sorun daha büyük ve önemli ise sürüm güncellemesi ile bakımları gerçekleştirilir.

11. Gant diyagramı
Diyagramda :
• Proje yapım aşamlarını
• Başlangıç ve Bitiş tarihleri
• Ne kadar sürdüğü

 

 

gantD

12. Maliyet hesabı

Kaynak planlaması tanımlanmış proje için kaynakların, (insan, cihaz, makine, sermaye gibi..) ve bu kaynaklardan proje süresince ne miktarda gerektiğinin ve ne kadar kullanılacağının belirlenmesi işleminde meydana gelen maliyetlerdir.

işletme sabit maliyetleri
A1 Personel giderleri A2 Bina giderleri
A3 Bakım onarım maliyetleri A4 diğer maliyetler

Domain ve orjinal yazılımlara harcanan dönemsel ücretler.

Ek A: Sözlük

Ek B: Senaryolar
İlK Personeli personel ekleme senaryosu:
Personel bilgisini (adı soyadı….) girer.
Sisteme şifresi ile giriş yapar
Personel kartlarından personele yeni kart tanımlar.
İleri tuşuna
Personel iş tanımını girer.
Kaydet butonuna basar.
Eksik bilgi varsa sistem uyarır
Kayıt yapılmaz, ve tekrar kayıt işlemi baştan başlar.

Üye Kaydı Senaryosu
Kişi adını ve soy adını girer.
Bir şifre belirler
Kaydet butonuna basar.
Eksik bilgi varsa sistem uyarır
Kayıt yapılmaz, ve tekrar kayıt işlemi baştan başlar.

Personel Üyesinin Yapacağı Senaryoları
Uçakta kim kim kaç kişi yer ayırmış
Bunların Cinsiyetleri
Sınıfları(Bussines ve Economic)
Kalkış saatini öğrenme
Hangi saatlerde çalıştığını öğrenme

Üyelerin Yapacağı Senaryolar
Kendi Bilgilerini ve kart bilgisini girme
Yer ayırma
Önceki yaptığı seyahatleri gösterme
Yapacağı seyahatleri gösterme

a. SG1: Rezervasyon Yapma
Konu: Havayolu firmaları için rezervasyon ve bilet satış sistemi
Birincil aktör: Müşteri
İlgililer ve beklentileri:
Müşteri: Doğru ve hızlı bir şekilde rezervasyon işlemini yapabilmek
Veritabanı: Kaydedilecek bilgilerin bilinen bir yapıda gelmesi
Kredi kartı merkezi: İstenen işlemin doğru formatta bildirilmesi
Ön koşullar: (Sisteme giriş kullanılmayacaktır : İDO’da olduğu gibi giriş yapılmadan işlem no
yardımıyla bütün işlemler takip edilecektir, kullanıcı iptal etmek için işlem numarasını hatırlamalı).
Son koşullar: Kredi kartı asıllama merkezinden onay alınmıştır, yapılan rezervasyon kaydedilmiştir,
koltuk bilgileri güncellenmiştir.
Ana Başarılı Senaryo:
1. Müşteri tarih ve güzergah bilgisini seçer ve arama tuşuna basar
2. Sistem uygun seferlerin listesini getirir
3. Müşteri isteğine uygun seferi seçer
4. Sistem koltuk listesini getirir
5. Müşteri uygun olan boş koltukları seçer ve onaylar
6. Sistem kullanıcıdan kredi kartı bilgilerini ister
7. Müşteri bilgilerini sisteme girer
8. Sistem yapılacak indirimi hesaplar
9. Sistem kredi kartı onay merkezine bilgileri gönderir
10. Kredi kartı onay merkezi bilgileri onaylar
11. Sistem, rezervasyon bilgisini veritabanına kaydeder
12. Müşteri, başarılı işlem konusunda bilgilendirilir ve müşteriye işlem numarası verilir
13. Müşteri sistemden ayrılır
Uzantılar:
2. Uygun sefer bulunamamıştır. Seçim sayfasına geri dönülür ve müşteri bilgilendirilir.
5. Boş koltuk yoktur.
1. Sistem kullanıcıya iki seçenek sunar, ana seçim sayfası ya da arama sonuçlarına geri dön
2. Müşteri boş koltuk kalmadığını anlar ve tepki verir.
2a. Müşteri ana sayfaya gider, yeni bir arama başlatır –> 1
2b. Müşteri arama sonuçlarına geri döner –> 3
2ba. Uygun başka bir sefer vardır, onu seçer –> 4
2bb. Uygun başka sefer yoktur –> 1
10a. Kredi kartı onay merkezine erişilemez
Sistem, müşteriyi bilgilendirir ve işlem sonlandırılır
10b. Kredi kartı onay merkezi bilgilerin yanlış olduğunu bildirir
1. Kullanıcı bilgilerinin yanlış olduğu konusunda bilgilendirilir
2. Kullanıcıdan bilgilerini tekrar girmesi istenir
2a. Kullanıcı sistemi terk eder
2b. Kullanıcı bilgilerini tekrar girer –> 8
6
Özel İstekler:
Kredi kartı onay merkezinden cevap 30 saniye içinde gelmeli
Sistemde kullanılan renkler, sarı lacivert olmalı 🙂
Açık Noktalar:
Müşteri işlem numarasını unuttuysa, kredi kartıyla bulunabilsin mi?
Rezerve edilmiş koltuğun, bileti en geç ne zaman alınmalıdır ki rezervasyon düşmesin?
b. SG2: Rezervasyon İptali
Konu: Havayolu firmaları için rezervasyon ve bilet satış sistemi
Birincil aktör: Müşteri
İlgililer ve beklentileri:
Müşteri: Doğru ve hızlı bir şekilde önceden yaptığı rezervasyon işlemini iptal edebilmek
Veritabanı: Kaydedilecek bilgilerin bilinen bir yapıda gelmesi
Kredi kartı merkezi: İstenen işlemin doğru formatta bildirilmesi
Ön koşullar: Müşterinin rezerve ettiği koltuk vardır ve işlem numarasını bilmektedir.
Son koşullar: Kredi kartı asıllama merkezinden onay alınmıştır, rezervasyon iptal edilmiştir, koltuk
bilgileri güncellenmiştir.
Ana Başarılı Senaryo:
1. Müşteri rezervasyon iptal kısmına giriş yapar
2. Müşteri işlem numarasını ve kredi kart numarasını girer (koruma amaçlı)
3. Sistem veritabanından gerekli işlemi ister
4. Veritabanı işlemi bulur
5. Sistem, kredi kartı numaralarını karşılaştırır ve numaralar uyuşur
6. Sistem ceza kesintisini hesaplar
7. Sistem kredi kartı onay merkezine bilgileri gönderir
8. Kredi kartı onay merkezi bilgileri onaylar
9. Sistem, rezervasyon bilgisini veritabanına kaydeder
10. Koltuk bilgileri güncellenir
11. Müşteri, başarılı işlem konusunda bilgilendirilir
12. Müşteri sistemden ayrılır
Uzantılar:
4. Veritabanı işlemi bulamaz
Kullanıcı bilgilendirilir ve işlem iptal edilir
5. Kredi kartı numaraları uyuşmaz
Kullanıcı bilgilendirilir ve işlem iptal edilir
9a. Kredi kartı onay merkezine erişilemez
Sistem, müşteriyi bilgilendirir ve işlem sonlandırılır
Özel İstekler:
Kredi kartı onay merkezinden cevap 30 saniye içinde gelmeli
Açık Noktalar:
Müşteri işlem numarasını unuttuysa, kredi kartıyla bulunabilsin mi?
Kredi kartına para geri gönderildiği anda sistemde hata olur ve kapanırsa, koltuk bilgileri nasıl
güncellenecek?

<Yazılımın tamamlanmasından sonra ileride nelerin dahil edilebileceği ve ne gibi değişikliklerin yapılabileceği belirtilir.>
Ek C: Analiz Modelleri
<İsteğe bağlı olarak veri akış diyagramları, sınıf diyagramları, durum-geçiş(state-transition) diyagramları , varlık-ilişki(entity-relationship) diyagramları gibi bütün alakalı analiz modelleri dahil edilir.>

ER

Ek D: Tespit Listesi

 

 

 

 

 

Yazılım Mühendisliği havayolu proje dökümantasyonu indir

Yıllara göre Türkiye Nüfusu

Yıllara Göre İl Nüfusları, 2007-2013

                                      2008                           2009                        2010                             2011                          2012                                    2013

Toplam                 71 517 100              72 561 312              73 722 988               74 724 269              75 627 384                       76.667.864

İllere göre nüfus(2007-2013) download

Kaynak: Adrese Dayalı Nüfus Kayıt Sistemi (ADNKS) Source: Address Based Population Registration System (ABPRS)

 

Diğer ülkelerin nüfusları için  =>   Dünya Nüfusu

16-Djkstra Algoritması

Dijkstra Algoritması

Dijkstra algoritması – Graf teorisindeki tek-kaynaklı en küçük yol probleminin çözümüdür.

Yönlü ve yönsüz grafların her ikisi için kullanılır. Fakat, kenarların hepsinin negatif olmayan ağırlıkları olmalıdır.

Ör – 1: 

ornek1_1                                      ornek1_2

ornek1_3                                       ornek1_4ornek1_5

Ör -2 : 

ornek2_1                                                       ornek2_2  ornek2_3                                                      ornek2_4 ornek2_5                                                      ornek2_6 ornek2_7

C# Mesajbox,Checkbox,Listbox,Arkaplan rengi Uygulamalar

uygulama

Komut :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BütApp
{
    public partial class Form1 : Form
    {

         int cb_sayi = 0;
         List<CheckBox> cb_liste = new List<CheckBox>();
        public Form1()
        {
            InitializeComponent();
            rdbtn_Normal.Checked = true;
        }

        private void btn_Mesaj_Click(object sender, EventArgs e)
        {
            if(rdbtn_Normal.Checked)
                 MessageBox.Show(textBox1.Text);

            else if(rdbtn_Uyarı.Checked)
                MessageBox.Show(textBox1.Text,"Uyarı",MessageBoxButtons.OK,MessageBoxIcon.Warning);
            else if (rdbtn_Hata.Checked)
                MessageBox.Show(textBox1.Text,"Hata",MessageBoxButtons.OK,MessageBoxIcon.Error);
        }

        private void btn_Ekle_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add(textBox2.Text);
            textBox2.Text = "";
        }

        private void btn_Temizle_Click(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
                listBox1.Items.Clear();
            else if (checkBox2.Checked)
                listBox2.Items.Clear();
            else if (checkBox1.Checked && checkBox2.Checked) {
                listBox1.Items.Clear();
                listBox2.Items.Clear();
            }

            else
                MessageBox.Show("Listbox seçin..","Hata",MessageBoxButtons.OK,MessageBoxIcon.Error);

        }

        private void btn_Renk_degistir_Click(object sender, EventArgs e)
        {
            ColorDialog clr = new ColorDialog();

            if (clr.ShowDialog() == DialogResult.OK)
                this.BackColor = clr.Color;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < listBox1.Items.Count; i++)
                listBox2.Items.Add(listBox1.Items[i]);

            //listBox2.Items.Add(listBox1.SelectedItem);
        }

        private void btn_Olustur_Click(object sender, EventArgs e)
        {
            int oluşturulacak = Convert.ToInt32(nup_1.Value);

            for(int i=0;i < oluşturulacak ; i++)
            {
                CheckBox cb_dinamik = new CheckBox();
                cb_dinamik.Text = (i+1).ToString();
                cb_dinamik.Left = 250;
                cb_dinamik.Top = (i * 25) + 25;
                groupBox3.Controls.Add(cb_dinamik);

                cb_sayi++;

                cb_liste.Add(cb_dinamik);

            }
        }

        private void btn_Sil_Click(object sender, EventArgs e)
        {
            if (cb_sayi > 0)
            {
                for (int i = 0; i < cb_liste.Count; i++)
                {
                    cb_liste[i].Dispose();
                }

                cb_sayi = 0;
                cb_liste.Clear();

            }
            else
                MessageBox.Show("Silinecek checkbox yok", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void btn_Göster_Click(object sender, EventArgs e)
        {
            String mesaj_metni = "Secilen Checkboxlar" + Environment.NewLine;
             if (cb_sayi > 0)
            {

                 for (int i = 0; i < cb_liste.Count; i++)
                {
                   if(cb_liste[i].Checked){
                        mesaj_metni += cb_liste[i].Text + Environment.NewLine;
                   }

                }
                 MessageBox.Show(mesaj_metni, "", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
            else
                MessageBox.Show("Gösterilecek checkbox yok", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Form form2 = new Form();
            form2.Show();
        }

        }

    }