LAMPIRAN 1. Kuisioner Pengguna Tanggal : / /2013 Jenis Kelamin : L/P 1. Berapa usia anda saat ini? a. 21 30 tahun b. 31 40 tahun c. 41 50 tahun d. > 50 tahun 2. Berapa penghasilan yang anda terima per bulan? a. < Rp 10.000.000,00 b. Rp 10.000.000,00 Rp 20.000.000,00 c. Rp 20.000.000,00 Rp 30.000.000,00 d. > Rp 30.000.000,00 3. Apakah anda sering menggunakan kendaraan pribadi anda?, 7 kali dalam seminggu. b. Jarang, < 7 kali dalam seminggu. c. Tidak pernah. 4. Apakah kendaraan pribadi anda sudah memiliki asuransi? (kecelakaan, kehilangan, dsb) 189
190, lanjut ke nomor 9 5. Apakah anda mengerti sistem penentuan harga premi asuransi kendaraan anda?, lanjut ke nomor 9 6. Apakah ada penalti bila anda melakukan klaim dalam jangka waktu tertentu dalam bentuk kenaikan harga premi? 7. Apakah ada pemotongan harga premi asuransi yang diberikan bila anda tidak melakukan klaim dalam jangka waktu tertentu? 8. Apakah anda tertarik bila sistem asuransi kendaraan bermotor menerapkan diskon untuk premi jika anda tidak melakukan klaim dalam jangka waktu 1 tahun, dan akan mengenakan kenaikan harga premi di tahun berikutnya yang ukuran kenaikannya disesuaikan dengan jumlah uang klaim yang anda terima di tahun sekarang? a. Tertarik b. Kurang Tertarik c. Tidak tertarik 9. Menurut anda apakah sistem tersebut adil untuk anda?
191 10. Jika sistem ini diterapkan di Indonesia, apakah anda berminat untuk mengganti sistem anda yang lama dengan sistem yang baru tersebut? 2. Kuisioner Program Tanggal : / /2013 Jenis Kelamin : L/P 1. Apakah anda menemukan kesamaan tampilan pada setiap halaman aplikasi ini? 2. Apakah informasi yang disajikan aplikasi ini membingungkan anda? 3. Apakah anda dapat menemukan reaksi setiap Anda melakukan aksi pada aplikasi? 4. Apakah anda pernah menemui pesan kesalahan di aplikasi ini?
192 5. Apakah anda dapat membatalkan aksi yang telah dilakukan sebelumnya dengan mudah? 6. Apakah anda kesulitan mengingat menu yang ada dalam aplikasi ini? 7. Apakah fitur Dictionary dan Help pada aplikasi ini membuat anda mengerti tentang sistem bonus-malus optimal? 8. Apakah aplikasi ini membantu Anda dalam menentukan nilai premi yang harus dikenakan pada pemegang polis? 9. Dengan adanya aplikasi ini, apakah anda merasa perhitungan rumit saat menentukan premi untuk pemegang polis dapat diselesaikan dengan cepat dan mudah? 10. Apakah anda berminat untuk memakai aplikasi ini jika anda bekerja di bidang asuransi kendaraan bermotor?
193 3. CalculatorExp.cs 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; using Excel = Microsoft.Office.Interop.Excel; namespace bmsv1 public partial class CalculatorExp : Form private string ExcelPath = Environment.CurrentDirectory + @"\Template\BonusMalusOptimal.xlsx"; int state = 1; BonusMalusDbEntities db = null; List<ExponentialTableViewModel> datalist; public CalculatorExp() InitializeComponent(); db = new BonusMalusDbEntities(); private void btnreset_click(object sender, EventArgs e) DialogResult rslt = MessageBox.Show("Are you sure want to reset field?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (rslt.equals(dialogresult.yes)) kosong(); stateawal(true); state = 1; private void stateawal(bool e) btnexport.enabled =!e; btncount.enabled =!e; btnsave.enabled =!e; private void kosong() txtclaimamount.text = ""; txtname.text = ""; txtnumber.text = ""; txtpremium.text = ""; txttotalyears.text = ""; datagridexp.datasource = null;
194 public void btncount_click(object sender, EventArgs e) datalist = new List<ExponentialTableViewModel>(); if (txtname.text == "" txtnumber.text == "" txtpremium.text == "" txttotalyears.text == "" txtclaimamount.text == "") MessageBox.Show("All field must be filled before counting", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); int premi = Int32.Parse(txtPremium.Text); int x = Int32.Parse(txtClaimAmount.Text); int years = Int32.Parse(txtTotalYears.Text); double theta = 0.9612; double s = 2.7541; int m = 1502189; datalist.add(new ExponentialTableViewModel t = 0, klaim_0 = (int)(premi*((0+1)*(m)*(theta)*(s-1))/((theta)*(0+s- 1)*(m))), klaim_1 = (int)(0), klaim_2 = (int)(0), klaim_3 = (int)(0), klaim_4 = (int)(0), klaim_5 = (int)(0), ); for (int i = 1; i <= years; i++) datalist.add(new ExponentialTableViewModel t = i, klaim_0 = (int)(premi*((0+1)*(m)*(theta)*(s- 1))/((i+theta)*(0+s-1)*(m))), klaim_1 = (int)(premi*((1+1)*(m+x)*(theta)*(s- 1))/((i+theta)*(1+s-1)*(m))), klaim_2 = (int)(premi*((2+1)*(m+x)*(theta)*(s- 1))/((i+theta)*(2+s-1)*(m))), klaim_3 = (int)(premi*((3+1)*(m+x)*(theta)*(s- 1))/((i+theta)*(3+s-1)*(m))), klaim_4 = (int)(premi*((4+1)*(m+x)*(theta)*(s- 1))/((i+theta)*(4+s-1)*(m))), klaim_5 = (int)(premi*((5+1)*(m+x)*(theta)*(s- 1))/((i+theta)*(5+s-1)*(m))), ); datagridexp.datasource = datalist; state = 0; private void txtaverage_textchanged(object sender, EventArgs e) if (txtname.text == "" && txtnumber.text == "" && txtpremium.text == "" && txttotalyears.text == "" && txtclaimamount.text == "") stateawal(true);
195 stateawal(false); private void btnsave_click(object sender, EventArgs e) if (txtname.text == "" txtnumber.text == "" txtpremium.text == "" txttotalyears.text == "" txtclaimamount.text == "") MessageBox.Show("All field must be filled before saving", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); if (Program.flag == 0) MsPolicyHolder obj = new MsPolicyHolder(); obj.policyholdername = txtname.text; obj.policyholdernumber = txtnumber.text; obj.claimamount = Int32.Parse(txtClaimAmount.Text); obj.totalyears = Int32.Parse(txtTotalYears.Text); obj.basicpremium = txtpremium.text; db.mspolicyholders.add(obj); db.savechanges(); MessageBox.Show("Save success", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); //update var query = from obj in db.mspolicyholders where obj.policyholdernumber.equals(txtnumber.text) select obj; MsPolicyHolder temp = query.first(); temp.policyholdername = txtname.text; temp.policyholdernumber = txtnumber.text; temp.claimamount = Int32.Parse(txtClaimAmount.Text); temp.totalyears = Int32.Parse(txtTotalYears.Text); temp.basicpremium = txtpremium.text; db.savechanges(); MessageBox.Show("Data has been updated", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); Program.flag = 0; Program.masterPH = new MsPemegangPolis(); Program.masterPH.Show(); this.close(); private void btnimport_click(object sender, EventArgs e) if (state == 0) Excel.Application excelapp = new Excel.Application(); excelapp.visible = true; Excel.Workbook excelworkbook = excelapp.workbooks.open(excelpath); Excel.Sheets excelsheets = excelworkbook.worksheets; String currentsheet = "BonusMalusOptimal";
196 Excel.Worksheet excelworksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet); excelworksheet.cells[3, 3] = txtname.text; excelworksheet.cells[4, 3] = txtnumber.text; excelworksheet.cells[5, 3] = txtpremium.text; excelworksheet.cells[6, 3] = txttotalyears.text; excelworksheet.cells[7, 3] = txtclaimamount.text; int rowfield = 10; foreach (ExponentialTableViewModel item in datalist) excelworksheet.cells[rowfield, 1] = item.t; excelworksheet.cells[rowfield, 2] = item.klaim_0; excelworksheet.cells[rowfield, 3] = item.klaim_1; excelworksheet.cells[rowfield, 4] = item.klaim_2; excelworksheet.cells[rowfield, 5] = item.klaim_3; excelworksheet.cells[rowfield, 6] = item.klaim_4; excelworksheet.cells[rowfield, 7] = item.klaim_5; rowfield++; MessageBox.Show("Result has been exported to Excel", "Export File", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show("Don't have any table to export", "Warning", MessageBoxButtons.OK,MessageBoxIcon.Warning); private void btncancel_click(object sender, EventArgs e) this.close(); private void txtaverage_keypress(object sender, KeyPressEventArgs e) if (e.keychar == 13) btncount.performclick();