לוגיקת הפקדה
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C של Coddy. שיעור 24 מתוך 61.
אתגר
קלהגיע הזמן להוסיף את הפעולה הבנקאית האמיתית הראשונה למודול Account שלך: היכולת להפקיד כספים! פונקציית הפקדה צריכה להיות חכמה: עליה לקבל רק סכומים חיוביים, כדי להגן על החשבון שלך מפני עסקאות לא תקינות.
בהמשך לפרויקט חשבון הבנק הקיים שלך, תרחיב את המודול באמצעות הוספת פונקציונליות להפקדה. על פונקציית ההפקדה שלך לאמת את הקלט לפני שינוי היתרה המוסתרת. כך באה לידי ביטוי הכמסה בהגנה על שלמות הנתונים שלך.
תעבוד עם שלושה קבצים:
account.h: הרחב את קובץ הכותרת הקיים שלך והוסף אבטיפוס של פונקציה חדשה:deposit. הפונקציה תקבל מצביע ל-Account וסכום מסוגdouble, ותחזירint(1 במקרה של הצלחה, 0 אם הסכום אינו תקין). השאר את ההצהרות הקיימות שלך עבורcreate_accountו-destroy_account.account.c: ממש את הפונקציהdepositלצד הבנאי וההורס הקיימים שלך. ההפקדה תצליח רק אם הסכום חיובי (גדול מאפס). אם הוא תקין, הוסף את הסכום ליתרה המוסתרת והחזר 1. אם הסכום הוא אפס או שלילי, דחה אותו על ידי החזרת 0, בלי לשנות את היתרה.main.c: הדגם את פונקציונליות ההפקדה שלך על ידי יצירת חשבון וביצוע כמה פעולות הפקדה, חלקן תקינות וחלקן לא, כדי להראות שהאימות פועל כראוי.
תקבל שלושה קלטים: מזהה החשבון (מספר שלם), סכום הפקדה תקין (מספר חיובי) ו-סכום הפקדה לא תקין (אפס או מספר שלילי).
בקובץ הראשי שלך, צור חשבון עם המזהה הנתון והדפס אישור. לאחר מכן נסה תחילה להפקיד את הסכום הלא תקין: הדפס אם הפעולה הצליחה וציין שהיתרה אמורה להישאר ללא שינוי. לאחר מכן, הפקד את הסכום התקין והדפס את תוצאת ההצלחה. לבסוף, השמד את החשבון ואשר את הניקוי.
הדפס את הפלט בפורמט הזה:
Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyedכאשר 1001 הוא מזהה החשבון, -50.00 הוא הסכום הלא תקין, ו-200.00 הוא הסכום התקין. עצב את כל הסכומים עם שתי ספרות אחרי הנקודה העשרונית באמצעות %.2f.
פונקציית ההפקדה שלך משמשת כשומרת סף. היא מבטיחה שרק עסקאות תקינות יוכלו לשנות את היתרה המוסתרת של החשבון. אף על פי שעדיין אינך יכול לראות את היתרה (נוסיף פונקציית getter בשיעור מאוחר יותר), תוכל לסמוך על כך שהפקדות לא תקינות נדחות כראוי.
נסו בעצמכם
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
scanf("%d", &account_id);
Account* account = create_account(account_id);
printf("Account %d created\n", account_id);
destroy_account(account);
printf("Account destroyed\n");
return 0;
}
כל השיעורים ביחידה תכנות מונחה עצמים
4כימוס
המושג של מצביעים אטומיםהגדרת מבנים אטומיםפונקציות Get ו-Setאימות ב-Settersסיכום: הקופסה הסודית2אובייקטים ומתודות
מבנים כאובייקטיםמצביע 'Self'נכונות constמצביע לעומת ערךמתודות עזרחזרה: מנהל נקודות5פרויקט: חשבון בנק פשוט
הגדרת הפרויקטמימוש החשבוןתרגלו בעצמכם: קומפיילר C אונליין