SUMMER TRAINING SUMMER TRAINING REPORT ON BANKING MANAGEMENT
Submitted in partial fulfilment of the requirement for the Award of degree
SUBMITTED BY: PRIYANKA MUNJAL B.Tech FINAL YEAR (Computer Science )
HARYANA HARYANA ENGINEERING ENGINEERI NG COLLEGE C OLLEGE (JAGADHRI)
(Software to manage all the data regarding banking )
Technology used:-
‘C++’ 2
Abstract I am the students students of Haryana Engineering College, Jagadhri and studying in CSE 7th semester. As a part of four year degree course we have undergone a project as a work on “Manage – All” to facilitate them with automated software besides the error prone manual work.
Present is the age of computers and technology. Practical knowledge has its own importance. Without practical knowledge one can not be specialized in one’s field. We have automated the practical knowledge of institutes and their work in the project.
The technology used in this project is C++. This report provides the knowledge regarding the platform used in the project.
In this project, we have tried best to incorporate the knowledge we have about this department.
3
4
ACKNOWLEDGEMENT
To matter what accomplishment we achieve somebody helps me. For every accomplishment we need the cooperation and help of others. As knowledge advances by steps not by leaps so, ability advances by encouragement and guidance. Although you have ability and knowledge but it is worthless unless and until you can develop it if somebody encourages you. While developing the project, I have learnt a lot. Firstly I got the explosure to the industry. We got to learn the work culture of a company. This will be an unforgetful experience. While developing this project, a lot of difficulties were faced by me. But it was the help of some special people that I have gained much confidence and developed the project quite well. Hereby, I shall like to thank all the employees of NIC to coordinate with me and provide me the information needed to complete the analysis part of this project. I shall like to thank everyone who in anyway helped me in this project. My heartiest thanks to Mr. Hari Chand , Training Coordinate Officer, NIC Chandigarh who helped me in providing the required infrastructure, good work culture, make me learn a lot of new things, guiding me throughout the project and for providing me such a golden opportunity to experience the work culture before actually working for a company. At last I am greatly thankful to the lectures of HARYANA ENGINEERING COLLEGE (JAGADHRI) whose inspiration & teaching are strong tool for completion of this training.
Priyanka Munjal
5
6
TABLE OF CONTENTS
Part- 1 ORGANIZATIONAL PROFILE & INTRODUCTION
Chapter 1 :- Organizational Profile 1.1 Organization Setup 1.2 NIC, NIC, Chandi Chandigarh garh 1.3 NIC Service Servicess Part- 2 INTRODUCTION TO PROJECT
Chapter 2 :- Overview of Project 2.1 Object Objective ivess of the Softwa Software re 2.2 2.2 Prob Proble lem m List Listin ings gs Part- 3 INITIAL STUDY
Chapter 3 :- Initial Study 3.1 Introduction 3.2 Technology used in the project 3.2.1 C++ Description 3.3 C++ Glossary Part- 4 CODING
Chapter 4:- Coding used in the project Part- 5 BIBLIOGRAPHY
Chapter 5 :- Biblography
7
8
NATIONAL INFORMATIC CENTER (NIC) : A Profile Organization Setup The organizational set up of NIC encompasses its headquaters at New Delhi State units in all the 29 State Capitals and 6 Union Territory Headquaters, and District centers of India. The Organization employs a large pool of efficient technical manpower. At the NIC Headquaters, a large number of Application Divisions exit which provide total Informatics Support to the Ministeries and Departments of the Central Government. NIC software is a leading technology company with the global out reach specializing in providing top solutions for all category users. Their strong commitment towards quality has secured us a privileged position in a fast evolving market, the key advantage being a state of art of product based on cutting edge technologies. The company delivers a full service offerings that helps numerous customers achieve maximum return on their investment through dedicated software experts, management tools and product selection consultation on business critical soft wares, including desktop, storage, security infrastructure and data management.
Company History NIC was founded in 1988 and is Government owned. Since its first day of Business, NIC has required no financial Banking or assistance the company has been self sufficient and profitable in all years of operation. The training Coordinator of company are Mr. Hari Chand who are highly educated and each having 9 to 10 years of experience in this industry. The company mission and culture has reminded constant over the years.
Goal The goal of NIC is to be responsive to its users and provide them with software solution to assist them in being more efficient and productive in their work. The company plans on continually improving software to help its clients take advantage new technology.
9
The company Founded in 1988, NIC is headquartered in Chandigarh, India. The activity is focused on the following major activity axes: Software Development Networking consultancy Project Management Software Export
The Company is Producing, Producing, developing developing and internationa internationally lly distributin distributing g high quality quality software products.
Providing integrated solutions for data security and reliable services in files like software distribution, consultancy and technical support.
Providing solutions in banking, healthcare, insurance and publishing industry.
The People The people are their key strength. They pick and nurture the best to create an awesome awesome base of expert expertise ise and talent. talent. They They are a team team of young young profes professio sional nals, s, enthusiastic and talented people. Software programmers, product managers or technical te chnical support people, the company is committed to provide their clients with high quality products and flawless technical support. The people working in sales, marketing and administration divisions are all client driven, closely co-operating with the software developers, therefore making them as an unbeatable team.
The Capabilities The reliability of the products, the flexible licensing program and the low pri prices ces show show thei theirr comm commit itme ment nt towa toward rdss thei theirr clien clients ts.. NIC soft softwa ware re strat strateg egic ic partnership with reputable companies allover the world has created a global network with excellent results and outstanding performance in the distribution of software products.
10
The Product The products are characterized by innovation hip, ease of use and multiplatform supports. The software developed is supporting the large variety of operating systems. The systems undertaken by NIC are as under:
Developed publishing software for ICCC publications, which involved the compilation of all the cases of all high court and Supreme Court and effective search engine utility for finding relevant cases.
Develo Developin ping g an in-hous in-housee EPR projec projects ts for US based based compan company, y, electri electrical cal company radius power. The company is into design, manufacturing and sales of electrical equipments like SNMPS, filters and EMI etc. The ERP software being developed cover productions, finance, marketing and sales & purchase modules.
Designed and developed management system for a reputed employment or organi organizati zation on,, VSS privat privatee limite limited, d, which which special specialize izess in human human resour resource ce development.
Developed an office Automation suite for the various offices of Vardaan sales LTD, a leading garment manufacturer of north India.
Designed Designed and developed an accounting accounting software package for sporting LTD. Ludhiana.
Developed a hospital Management System for a group of hospitals located in Jalandhar viz. Sanjivani Hospital, Navjeevan Hospital
Desi Design gnin ing g
and and
manu manufa fact ctur urin ing g
deve develo lopi ping ng an mana manage geme ment nt
in-h in-hou ouse se
syst system em
for for
soft softwa ware re
IMMS IMMS inte integr grat ated ed
manu manufa fact ctur urin ing g
indu indust stri ries es
incorporating the following functions: •
Financial Management
•
Inventory management
•
Store and purchase
•
Human Resource management
11
NIC, CHANDIGARH The Haryana State Unit was set up in the year 1988 and ever since, it has been providing unstained IT support to the State Government. During the formulation of the recent Action Plan, it has been decided by the Government to accord the highest priority to the IT sector and this has given a big opportunity to NIC Haryana in implementing its e- governance policies effectively in the State. As an important step, a Secretariat for Information Technology has been setup at the Haryana Civil Secretariat and Chief Minister has dedicated a special “Center for e-governance”. The NIC center in Chandigarh Civil Secretariat is functioning since 1992. This center works for the Control and Management, Application Development & Management, Internet/E-mail and Web servers Management and Data Management.
12
NIC Services
The spectrum of services provided by NIC encompasses various dimensions of the Information Arena and can be brodly listed as under:
Consultancy/guidance
Software Design & Development
Networking
Internet Services
WWW hosting Services
Video Conferencing
Multimedia
Geographical Information System (GIS)
Bibliographic Informatics
♦
MEDLARS
♦
Patent Information
♦
Web Services
The former chief minister of Haryana inaugurated another Intranet web server with NAI DISHA services on 16 th Dec 2001. NAI DISHA is an IT driven electronic interface between the Government and Citizen. It is a step towards making government services available to citizen any time, anywhere. Neither the time of the day nor location hinder from obtaining information from the Government. Readdressal of grievances, or even the procedure of getting a driving license or
13
getting a vehicle registered, is an easy as inquiring about the bus timing for different destination. NAI DISHA is the first product of District minimum agenda program (DMAP)/District Network (D-NET). About 25 services of public importance are already incorporated into it. More services and databases would be added with the passage of time.
Services & Information provided by NAIDISHA are:
Public grievances
Various Forms and Procedures
Collector rates
Below poverty line services
Old age pension
Widow pension
Handicapped pension
Birth & Death Certificate
Yellow Pages
Bus Timings
Train Timings
Public Holidays
Census 2001 data
Sarkar Apke Dwaar Programme
Missing persons
Passport Enquiry Services
House Tax Survey
Banking Management
Revenue court Case causes list
14
15
Overview of Project
Objective of the Software
On the basis of analysis the following objectives are framed in order to achieve the required goals :•
To make information easily accessible.
•
Decrease complexity of business and management.
•
Analyze large amount of business data.
•
Select, sort & analyze data in an unlimited no. of ways.
•
Minimize data redundancy by eliminating duplicate entries.
•
It is used to create, close and modify the account.
•
It is used to display the list of accounts.
•
It is used to generate monthly report.
•
It is used for calculating the interest of an account.
•
It is used to display a transaction account.
16
Problem Listing
Main problems in the existing system:
Searching cannot be performed, each and every record is to be checked manually in the database.
History of a particular case are only stored in files not in database.
Unable to get accurate, timely information.
Application not complete for existing business practices
Modifications are time consuming or not feasible
The software uses concepts of C++, hence doing all the tasks like Data Hiding, Data encapsulation, etc. the data or information about the customers within the bank is saved to files by using FILE HANDLING property of C++. The software provides a user friendly environment to the DBA and helps him/her to enter the information properly, without any difficulty and then store it on files.
17
18
Initial Study
Introduction
The project “Manage - All” has been implemented to create, close, modify the accounts regarding customers of a bank in a proper and safe manner. It can also calculate the interest, see the transacation of an individual account. The main objective of this project is to resolve the problems which a person faces regarding information about its account.
There is a Data Base Administrator, who enters all the information about an individual customer who as an account or wants to create,close,modify an account on to the system and allows it to get stored at proper location using file handling.
Here we can also search particular customer on the basis of : Account no. Name of the customer. Date when the account was created.
There are various tasks of entering, editing and managing customer account. To do these tasks every organization hires a Data Base Administrator. But he/she who plays the role of DBA can never to this task manually. This is because, there is very large number of customers who have an account in bank and there are very large fields of information related with a single customer. So, if we consider the whole scenario, we will come to know that it is a very complex and difficult task which can never be done
19
manually. So, in order to remove this problem, we use computers to store the data. The data in computer is stored with the help of SOFTWARE.
This project provides the DBA all those services, which he/she requires while managing the database.
The software provides a user friendly environment to the DBA and helps him/her to enter the information properly, without any difficulty and then store it on files. The software uses concepts of C++, hence doing all the tasks like Data Hiding, Data encapsulation, etc. the data or information about the customer within a bank is saved to files by using FILE HANDLING property of C++.
The data stored on file is not understandable to any human, it is written in machine language which can only be interpreted by a computer. Hence, it also provides security from unwanted access to the data.
20
TECHNOLOGY USED IN THE PROJECT
C++ Description
History Stroustrup began work on C with Classes in 1979. The idea of creating a new language originated from Stroustrup's experience in programming for his Ph.D. thesis In 1980 the name was C with classes but after that in 1983, the name of the language was changed from C with Classes to C++. C++ is an extension of language C because new features were added in C that’s why he name as C++ means C with an increment operator. New features that were added to the language included virtual functions, function name and operator overloading, references, constants, user-controlled freestore memory control, improved type checking, and a new comment style (//). The name "C++" This name is credited to Rick Mascitti (mid-1983) and was first used in December 1983. Earlier, during the research period, the developing language had been referred to as "new C", then "C " C with Classes Classes". ". According to Stroustrup: "the name signifies the evolutionary nature of the changes from C". Old problems Traditionally, C++ compilers have had a range of problems. The C++ standard does not cover implementation of name of name decoration, decoration, exception handling, handling, and other implementation-specific features, making object code produced by different compilers incompatible; there are, however, 3rd-party standards for particular machines or operating systems which attempt to standardize compilers on those platforms (for example C++ ABI[2] ABI[2]), ), and now many compilers have adopted a secondary standard 21
for these items.
Future development C++ continues to evolve to meet future requirements. Philosophy
Bjarne Stroustrup describes some rules that he uses for the design of C++. *C++ is designed to be a statically typed, typed, general-purpose language that is as efficient and portable as C *C++ is designed to directly and comprehensively support multiple programming styles ( procedural procedural programming, programming , data abstraction, abstraction, object-oriented programming, programming, and generic programming) programming) *C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly *C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C *C++ avoids features that are platform specific or not general purpose *C++ does not incur overhead for features that are not used *C++ is designed to function without a sophisticated programming environment
Compatibility of C and C++ The C and C++ C++ programming programming languages are closely related. C++ introduces many features that are not available in C— C++ code is not valid C code Constructs valid in C but not C++
22
One commonly encountered differences is that C allows a void* pointer to be assigned to any pointer type without a cast, whereas C++ does not; this idiom appears often in C code using malloc memory allocation. Another portability issue from C to C++ are the numerous additional keywords that C++ introduced. This makes C code that uses them as identifiers invalid in C++. There are many other C syntaxes which are invalid or behave differently in C++ : •
The comma operator can result in an "l-value" (a quantity that can be used for the left-hand side of an assignment) in C++, but not in C.
•
C does not allow a given typedef to be duplicated in the same scope, whereas C++ allows redundant typedefs.
•
Enumeration constants (enum values) are always of type int in C, whereas they are distinct types in C++ and may have size different from int.
•
C++ identifiers are not allowed to contain two or more consecutive underscores, whereas C identifiers may.
•
C++ also changes some C standard-library functions to add additional const qualifiers, e.g. strchr returns char* in C and const char* in C++.
•
In both C and C++ one can define nested struct types, but the scope is interpreted differently (in C++, a nested struct is defined only within the scope/namespace of the outer struct).
•
Non-prototype ("K&R"-style) function declarations are not allowed in C++, although they have also been deprecated in C since 1990. Similarly, implicit function declarations (using functions that have not been declared) are not allowed in C++, but have also been deprecated in C since 1999.
•
C allows struct, union, and enum types to be declared in function prototypes, whereas C++ does not. A struct, union, or enum declaration in C++ declares an implicit typedef, while in C it does not.
In order to intermix C and C++ code, any C++ functions which are to be called from C-compiled code must be declared as extern "C".
23
Language features *Operators *Objects *Encapsulation *Inheritance *Polymorphism *Polymorphism through inheritance *Template functions and classes *Operator overloading *Function overloading *Virtual member functions *Criticism C++ has been the subject of much debate. Some of the most commonly levelled criticisms include: •
Since C++ is based on, and largely compatible with, C, it also inherits most of the criticisms levelled at that language. language.
•
Taken as a whole C++ is a large and complicated language, and so is difficult to fully master. However, by its multi-paradigm approach programmers are free to use the subset of C++ features that they're comfortable with, adding new features to their repertoire only as required and at their own pace.
•
It is extremely difficult to write a good C++ parser C++ parser .This .This is partly because the C++ grammar is not LALR(1) LALR(1).. Because of that, there are very few tools for analyzing or performing non-trivial transformations (e.g., refactoring refactoring)) of existing code.
•
C++ is sometimes compared unfavorably with single-paradigm object-oriented languages such as Java, on the basis that it allows programmers to "mix and match" object-oriented and procedural and procedural programming, rather than strictly enforcing a single paradigm. This is part of a of a wider debate on the relative merits of the two programming styles.
•
The abundance of language features can lead less experienced programmers to 24
bring unnecessarily advanced or complicated solutions to simple problems. •
For embedded For embedded systems C++ is sometimes considered too bloated, especially for language features like exceptions and RTTI which add to code size. Thus Embedded C++ standard has been specified, but has also received criticism for leaving out useful parts of the language that incur no runtime penalty .
25
C++ Glossary: A arguments, function - Arguments in function declarations may have names, but the names are ignored (they are positional). In C++ (unlike C), an empty argument list means a function with no arguments, since the C "wild card" style would prevent type-checking, e.g., int func2(); this behavior is different than the result you would have expected in C.
Assignment operator: = *= /= %= += -= <<= >>= &= ^= != "All require an lvalue as left operand, and the lvalue must be modifiable: it must not be an array, and must not have an incomplete type, or be a function." .At least the = operator is overloadable.
Automatic type conversion - e.g., casting a short to a void pointer (cannot do the reverse in C++).
B Base class - The most generalized class in a class structure. structure. Most applications have many such root classes. Some languages define a primitive base primitive base class, class, which serves as the ultimate superclass of all classes.
C Character constant - single byte char enclosed by single quotes. Class - An abstract data type. A keyword which defaults a struct class to private. A class binds into one unit the data structure and its functions, also called a user-defined type. Variables, or instances of that class, are called objects.
26
D Declaration Dynamic memory allocation - In C and Pascal, a method to create space for variables at run time. For situations where you don't know at compile time how many objects you'll need, or what their lifetimes (scope) will be. specifies to the compiler the types of all the elements of an identifier; "this function or this piece of data exists somewhere else, and here is what it should look like." Declarations normally go in header files with extensions of .h.
Derived class - declaration keyword specifying that a declared class has inheritance of all of the data members and member functions of the class from which it is declared to derive, e.g., class Derived : Base. Derived objects receive their own copies of called base object members. The compiler automatically calls constructors and destructors for called copies.
E Extern - keyword in C and C++ to help tell the compiler or user how to distinguish a definition from a declaration, when the definition is elsewhere, e.g.,
extern int func1(int length, int width);
F Friend - keyword designating a class or single member function as having access to (1) a specified entire class, (2) a member function of another class, or (3) a designated nonmember function. If a friend declaration omits function's parameters, compiler checks for functions or overloaded functions with matching signatures, else reports error. 27
function declaration - in C and C++, gives the function name, the argument types passed to a function, and the return type of the function; e.g.,
int func1(int, int); H Header file Function definition - looks like function declarations, except with bodies, collections of statements inside curly braces, e.g.,
int func1(int length, int width) { ...}
The arguments in the function definition must have names if you also want to use the arguments in the function body; otherwise, they are optional.
-
contains the external declarations for a library, using a filename extension of .h . To use a library, you must include its header file. The programmer who provides the library provides the header file; to include it, use the #include preprocessor directive, and the compiler will insert it if the search is successful:
#include "local.h" //search the current directory; . //report err if file does not exist .
#include
(use LT & GT brackets) //search another, specified //environment In C, a header file should not contain any function or data defs because the header can be included in more than one file, causing the linker to complain. In C++, there are two exceptions: inline, and const.
28
I Inheritance - A C++ property which allows the defining of one class in terms of another. The compiler physically implements inheritance by making a copy of the data structure of the original base class into a declared derived class, and providing access to the member functions ion the base class. Inheritance allows you to add or modify members without corrupting the original class code. Conserves effort, and creates extensible programs through sub classing.
Inline function - keyword forcing compiler to copy body of a called function into the calling function. Best for recursive and loop calls. Provides type safety and sideeffects protection not afforded by #define.
L Lvalue - "An lvalue is an expression referring to an object ... an object is a named region of storage" . The left-hand side of the assignment operator (=) equation; what the rvalue is copied into.
M Manipulators - special iostream functions permitting specific i/o operations while in the middle of stream insertion or extraction. These functions switch appropriate iostream format flags.
O Object - a named region of storage (whether it has yet been allocated or not).
Operator overload - Compiler replacement of a C++ operator with a function called to overload it with a new meaning. Form: operator; Example: float operator+(parm1, parm2){return (...)} would intercept and replace the plus (+) operator. Operator overloading means you can give an operator like + or - a special meaning when used with a new data type you create.
29
P Pointers Pointe rs vs. references (USG) - a pointer must be dereferenced to access what it points to; a reference need not be. The entity to which a reference refers may only be set when the reference is created; in this respect it is somewhat like a const pointer that gets a virtual * put in front of it when it is used, and puts a virtual ampersand in front of the expression from which it is initialized.
Polymorphism - lets you use objects of different classes by means of the same program element (CRS); use of identical interfaces with different implementations (CIO p.18). A program designed around polymorphism manages a collection of baseclass objects, and the precise result of a message sent to one of these cannot be determined at compile time, since only the base class is known, not the subclass. Polymorphism is the proper behavior of a derived-class object when treated as a baseclass object .. The specific function called is determined at run time.
S Scope - Generally, the domain of objects and calls within which an object can exist. A struct name or enum in an inner scope can obscure a global of the same name in an outer scope. In C++, enum constants embedded in a struct def have the same scope as that struct's fields.
Scope resolution operator (::) - operator telling compiler to look outside the current block for variable of the same name (e.g., a global, or a member function of a base class.)
Static member - like a global variable whose scope is limited to the class in which it is declared. Especially true if declared as private or protected.
Static data member - shared by all objects of a class for each instantiation of that template class. All static data members are defined within the scope of the file in which they exist, by prefixing the definition with a template specification. The def
30
should appear in that .cp file, not in the header. Like globals, automatically initialized to 0.
Static member function - a member function declared as static; can access and modify static data members; cannot be of type const or virtual.
String constant - zero or more chars c hars surrounded by double quotes. Stru St ruct ctur uree - an object "consisting of a sequence of named members of various types" , typically containing one or more data members, and/or member functions which specify the list. May not contain a member of incomplete type.
Struct - Structure; keyword whose default structure class is public.
31
32
CODING USED IN THE PROJECT
// Declaration of header files #include #include #include #include #include #include #include #include #include #include #include
typedef char option[15]; const int ROW = 10,COL = 10; int int sca scan; n; int ascii;
// To hold hold the the spe speci cial al char charac acte ters rs for for mov movin ing g the the prom prompt pt in menu menu
// To display the main menu options option a[]= { "NewAccount", "ListofAccounts", "IndAccount", "DailyTrans", "MonthlyReport", "EditAccount", "Exit"}; // Displays the modify menu options option b[] = { "Modify Account", "Closeaccount", "Quit" }; // Function used to do screening class main_menu { int i,done; public: void normalvideo(int x,int y,char *str); void reversevideo(int x,int y,char *str); void box(int x1,int y1,int x2,int y2);
33
char menu(); void control_menu(); char e_menu(); void edit_menu(); void help(void); }; /* Class member functions for drawing boxes */ class shape { public: void line_hor(int, int, int, char); void line_ver(int, int, int, char); void box(int, int, int, int, char); };
// Class contains the initial deposit of customers class initial { public: void void add_to_ add_to_fil file(in e(int, t, char t_nam t_name[3 e[30], 0], char char t_addre t_address[ ss[30] 30],, float); float); // For initial deposits in customers account void display_list(void); // Displaying customers account list void delete_account(int); // Deleting customers account void update_balance(int, char t_name[30], char t_address[30], float); // For updating the customer account void modify(void); // To modify the customer account information int last_accno(void); // To know the last account number int found_account(int); // To found the account is in "INITIAL.dat" or not char *return_name(int); // Function for validation entry of customer name char *return_address(int); // Function for validation entry of customer address float give_balance(int); // To print the balance amount of a particular customer int recordno(int); void display(int); // To display the customer account private: void void modi modify_ fy_acc accoun ount(i t(int, nt, char char t_nam t_name[3 e[30], 0], char char t_ad t_addre dress[ ss[30] 30]); ); Function to modify the customer account int accno; char name[30], address[30]; float balance; };
//
// Class contains the customers daily transaction entry
34
class account { public: void new_account(void); new_account(void); // Function to create a new account void void clo close se_a _acco ccoun unt( t(vo void id); ); // Fun Funct ctio ion n to clos closee an acco accoun untt void display_account(void); // Function to display the accounts void transaction(void); // To display the transaction process void clear(int, int); // Function to perform a clear screen function void month_report(void); // Function to list monthWise transaction report private: void add_to_file(int, int, int, int, char, char t_type[10], float, float, float); // Function to add transaction records void delete_account(int); // Function to delete a transaction record int no_of_days(int, int, int, int, int, int); // Function to find the total days float calculate_interest(int, float); // Function for calculating interest of an account void display(int); // Function to display a transaction account void box_for_display(int); // Function for displaying box int accno; char type[10]; type[10]; // Account Account type as Cheque Cheque or Cash int dd, mm, yy; // To store the system date/ Enter date char tran; // As the account type is Deposit or Withdraw float interest, amount, balance; }; // Function to displays all the menu prompt messages from the pointer array of option a[] void main_menu::normalvideo(int x,int y,char *str) { gotoxy(x,y); cprintf("%s",str); } // Function to move the cursor on the menu prompt with a reverse video color void main_menu::reversevideo(int x,int y,char *str) { textcolor(5+143); textbackground(WHITE); gotoxy(x,y); cprintf("%s",str); textcolor(GREEN); textbackground(BLACK); } void main_menu::box(int x1,int y1,int x2,int y2)
35
{ for(int col=x1;col
36
key = getch(); switch (key) { case 72: normalvideo(32, i+10, a[i]); i--; if (i == -1) i = 6; reversevideo(32,i+10,a[i]); break; case 80: normalvideo(32, i+10, a[i]); i++; if (i == 7) i = 0; reversevideo(32, i+10, a[i]); break; } break; case 13: done = 1; } } while (!done); _setcursortype(_NOCURSOR); return(i+49); } /* The function main_menu() is used to display the main menu of banking system */ void main_menu::control_menu() { char choice; account a; do { choice = menu(); clrscr(); switch (choice) { case '1': _setcursortype(_NORMALCURSOR); box(3, 1, 75, 24); box(5, 2, 73, 23); a.new_account(); // New account member function break; case '2': box(3, 1, 75, 24);
37
box(5, 2, 73, 23); initial ini; ini.display_list(); // Glogal list of account function break; case '3': box(3, 1, 75, 24); box(5, 2, 73, 23); _setcursortype(_NORMALCURSOR); a.display_account(); // Displaying individual accounts all transactions break; case '4': box(3, 1, 75, 24); box(5, 2, 73, 23); account a; _setcursortype(_NORMALCURSOR); a.transaction(); // Daily transaction for individual account break; case '5': box(3, 1, 75, 24); box(5, 2, 73, 23); _setcursortype(_NORMALCURSOR); a.month_report(); // Monthly report for any account break; case '6': box(3, 1, 75, 24); box(5, 2, 73, 23); gotoxy(10,10); edit_menu(); // Sub menu for modifying or deleting any account break; case '7' :exit(0); } } while (choice != 6); }
/* Function for edit menu with account modification and close */ void main_menu::edit_menu() { char choice; account a; do {
38
choice = e_menu(); clrscr(); switch (choice) { case '1': box(3, 1, 75, 24); box(5, 2, 73, 23); initial ini; _setcursortype(_NORMALCURSOR); ini.modify(); break; case '2': box(3, 1, 75, 24); box(5, 2, 73, 23); account a; _setcursortype(_NORMALCURSOR); a.close_account(); break; case '3': return; } } while (choice != 6); } /* Function to draw horizontal line */ void shape::line_hor(int column1, int column2, int row, char c) { for (column1; column1 <= column2; column1++) { gotoxy(column1, row); cout << c; } } /* Function to draw vertical line */ void shape::line_ver(int row1, int row2, int column, char c) { for (row1; row1 <= row2; row1++) { gotoxy(column, row1); cout << c; } } /* Function for drawing box */ void shape::box(int column1, int row1, int column2, int row2, char c) { char ch = 218; char c1, c2, c3, c4;
39
char l1 = 196, l2 = 179; if (c == ch) { c1 = 218; c2 = 191; c3 = 217; c4 = 217; l1 = 196; l2 = 179; } else { c1 = c; c2 = c; c3 = c; c4 = c; l1 = c; c2 = c; } gotoxy(column1, row1); cout << c1; gotoxy(column2, row1); cout << c2; gotoxy(column1, row2); cout << c3; gotoxy(column2, row2); cout << c4; column1++; column2--; line_hor(column1, column2, row1, l1); //Horizontal line line_hor(column1, column2, row2, l1); column1--; column2++; row1++; row2--; line_ver(row1, row2, column1, l2); // Vertical line line_ver(row1, row2, column2, l2); }
/* Function to display help about this project */ void main_menu::help(void) { clrscr(); setbkcolor(7); settextstyle(7,HORIZ_DIR,5); outtextxy(70,20,"Welcome to Banking Project"); settextstyle(2,HORIZ_DIR,5);
40
outtextxy(60,100, "This project your can keep record of daily banking transaction"); delay(2); outtextxy(60,130, "This program is capable of holding any no. of account."); delay(2); outtextxy(60,160, "-In first option you can open new account"); delay(2); outtextxy(60,190, "-In second option you can see the list of all the accounts"); delay(2); outtextxy(60,220,"-In third option you can see all the transaction of individual account"); delay(2); outtextxy(60,250, "-Through fourth optiion you can do banking transactions"); delay(2); outtextxy(60,280, "(Deposit/Withdraw)"); delay(2); outtextxy(60,310, "-In fifth option you can take monthWise individual account report"); delay(2); outtextxy(60,340,"-In sixth option you can modify or delete any account"); delay(2); outtextxy(60,370, "Note-: Opening amount should not less that Rs. 500/-"); delay(2); outtextxy(60,400, "-And last option is Quit (Exit to Window)"); delay(2); settextstyle(7,HORIZ_DIR,4); outtextxy(80,420,"Press any key to continue..."); getch(); } /* Function for modifying the existing accounts */ void initial::modify(void) { clrscr(); int j; char t_acc[10]; int t, t_accno; gotoxy(17, 1); cout << "<0>=Exit"; gotoxy(5,5); cout << "Enter the account no. "; gets(t_acc); t = atoi(t_acc); t_accno = t; if (t_accno == 0) return; clrscr(); if (!found_account(t_accno))
41
{ gotoxy(5, 5); cout << "\7Account not found"; getch(); return; } gotoxy(71, 1); cout << "<0>=Exit"; textbackground(WHITE); gotoxy(3, 3); for (j = 1; j<= 76; j++) cprintf(" "); textbackground(BLACK); textcolor(BLACK+BLINK); textbackground(WHITE); gotoxy(30, 3); cprintf("Modify Account Screen"); textcolor(LIGHTGRAY); textbackground(BLACK); int d1, m1, y1; struct date d; // For extracting system date getdate(&d); d1 = d.da_day; m1 = d.da_mon; y1 = d.da_year; gotoxy(4, 2); cout << "Date: " << d1 << "/" << m1 << "/" << y1; char ch; display(t_accno); account a; do { a.clear(5, 13); gotoxy(5, 13); cout << "Modify this account : "; ch = getche(); if (ch == '0') return; ch = toupper(ch); }while (ch != 'N' && ch != 'Y'); if (ch == 'N') return; int modified = 0, valid; char t_name[30], t_address[30]; gotoxy(5, 15); cout << "Name : "; gotoxy(5, 16); cout << "Address : "; do
42
{ a.clear(15, 15); a.clear(5, 23); gotoxy(5, 23); cout << "Enter Name or Press Enter for No Change"; valid = 1; gotoxy(15, 15); gets(t_name); strupr(t_name); if (t_name[0] == '0') return; if (strlen(t_name) > 25) { valid = 0; gotoxy(5, 23); cprintf("\7Name should not greater than 25"); getch(); } } while (!valid); do { a.clear(15, 16); a.clear(5, 23); gotoxy(5, 23); cout << "Enter Address or press enter for no Change"; valid = 1; gotoxy(15, 16); gets(t_address); strupr(t_address); if (t_address[0] == '0') return; if (strlen(t_address) > 25) { valid = 0; gotoxy(5, 23); cprintf("\7Address should not greater than 25"); getch(); } }while (!valid); if (strlen(t_address) > 0) modified = 1; if (!modified) return; // clears the screen at 23rd row and from 5th column a.clear(5,23); do {
43
a.clear(5, 23); gotoxy(5, 18); cout << "Do you want to save Changes : "; ch = getche(); if (ch == '0') return; ch = toupper(ch); }while (ch != 'N' && ch != 'Y'); if (ch == 'N') return; // Passes the parameter to add in data file modify_account(t_accno, t_name, t_address); gotoxy(5, 21); cout << "\7Record modified"; gotoxy(5, 23); cout << "Press any key to continue..."; getch(); }
/* Function for updating the modified account into INITIAL.dat file */ void initial::modify_account(int t_accno, char t_name[30], char t_address[30]) { int recno; recno = recordno(t_accno); fstream file; file.open("INITIAL.dat", ios::out|ios::ate); strcpy(name, t_name); strcpy(address, t_address); int location; // finds the position in data file location = (recno-1) * sizeof(initial); file.seekp(location); // Overwrites the modified record into INITIAL.dat data file file.write((char *)this, sizeof(initial)); file.close(); return; }
/* This function add_to_file() is used to create new/fresh record in the data file */ void initial::add_to_file(int t_accno, char t_name[30], char t_address[30], float t_balance) { accno = t_accno; strcpy(name, t_name);
44
strcpy(address, t_address); balance = t_balance; fstream file; // Appends new account record with the balance into INITIAL.dat data file file.open("INITIAL.dat", ios::out|ios::app); file.write((char *)this, sizeof(initial)); file.close(); } // Function for deleting an account from INITIAL.dat file void initial::delete_account(int t_accno) { fstream file; file.open("INITIAL.dat", ios::in); fstream temp; temp.open("TEMP.dat", ios::out); file.seekg(0,ios::beg); // Uses a copy method to delete the account from INTITAL.dat data file while (!file.eof()) { file.read((char *)this, sizeof(initial)); if (file.eof()) break; if (accno != t_accno) temp.write((char *)this, sizeof(initial)); } file.close(); temp.close(); file.open("INITIAL.dat", ios::out); temp.open("TEMP.dat", ios::in); temp.seekg(0, ios::beg); // Copy the TEMP.dat contents into INTITAL.dat data file while (!temp.eof()) { temp.read((char *)this, sizeof(initial)); if (temp.eof()) break; if (accno != t_accno) file.write((char *)this, sizeof(initial)); } file.close(); temp.close(); }
/* Function for displaying an account from "INITIAL.dat". */ void initial::display_list(void)
45
{ clrscr(); int flag; float t_bal = 0.0; fstream file; gotoxy(25,2); cout << "Accounts List in Bank"; gotoxy(25, 3); cout << "====================="; int d1, m1, y1; struct date d; // For extracting system date getdate(&d); d1 = d.da_day; m1 = d.da_mon; y1 = d.da_year; gotoxy(62, 3); cout << "Date: " << d1 << "/" << m1 << "/" << y1; gotoxy(1, 4); for (int j = 1; j <= 79; j++) cout << "="; gotoxy(1, 5); cout << "Accno#"; gotoxy(10,5); cout << "Name"; gotoxy(30,5); cout << "Address"; gotoxy(65,5); cout << "Balance"; gotoxy(1, 6); for (j = 1; j <= 79; j++) cout << "="; file.open("INITIAL.dat", ios::in); file.seekg(0,ios::beg); int row = 7;
/* Function for clearing specified row and column. */ void account::clear(int col, int row) { for (int j = col; j <= 79; j++) { gotoxy(j, row); cout << " "; } }
46
/* Function to found an account for display account function. */ int initial::found_account(int t_accno) { fstream file; file.open("INITIAL.dat", ios::in); file.seekg(0, ios::beg); int found = 0; // Searches the specified record in INITIAL.dat data file while (file.read((char *)this, sizeof(initial))) { if (accno == t_accno) { found = 1; break; } } file.close(); return found; }
/* Function for display account details */ void account::box_for_display(int t_accno) { int d1, m1, y1; struct date d; getdate(&d); d1 = d.da_day; m1 = d.da_mon; y1 = d.da_year; gotoxy(63, 2); cout << "Date: " << d1 << "/" << m1 << "/" << y1; gotoxy(4, 2); cout << "Account No. " << t_accno; initial ini; char t_name[30]; strcpy(t_name, ini.return_name(t_accno)); char t_address[30]; strcpy(t_address, ini.return_address(t_accno)); gotoxy(25, 2); cout << t_name; gotoxy(25, 3); cout << t_address; gotoxy(4, 5);
47
cout << "Global Report of Account"; textbackground(WHITE); textcolor(BLACK); textbackground(WHITE); gotoxy(1, 6); for (int i = 1; i <=79; i++) cout << "="; gotoxy(4, 7); cprintf("Date Particular Deposit gotoxy(1, 8); for (i = 1; i <=79; i++) cout << "="; textcolor(LIGHTGRAY); textbackground(BLACK);
Withdraw
Balance");
}
/* Function to list monthWise transaction report. */ void account::month_report(void) { int dd1, mm1, yy1; clrscr(); gotoxy(10, 5); cout << "Enter any date of a month "; gotoxy(38, 5); cin >> dd1; gotoxy(40, 5); cout << "-"; gotoxy(41, 5); cin >> mm1; gotoxy(43, 5); cout << "-"; gotoxy(44, 5); cin >> yy1; clrscr(); char t_acc[10]; int j; int tamt = 0, damt = 0, wamt = 0; int t, t_accno; gotoxy(71, 1); cout << "<0>=Exit"; gotoxy(5, 5); cout << "Enter account no. "; gets(t_acc); t = atoi(t_acc); t_accno = t; if (t_accno == 0) return; clrscr();
48
initial ini; if (!ini.found_account(t_accno)) { gotoxy(5, 5); cout << "\7Account not found"; getch(); return; } box_for_display(t_accno); gotoxy(4, 5); cout << "Statement Month: " << dd1 << "/" << mm1 << "/" << yy1; getch(); int row = 9, flag; fstream file; file.open("BANKING.dat", ios::in); float pre_balance = 0.0; // Previous balance amount // The loop finds the last months balance while (file.read((char *)this, sizeof(account))) { // Checks the account no. and till the previous month and till current year if ((accno == t_accno) && ((mm < mm1 && yy <= yy1) || (mm1 < mm && yy < yy1))) { pre_balance = balance; } } file.close(); file.open("BANKING.dat", ios::in); gotoxy(54, row); cout << "B/F ....
" << setw(15) << setprecision(2) << setiosflags(ios::left) << setiosflags(ios::showpoint) << setiosflags(ios::fixed) << pre_balance;
row++; // The loop displays the current months transaction after previous month while (file.read((char *)this, sizeof(account))) { if ((accno == t_accno) && (mm1 == mm && yy1 <= yy)) { flag = 0; delay(2); gotoxy(4, row);
49
cout << dd << "-" << mm << "-" << yy; gotoxy(16, row); puts(type); if (tran == 'D') { damt = damt + amount; tamt = tamt + amount; gotoxy(30, row); } else { wamt = wamt + amount; tamt = tamt - amount; gotoxy(42, row); } cout << setw(15) << setprecision(2) << setiosflags(ios::left) << setiosflags(ios::showpoint) << setiosflags(ios::fixed) << amount; gotoxy(66, row); cout << setw(15) << setprecision(2) << setiosflags(ios::left) << setiosflags(ios::showpoint) << setiosflags(ios::fixed) << balance; row++; // If row increases 23 then the next screen continues if (row > 23) { flag = 1; row = 7; gotoxy(4, 24); cout << "Press any key to continue"; getch(); clrscr(); box_for_display(t_accno); } } } file.close(); gotoxy(1, row); for (j = 1; j <= 79; j++) cout << "="; row++;
50
gotoxy(4, row); cout << "Total-->:"; gotoxy(30, row); // Deposited amount cout << setw(15) // setwidth << setprecision(2) // set position of decimal point << setiosflags(ios::left) // set left justified output << setiosflags(ios::showpoint) setiosflags(ios::showpoint) // always show show decimal point point << setiosflags(ios::fixed) // set fixed notation for display << damt; gotoxy(42, row); // Withdraw amount cout << setw(15) << setprecision(2) << setiosflags(ios::left) << setiosflags(ios::showpoint) << setiosflags(ios::fixed) << wamt; gotoxy(66, row); tamt = tamt + pre_balance; // Balance amount cout << setw(15) << setprecision(2) << setiosflags(ios::left) << setiosflags(ios::showpoint) << setiosflags(ios::fixed) << tamt; if (!flag) { gotoxy(4, 24); cout << "Press any key to continue..."; getch(); } } /* Function for creating new account for new customer. */ void account::new_account(void) { char ch; int i, valid; clrscr(); initial ini; shape s;
51
s.box(2, 1, 79, 25, 218); s.box(25, 2, 54, 4, 219); gotoxy(65, 2); cout << "<0>=Exit"; gotoxy(3,3); for (i = 1; i<= 76; i++) cprintf(" "); textbackground(BLACK); textcolor(BLACK+BLINK); textbackground(WHITE); gotoxy(30, 3); cprintf("Open New Account"); textcolor(LIGHTGRAY); textbackground(BLACK); int d1, m1, y1; struct date d; // For extracting system date getdate(&d); d1 = d.da_day; m1 = d.da_mon; y1 = d.da_year; int t_accno; t_accno = ini.last_accno(); t_accno++; // Appends and deletes a false record to create primary position in data files if (t_accno == 1) { ini.add_to_file(t_accno, "abc", "xyz", 1.1); ini.delete_account(t_accno); cout << "Prese xxxxxxx"; getch(); add_to_file(t_accno, 1, 1, 1997, 'D', "INITIAL", 1.1, 1.1, 1.1); delete_account(t_accno); } char t_name[30], t[10], t_address[30]; float t_bal = 0.0, t_balance = 0.0; gotoxy(5, 6); cout << "Date: " << d1 << '/' << m1 << '/' << y1; gotoxy(5, 8); cout << "Account No # " << t_accno; gotoxy(5, 10); cout << "Name : "; gotoxy(5, 11); cout << "Address : "; gotoxy(5, 12); cout << "Name of verifying Person : "; gotoxy(5, 14); cout << "Initial Deposit : ";
52
do { clear(15, 10); clear(5, 23); gotoxy(5, 23); cout << "Enter Name of the Person"; valid = 1; gotoxy(15, 10); gets(t_name); strupr(t_name); if (t_name[0] == '0') return; if (strlen(t_name) == 0 || strlen(t_name) > 25) { valid = 0; gotoxy(5, 23); cprintf("\7Name should not greater than 25"); getch(); } }while (!valid); do { clear(25, 15); clear(5, 23); gotoxy(5, 23); cout << "Enter Address of the Person "; valid = 1; gotoxy(15, 11); gets(t_address); strupr(t_address); if (t_address[0] == '0') return; if (strlen(t_address) == 0 || strlen(t_address) > 25) { valid = 0; gotoxy(5, 23); cprintf("\7Address should not greater than 25"); getch(); } }while (!valid); do { char vari[30]; clear(13, 12); clear(5, 23); gotoxy(5, 23); cout << "Enter name of the varifying Person "; valid = 1;
53
gotoxy(31, 12); gets(vari); strupr(vari); if (vari[0] == '0') return; if (strlen(vari) == 0 || strlen(vari) > 25) { valid = 0; gotoxy(5, 23); cprintf("Should not blank or greater than 25"); getch(); } }while (!valid); do { clear(13, 12); clear(5, 23); gotoxy(5, 23); cout << "Enter initial amount to be deposit "; valid = 1; gotoxy(23, 14); gets(t); t_bal = atof(t); t_balance = t_bal; if (t[0] == '0') { valid = 0; gotoxy(5, 23); cprintf("\7Should not less than 500"); getch(); } }while (!valid); clear(5, 23); do { clear(5, 17); valid = 1; gotoxy(5, 17); cout << "Do you want to save the record : "; ch = getche(); if (ch == '0') return; ch = toupper(ch); }while (ch != 'N' && ch != 'Y'); if (ch == 'N') return; float t_amount, t_interest;
54
t_amount = t_balance; t_interest = 0.0; char t_tran, t_type[10]; t_tran = 'D'; strcpy(t_type, "INITIAL"); // Appends the records contents into both INITIAL.dat and BANKING.dat data files ini.add_to_file(t_accno, t_name, t_address, t_balance); add_to_file(t_accno, d1, m1, y1, t_tran, t_type, t_interest, t_amount, t_balance); } /* Function for returning balance amount of an account. */ float initial::give_balance(int t_accno) { fstream file; file.open("INITIAL.dat", ios::in); file.seekg(0, ios::beg); float t_balance; // Gives the last balance of an individual account while (file.read((char *)this, sizeof(initial))) { if (accno == t_accno) { t_balance = balance; break; } } file.close(); return t_balance; } /* Function for returning the record no. for updating balance */ int initial::recordno(int t_accno) { fstream file; file.open("INITIAL.dat", ios::in); file.seekg(0, ios::beg); int count = 0; // Finds the record position in INITIAL.dat data file while (file.read((char *)this, sizeof(initial))) { count++; if (t_accno == accno) break; } file.close();
55
return count; } /* Function for updating the balance for the given account no. */ void initial::update_balance(int t_accno, char t_name[30], char t_address[30], float t_balance) { int recno; recno = recordno(t_accno); fstream file; file.open("INITIAL.dat", ios::out|ios::ate); strcpy(name, t_name); strcpy(address, t_address); balance = t_balance; int location; location = (recno-1) * sizeof(initial); // Find the location in file file.se file.seekp ekp(lo (locati cation on); ); // Searche Searchess the inserti insertion on positi position on in data data file // Updates the balance amount in INITIAL.dat data file file.write((char *)this, sizeof(initial)); file.close(); } /* Function for calculates interest */ float account::calculate_interest(int t_accno, float t_balance) { fstream file; file.open("BANKING.dat", ios::in); file.seekg(0, ios::beg); int d1, m1, y1, days; while (file.read((char *)this, sizeof(account))) { if (accno == t_accno) { d1 = dd; m1 = mm; y1 = yy; break; } } int d2, m2, y2; struct date d; getdate(&d); d2 = d.da_day; m2 = d.da_mon; y2 = d.da_year; float t_interest = 0.0; if ((y2 < y1) || (y2 == y1 && m2 < m1) || (y2 == y1 && m2 == m1) && (d2 < d1)) return t_interest;
56
days = no_of_days(d1, m1, y1, d2, m2, y2); int months = 0; if (days > 30) { months = days / 30; t_interest = ((t_balance*2)/100 * months); } file.close(); return t_interest; } /* Function for making daily transaction (Deposit 'D'/Withdraw 'W'. */ void account::transaction(void) { clrscr(); char t_acc[10]; int t, t_accno, valid; gotoxy(71,1); cout << "<0>=Exit"; gotoxy(5, 5); cout << "Enter the account no. "; gets(t_acc); t = atoi(t_acc); t_accno = t; if (t_accno == 0) return; clrscr(); initial ini; if (!ini.found_account(t_accno)) { gotoxy(5, 5); cout << "\7Account not found"; getch(); return; } gotoxy(71, 1); cout << "<0>=Exit"; gotoxy(3, 3); for (int i = 1; i <= 76; i++) cprintf(" "); textbackground(BLACK); textcolor(BLACK+BLINK); textbackground(WHITE); gotoxy(29, 3); cprintf ("Transaction in Account"); textcolor(LIGHTGRAY); textbackground(BLACK); int d1, m1, y1; struct date d; getdate(&d);
57
d1 = d.da_day; m1 = d.da_mon; y1 = d.da_year; gotoxy(5, 6); cout << "Date: " << d1 << "/" << m1 << "/" << y1; gotoxy(5, 8); cout << "Accnount no. " << t_accno; char t_name[30]; char t_address[30]; float t_balance; strcpy(t_name, ini.return_name(t_accno)); strcpy(t_address, ini.return_address(t_accno)); t_balance = ini.give_balance(t_accno); gotoxy(27, 11); cout << "Name : " << t_name; gotoxy(27, 12); cout << "Address : " << t_address; gotoxy(5, 15); cout << "Last balance Rs. " << setw(15) << setprecision(2) << setiosflags(ios::left) << setiosflags(ios::showpoint) << setiosflags(ios::fixed) << t_balance; char t_tran, t_type[10], tm[10]; float t_amount, t_amt; do { clear(5, 10); valid = 1; gotoxy(5, 10); cout << "Deposit or Withdraw (D/W) : "; t_tran = getch(); if (t_tran == '0') return; t_tran = toupper(t_tran); }while (t_tran != 'D' && t_tran != 'W'); do { clear(5, 19); clear(5, 23); gotoxy(5, 23); cout << "Enter Transaction by Cash or Cheque "; valid = 1; gotoxy(5, 19); cout << "Cash/Cheque : ";
58
gets(t_type); strupr(t_type); if (t_type[0] == '0') return; if (strcmp(t_type, "CASH") && strcmp(t_type, "CHEQUE")) { valid = 0; gotoxy(5, 23); cprintf("\7Enter correctly"); getch(); } }while (!valid); do { clear(5, 21); clear(5, 23); gotoxy(5, 23); cout << "Enter Amount for Transaction "; valid = 1; gotoxy(5, 21); cout << "Amount Rs. "; gets(tm); t_amt = atof(tm); t_amount = t_amt; if (tm[0] == '0') return; if ((t_tran == 'W' && t_amount > t_balance) || (t_amount < 1)) { valid = 0; gotoxy(5, 23); cprintf("\7Invalid Data entered"); getch(); } }while (!valid); char ch; clear(5, 23); do { clear(20, 23); valid = 1; gotoxy(40, 20); cout << "Save Transaction : "; ch = getche(); if (ch == '0') return; ch = toupper(ch); }while (ch != 'N' && ch != 'Y'); if (ch == 'N')
59
return; float t_interest; t_interest = calculate_interest(t_accno, t_balance); if (t_tran == 'D') t_balance = t_balance + t_amount + t_interest; else t_balance = (t_balance - t_amount) + t_interest; // Modified records are updated in data bases. ini.update_balance(t_accno, t_name, t_address, t_balance); add_to_file(t_accno, d1, m1, y1, t_tran, t_type, t_interest, t_amount, t_balance); } /* Function for closing any account after inputing account number. */ void account::close_account(void) { clrscr(); char t_acc[10]; int t, t_accno; gotoxy(71, 1); cout << "<0>=Exit"; gotoxy(5, 5); cout << "Enter the account no. "; gets(t_acc); t = atoi(t_acc); t_accno = t; if (t_accno == 0) return; clrscr(); initial ini; if (!ini.found_account(t_accno)) { gotoxy(5, 5); cout << "\7Account not found "; getch(); return; } gotoxy(71, 1); cout << "<0>=Exit"; gotoxy(3, 3); textbackground(WHITE); for (int i = 1; i <= 76; i++) cprintf(" "); textbackground(BLACK); textcolor(BLACK+BLINK); textbackground(WHITE); gotoxy(30, 3);
60
cprintf("Close account screen"); textcolor(LIGHTGRAY); textbackground(BLACK); int d1, m1, y1; struct date d; getdate(&d); d1 = d.da_day; m1 = d.da_mon; y1 = d.da_year; gotoxy(5, 6); cout << "Date: " << d1 << "/" << m1 << "/" << y1; char ch; ini. display(t_accno); do { clear(5, 15); gotoxy(5, 15); cout << "Close this account
61
OUTPUTS The Main Menu looks like this:-
When we will click on New Account then:-
The new account is created. After creating new account we will return into main menu
62
It will open the list of accounts which are already created
63
In the account we will get this screen
64
In daily trans this screen will open:-
This screen will tell about the daily transaction which take place.
65
By clicking on monthly report,the report will be generated
66
We can edit the account using:Modify Account Close Account
Using Modify Account:-
67
By Quit we will reach in Main menu
68
By exit we will exit from main menu
69