SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2015-2016 GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ



Benzer belgeler
PROGRAMLAMAYA GİRİŞ DERSİ II. ÖDEVİ

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

Algoritma ve Programlama II Dersi Proje Ödevi

Algoritma ve Programlama II Dersi 3.ÖDEVĠ

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü

Koşullu Önermeler (if else)

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Program Kodlamaya Geçiş

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

C++ Operatörler (Operators)

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

KONU 7: DOSYA İŞLEME ( File Processing )

ATATÜRK ÜNİVERSİTESİ BİLGISAYAR MÜHENDİSLİĞİ BÖLÜMÜ BM 104- NESNEYE YÖNELİK PROGRAMLAMA DERSİ BAHAR DÖNEMİ ÖDEV-3

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

BİLG Dr. Mustafa T. Babagil 1

Algoritma ve Programlama: Karar Yapıları ve Döngüler

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

Algoritma ve Programlama II Recursive Fonksiyonlar Dosyalama

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

BİLG Dr. Mustafa T. Babagil 1

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; }

Lab Notları 4. for ( ilklenme yeri bir kez çalışır ; Kontrol yeri her döngüde bakılır ; Güncelleme yeri her döngüde )

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

Seri Takibi Yenilikleri

C/C++ Disk G/Ç İşlemleri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Fall Object-Oriented Programming Laboratory 03

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

1.SORU. Genişlemiş ascii karakterlerinin kodlarını karşılarına yazan C programını

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

C++ Dersi: Nesne Tabanlı Programlama

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

void main() { int a[] = {1, 2, 3, 4, 5, 6}; int *p=&a[2]; int **pp=&p; printf("%d", **pp+2); }

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Adı Soyadı Öğrenci No. Toplam (100p) 2 (10p) +10p. 5 (25p) +10p. 3 (20p) 4 (25p) 1 (20p)

Programlamaya Giriş Karar Yapıları, Tekrarlı İfadeler(Döngüler)

İÇİNDEKİLER 1. E-DEVLET SİSTEMİNE GİRİŞ KULLANICI İŞLEM MENÜSÜ... 6

Görsel Programlama 1

Fonksiyon Türleri. Bildiğiniz gibi, C++'da iki fonksiyon türü ile karşılaşıyoruz. C++'nın kullanıma sunduğu hazır fonksiyonlar.

C# Çalışma Örnekleri

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

1 PROGRAMLAMAYA GİRİŞ

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

11- FONKSİYONLAR (FUNCTIONS)

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Bigisayar Programlama

Dr. Organizer Diş. Ver den beri. Program özellikleri, sistem gereksinimleri

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

C++ Dersi: Nesne Tabanlı Programlama

Giriş. ENF102 Jeoloji

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

NESNEYE YÖNELİK PROGRAMLAMA

7.1- C#.net Giriş Çıkış İşlemleri ve Visual Studio. M.İLKUÇAR - 1

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Ankalab Laboratuvarları WEB SAYFASI İSTEM GİRİŞİ KULLANIM BİLGİLERİ

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Şekil 4-3 do while döngüsünün çalışması.

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

EĞİTİM-ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ 6. SINIF 2. DÖNEM 2. SINAV ÇALIŞMA NOTLARI

Akış Kontrol Mekanizmaları

Telefon Rehberi Uygulaması

C++ Dersi: Nesne Tabanlı Programlama

NETSİS PAKETLERİNİ ORTAK UYGULAMA İLE ÇALIŞTIRMA

Medula Eczane E-Reçete Web Servislerinin Kullanım Kılavuzu (Test amaçlıdır, ödemeye esas teşkil etmeyecektir)

HALK SAĞLIĞI LABORATUARI WEB MODÜLÜ

BİLGİSAYAR NEDİR Dr. Mustafa T. Babagil 1

HSancak Nesne Tabanlı Programlama I Ders Notları

İSTANBUL AYDIN ÜNİVERSİTESİ SİSTEM ANALİZİ VE TASARIMI KADİR KESKİN ERİM KURT YAZILIM GEREKSİMLERİ DOKÜMANI ONLİNE SİNEMA BİLET SİSTEMİ B1310.

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

EĞİTİM-ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ 6. SINIF 2. DÖNEM 2. SINAV ÇALIŞMA NOTLARI

C ile Uygulamalar 4 - Cevaplar

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır.

Klavyeden Basit Giriş/Çıkış İşlemleri

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

Aşağıdaki tabloyu inceleyin. Yeni kayıt girme, var olan bir kaydı silme veya güncelleme işlemlerini bu tabloya göre yapacağız.

İLETİNİN İLETİLMESİ 1. ADRES DEFTERI

scanf () Fonksiyonu Klavyeden veri okumak için kullanılır. Yapı olarak printf () fonksiyonu aynıdır. Kullanım biçimi:

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

20 Mayıs İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. İlgili Modül/ler : Muhasebe IV

KPHYS KAMU PERSONEL HARCAMALARI YÖNETİM SİSTEMİ

Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları

#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct { int ID; char isim[15]; char soyisim[15];

Akademisyen Kullanıcı Kılavuz Dokümanı

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Firma Kullanıcı Kılavuz Dokümanı

#ifndef COMPLEX_H #define COMPLEX_H

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

Transkript:

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2015-2016 GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ Cemil Hoca Grubu PROJE ÖDEVİ

ÖDEV TESLİM KURALLARI Ödevin son teslim tarihi: 28.12.2015 (Proje Ödevi herkesin kendi ders saatinde sözlü olarak sunulacaktır. Ayrıca sunulan kod dosyası(.cpp) en geç 28.12.2015 saat 23.59 a kadar csodev ödev teslim sistemine yüklenmiş olmalıdır.) PROJE KONUSU Projede hasta muayene ve takibi için iki dosya kullanan bir hasta takip sistemi c++ dosyalama ifadeleri kullanılarak gerçekleştirilecektir. Hastanın değişmeyen bilgileri Hasta.txt dosyasında saklanacaktır. Bu bilgiler: TC NO ADI SOYADI HASTA KAYIT NO TELEFON DOĞUM TARİHİ Hastanın randevu bilgileri randevu.txt dosyasında saklanacak ve muayene için tutulacak bilgiler ise aşağıdaki gibi olmalıdır: TC NO TARİH SAAT DOKTOR ADI TESHİS İLAÇLAR TAHLİLLER Program çalıştığında aşağıdaki menü seçenekleri kullanıcının karşısına çıkmalıdır: 1- Hasta kaydı 2- Hasta kaydı güncelleme 3- Hasta silme( hasta silindiğinde hastanın randevuları da silinecek) 4- Randevu alma 5- Randevu silme 6- Randevu güncelleme 7- Hasta sorgulama 8- Hasta listesi alma( üç farklı liste olabilir, hasta adı, soyadı ve telefon bir tanesi olabilir) 9- Hasta muayene kaydı

Yapılacak işlemler Hasta kaydı hasta.txt dosyasına yeni bir hasta kaydı ekleme yapılacak. Hasta kaydı düzeltme Hasta.txt dosyasında kayıtlı bir hastanın düzeltmesi gerçekleştirilecek. Hasta silme Hasta.txt dosyasında kayıtlı bir hastanın silinmesi gerçekleştirilecek. Hastanın randevu.txt dosyasındaki randevu bilgilerinin tamamı silinecek. Randevu alma Hastanın TC no girilerek hasta bilgileri hasta.txt dosyasından getirilecek, kayıt yok ise yeni kayıt olarak eklenecek ve hasta için randevu.txt dosyasına bir randevu eklenecek. Randevu silme Hastanın TC no girilerek hasta bilgileri hasta.txt dosyasından getirilecek, randevu.txt dosyasındaki randevu silinecek. Randevu güncelleme Hastanın TC no girilerek hasta bilgileri hasta.txt dosyasından getirilecek, randevu.txt dosyasındaki randevu değiştirilecek Hasta sorgulama TC no girilen hasta aranacak, varsa hasta.txt dosyasındaki bilgileri ve randevu.txt dosyasındaki hastanın muayene geçmişi ve randevuları listelenecek Hasta listesi hasta.txt dosyasındaki hastaların tc no, ad, soy ad ve tel olarak listesi yazdırılacak Hasta muayene kaydı Hastanın TC no girilerek hasta bilgileri hasta.txt dosyasından getirilecek, randevu.txt dosyasındaki randevu bilgileri gelecek ve randevu kaydına, doktor, teşhis, ilaç, tahlil bilgileri eklenecek.

Çoklu dosya yönetimi Uygulamada tek bir dosya kullanımı genellikle yetersiz kalmaktadır. Gerek veri tekrarını önlemek, veri organizasyonunu sağlamak üzere çok sayıda ve bir biri ile ilişkili dosyalarda verilerimizi tutarız. Örneğin hastaların kayıtlarının tutulmasında hastanın değişmeyen ad, soy ad, tel, doğum tarihi vb. bilgileri yanında, hastanın her muayene olduğundaki bilgileri vardır. Muayene bilgileri hasta için sık değişen bir veridir. Ayrı bir dosyada tutulması zorunluluk gerektirir. Bu durumda en azından iki farklı dosya ile veri manipülasyonu gerçekleştirilmelidir. Şekil de dosyalar için muhtemel alanlar verilmiştir. Hasta Bilgileri Tc no Hasta kayıt no Adı Soy adı, Telefonu Doğum tarihi, Adres Vb Muayene Bilgileri Tc no Tarih Saat Doktor adı Teshis İlaçlar Tahliller Vb (TC NO) her iki dosyada da yer almaktadır. Bu bir veri tekrarı gibi görünse de bize iki dosya arasındaki ilişkiyi kurmamızı sağlamada yardımcı olacaktır. Örneğin, Hastanın genel bilgilerini bir kere kayıt ettiğimizde, hasta her seferinde muayeneye geldiğinde sadece muayene bilgileri dosyasına muayene ile ilgili bilgiler kayıt eklenecektir. Kime ait olduğu da TC NO ile bilinecektir. Yani iki dosya arasında bilgilere ulaşımı TC no bilgisi sağlayacaktır.

//çoksayıda ilişkili dosya kullanımı #include <fstream> #include <iostream> #include <string> using namespace std; Örnek Kod (Bu kod kullanılabilir) int main( ) // hasta.txt dosyasında yer alancak alanlar int secim, i = 1; string Hasta_Adi; string Hasta_Soyadi; string Tc; string Tel; int Hasta_Yas; char Hasta_cinsiyet; //muayene.txt dosyasında yer alacak alanlar //string Tc; iki dosya arasındaki ilişkiyi sağlamak için string tarih; string DK_Adi; string Teshis; double Ucret; char cevap = 'e'; do cout << " Ne yapmak istiyorsunuz? " << endl; cout << " 1) Hasta kayıt ekleme " << endl; cout << " 2) Randevu kayıt " << endl; cout << " 3) programdan çıkış " << endl; cin >> secim; while (secim!= 1 && secim!= 2 && secim!= 3); if (secim == 1) ofstream DosyaYaz; DosyaYaz.open("Hasta.txt", ios::app); do cout << "\n Hasta TC :"; cin >> Tc; cout << "\n Hasta adi :"; cin >> Hasta_Adi; cout << "\n Hasta soyadi :"; cin >> Hasta_Soyadi; cout << "\n Hasta Yasi :"; cin >> Hasta_Yas; cout << "\n telefonu :"; cin >> Tel; cout << "\n cinsiyet :"; cin >> Hasta_cinsiyet; DosyaYaz << Tc << " " << Hasta_Adi << ' ' << Hasta_Soyadi << ' ' << Hasta_Yas << ' ' << Tel << ' ' << Hasta_cinsiyet << "\n"; cout << "\n baska kayit yapacak misin?(e/h) "; cin >> cevap; while (!(cevap == 'h')); DosyaYaz.close(); cout << "dosyaya yazim tamamlandi. ";

if (secim == 2) string TC; cout << " Hasta TC :"; cin >> TC; ifstream DosyaOku("Hasta.txt"); while (!DosyaOku.eof()) DosyaOku >> Tc >> Hasta_Adi >> Hasta_Soyadi >> Hasta_Yas >> Tel >> Hasta_cinsiyet; if (TC == Tc) cout << "\n Hasta Bilgileri \n"; cout << " TC no :" << Tc << endl; cout << "adi :" << Hasta_Adi << endl; cout << "soy adi :" << Hasta_Soyadi << endl; cout << "Yaşi :" << Hasta_Yas << endl; cout << "telefonu :" << Tel << endl; cout << "cinsiyeti:" << Hasta_cinsiyet << endl; cout << " randevu istiyor mu? (e/h)" << endl; cin >> cevap; if (cevap == 'e') DosyaOku.close(); ofstream DosyaYaz; DosyaYaz.open("Muayene.txt", ios::app); cout << "\n Randevu Bilgileri \n"; cout << "\n Tarih :"; cin >> tarih; cout << "\n Doktor Adi :"; cin >> DK_Adi; cout << "\n Teshis :"; cin >> Teshis; cout << "\n Muayene Ucreti :"; cin >> Ucret; else DosyaYaz << Tc << " " << tarih << ' ' << DK_Adi << ' ' << Teshis << ' ' << Ucret << "\n"; DosyaYaz.close(); system("pause"); exit(1); exit(1); return EXIT_SUCCESS;

Hastanın hangi tarihlerde muayene olduğunu sorgulamak istediğimizde, önce TC no ile hasta Hasta.txt dosyasında sorgulanır. Hasta dosyada kayıtlı ise, ekrana getirilir. Hastanın muayene bilgileri Muayene.txt dosyasında yer aldığından dolayı, hastanın TC no ile muayene bilgileri Muayene.txt dosyasında araştırılır. Hasta farklı zamanlarda birden fazla muayene olmuş ise her birisi ekrana getirilecektir. Aşağıdaki kod bloğu böyle bir sorgulamayı gerçekleştirmek için kullanılabilir. if (secim == 3) string TC; cout << " Hasta TC :"; cin >> TC; ifstream DosyaOku("Hasta.txt"); while (!DosyaOku.eof()) DosyaOku >> Tc >> Hasta_Adi >> Hasta_Soyadi >> Hasta_Yas >> Tel >> Hasta_cinsiyet; if (TC == Tc) cout << "\n Hasta Bilgileri \n"; cout << " TC no :" << Tc << endl; cout << " adi :" << Hasta_Adi << endl; cout << " soy adi :" << Hasta_Soyadi << endl; cout << " Yaşi :" << Hasta_Yas << endl; cout << " telefonu :" << Tel << endl; cout << " cinsiyeti:" << Hasta_cinsiyet << endl; TC = Tc; DosyaOku.close(); ofstream DosyaYaz; DosyaOku.open("Muayene.txt", ios::in); cout << " randevu bilgileri \n" << endl; cout << setw(11) << " TC " << setw(10) << " Tarih " << setw(12) << " Doktor Adi " << setw(10) << " Teshis " << setw(6) << " Ucret" << endl; while (!DosyaOku.eof()) DosyaOku >> Tc >> tarih >> DK_Adi >> Teshis >> Ucret; DK_Adi << setw(10) if (TC == Tc) cout << setw(11) << Tc << setw(10) << tarih << setw(12) << DosyaYaz.close(); system("pause"); exit(1); << Teshis << setw(6) << Ucret << endl;

UYULMASI GEREKEN KOD DÜZENİ Her C++ dosyasının başında aşağıdaki yorum bloğu bulunacaktır. Yorum bulunmayan her C++ dosyası için 10 puan kırılacaktır. (pdf üzerinden kopyalayıp yapıştırmanız problem çıkartabilir) /**************************************************************************** ** SAKARYA ÜNİVERSİTESİ ** BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ ** BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ ** PROGRAMLAMAYA GİRİŞİ DERSİ ** ** ÖDEV NUMARASI...: ** ÖĞRENCİ ADI...: ** ÖĞRENCİ NUMARASI.: ** DERS GRUBU : ****************************************************************************/ Değişken isimleri anlamlı olmalıdır. Örneğin tek sayı adedini tutacak bir değişken için YANLIŞ int a; yerine DOĞRU int tekadedi; yazılmalıdır. Her bir küme parantezinin altındaki kodları yazmadan önce tab tuşuna basılarak boşluk bırakılmalıdır. YANLIŞ if(true) int a =6; cout<<"merhaba"; if(false) cout<<"nasilsin"; DOĞRU if(true) int a =6; cout<<"merhaba"; if(false) cout<<"nasilsin"; Her döngü ve koşul işlemlerinden önce yapılan işlem hakkında yorum yazılmalıdır YANLIŞ int t = 0; for(int i=0;i<100;i++) t+=i; DOĞRU int toplam = 0; //1 den 100 e kadar olan sayılar toplanıyor for(int i=0;i<100;i++) toplam+=i;