資料結構課程設計之銀行活期儲存系統(設計報告)
C作為系統描述語言,既可以用來編寫系統軟體,也可以用來編寫應用軟體。C語言誕生後,許多原來用匯編語言編寫的軟體,現在都可以用C語言編寫;C++是一種靜態資料型別檢查的,支援多重程式設計正規化的通用程式設計語言。它支援過程化程式設計、資料抽象、面向物件程式設計、製作圖示等等泛型程式設計等多種程式設計風格。
1.2 開發背景
隨著科學技術的不斷髮展,電腦科學日漸成熟,其強大的功能已為人們所深刻認識,它己進入人類社會的各個領域併發揮著越來越重要的作用。採用計算機進行資訊化管理已成為衡量企業管理科學化和現代化的重要標誌,又隨著現代社會的飛速發展,人們都在生活和物質上都有了很大進步,也有了多餘的錢,可是這些錢存放在哪裡更安全呢?因而銀行儲蓄賬目的管理系統在這裡就顯得尤為重要了,因此,本文所研究的銀行儲蓄賬目的管理系統就滿足了當代人們的需求具有一定的使用價值和現實意義。
1.3 開發環境
本文所採用的開發環境主要是基於C為開發工具,並以Visual C++6.0作為後臺資料庫平臺的基於C/C++的管理模式。
在進入Visual C++6.0工作介面,選擇建立Win 32 Console Application工程檔案,併為該工程檔案命名,確定後進入下一步,建立以C/C++為標頭檔案的目標程式,並以.c為檔案格式命名。完成後,即可鍵盤錄入源程式。
第二章演算法思想
隨著計算機技術的飛速發展和普及,現代人越來越多的想到用計算機來代替許多人做的事情。從而提高辦事效率,使經濟收入更加可觀,從而就產生了計算機這門課程。而資料結構這門課程也因為資料儲存而產生。從而讓人產生了用資料結構編寫關於活期儲蓄賬目管理的演算法。
2.1 系統需求分析
課程設計的主要功能包括實現儲戶開戶、銷戶、存入、支出等活動,根據要求是能比較迅速找到賬戶,因此要實現這樣的幾個功能,意思就是要通過陣列來儲存資料結構,其結構則按照C語言的相關知識定義結構體,其中儲戶開戶、銷戶就是實現連結串列的插入與刪除,而存入、支出等活動則是實現陣列中結點的查詢,然後進行更改。
2.2 系統總體設計
在本課程設計的方案設計中,已經確定了用陣列來作為資料的儲存結構,所以這裡我採用陣列作為其儲存結構,首先用結構體來定義其資料型別,然後通過陣列的相關知識將資料按照該資料結構儲存,之後運用檔案的相關知識將更改的資料寫入檔案中,這樣就完成了本課程設計的方案設計。
2.2.1系統設計目標
本課題主要的目的是為了編寫一活期儲蓄賬目管理系統,實現儲戶開戶、銷戶、存入、支出等活動。
●能比較迅速的給客戶開賬戶,對其個人資訊進行錄入和儲存
●能比較迅速地找到儲戶的帳戶,以實現對客戶資訊的瞭解
●能實現客戶的存款,取款,轉賬等需求
●能比較簡單,迅速地實現插入和刪除,以實現開戶和銷戶的需要
2.2.2開發設計思想
基於以上系統設計目標,本文在開發活期儲蓄賬戶管理系統時遵循了以下開發設計思想:
●採用現有的軟硬體環境及先進的管理系統開發方案,從而達到充分利用現有資源,提高系統開發水平和應用效果的目的。
●儘量達到操作過程中的直觀、方便、實用、安全等要求。
●系統採用模組化程式設計方法,既便於系統功能的各種組合和修改,又便於未參與開發的技術維護人員補充、維護。
●系統應具備資料庫維護功能,及時根據使用者需求進行資料的新增、刪除、修改等操作。
2.2.3系統功能模組設計
本系統分為四個模組:
儲戶開戶模組
開戶模組主要是輸入需要開戶的姓名,然後建立開戶賬號,提醒輸入賬號密碼。
儲戶銷戶模組
銷戶模組則是輸入需要銷戶的賬號及其密碼,然後從系統中銷去些賬號的相關記錄。
儲戶登陸模組
儲戶登陸模組是提示儲戶輸入等人賬號和密碼,若果密碼錯誤登陸失敗反之則成功
儲戶查詢模組
儲戶查詢模組是提醒輸入需要登入的賬號,然後再輸入其密碼,之後就可以檢視其賬號上的相關資料。
儲戶的存入及其支出模組
儲戶的存入及其支出模組是要求客戶登入後輸入需要存入及其支出的賬戶,然後對該賬號進行相關的存入及支出,如圖圖2-1系統功能模組圖
圖2-1系統功能模組圖
2.3 演算法思想描述
程式的外部設計主要是通過編寫一個選單功能來實現各個模組功能的呼叫,從而更好的協調各個模組功能之間的關係,同時還要編寫一段程式碼來實現所有資料更改後將其寫入檔案中,實現資料的及時更新,維護資料的正確性。具體的演算法思想就是通過陣列來儲存資料結構,其結構則按照C語言的相關知識定義結構體,其中儲戶開戶、銷戶就是實現陣列的插入與刪除,而存入、支出等活動則是實現陣列中結點的查詢,然後進行更改。
第三章演算法實現
3.1資料結構
資料結構就是一門研究非數值計算的程式設計問題中計算機的操作物件以及它們之間的關係各操作等的學科活期儲蓄賬戶管理系統是一個數據庫應用系統,客戶開戶後的所有個人資訊都儲存在這個資料庫裡,並以陣列形式儲存使用者資料,開戶時自定義輸入使用者賬號、使用者姓名、密碼、及開戶金額;使用者登陸時輸入正確的賬號及密碼,完成登陸後即可進行存款、取款、查詢餘額、修改密碼。
3.2程式模組
儲戶銷戶模組
儲戶登陸模組
儲戶查詢模組
儲戶存取支出模組
3.3各模組之間的呼叫關係
1、儲戶登入模組呼叫儲戶存取支出模組,一旦登陸成功就會進入個人介面,包括存款、取款、轉賬、銷戶、返回
2、開戶模組呼叫獲取賬號函式、和獲取個人資訊函式
3、儲戶查詢模組呼叫儲戶登入模組,並呼叫列印使用者資訊函式
)
3.4源程式程式碼
#include<iostream>
#include<fstream>
#include<iomanip>
#include<string.h>
using namespace std;
#include<windows.h>
#define MAX 500
struct record
{
char name[20];
char cardno[20];
int card;
char money[20];
};
//使用者類,包含使用者的姓名,卡號,密碼,賬戶餘額
class account
{
public:
char name[50];
int card;
int password;
float balance;
account(){card=0;password=123456;balance=0;};
friend istream& operator>>(istream& in,account &temple);
friend ostream& operator<<(ostream& out,account &temple);
};
//過載輸入運算子
istream& operator >>(istream& in,account &temple)
{
cout<<"姓名卡號密碼開戶金額"<<endl;
in>>temple.name>>temple.card>>temple.password>>temple.balance;
cout<<endl;
return in;
}
//過載輸出運算子
ostream& operator <<(ostream& out,account &temple)
{
out<<temple.name<<setw(8)<<temple.card<<setw(10)<<temple.password<<setw(8)<<temple.blance<<endl;
return out;
}
//顯示所有賬戶的資訊
void display(account user[],int total)
{
int i,j;
account templeuser;
if(total==0)
{
cout<<"無賬戶資訊"<<endl<<endl;
}
else
{
cout<<"所有使用者資訊:"<<endl;
for(i=0;i<total-1;i++)
{
for(j=0;j<total-1-i;j++)
{
if(user[j].card>user[j+1].card)
{
templeuser=user[j];
user[j]=user[j+1];
user[j+1]=templeuser;
}
}
}
for(i=0;i<total;i++)
{
cout<<"姓名:"<<user[i].name<<' '<<"卡號:"<<user[i].card<<' '<<"密碼:"<<user[i].password<<''<<"餘額:"<<user[i].balance<<"元"<<endl;
}
}
}
//查詢卡號
int searchcard(account user[],int total,int templecard)
{
int i=0;
while((i<total)&&(user[i].card!=templecard))
{
i++;
}
if(i>total-1)
{
return -1;
}
else
{
return i;
}
}
int main()
{
system("colorf3");
record c[MAX];
inti,total=0,templecard,k,m;
float money,templemoney;
account temple,user[MAX];
int select=0;
do
{
system("cls");
cout<<"*******************************"<<endl;
cout<<"*活期儲蓄賬目管理系統*"<<endl;
cout<<"*******************************"<<endl;
cout<<"*1-************儲戶開戶*********"<<endl;
cout<<"*2*************儲戶銷戶*********"<<endl;
cout<<"*3***************存款***********"<<endl;
cout<<"*4***************取款***********"<<endl;
cout<<"*5********顯示所有賬戶資訊******"<<endl;
cout<<"*6************查詢餘額**********"<<endl;
cout<<"*7**********查詢交易記錄********"<<endl;
cout<<"*****************退出***********"<<endl;
cout<<"*******************************"*<<endl<<endl;
cout<<"請輸入您的選擇:";
cin>>select;
switch(select)
{
case1:cout<<endl<<"開戶:"<<endl;
cout<<"請輸入您的基本資訊:"<<endl;
cin>>temple;
i=0;
while((i<total)&&(user[i].card!=temple.card))
{
i++;
}
if(i>total-1)
.{
user[total]=temple;
system("cls");
cout<<"您已經成功開戶!"<<endl<<"您的基本資訊為:"<<endl;
cout<<"姓名卡號密碼賬戶餘額"<<endl;
cout<<user[total];
total++;
system("pause");
system("cls");
{
ofstream out("user.txt",ios::app);//開啟輸出檔案流
if(out)//如果開啟成功
{
out<<"姓名:"<<temple.name<<''<<"卡號:"<<temple.card<<' '<<"密碼:"<<temple.password<<''<<"餘額:"<<temple.balance<<"元"<<endl;//向檔案輸入資訊
out.close();//關閉
}
}
{
ofstream out("record.txt",ios::app);
if(out)
{
out<<"姓名:"<<temple.name<<''<<"卡號:"<<' '<<temple.card<<''<<"存入"<<temple.balance<<"元"<<endl;
out.close();
}
}
}
else
{
system("cls");
cout<<"賬戶已經存在,開戶失敗!!"<<endl;
system("pause");
}
break;
case 2:cout<<endl<<"銷戶:"<<endl;
cout<<"請輸入要登出的卡號:";
cin>>templecard;
k=searchcard(user,total,templecard);
if(k==-1)
{
system("cls");
cout<<"輸入有誤,賬戶不存在"<<endl;
system("pause");
}
else
{
system("cls");
cout<<"您的賬戶已經成功登出!並返還您"<<user[k].balance<<"元."<<endl;
system("pause");
{
ofstream out("record.txt",ios::app);
if(out)
{
out<<"姓名:"<<user[k].name<<''<<"卡號:"<<' '<<user[k].card<<''<<"登出賬戶,並返還"<<user[k].balance<<"元."<<endl;
out.close();
}
}
for(i=k+1;i<total;i++)
{
user[i-1]=user[i];
}
total--;
{
ofstream out("user.txt");
if(out)
{
for(i=0;i<total;i++)
{
out<<"姓名:"<<user[i].name<<''<<"卡號:"<<user[i].card<<' '<<"密碼:"<<user[i].password<<''<<"餘額:"<<user[i].balance<<"元"<<endl;
out.close();
}
}
}
}
cout<<endl;
break;
case3:cout<<endl<<"存款:"<<endl;
cout<<"請輸入您的卡號:";
cin>>templecard;
k=searchcard(user,total,templecard);
if(k==-1)
{
system("cls");
cout<<"輸入有誤,賬戶不存在"<<endl;
system("pause");
}
else
{
cout<<"請輸入要存入的金額:";
cin>>money;
user[k].balance=user[k].balance+money;
system("cls");
cout<<"您已經成功存入"<<money<<"元,卡上還餘"<<user[k].balance<<"元."<<endl;
{
ofstream out("record.txt",ios::app);
if(out)
{
out<<"姓名:"<<user[k].name<<''<<"卡號:"<<' '<<user[k].card<<''<<"存入"<<money<<"元"<<endl;
out.close();
}
}
{
ofstream out("user.txt");
if(out)
{
for(i=0;i<total;i++)
{
out<<"姓名:"<<user[i].name<<''<<"卡號:"<<user[i].card<<' '<<"密碼:"<<user[i].password<<''<<"餘額:"<<user[i].balance<<"元"<<endl;
}
out.close();
}
}
system("pause");
}
break;
case4:cout<<endl<<"<