《銀行活期儲蓄程序課程設計C》由會員分享,可在線閱讀,更多相關(guān)《銀行活期儲蓄程序課程設計C(15頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、
《數(shù)據(jù)結(jié)構(gòu)課程設計》
課程題目
課程編號
學生姓名
所在專業(yè)
所在班級
任課老師
實習時間
設計成績
老師評語
一. 問題描述--------------------------------------------------------1
二. 問題分析---------------------------------------------------------1
三. 邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)設計------------------------------------
2、1
四. 算法設計----------------------------------------------------------1
五. 時間復雜度和空間復雜度分析-------------------------------4
六. 源代碼--------------------------------------------------------------4-13
七. 程序運行結(jié)果-----------------------------------------------------13-15
八. 心得-------------------------------
3、--------------------------------------15
參考文獻-----------------------------------------------------------------------15
一.問題描述
小明是一個計算機專業(yè)top student,祝賀他畢業(yè)了。并準備到銀行參加工作。上班第一天,經(jīng)理叫他編制一個實現(xiàn)一個活期儲蓄處理程序,算作考查。上班第一天, 一定要給領(lǐng)導一個好印象,小明二話沒說,就答應了?,F(xiàn)要你是小明了,請完成如下題目功能。儲戶開戶、銷戶、存入
4、、支出活動頻繁,系統(tǒng)設計要求:(1)能比較迅速地找到儲戶的帳戶,以實現(xiàn)存款、取款記賬;
(2)能比較簡單,迅速地實現(xiàn)插入和刪除,以實現(xiàn)開戶和銷戶的需要。
二.問題分析
活期儲蓄處理中,儲戶開戶、銷戶、存入、指出活動頻繁,系統(tǒng)設計要求;
1、 能比較迅速的找到儲戶的賬戶,以實現(xiàn)存款、取款記賬;
2、 能比較簡單的、迅速的實現(xiàn)擦如和刪除,以實現(xiàn)開戶銷戶的需要。
需求分析:
1、 創(chuàng)建文件,用數(shù)組形式存儲用戶數(shù)據(jù),開戶時自定義用戶賬戶、姓名、密碼、開戶金額;
2、 用戶登錄時,輸入正確的用戶姓名、用戶密碼,完成登陸后即可進行存款、取款、查詢、修改密碼;
3、
5、 實現(xiàn)輸入用戶的賬戶名和密碼,將其全部信息刪除,進行銷戶。
三.邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)設計
邏輯結(jié)構(gòu):
存儲結(jié)構(gòu)設計:該存儲結(jié)構(gòu)是鏈式存儲結(jié)構(gòu),本系統(tǒng)主要用線性表結(jié)構(gòu)類型來存儲在“活期儲蓄賬目管理系統(tǒng)”中的信息。其中,結(jié)構(gòu)體由4個分量構(gòu)成:用戶賬號名、用戶姓名、用戶密碼、開戶金額。
四.算法設計
本系統(tǒng)采用鏈式結(jié)構(gòu)存儲儲蓄賬目管理
1、用戶輸入想開戶的儲戶輸入其姓名賬戶密碼,然后顯示開戶成功,會有一個賬戶生成,然后開戶成功。
2、用戶登錄需要輸入賬號名和密碼,判斷密碼是否正確,如果錯誤則返回,然后點擊登錄,就可以進入管理系統(tǒng)。
3、用戶的存取款和查詢余額,首先在登錄
6、賬戶的基礎(chǔ)上,選擇存或取款,然后輸入相應的金額,若是取款應判斷其金額是否小于賬戶上的金額,如果不小于,則提示儲戶重新輸入相應的金額,或者退出。
4、儲戶需要銷戶的賬戶,然后程序自動判斷該賬戶是否存在,然后輸入賬戶密碼,若密碼與賬戶相對應,則刪除該賬戶。
五. 空間復雜度和時間復雜度分析
空間復雜度:
是程序運行所以需要的額外消耗存儲空間,一般的遞歸算法就要有o(n)的空間復雜度了,簡單說就是遞歸集算時通常是反復調(diào)用同一個方法,遞歸n次,就需要n個空間。
時間復雜度:
一個算法花費的時間與算法中語句的執(zhí)行次數(shù)成正比例,哪個算法中語句執(zhí)行次數(shù)多,它花費時間就多。一個算法中的語句執(zhí)行
7、次數(shù)稱為語句頻度或時間頻度。記為T(n)。
一般情況下,算法中基本操作重復執(zhí)行的次數(shù)是問題規(guī)模n的某個函數(shù),用T(n)表示,若有某個輔助函數(shù)f(n),使得當n趨近于無窮大時,T(n)/f (n)的極限值為不等于零的常數(shù),則稱f(n)是T(n)的同數(shù)量級函數(shù)。記作T(n)=O(f(n)),稱O(f(n)) 為算法的漸進時間復雜度,簡稱時間復雜度。
在各種不同算法中,若算法中語句執(zhí)行次數(shù)為一個常數(shù),則時間復雜度為O(1),另外,在時間頻度不相同時,時間復雜度有可能相同,如T(n)=n2+3n+4與T(n)=4n2+2n+1它們的頻度不同,但時間復雜度相同,都為O(n2)。
六.源代碼
8、#include
#include
#include
#include
using namespace std;
class consumer;
class YH
{
public:
YH();
void set_account();
//銀行開戶
void del_account();
void transfer(int); //轉(zhuǎn)賬
void enter_account();
void addmoney(int,float);
void ex
9、itYH();// 退出系統(tǒng)
void functionshow();
void save();
void load();// 功能界面
protected:
consumer *account[20];
static int acnum;
//賬戶數(shù)
};
int YH::acnum=0;
YH::YH()
{
//for(int i=0;i<20;i++)
//{
//account[i] = NULL;
//}
}
class consumer:pu
10、blic YH
{
public:
friend class YH;
consumer(int id,string Name,string PassWord,float m)
{
ID=id;name=Name;money=m;passwd=PassWord;
}
consumer(){ID=0;name='0';money=0;passwd='0';}
int get_id(){return ID;}
void savemoney();
// 存錢
s
11、tring get_passwd(){return passwd;}
// 取得密碼
void display();
void fetchmoney(); //取錢
void change_passwd();
void add_money(float);
void dec_money(float);
float get_money();
//卡卡轉(zhuǎn)帳
private:
int ID; //開戶帳號
string passwd; // 用戶密碼
12、
string name; // 用戶姓名
float money;
};
void YH::save()
{ofstream ofile("bankdat.dat",ios::out);
ofstream outfile("bankdat.dat",ios::out);
int n=0;
outfile<ID<<" ";
outfile<money<<" ";
outfile<<
13、account[n]->name<<" ";
outfile<passwd<<" ";
}
outfile.close(); //__page_break__
}
void YH::load()
{ifstream infile("bankdat.dat",ios::in);
if(!infile)
{cerr<<"讀取錯誤,無資料中!"<>acnum;
for(;
14、n>id;
infile>>m;
infile>>nam;
infile>>passw;account[n]->passwd;
consumer * acc = new consumer(id,nam,passw,m);
account[n] = acc;
}
infile.close();
cout<<"讀取資料正常!"<>id;
int fla
15、g = 1;
int i = 0;
while((iget_id()) flag = 0; else i++;
}
if(flag)
{
cout<<"帳號不存在!"<>b;
while(b<=0)
{
cout<<"請輸入正確的數(shù)
16、字!"<";
cin>>b;
}
if(account[x]->get_money()dec_money(b);account[i]->add_money(b);
cout<<"轉(zhuǎn)帳成功!";}
return;
}
void consumer::add_money(float x)
{money=x+money;}
void consumer::de
17、c_money(float x)
{money=money-x;}
void YH::addmoney(int x,float y)
{account[x]->money=account[x]->money-y;
}
float consumer::get_money()
{return money;}
int main()
{YH yh;
yh.functionshow();
}
void YH::functionshow()
{
int n;
do
{system("cls"); load();
cout<
18、dl<<"請你輸入相應的操作序號進行操作:"<";
cin>>n;
while(n<1||n>4)
{
cout<<"請輸入正確的操作序號!"<";
cin>>n;
}
switch(n)
{
case 1: set_account();
19、 break;
case 2:enter_account();break;
case 3: del_account();
break;
case 4: exitYH();
break;
}
cin.get();
}
while(true);
}
void YH::enter_account()
{int id;
cout<<"請輸入帳號:";
cin>>id;
int flag = 1;
int i = 0; //__page_
20、break__
while((iget_id()) flag = 0; else i++;
}
if(flag)
{
cout<<"帳號不存在!"<>passw;
if(passw!=account[i]->get_passwd()) return;
account[i]->display();cin.get();cin.get()
21、;
int n;
do{system("cls");
cout<<"請選擇你要進行的操作:"<>n;
switch(n)
{case 1: account[i]->display();break;
case 2: account[i]->fetchmoney();save();break;
case 3:account[i]->savemoney();s
22、ave();break;
case 4:account[i]->change_passwd();save();break;
case 5:transfer(i);save();break;
case 6:return;
}cin.get();cin.get();
}
while(1);
}
void YH::set_account()
{
int id;
string nam;
string passw;
float m;
cout<
23、 cin>>id;
cout<>nam;
cout<>passw;
cout<>m;
while(m<=0)
{
cout<<"請輸入正確的數(shù)字!"<>m;
}
consumer * acc = new consumer(id,nam,passw,
24、m);
account[acnum] = acc;
cout<<"開戶成功!!"<>id;
int flag = 1;
int i = 0;
while((i
25、->get_id())
{
flag = 0;
}
else
{
i++;
}
}
if(flag)
{
cout<<"帳號不存在!"<
26、
}
void consumer::change_passwd()
{
string pwd,repwd;
cout<<"請輸入新密碼:";
cin>>pwd;
cout<<"請再輸入一次新密碼:";
cin>>repwd;
if(pwd!=repwd)
cout<<"你輸入的兩次密碼不一樣,請重新輸入!"<
27、 ch;
do
{
cout<"<>m;
while(m<=0)
{
cout<<"請輸入正確的數(shù)字!"<";
cin>>m;
}
if(money
28、<"是否要繼續(xù)該項操作:(Y/N) "
<";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
{
cout<<"$ >";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
void consumer::savemoney()
{
float c;
char ch;
do
{
cout<"<>c;
whil
29、e(c<=0)
{
cout<<"請輸入正確的數(shù)字!"<";
cin>>c;
}
money=money+c;
cout<<"操作已成功!"<";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
{
cout<<"$ >";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
void consum
30、er::display()
{system("cls");
cout<<"**********************************"<
31、"感謝你對本銀行儲蓄管理系統(tǒng)的支持,歡迎下次光臨!"<