Kesempatan kali ini saya akan mencoba menerapkan contoh observer di design pattern dari sourcemaking.com
Tapi akan lebih afdol apabila kita lebih tau tentang pengertian observer di design pattern terlebih dahulu
The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods.(Wikipedia.com)
UML class diagram dari Observer
Contoh penerapan dari observer sendiri mirip seperti pelelangan, dimana yang melelang seperti class subject sedangkan yang mengikuti lelang tersebut seperti concrete observer a, b, ..., dst.
Kalau masih bingung dengan contoh diatas mari kita lihat contoh dari sourcemaking.com berikut
Program berbahasa java ini akan menjelaskan mengenai cara kerja observer.
Di program ini yang menjadi subject adalah SensorSystem, sedangkan Lighting, Gates dan Surveillance merupakan Concrete Observer A, B, dan C. Kemudian yang menotifikasi subject adalah Alarm Listener
Pada contoh ini saya akan memakai IDE java yaitu BlueJ
Source codenya seperti ini (diambil dari sourcemaking)
Mungkin kira-kira sampai segini dulu coba2 kita. sampai ketemu di coba2yang lainnya
Minggu, 04 Desember 2016
Minggu, 20 November 2016
{9} Analisis PIECES
Hai-hai, selamat datang kembali di blog saya, melanjutkan analisis yang ada di part 7.1 (http://adenuar-purnomo.blogspot.co.id/2016/11/71revisi-rsud-dr-soetomo-part-2-contoh.html) kali ini kita akan membahas analisis PIECES.
Apa itu analisis PIECES???
Kalian bisa membuka http://fajarbaskoro.blogspot.co.id/2016/11/apsi-9-teknik-analisis-sistem.html agar lebih memahami apa itu analisis PIECES
DISCLAIMER: postingan ini bukanlah sistem informasi yang sebenarnya dipakai di RSUD Dr. Soetomo(kalau ada yang kebetulan sama, ya sudahlah), melainkan hanyalah analisis saya terhadap klasifikasi sistem informasi dan juga teknologi informasi yang digunakan berdasarkan struktur organisasi RSUD Dr. Soetomo dan juga analisis PIECES nya
Sistem informasi yang akan kita bahas hanyalah salah 1 dari banyak sistem yang ada di part 7.1. yaitu tentang sistem informasi keuangan. Sistem yang terhubung dengan SI pegawai dan SI perencanaan program tersebut perlu dibuat dengan asumsi yang sudah ada merupakan sistem informasi kuno.
Apa itu analisis PIECES???
Kalian bisa membuka http://fajarbaskoro.blogspot.co.id/2016/11/apsi-9-teknik-analisis-sistem.html agar lebih memahami apa itu analisis PIECES
DISCLAIMER: postingan ini bukanlah sistem informasi yang sebenarnya dipakai di RSUD Dr. Soetomo(kalau ada yang kebetulan sama, ya sudahlah), melainkan hanyalah analisis saya terhadap klasifikasi sistem informasi dan juga teknologi informasi yang digunakan berdasarkan struktur organisasi RSUD Dr. Soetomo dan juga analisis PIECES nya
Sistem informasi yang akan kita bahas hanyalah salah 1 dari banyak sistem yang ada di part 7.1. yaitu tentang sistem informasi keuangan. Sistem yang terhubung dengan SI pegawai dan SI perencanaan program tersebut perlu dibuat dengan asumsi yang sudah ada merupakan sistem informasi kuno.
A. Analisis Performance/ Kinerja
Keterlambatan di dalam melakukan proses pembayaran gaji pegawai
B. Analisis Informasi
- Data hutang piutang yang berlebihan/ redudancy.
- Dapat terjadi error di data hutang piutang tersebut yang berupa error pencatatan hutang piutang
C. Analisis EKONOMI
Cost yang dibutuhkan untuk sistem informasi yang lama lebih tinggi karena membutuhkan buku untuk pencatatan(tentunya harus membeli buku terlebih dahulu)
D. Analisis SECURITY / Keamanan
Tidak adanya back up
Angka inputan dapat diganti
E. ANALISIS EFISIENSI
Efisiensi tempat kurang karena harus mengalokasikan tempat untuk buku
F. ANALISIS PELAYANAN (SERVICE)
- Akurasi dalam pengolahan data kurang karena faktor kesalahan hitung
- Dalam situasi terdesak tidak bisa digunakan apabila tidak ada akuntan disana
Rabu, 16 November 2016
[7.1]{Revisi} RSUD Dr. Soetomo Part 2 (contoh studi kasus analsis sistem informasi)
hai semuanya dan selamat datang kembali di blog saya. pada kesempatan
ini saya akan melanjutkan pembahasan saya tentang RSUD Dr. Soetomo( part 1 bisa
dilihat
disini http://adenuar-purnomo.blogspot.co.id/2016/10/5-rsud-dr-soetomo.html).
sebelum membahasnya saya akan menyampaikan sebuah disclaimer.
DISCLAIMER: postingan ini bukanlah sistem informasi yang
sebenarnya dipakai di RSUD Dr. Soetomo(kalau ada yang kebetulan sama, ya
sudahlah), melainkan hanyalah analisis saya terhadap klasifikasi sistem
informasi dan juga teknologi informasi yang digunakan berdasarkan struktur
organisasi RSUD Dr. Soetomo
Berdasarkan struktur organisasi di atas, saya dapat menganalisis
beberapa sistem informasi yang diperlukan / yang sudah ada di RSUD Dr. Soetomo.
Berikut hasil analisis saya:
1. Bidang kepegawaian
2. Bidang perencanaan
program
3. Bidang TU
4. Bidang Keuangan
5. Bidang pelayanan
medik dan keperawatan
6. Bidang pemasaran dan
rekam medik
7. Bidang penelitian dan
pengembangan
Ilustrasi sistem
informasi rumah sakit
Ada 7 bidang yang membutuhkan sistem informasi
dan modul-modul nya(sejauh analisis saya). mari kita bahas 1 per 1 :
Bidang kepegawaian
Di bidang kepegawaian tentunya kita membutuhkan sistem informasi pegawai
dimana sistem informasi ini mengelola pegawai yang ada yaitu informasi pegawai
dan struktur kepegawaian termasuk absensi pegawai dan mungkin juga gaji
pegawai.
Modul yang dibutuhkan:
·
Modul Personalia
Bidang perencanaan program
Program-program yang ada di RSUD Dr. Soetomo tentunya dapat dibuatkan
sebuah sistem informasi khusus dalam hal perencanaannya, karena tentunya dalam
sebuah perencanaan terdapat anggaran negara yang mungkin saja menjadi anggaran
siluman apabila tidak ada sistem informasi khusus yang menjaga anggaran
tersebut. sistem ini dapat dibuat menyerupai sistem e-budgeting milik
pemerintah provinsi DKI Jakarta.
Bidang TU
perlengkapan dan juga asset dari sebuah rumah sakit tentunya banyak,
begitu juga dengan obat yang ada, sehingga menurut saya perlu sebuah sistem
informasi khusus yang mengatur ketiga hal tersebut, sehingga tidak terjadi
kesalahan antara data yang ada dan keadaan riil nya.
Modul yang dibutuhkan:
·
Modul Pengendalian Stok
·
Modul Gudang Obat
·
Modul Floor Stock
·
Modul Produksi Obat
·
Modul Apotek (multi apotek)
·
Modul Laboratorium
·
Modul Radiologi
·
Modul Bank Darah
·
Modul Fisioterapi
·
Modul Rehab Medis
·
Modul Kamar Jenazah
·
Modul Manajemen Dapur
·
Modul Gizi
Bidang Keuangan
Sudah cukup jelas bahwa keuangan membutuhkan sistem informasi yang dapat
terintegrasi dengan SI pegawai dan SI perencanaan program. Diluar itu bidang
keuangan juga memerlukan sistem informasi tersebut untuk mengecek arus dana
baik dana keluar maupun dana masuk.
Modul yang dibutuhkan:
·
Modul Hutang
·
Modul Piutang
·
Modul Kas-Bank
·
Modul Budgeting
·
Modul Akutansi
·
Modul Penggajian / Payroll
Bidang pelayanan medik dan
keperawatan
Pasien datang dan masih harus menuju bagian registrasi untuk mendaftar,
saya rasa hal ini umum terjadi di rumah sakit manapun. dan saya rasa hal ini membutuhkan
perubahan berupa sistem informasi registrasi pasien, Mungkin nanti pasien hanya
perlu registrasi di sebuah web based aplication yang terintegrasi dengan sistem
informasi ini, sehingga ketika pasien datang dia hanya perlu mengambil nomor
antrian dan duduk mengantri dengan tenang.
Modul yang dibutuhkan:
·
Modul Loket/Registrasi Pasien
·
Modul Pelayanan Rawat Jalan
·
Modul Pelayanan Rawat Inap
·
Modul UGD
·
Modul IRD
·
Modul Kamar Operasi
·
Modul Persalinan
·
Modul Paviliun
·
Modul Modul Rawat Intensive (ICU/NICU/PICU)
·
Modul Instalasi Hemodelisia
Bidang pemasaran dan rekam
medik
Sistem informasi registrasi diatas, harus diintegrasi kan dengan rekam
medik pasien, jadi dokter nantinya hanya perlu login di SI tersebut, dan
mencari nama pasien, dan didapatlah rekam medik sang pasien. disini dokter juga
dapat mengisi rekam medik terbaru pasiennya, sehingga kita tidak dapat
menghemat penggunaan kertas (sebagai media rekam medik yang selama ini sudah
ada)
Modul yang dibutuhkan:
·
Modul Medical Check Up
·
Modul Rekam Medik
Bidang penelitian dan pengembangan
di bidang ini, sistem informasi yang digunakan bertujuan untuk mendata
dan memberikan pengetahuan tentang penelitian dan pengembangan di bidang medis
yang sudah dilakukan oleh dokter di RSUD Dr. Soetomo
Modul yang dibutuhkan:
·
Modul RSU Pendidikan
Semua bidang yang ada membutuhkan sebuah server
untuk menghubungkannya.
Sementara pada masing-masing bidang membutuhkan:
Bidang kepegawaian
Sistem ini dapat dibuat dengan hardware pc/laptop dan mesin absensi
sidik jari.
Bidang perencanaan program
Pembuatan sistem ini dapat menggunakan hardware pc/laptop.
Bidang TU
Pembuatan sistem ini dapat menggunakan hardware pc/laptop.
Bidang Keuangan
Pembuatan sistem ini dapat menggunakan hardware pc/laptop.
Bidang pelayanan
medik dan keperawatan
Pembuatan sistem ini dapat menggunakan hardware pc/laptop.
Bidang pemasaran dan
rekam medik
Pembuatan sistem ini dapat menggunakan hardware pc/laptop.
Bidang penelitian dan
pengembangan
Pembuatan sistem ini dapat menggunakan hardware
pc/laptop.
Senin, 31 Oktober 2016
[7] RSUD Dr. Soetomo Part 2 (contoh studi kasus analsis sistem informasi)
hai semuanya dan selamat datang kembali di blog saya. pada kesempatan ini saya akan melanjutkan pembahasan saya tentang RSUD Dr. Soetomo( part 1 bisa dilihat disini http://adenuar-purnomo.blogspot.co.id/2016/10/5-rsud-dr-soetomo.html).
sebelum membahasnya saya akan menyampaikan sebuah disclaimer.
DISCLAIMER: postingan ini bukanlah sistem informasi yang sebenarnya dipakai di RSUD Dr. Soetomo(kalau ada yang kebetulan sama, ya sudahlah), melainkan hanyalah analisis saya terhadap klasifikasi sistem informasi dan juga teknologi informasi yang digunakan berdasarkan struktur organisasi RSUD Dr. Soetomo
Berdasarkan struktur organisasi di atas, saya dapat menganalisis beberapa sistem informasi yang diperlukan / yang sudah ada di RSUD Dr. Soetomo. Berikut hasil analisis saya:
Bidang perencanaan program
Bidang Keuangan
sebelum membahasnya saya akan menyampaikan sebuah disclaimer.
DISCLAIMER: postingan ini bukanlah sistem informasi yang sebenarnya dipakai di RSUD Dr. Soetomo(kalau ada yang kebetulan sama, ya sudahlah), melainkan hanyalah analisis saya terhadap klasifikasi sistem informasi dan juga teknologi informasi yang digunakan berdasarkan struktur organisasi RSUD Dr. Soetomo
Berdasarkan struktur organisasi di atas, saya dapat menganalisis beberapa sistem informasi yang diperlukan / yang sudah ada di RSUD Dr. Soetomo. Berikut hasil analisis saya:
- Bidang kepegawaian
- Bidang perencanaan program
- Bidang TU
- Bidang Keuangan
- Bidang pelayanan medik dan keperawatan
- Bidang pemasaran dan rekam medik
- Bidang penelitian dan pengembangan
Ada 7 bidang yang membutuhkan sistem informasi(sejauh analisis saya). mari kita bahas 1 per 1 :
Bidang kepegawaian
Di bidang kepegawaian tentunya kita membutuhkan sistem informasi pegawai dimana sistem informasi ini mengelola pegawai yang ada yaitu informasi pegawai dan struktur kepegawaian termasuk absensi pegawai dan mungkin juga gaji pegawai. Sistem ini dapat dibuat dengan hardware pc/laptop dan mesin absensi sidik jari.
Bidang perencanaan program
Program-program yang ada di RSUD Dr. Soetomo tentunya dapat dibuatkan sebuah sistem informasi khusus dalam hal perencanaannya, karena tentunya dalam sebuah perencanaan terdapat anggaran negara yang mungkin saja menjadi anggaran siluman apabila tidak ada sistem informasi khusus yang menjaga anggaran tersebut. sistem ini dapat dibuat menyerupai sistem e-budgeting milik pemerintah provinsi DKI Jakarta. Pembuatan sistem ini dapat menggunakan hardware pc/laptop.
Bidang TU
perlengkapan dan juga asset dari sebuah rumah sakit tentunya banyak, begitu juga dengan obat yang ada, sehingga menurut saya perlu sebuah sistem informasi khusus yang mengatur ketiga hal tersebut, sehingga tidak terjadi kesalahan antara data yang ada dan keadaan riil nya.
Sudah cukup jelas bahwa keuangan membutuhkan sistem informasi yang dapat terintegrasi dengan SI pegawai dan SI perencanaan program. Diluar itu bidang keuangan juga memerlukan sistem informasi tersebut untuk mengecek arus dana baik dana keluar maupun dana masuk.
Bidang pelayanan medik dan keperawatan
Pasien datang dan masih harus menuju bagian registrasi untuk mendaftar, saya rasa hal ini umum terjadi di rumah sakit manapun. dan saya rasa hal ini membutuhkan perubahan berupa sistem informasi registrasi pasien, Mungkin nanti pasien hanya perlu registrasi di sebuah web based aplication yang terintegrasi dengan sistem informasi ini, sehingga ketika pasien datang dia hanya perlu mengambil nomor antrian dan duduk mengantri dengan tenang.
Bidang pemasaran dan rekam medik
Sistem informasi registrasi diatas, harus diintegrasi kan dengan rekam medik pasien, jadi dokter nantinya hanya perlu login di SI tersebut, dan mencari nama pasien, dan didapatlah rekam medik sang pasien. disini dokter juga dapat mengisi rekam medik terbaru pasiennya, sehingga kita tidak dapat menghemat penggunaan kertas (sebagai media rekam medik yang selama ini sudah ada)
Bidang penelitian dan pengembangan
di bidang ini, sistem informasi yang digunakan bertujuan untuk mendata dan memberikan pengetahuan tentang penelitian dan pengembangan di bidang medis yang sudah dilakukan oleh dokter di RSUD Dr. Soetomo
(6.5) [Revisi lagi] CRC card, class diagram, sequensial diagram dan penerapan aplikasi + component diagram dan deployment diagram
1. CRC card
2.Use Case Diagram
3.Class diagram
4. Sequensial diagram
5.Activity Diagram
6. Penerapan
#include<string>
using std::string;
using std::getline;
#include <vector>
using std::vector;
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#include <iomanip>
using std::setw;
using std::left;
using std::right;
#include <fstream>
using std::ofstream;
using std::ifstream;
#include <sstream>
using std::stringstream;
#include <ctime>
class List {
private:
string _identification;
string _category;
string _itemDescription;
string _price;
string _quantity;
string _total;
string _newprice;
string _VAT;
public:
List();
List(string id, string category, string itemDescription, string price);
List(string id, string quantity, string price, string total, string VAT );
string toString();
void display();
void Bill();
};
class ListItem {
private:
int _identification;
string _price;
vector<List> _items;
vector<List> _itemSlot;
public:
void displayAll();
void ListBill();
void getFile();
void showMenu();
void StopProgram();
};
class Menu {
private:
ListItem _Li;
string _file;
public:
Menu();
bool select();
};
const string currentDateTime() {
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
strftime(buf, sizeof(buf), "%Y-%m-%d.%X", &tstruct);
return buf;
}
//***************************************************************
// Displaying and string data to the document
//****************************************************************
List::List(string id, string itemDescription, string category, string price)
:_identification(id), _itemDescription(itemDescription), _category(category), _price(price){ }
List::List(string id, string quantity, string price, string total, string VAT)
:_identification(id), _quantity(quantity), _price(price), _total(total), _VAT(VAT) { }
string List::toString(){
return string(_identification + ":" + _quantity + ":" + _price + ":" + _total + ":" + _VAT);
}
void List::display(){
cout << _identification << " " << left << _category << " " << left << _itemDescription << " " << left << _price <<setw(2) << left << endl;
}
void List::Bill(){
cout << _identification << " " << _quantity << " " << _price << " " << _total << " " << _VAT;
}
void ListItem::displayAll(){
for(size_t i = 0; i < _items.size(); ++i){
_items[i].display();
}
cout << endl;
}
//***************************************************************
// Read file
//****************************************************************
void ListItem::getFile(){
//Opens the file and reads the file
char ch;
while(ch = 'y')
{
cout << "Enter File name: ";
system("color 1f");
string name = "menu";
cin >> name;
name += ".txt";
ifstream fin(name.c_str());
if(fin){
ch = 'n';
while(!fin.eof()){
string IdNo;
getline(fin, IdNo, ':'); // Finds "IDNO://
string category;
getline(fin, category, ':');
string itemDescription;
getline(fin, itemDescription, ';');
string price;
getline(fin, price);
if(!fin.eof()){
_items.push_back(List(IdNo, category, itemDescription, price));
}
}
}
if (ch = 'n')
{
break;
}
}
}
//***************************************************************
// Allows other functions to link up with each other!!
//****************************************************************
Menu::Menu(){
select();
}
//***************************************************************
// Entering the details
//****************************************************************
void ListItem::showMenu(){
system ("cls");
int ch, quantity;
double price,total, VAT;
char choice;
char buffer[80];
string _quantity, _total, _VAT, _ch;
// User enters data
cout<<"\nn============================";
cout<<"\n PLACE YOUR ORDER";
cout<<"\n============================";
cout << "\nEnter the ID, Quantiy and Price" <<endl;
while((choice = 'y') || (choice = 'Y'))
{
cout << "\nItem ID: ";
cin >> ch;
cout << "\nQuantity; ";
cin >> quantity;
cout << "\nprice: ";
cin >> price;
total = price * quantity;
VAT = total * 1.2;
cout << "\ntotal: " << total << endl;
cout << "\nVAT: " <<VAT << endl;
stringstream stream;
stream << quantity; //String Streams, passes data into the attribute in the class which then gets stored in a vector
stream >> _quantity;
stringstream stream2;
stream2 << price;
stream2 >> _price;
stringstream stream3;
stream3 << total;
stream3 >> _total;
stringstream stream4;
stream4 << VAT;
stream4 >> _VAT;
stringstream stream5;
stream5 << ch;
stream5 >> _ch;
cout << "\nCurrent time: ";
cout << currentDateTime() << std::endl;
getchar();
_itemSlot.push_back(List(_ch, _quantity, _price, _total, _VAT) );
cout << "\n To continue press Y, else to quit press N " << endl;
cin >> choice;
cin.ignore();
if(choice == 'n' || choice == 'N')
{
system("cls");
break;
}
}
}
//********************************************************************************************************
// Gets the information he user enters which is then sent to endMenu when the close it and it saves the file
//**********************************************************************************************************
void ListItem::ListBill(){
cout << "ItemID" << " Quantity" << " Price" << " total" << "VAT" << endl;
for(size_t i = 0; i < _itemSlot.size(); ++i){
_itemSlot[i].Bill();
}
cout <<endl;
}
void ListItem::StopProgram(){
system("color 2f");
string _bill = "Transaction"; // For some unknown strange reason, it saves the file as 5.txt
cout << right << "Bill has been saved " <<endl;
_bill += ".txt";
ofstream fout(_bill.c_str());
for(size_t i = 0; i < _itemSlot.size(); ++i) {
fout << i+1 << " : " << _itemSlot[i].toString() << endl;
}
fout.close();
cout << endl;
}
bool Menu::select(){
system("color 1f");
cout << "Menu====\n" << endl;
cout << "(1) Read a file \n(2) Add a "
"bill \n(3) Display Bill\n(4) Display all data\n(5) Save file and leave the Program\n" << endl;
cout << "Select: ";
char ch;
cin >> ch;
cin.ignore(256, '\n');
cout << endl;
switch(ch)
do
{
case '1' : _Li.getFile();
return true;
case '2' : _Li.showMenu();
return true;
case '3' : _Li.ListBill();
return true;
case '4': _Li.displayAll();
return true;
case '5': _Li.StopProgram();
return false;
default : cout << "Enter an '1', '2' ,'3', '4' or '5' without"
" the qoutes.n";
return true;
}while(ch!=1 || ch !=2 || ch != 3 || ch !=4 || ch!=5);
}
int main(){
//all of the functions are run through menu4
Menu menu;
while(menu.select()) {
// empty body
}
return 0;
}
7. Component Diagram
8. Deployment diagram
2.Use Case Diagram
3.Class diagram
4. Sequensial diagram
6. Penerapan
#include<string>
using std::string;
using std::getline;
#include <vector>
using std::vector;
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#include <iomanip>
using std::setw;
using std::left;
using std::right;
#include <fstream>
using std::ofstream;
using std::ifstream;
#include <sstream>
using std::stringstream;
#include <ctime>
class List {
private:
string _identification;
string _category;
string _itemDescription;
string _price;
string _quantity;
string _total;
string _newprice;
string _VAT;
public:
List();
List(string id, string category, string itemDescription, string price);
List(string id, string quantity, string price, string total, string VAT );
string toString();
void display();
void Bill();
};
class ListItem {
private:
int _identification;
string _price;
vector<List> _items;
vector<List> _itemSlot;
public:
void displayAll();
void ListBill();
void getFile();
void showMenu();
void StopProgram();
};
class Menu {
private:
ListItem _Li;
string _file;
public:
Menu();
bool select();
};
const string currentDateTime() {
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
strftime(buf, sizeof(buf), "%Y-%m-%d.%X", &tstruct);
return buf;
}
//***************************************************************
// Displaying and string data to the document
//****************************************************************
List::List(string id, string itemDescription, string category, string price)
:_identification(id), _itemDescription(itemDescription), _category(category), _price(price){ }
List::List(string id, string quantity, string price, string total, string VAT)
:_identification(id), _quantity(quantity), _price(price), _total(total), _VAT(VAT) { }
string List::toString(){
return string(_identification + ":" + _quantity + ":" + _price + ":" + _total + ":" + _VAT);
}
void List::display(){
cout << _identification << " " << left << _category << " " << left << _itemDescription << " " << left << _price <<setw(2) << left << endl;
}
void List::Bill(){
cout << _identification << " " << _quantity << " " << _price << " " << _total << " " << _VAT;
}
void ListItem::displayAll(){
for(size_t i = 0; i < _items.size(); ++i){
_items[i].display();
}
cout << endl;
}
//***************************************************************
// Read file
//****************************************************************
void ListItem::getFile(){
//Opens the file and reads the file
char ch;
while(ch = 'y')
{
cout << "Enter File name: ";
system("color 1f");
string name = "menu";
cin >> name;
name += ".txt";
ifstream fin(name.c_str());
if(fin){
ch = 'n';
while(!fin.eof()){
string IdNo;
getline(fin, IdNo, ':'); // Finds "IDNO://
string category;
getline(fin, category, ':');
string itemDescription;
getline(fin, itemDescription, ';');
string price;
getline(fin, price);
if(!fin.eof()){
_items.push_back(List(IdNo, category, itemDescription, price));
}
}
}
if (ch = 'n')
{
break;
}
}
}
//***************************************************************
// Allows other functions to link up with each other!!
//****************************************************************
Menu::Menu(){
select();
}
//***************************************************************
// Entering the details
//****************************************************************
void ListItem::showMenu(){
system ("cls");
int ch, quantity;
double price,total, VAT;
char choice;
char buffer[80];
string _quantity, _total, _VAT, _ch;
// User enters data
cout<<"\nn============================";
cout<<"\n PLACE YOUR ORDER";
cout<<"\n============================";
cout << "\nEnter the ID, Quantiy and Price" <<endl;
while((choice = 'y') || (choice = 'Y'))
{
cout << "\nItem ID: ";
cin >> ch;
cout << "\nQuantity; ";
cin >> quantity;
cout << "\nprice: ";
cin >> price;
total = price * quantity;
VAT = total * 1.2;
cout << "\ntotal: " << total << endl;
cout << "\nVAT: " <<VAT << endl;
stringstream stream;
stream << quantity; //String Streams, passes data into the attribute in the class which then gets stored in a vector
stream >> _quantity;
stringstream stream2;
stream2 << price;
stream2 >> _price;
stringstream stream3;
stream3 << total;
stream3 >> _total;
stringstream stream4;
stream4 << VAT;
stream4 >> _VAT;
stringstream stream5;
stream5 << ch;
stream5 >> _ch;
cout << "\nCurrent time: ";
cout << currentDateTime() << std::endl;
getchar();
_itemSlot.push_back(List(_ch, _quantity, _price, _total, _VAT) );
cout << "\n To continue press Y, else to quit press N " << endl;
cin >> choice;
cin.ignore();
if(choice == 'n' || choice == 'N')
{
system("cls");
break;
}
}
}
//********************************************************************************************************
// Gets the information he user enters which is then sent to endMenu when the close it and it saves the file
//**********************************************************************************************************
void ListItem::ListBill(){
cout << "ItemID" << " Quantity" << " Price" << " total" << "VAT" << endl;
for(size_t i = 0; i < _itemSlot.size(); ++i){
_itemSlot[i].Bill();
}
cout <<endl;
}
void ListItem::StopProgram(){
system("color 2f");
string _bill = "Transaction"; // For some unknown strange reason, it saves the file as 5.txt
cout << right << "Bill has been saved " <<endl;
_bill += ".txt";
ofstream fout(_bill.c_str());
for(size_t i = 0; i < _itemSlot.size(); ++i) {
fout << i+1 << " : " << _itemSlot[i].toString() << endl;
}
fout.close();
cout << endl;
}
bool Menu::select(){
system("color 1f");
cout << "Menu====\n" << endl;
cout << "(1) Read a file \n(2) Add a "
"bill \n(3) Display Bill\n(4) Display all data\n(5) Save file and leave the Program\n" << endl;
cout << "Select: ";
char ch;
cin >> ch;
cin.ignore(256, '\n');
cout << endl;
switch(ch)
do
{
case '1' : _Li.getFile();
return true;
case '2' : _Li.showMenu();
return true;
case '3' : _Li.ListBill();
return true;
case '4': _Li.displayAll();
return true;
case '5': _Li.StopProgram();
return false;
default : cout << "Enter an '1', '2' ,'3', '4' or '5' without"
" the qoutes.n";
return true;
}while(ch!=1 || ch !=2 || ch != 3 || ch !=4 || ch!=5);
}
int main(){
//all of the functions are run through menu4
Menu menu;
while(menu.select()) {
// empty body
}
return 0;
}
8. Deployment diagram
Langganan:
Postingan (Atom)