數(shù)據(jù)結構和c語言課程設計報告_第1頁
數(shù)據(jù)結構和c語言課程設計報告_第2頁
數(shù)據(jù)結構和c語言課程設計報告_第3頁
數(shù)據(jù)結構和c語言課程設計報告_第4頁
數(shù)據(jù)結構和c語言課程設計報告_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

本文格式為Word版,下載可任意編輯——數(shù)據(jù)結構和c語言課程設計報告

活期儲蓄賬目管理

數(shù)據(jù)結構和c語言課程

設計報告

設計題目:活期儲蓄賬目管理

專業(yè):計算機科學與技術班級:

學生:

學號:

2023—1010年其次學期

活期儲蓄賬目管理

目錄

活期儲蓄賬目管理

設計任務書

能比較迅速地找到儲戶的賬戶,以實現(xiàn)存款,取款記賬;能比較簡單,迅速地實現(xiàn)插入和刪除,以實現(xiàn)開戶和銷戶的需要。

活期儲蓄賬目管理

本組課題及本人任務

本組課題:活期儲蓄賬目管理

本人任務:

活期儲蓄賬目管理

程序功能簡介

實現(xiàn)對活期儲蓄賬戶及其交易信息的管理,基本功能如下:

1)儲戶開戶

2)儲戶銷戶

3)某賬戶存錢

4)某賬戶取錢

5)顯示所有賬戶信息

6)查詢某賬戶余額

7)查詢某賬戶交易記錄

8)所有賬戶及其交易信息能夠保存至文件中,并且可以從文件中讀出

活期儲蓄賬目管理

主體內(nèi)容

1.設計分析

在這里,要針對可能用到的函數(shù)進行有效的分析,在編程的過程中,根據(jù)事先想好的思路和材料進行。分析可能用到的數(shù)據(jù)結構。首先,對于同一用戶的操作有:儲戶開戶,儲戶銷戶,某賬戶存錢,某賬戶取錢,查詢某賬戶余額。我們?nèi)绾螌⑦@些信息存儲在一些是第一個問題,這里簡單項選擇擇的數(shù)據(jù)結構狀況有2種:1、結構體。2、數(shù)組。對于此次課程設計來說,那么將用戶以數(shù)組存儲就成為一種較好的簡單的方法。更深一步考慮,為了便利尋覓用戶是否需要創(chuàng)立一個鏈表來存儲用戶的信息。其次,該程序還要求顯示所有賬戶信息(至少包括賬號、姓名、余額),查詢某賬戶交易記錄(至少包括是存還是取、金額兩項信息,學有余力者可包含時間信息),所有賬戶及其交易信息能夠保存至文件中,并且可以從文件中讀出。所以,該程序還要涉及到文件讀寫的內(nèi)容。再次,采用交互工作方式。所以,將要用到switch()語句來執(zhí)行每一個功能

活期儲蓄賬目管理

2程序說明

活期儲蓄賬目管理

2.操作方法(流程)

活期儲蓄賬目管理

3.設計體會

活期儲蓄賬目管理

附錄

1.程序中的主要變量、函數(shù):

變量:id,name,person_num,money,numbe,temp

函數(shù):add()//添加用戶資料

count()//計算文件中的記錄總數(shù)

del()//銷戶

display()//顯示用戶資料

getmoney()//用戶取款

getname(char*name)//讀取用戶姓名(字符數(shù)20)

getperson_num(char*person_num)//讀取用戶身份證號碼(15位或者18位)getuser()

print()//輸出界面

save_money()//按賬號存款

select_id()//依照賬號查詢賬戶余額

select_name()//依照姓名查詢賬戶余額

2.源程序:

#includestdio.h

#includestring.h

#includeconio.h

#includestdlib.h

#definefiletemp.txt//數(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):);//讀取相關開戶信息

getname(http://.77);

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)!=15strlen(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(http://.77,name)==0)

{

printf(NO.%d%15s%15s%.2f\n,temp.id,http://.77,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(i1||imaxnum)

{

printf(你要查詢的賬號不存在!);

return;

}

while(fread(temp,sizeof(structuser),1,fp))//循環(huán)讀取每一條記錄判斷是否為要查看的記錄

if(temp.id==i)

{

printf(NO.%d%15s%15s%.2f\n,temp.id,http://.77,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,http://.77,temp.person_num,temp.money);

}

fclose(fp);

}

voidsave_money()//函數(shù)功能:按賬號存款

{

printf(%30s\n,***用戶存款業(yè)務***);

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;inum;i++)//將文件內(nèi)容存入數(shù)組

fread(temp[i],sizeof(structuser),1,fp);

fclose(fp);

printf(輸入要存款賬號:);//讀取存款賬號

scanf(%d,mark);

if(mark1||marknum)

{

printf(你要存款賬號不存在!);

return;

}

if((fp=fopen(file,wb))==NULL)//寫方式開啟文件,覆蓋原文件中的內(nèi)容{

printf(cannotopenfile!\n);

exit(1);

活期儲蓄賬目管理

}

for(i=0;inum;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è)務已辦妥!\n);

}

voidget_money()//函數(shù)功能:用戶取款

{

printf(%30s\n,***用戶取款業(yè)務***);

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);

}

活期儲蓄賬目管理

fread(temp[i],sizeof(structuser),1,fp);fclose(fp);printf(輸入要取款賬號:);scanf(%d,mark);if(mark1||marknum){printf(你要取款賬號不存在!);return;}if((fp=fopen(file,wb))==NULL){printf(cannotopenfile!\n);exit(1);}for(i=0;inum;i++)//寫方式開啟文件,覆蓋原文件中的內(nèi)容{if(temp[i].id==mark){doublemoney=0;printf(輸入要取出的金額:);scanf(%lf,money);if(money=0)//判斷用戶余額是否足夠{printf(只能為正數(shù)!\n);money=0;}elseif(moneytemp[i].money)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論