NEUQ 数据结构课设Word下载.docx

上传人:b****8 文档编号:22368235 上传时间:2023-02-03 格式:DOCX 页数:30 大小:126.91KB
下载 相关 举报
NEUQ 数据结构课设Word下载.docx_第1页
第1页 / 共30页
NEUQ 数据结构课设Word下载.docx_第2页
第2页 / 共30页
NEUQ 数据结构课设Word下载.docx_第3页
第3页 / 共30页
NEUQ 数据结构课设Word下载.docx_第4页
第4页 / 共30页
NEUQ 数据结构课设Word下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

NEUQ 数据结构课设Word下载.docx

《NEUQ 数据结构课设Word下载.docx》由会员分享,可在线阅读,更多相关《NEUQ 数据结构课设Word下载.docx(30页珍藏版)》请在冰豆网上搜索。

NEUQ 数据结构课设Word下载.docx

查询账户信息

voidrework(Message);

修改账户密码

intmain();

主函数

1)、头文件headerfile.h中,声明结构体和函数:

typedefstructmessage{

}message,*Message;

2)、intmain()//主函数

{

intchoice=0;

while

(1)

{

cout<

<

"

请选择操作:

1、创建账户2、查询账户0、退出\n"

;

cin>

>

choice;

switch(choice)

{

case1:

create();

break;

case2:

chaxun();

case0:

return0;

default:

cout<

你敲错键了。

\n"

}

}

}

tm*date()//调用系统时间

time_trawtime;

structtm*timeinfo;

time(&

rawtime);

timeinfo=localtime(&

returntimeinfo;

voidmake()//预处理账目

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

q=head->

ofstreamfout("

Message.txt"

);

fout.close();

while(q!

=NULL){it(q);

q=q->

Messageout()//将txt文件中的信息读出

Messagep,q,head;

head=newmessage;

p=head;

ifstreamfin("

if(!

fin){cout<

文件打开失败\n"

returnhead;

else

while(!

fin.eof())

q=newmessage;

fin>

q->

name>

sex>

old>

no>

base>

ir>

code>

year>

yda;

q->

next=NULL;

next=q;

p=p->

fin.close();

returnhead;

voidit(Messageq)//将信息写入txt文件

ios:

:

app);

fout){cout<

fout<

endl<

name<

"

sex<

old<

no<

base<

ir<

code<

d->

tm_year<

tm_yday;

voidcreate()//创建账户

Messageq=newmessage;

cout<

**请输入客户的信息**"

endl;

姓名:

cin>

name;

性别:

sex;

年龄:

old;

身份证号:

no;

本金:

base;

利率:

密码:

code;

q->

year=d->

tm_year;

yday=d->

it(q);

voiddebit(Messagep)//取款

doublemoney,m;

请输入取款金额:

cin>

money;

m=p->

base-money;

if(m<

0.00){cout<

余额不足!

else{cout<

取款成功!

当前余额为:

m;

p->

base=m;

voidcredit(Messagep)//存款

请输入存款金额:

base+money;

存款成功!

voidrework(Messagep)//修改密码

intcode1,code2;

请输入新密码:

code1;

请再次输入新密码:

code2;

if(code1==code2){cout<

修改密码成功!

code=code1;

elsecout<

两次输入的新密码不一致!

修改密码失败!

intchaxun()//查询账户

make();

Messagehead=newmessage;

head=out();

Messagep,q;

p=head->

chara[20];

intb,choice;

请输入要查询的账户的身份证号:

a;

请输入密码:

b;

if(strcmp(a,p->

no)==0&

&

b==p->

code)

cout<

**要查询的账户信息为**"

姓名"

setw(6)<

性别"

setw(5)<

年龄"

setw(15)<

身份证号"

setw(13)<

余额"

setw(10)<

利率\n"

setw(20)<

setw(9)<

break;

elsep=p->

if(p==NULL){cout<

账户或密码错误!

1、存款2、取款3、修改密码0、回主菜单\n"

credit(p);

debit(p);

case3:

rework(p);

q=head->

ofstreamfout("

fout.close();

while(q!

it(q);

三、调试分析

程序在调试过程中遇到了各种问题,首先在开户程序时是主函调试错误,,在原理上是可行,但调试时总得不到正确结果,后来改为基本类型整型后就很好的得到了满意结果,其它一些小错误在不断地调试,不断地改善后,基本达到满意的效果。

四、测试结果

五、心得体会

刚开始自己读题时,思路不是很清晰,首先定义了一个结构体,包含了储户的各类信息,如姓名,账号,金额等等,并利用文件将用户信息加以存储。

开户时将输入的信息写入文件,存款和取款时对用户的存款加以处理并更新到文件中。

在分析好活期储蓄帐目管理的功能模块后,开始编写代码,通过这次对银行管理系统的编写与调试,巩固了有关结构体的知识及其操作,锻炼了实际应用能力,对专业知识了解更多,学会如何把自己平时所学的东西应用到实际中。

六、附录

#include<

stdio.h>

string.h>

conio.h>

stdlib.h>

#definefile"

temp.txt"

//数据存储的文件名

structuser//用户类型定义(账号,姓名,身份证号,余额)

intid;

charname[20];

charperson_num[19];

doublemoney;

};

voidadd()//添加用户资料

printf("

%30s\n"

"

***添加用户***"

---------------------------------------------\n\n"

structusergetuser();

intcount();

//函数目的:

计算文件中的记录数目以生成自动账号

FILE*fp;

intnumber;

structusertemp;

if((fp=fopen(file,"

ab"

))==NULL)

printf("

cannotopenfile!

exit

(1);

temp=getuser();

//读取用户名

number=count();

temp.id=number+1;

//生成自动账号

fwrite(&

temp,sizeof(structuser),1,fp);

添加用户成功!

fclose(fp);

intcount()//函数目的:

计算文件中的记录总数

intnum;

num=0;

rb"

while(fread(&

temp,sizeof(structuser),1,fp))

num++;

returnnum;

structusergetuser()

voidgetname(char*name);

voidgetperson_num(char*person_num);

请输入用户姓名(字符数<

20):

//读取相关开户信息

getname(temp.name);

请输入用户身份证号码:

getperson_num(temp.person_num);

输入开户金额:

do{//判断开户金额(>

=100)

scanf("

%lf"

&

temp.money);

fflush(stdin);

if((temp.money)<

100.0)

printf("

开户金额不能小于100\n"

else

重新输入开户金额:

}while

(1);

returntemp;

voidgetname(char*name)//函数功能:

读取用户姓名(字符数<

20)

do{

%s"

name);

if(strlen(name)==0)

姓名不能为空!

if(strlen(name)>

=20)

printf("

姓名不能超过20个字符!

else

break;

重新输入姓名:

//循环以保证读入数据有效

voidgetperson_num(char*person_num)//函数功能:

读取用户身份证号码(15位或者18位)

{

inti,mark;

charch;

for(i=0,mark=0;

i++)//输入有效性判断(只能是数字)

if((ch=getchar())!

='

\n'

{

if(ch<

9'

ch>

0'

person_num[i]=ch;

else

{

printf("

身份证号码只能是数字!

mark=1;

break;

}

}

else

person_num[i]='

\0'

if(mark==1)

continue;

if(strlen(person_num)!

=15&

strlen(person_num)!

=18)

身份证号码只能是15位,或者18位!

重新输入身份证号码:

//循环以保证读入数据有效

voidselect_name()//按照姓名查询账户余额

***按照姓名查询账户余额***"

%8s%15s%15s%10s\n"

账号"

用户姓名"

身份证号码"

存款余额"

FILE*fp;

输入要查询的姓名:

//调用读取用户名函数

getname(name);

temp,sizeof(structuser),1,fp))//循环读取每一条记录判断是否为要查看的记录

if(strcmp(temp.name,name)==0)

NO.%d%15s%15s%.2f\n"

temp.id,temp.name,temp.person_num,temp.money);

voidselect_id()//按照账号查询账户余额

***按照编号查询账户余额***"

编号"

inti,maxnum;

maxnum=count();

输入要查询账号:

//判断账号是否在记录中

scanf("

%d"

i);

if(i<

1||i>

maxnum)

你要查询的账号不存在!

return;

temp,sizeof(structuser),1,fp))//循环读取每一条记录判断是否为要查看的记录

if(temp.id==i)

voiddisplay()//显示用户资料

***用户资料显示***"

voidsave_money()//函数功能:

按账号存款

***用户存款业务***"

inti,num,mark;

structuser*temp;

num=count();

//根据记录数申请空间

temp=(structuser*)malloc(num*sizeof(structuser));

for(i=0;

num;

i++)//将文件内容存入数组

fread(&

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

输入要存款账号:

//读取存款账号

mark);

if(mark<

1||mark>

num)

你要存款账号不存在!

wb"

))==NULL)//写方式打开文件,覆盖原文件中的内容

if(temp[i].id==mark)

doublemoney=0;

输入要存入的金额:

scanf("

money);

if(money<

=0)

只能为正数!

money=0;

temp[i].money+=money;

//修改该用户的信息

fwrite(&

free(temp);

你存款业务已办妥!

voidget_money()//函数功能:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1