版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計題目:活期儲蓄賬目管理學(xué)院:班級:學(xué)生姓名:學(xué)生學(xué)號:指導(dǎo)教師:2013年11月27日課程設(shè)計任務(wù)書姓名班級學(xué)號設(shè)計題目活期儲蓄賬目管理理論要點1.活期儲蓄處理中,儲戶開戶、銷戶、存入、支出活動頻繁,系統(tǒng)設(shè)計要求:
2.能比擬迅速地找到儲戶的帳戶,以實現(xiàn)存款、取款記賬;并能實現(xiàn)排序。
3.能比擬簡單,迅速地實現(xiàn)插入和刪除,以實現(xiàn)開戶和銷戶的需要。設(shè)計目標1.代替營業(yè)員進行許多繁雜的手動操作。
2.給用戶帶來了很大的方便。3.節(jié)省許多人力資源。4.提高人們的工作效率。研究方法步驟1.設(shè)計程序流程圖2.編寫源程序3.編譯運行,對指定文件進行編碼譯碼預(yù)期結(jié)果實現(xiàn)對既定文件的讀入,編碼壓縮后存入另一文件,調(diào)出編碼后的文件進行譯碼輸出并存入新文件。方案與進步的安排1.搜集資料,理解原理,分析已有的編碼1天2.分模塊分析,畫出實驗流程圖1天3.編寫源代碼2天4.編譯運行,對既定文件進行編碼譯碼2天5.實驗總結(jié)1天目錄摘要I1題目分析12概要設(shè)計23詳細設(shè)計24調(diào)試設(shè)計55用戶使用說明66測試結(jié)果67結(jié)論體會88參考文獻89源程序9摘要隨著計算機的普及,現(xiàn)代人越來越多的想到用計算機來代替許多人做的事情。從而提高辦事效率,使經(jīng)濟收入更加可觀,從而就產(chǎn)生了計算機這門課程。隨著信息技術(shù)的飛速開展,大量信息需要傳輸,傳輸信息就要先經(jīng)過編碼,然后再譯碼,可見編碼技術(shù)的提高對整個信息產(chǎn)業(yè)有著舉足輕重的作用。而計算機主要是通過程序來實現(xiàn)各種事情的,再者程序也必須通過各種算法才能到達存儲各種數(shù)據(jù),所以數(shù)據(jù)結(jié)構(gòu)這門課程就應(yīng)運而生。本課程設(shè)計主要是用數(shù)據(jù)結(jié)構(gòu)編寫關(guān)于活期儲蓄賬目管理的算法,來到達活期儲蓄賬目管理的目的。關(guān)鍵詞:編碼存儲活期儲存賬目管理I1題目分析活期儲蓄管理系統(tǒng)用戶通過該系統(tǒng)可以進行存款、取款、銷戶等業(yè)務(wù)。該系統(tǒng)在金融業(yè)給人民帶來了很大的方便,系統(tǒng)開發(fā)成功后,一旦應(yīng)用于銀行領(lǐng)域,會給管理員與用戶帶來很大的方便,其主要作用具體如下:1〕、可以代替營業(yè)員進行許多繁雜的手動操作。2〕、給用戶帶來了很大的方便。3〕、可以節(jié)省許多人力資源。4〕、可以提高人們的工作效率。活期儲蓄賬目管理系統(tǒng)主要是由于在活期儲蓄處理中,儲戶開戶、銷戶、存入、支出活動頻繁,為實現(xiàn)儲戶的各種操作而設(shè)計的,本課程設(shè)計的主要功能包括實現(xiàn)儲戶開戶、銷戶、存入、支出等活動,為了能比擬迅速找到賬戶,實現(xiàn)這樣的幾個功能,就要通過鏈表來存儲數(shù)據(jù)結(jié)構(gòu),其結(jié)構(gòu)那么按照C語言的相關(guān)知識定義結(jié)構(gòu)體,其中儲戶開戶、銷戶就是實現(xiàn)鏈表的插入與刪除,而存入、支出等活動那么是實現(xiàn)鏈表中結(jié)點的查找,然后進行更改。2概要設(shè)計1〕、數(shù)據(jù)結(jié)構(gòu):typedefstructmessage{ charname[10]; charsex[3]; intold; charno[20]; doublebase; doubleir; intcode; intyear; intyday; message*next;}message,*Message;2〕、各種函數(shù)說明:Messageout();將txt文件中的信息讀出tm*date();調(diào)用系統(tǒng)時間voidmake();對文件中已有賬戶進行處理voidit(Message);將信息寫入txt文件voidcreate();創(chuàng)立新賬戶voiddebit(Message);從賬戶中取款voidcredit(Message);向賬戶中存款intchaxun();查詢賬戶信息voidrework(Message);修改賬戶密碼intmain();主函數(shù)3詳細設(shè)計1〕、頭文件headerfile.h中,聲明結(jié)構(gòu)體和函數(shù):typedefstructmessage{ charname[10];主菜單創(chuàng)立賬戶主菜單創(chuàng)立賬戶存款查詢賬戶修改密碼回主菜單取款退出程序結(jié)構(gòu)圖 intold; charno[20]; doublebase; doubleir; intcode; intyear; intyday; message*next;}message,*Message;Messageout();tm*date();voidmake();voidit(Message);voidcreate();voiddebit(Message);圖1程序結(jié)構(gòu)圖voidcredit(Message);圖1程序結(jié)構(gòu)圖intchaxun();voidrework(Message);2〕、intmain()//主函數(shù){ intchoice=0; while(1) { cout<<"請選擇操作:1、創(chuàng)立賬戶2、查詢賬戶0、退出\n"; cin>>choice; switch(choice) { case1:create();break; case2:chaxun();break; case0:return0; default:cout<<"你敲錯鍵了。\n";break; } }}tm*date()//調(diào)用系統(tǒng)時間{ time_trawtime; structtm*timeinfo; time(&rawtime); timeinfo=localtime(&rawtime); returntimeinfo;}voidmake()//預(yù)處理賬目{ Messagep,q,head=out(); p=head->next; while(p!=NULL) { for(inti=1;i<=d->tm_yday-p->yday+365*(d->tm_year-p->year);i++) { p->base=p->base+p->base*p->ir; } p=p->next; } q=head->next; ofstreamfout("Message.txt"); fout.close(); while(q!=NULL){it(q);q=q->next;}}Messageout()//將txt文件中的信息讀出{ Messagep,q,head;head=newmessage;p=head; ifstreamfin("Message.txt"); if(!fin){cout<<"文件翻開失敗\n";returnhead;} else while(!fin.eof()) { q=newmessage; fin>>q->name>>q->sex>>q->old>>q->no>>q->base>>q->ir>>q->code>>q->year>>q->yda; q->next=NULL; p->next=q; p=p->next; } fin.close(); returnhead;}voidit(Messageq)//將信息寫入txt文件{ ofstreamfout("Message.txt",ios::app); if(!fout){cout<<"文件翻開失敗\n";} fout<<endl<<q->name<<""<<q->sex<<""<<q->old<<""<<q->no<<""<<q->base<<""<<q->ir<<""<<q->code<<""<<d->tm_year<<""<<d->tm_yday; fout.close();}voidcreate()//創(chuàng)立賬戶{ Messageq=newmessage; cout<<"**請輸入客戶的信息**"<<endl; cout<<"姓名:";cin>>q->name; cout<<"性別:";cin>>q->sex; cout<<"年齡:";cin>>q->old; cout<<"身份證號:";cin>>q->no; cout<<"本金:";cin>>q->base; cout<<"利率:";cin>>q->ir; cout<<"密碼:";cin>>q->code; q->year=d->tm_year;q->yday=d->tm_yday; q->next=NULL; it(q);}voiddebit(Messagep)//取款{ doublemoney,m; cout<<"請輸入取款金額:";cin>>money; m=p->base-money; if(m<0.00){cout<<"余額缺乏!\n";} else{cout<<"取款成功!\n"<<"當前余額為:"<<m;p->base=m;cout<<endl;}}voidcredit(Messagep)//存款{ doublemoney,m; cout<<"請輸入存款金額:";cin>>money; m=p->base+money; cout<<"存款成功!\n"<<"當前余額為:"<<m;p->base=m;cout<<endl;}voidrework(Messagep)//修改密碼{ intcode1,code2; cout<<"請輸入新密碼:";cin>>code1; cout<<"請再次輸入新密碼:";cin>>code2; if(code1==code2){cout<<"修改密碼成功!\n";p->code=code1;} elsecout<<"兩次輸入的新密碼不一致!修改密碼失敗!\n";}intchaxun()//查詢賬戶{ make(); Messagehead=newmessage;head=out(); Messagep,q;p=head->next; chara[20];intb,choice; cout<<"請輸入要查詢的賬戶的身份證號:";cin>>a; cout<<"請輸入密碼:";cin>>b; while(p!=NULL) { if(strcmp(a,p->no)==0&&b==p->code) { cout<<"**要查詢的賬戶信息為**"<<endl; cout<<"姓名"<<setw(6)<<"性別"<<setw(5)<<"年齡"<<setw(15)<<"身份證號"<<setw(13)<<"余額"<<setw(10)<<"利率\n"; cout<<p->name<<setw(5)<<p->sex<<setw(5)<<p->old<<setw(20)<<p->no<<setw(9)<<p->base<<setw(10)<<p->ir<<endl; break; } elsep=p->next; } if(p==NULL){cout<<"賬戶或密碼錯誤!\n";return0;} while(1) { cout<<"請選擇操作:1、存款2、取款3、修改密碼0、回主菜單\n";cin>>choice; switch(choice) { case1:credit(p);break; case2:debit(p);break; case3:rework(p);break; case0:return0; default:cout<<"你敲錯鍵了。\n";break; } q=head->next; ofstreamfout("Message.txt"); fout.close(); while(q!=NULL) { it(q);q=q->next; } }}4調(diào)試分析程序調(diào)試采用DevC++實現(xiàn),程序在調(diào)試過程中遇到了各種問題,首先在開戶程序是時我是主函調(diào)試錯誤,,在原理上是可行,但調(diào)試時總得不到正確結(jié)果,后來改為根本類型整型后就很好的得到了滿意結(jié)果,其它一些小錯誤在不斷地調(diào)試,不斷地改善后,根本到達可滿意的效果5用戶使用按步驟開戶完成一系列操作圖2主界面6測試結(jié)果圖3取款圖4用戶資料圖5余額查詢圖6用戶添加7結(jié)論體會第一次做課程設(shè)計,開始自己讀題時,思路不是很清晰,首先定義了一個結(jié)構(gòu)體,包含了儲戶的各類信息,如姓名,賬號,金額等等,并利用文件將用戶信息加以存儲。開戶時將輸入的信息寫入文件,存款和取款時對用戶的存款加以處理并更新到文件中。在分析好活期儲蓄帳目管理的功能模塊后,開始編寫代碼,通過這次對銀行管理系統(tǒng)的編寫與調(diào)試,穩(wěn)固了有關(guān)結(jié)構(gòu)體的知識及其操作,鍛煉了實際應(yīng)用能力。8參考文獻[1]馮博琴.軟件技術(shù)根底〔修改版〕.西安交通大學(xué)出版社,1997.[2]嚴蔚敏.數(shù)據(jù)結(jié)構(gòu).清華大學(xué)出版社,2003.[3]李蕓芳.軟件技術(shù)根底〔第二版〕.清華大學(xué)出版社,2000.[4]徐孝凱.數(shù)據(jù)結(jié)構(gòu)〔C語言描述〕.清華大學(xué)出版社,2004.9源程序#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#definefile"temp.txt"http://數(shù)據(jù)存儲的文件名structuser//用戶類型定義(賬號,姓名,身份證號,余額){ intid; charname[20]; charperson_num[19]; doublemoney;};voidadd()//添加用戶資料{ printf("%30s\n","***添加用戶***"); printf("\n\n"); structusergetuser(); intcount();//函數(shù)目的:計算文件中的記錄數(shù)目以生成自動賬號 FILE*fp; intnumber; structusertemp; if((fp=fopen(file,"ab"))==NULL) { printf("cannotopenfile!\n"); exit(1); } temp=getuser();//讀取用戶名 number=count(); temp.id=number+1;//生成自動賬號 fwrite(&temp,sizeof(structuser),1,fp); printf("添加用戶成功!\n"); fclose(fp);}intcount() //函數(shù)目的:計算文件中的記錄總數(shù){ FILE*fp; intnum; structusertemp; num=0; if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } while(fread(&temp,sizeof(structuser),1,fp)) { num++; } fclose(fp); returnnum;}structusergetuser(){ voidgetname(char*name); voidgetperson_num(char*person_num); structusertemp; printf("請輸入用戶姓名(字符數(shù)<20):");//讀取相關(guān)開戶信息 getname(); printf("請輸入用戶身份證號碼:"); getperson_num(temp.person_num); printf("輸入開戶金額:"); do{//判斷開戶金額(>=100) scanf("%lf",&temp.money); fflush(stdin); if((temp.money)<100.0) printf("開戶金額不能小于100\n"); else break; printf("重新輸入開戶金額:"); }while(1); returntemp;}voidgetname(char*name)//函數(shù)功能:讀取用戶姓名(字符數(shù)<20){ do{ scanf("%s",name); fflush(stdin); if(strlen(name)==0) printf("姓名不能為空!\n"); else if(strlen(name)>=20) printf("姓名不能超過20個字符!\n"); else break; printf("重新輸入姓名:"); }while(1);//循環(huán)以保證讀入數(shù)據(jù)有效}voidgetperson_num(char*person_num)//函數(shù)功能:讀取用戶身份證號碼(15位或者18位){ do{ inti,mark; charch; for(i=0,mark=0;;i++)//輸入有效性判斷(只能是數(shù)字) if((ch=getchar())!='\n') { if(ch<='9'&&ch>='0') person_num[i]=ch; else { printf("身份證號碼只能是數(shù)字!\n"); mark=1; break; } } else break; person_num[i]='\0'; if(mark==1) continue; if(strlen(person_num)!=15&&strlen(person_num)!=18) printf("身份證號碼只能是15位,或者18位!\n"); else break; printf("重新輸入身份證號碼:"); }while(1); //循環(huán)以保證讀入數(shù)據(jù)有效}voidselect_name() //按照姓名查詢賬戶余額{ voidgetname(char*name); printf("%30s\n","***按照姓名查詢賬戶余額***"); printf("%8s%15s%15s%10s\n","賬號","用戶姓名","身份證號碼","存款余額"); printf("\n\n"); FILE*fp; structusertemp; charname[20]; if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } printf("輸入要查詢的姓名:");//調(diào)用讀取用戶名函數(shù) getname(name); while(fread(&temp,sizeof(structuser),1,fp))//循環(huán)讀取每一條記錄判斷是否為要查看的記錄 if(strcmp(,name)==0) { printf("NO.%d%15s%15s%.2f\n",temp.id,,temp.person_num,temp.money); } fclose(fp);}voidselect_id()//按照賬號查詢賬戶余額{ intcount(); printf("%30s\n","***按照編號查詢賬戶余額***"); printf("%8s%15s%15s%10s\n","編號","用戶姓名","身份證號碼","存款余額"); printf("\n\n"); FILE*fp; structusertemp; inti,maxnum; if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } maxnum=count(); printf("輸入要查詢賬號:");//判斷賬號是否在記錄中 scanf("%d",&i); if(i<1||i>maxnum) { printf("你要查詢的賬號不存在!"); return; } while(fread(&temp,sizeof(structuser),1,fp))//循環(huán)讀取每一條記錄判斷是否為要查看的記錄 if(temp.id==i) { printf("NO.%d%15s%15s%.2f\n",temp.id,,temp.person_num,temp.money); } fclose(fp);}voiddisplay()//顯示用戶資料{ printf("%30s\n","***用戶資料顯示***"); printf("%8s%15s%15s%10s\n","賬號","用戶姓名","身份證號碼","存款余額"); printf("\n\n"); FILE*fp; structusertemp; if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } while(fread(&temp,sizeof(structuser),1,fp)) { printf("NO.%d%15s%15s%.2f\n",temp.id,,temp.person_num,temp.money); } fclose(fp);}voidsave_money()//函數(shù)功能:按賬號存款{ printf("%30s\n","***用戶存款業(yè)務(wù)***"); printf("\n\n"); intcount(); FILE*fp; inti,num,mark; structuser*temp; num=count();//根據(jù)記錄數(shù)申請空間 temp=(structuser*)malloc(num*sizeof(structuser)); if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } for(i=0;i<num;i++) //將文件內(nèi)容存入數(shù)組 fread(&temp[i],sizeof(structuser),1,fp); fclose(fp); printf("輸入要存款賬號:");//讀取存款賬號 scanf("%d",&mark); if(mark<1||mark>num) { printf("你要存款賬號不存在!"); return; } if((fp=fopen(file,"wb"))==NULL)//寫方式翻開文件,覆蓋原文件中的內(nèi)容 { printf("cannotopenfile!\n"); exit(1); } for(i=0;i<num;i++) { if(temp[i].id==mark) { doublemoney=0; printf("輸入要存入的金額:"); scanf("%lf",&money); if(money<=0) { printf("只能為正數(shù)!\n"); money=0; } temp[i].money+=money;//修改該用戶的信息 } fwrite(&temp[i],sizeof(structuser),1,fp); } fclose(fp); free(temp); printf("你存款業(yè)務(wù)已辦妥!\n");}voidget_money()//函數(shù)功能:用戶取款{ printf("%30s\n","***用戶取款業(yè)務(wù)***"); printf("\n\n"); intcount(); FILE*fp; inti,num,mark; structuser*temp; num=count(); //根據(jù)記錄數(shù)申請空間 temp=(structuser*)malloc(num*sizeof(structuser)); if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } for(i=0;i<num;i++) //讀取文件內(nèi)容 fread(&temp[i],sizeof(structuser),1,fp); fclose(fp); printf("輸入要取款賬號:"); scanf("%d",&mark); if(mark<1||mark>num) { printf("你要取款賬號不存在!"); return; } if((fp=fopen(file,"wb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } for(i=0;i<num;i++) //寫方式翻開文件,覆蓋原文件中的內(nèi)容 { if(temp[i].id==mark) { doublemoney=0; printf("輸入要取出的金額:"); scanf("%lf",&money); if(money<=0) //判斷用戶余額是否足夠 { printf("只能為正數(shù)!\n"); money=0; } else if(money>temp[i].money) { printf("你的余額缺乏!\n"); money=0; } temp[i].money-=money; } fwrite(&temp[i],sizeof(structuser),1,fp); } fclose(fp); free(temp); printf("你取款業(yè)務(wù)已辦妥!\n");}voiddel()//銷戶{ intcount(); printf("%30s\n","***注銷賬戶***"); printf("%8s%15s%15s%10s\n","賬號","用戶姓名","身份證號碼","存款余額"); printf("\n\n"); FILE*fp; structusertemp; inti,maxnum; if((fp=fopen(file,"rb"))==NULL) { printf("cannotopenfile!\n"); exit(1); } maxnum=count(); printf("輸入要銷戶賬號:");//判斷編號是否在記錄中 scanf("%d",&i); if(i<1||i>maxnum) { printf("你要查詢的賬號不存在!"); return; } while(fread(&temp,sizeof(structuser),1,fp))//循環(huán)讀取每一條記錄判斷是否為要查看的記錄 if(temp.id==i&&temp.money==0.00)//余額為0 {temp.id=-1;//算無效帳戶 printf("NO.%d%15s%15s%.2f\n",temp.id,,temp.person_num,temp.money); //pr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外出創(chuàng)業(yè)租房合同范例
- 快遞代收合同范例
- 公司產(chǎn)權(quán)商鋪出售合同模板
- 中藥飲片行業(yè)探析
- 家居裝修公司合同范例
- 建設(shè)工程合同范例共幾版
- 個人茶莊轉(zhuǎn)讓合同范例
- 工程施工正式合同范例
- 劇組法律顧問合同范例
- 產(chǎn)房租賃合同范例
- 保安班長工作管理制度
- 手術(shù)體位相關(guān)周圍神經(jīng)損傷及預(yù)防課件
- 2024人教版初中英語單詞詞匯表默寫背誦(中考復(fù)習(xí)必背)
- 數(shù)字媒體技術(shù)專業(yè)大學(xué)生職業(yè)生涯規(guī)劃書
- 【精】人民音樂出版社人音版五年級上冊音樂《外婆的澎湖灣》課件PPT
- 抗腫瘤藥物臨床合理應(yīng)用(臨床)
- 弱電維護保養(yǎng)方案
- 安全施工管理組織機構(gòu)圖
- 中國數(shù)據(jù)中心產(chǎn)業(yè)發(fā)展白皮書(2023年)
- 《建筑企業(yè)財務(wù) 》課件
- 滬科版九年級物理全一冊知識點總結(jié)(滬教版)
評論
0/150
提交評論