1、数据结构课程设计实验报告空白模板本科学生设计性实验报告数据结构课程设计项目组长 杨南如(儒) 学号 专 业 软件工程 班级10软件5班 成 员 肖杰 学号: 李伟 学号: 实验项目名称活期储蓄帐目管理系统 指导教师及职称 蒋娜讲师 开课学期 2011 至 2012 学年 第二 学期一、实验设计方案实验名称:活期储蓄帐目管理系统实验时间:2012/3/13实验场地:W101成员角色:程序员:杨南如(儒) 测试员:肖杰 文档员:李伟软件环境:Microsoft Visual C+ 6.01、实验任务与目的(简单介绍实验内容,说明实验任务和目的)实现活期储蓄账目管理系统,实现储户开户、销户、存入、支
2、出等活动: (1)采用交互式方式工作;(2)可实现迅速插入和删除,以实现储户开户和销户的需要;(3)可实现迅速查找到储户的帐户,以实现存款、取款记账、查询账户余额、账户交易记录;(4)排序显示所有账户信息;(5)程序运行时从input.txt文件中读入所以账户信息,发生交易后更新账户信息文件,同时将交易信息存储至文件output.txt。 2、实验思路(详细描述解决问题的整体思路、涉及的算法思想及数据结构等)(1)选择并构造数据结构;(2)使用与特定数据结构相应的算法来实现具体功能;(3)对文件读写结构化数据;(4)对程序设计语言的灵活运用。 二、实验结果与分析1、程序结构(程序结构图,主要函
3、数的功能描述,算法实现的细节等)一、添加用户信息void add() /添加用户资料 out*添加用户*endl; out-endl; struct user getuser(); int count(); /函数目的:计算文件中的记录数目 以生成自动账号 void show(); FILE *fp; int number; struct user temp; if(fp=fopen(file,ab)=NULL) outcannot open file!endl; printf(cannot open file!n); exit(1); temp=getuser(); /读取用户名 numbe
4、r=count(); temp.id=number+1; /生成自动账号 fwrite(&temp,sizeof(struct user),1,fp); out添加用户成功!endl; out你的账号为:; show(); fclose(fp);二、按照姓名查询账户余额void select_name() /按照姓名查询账户余额 void getname(char *name); out*按照姓名查询账户余额*endl; out账号 用户姓名身份证号码 存款余额endl; out-endl; FILE * fp; struct user temp; char name20; if(fp=fop
5、en(file,rb)=NULL) outcannot open file!endl; printf(cannot open file!n); exit(1); printf(输入要查询的姓名:); /调用读取用户名函数 getname(name);while(fread(&temp,sizeof(struct user),1,fp) /循环读取每一条记录 判断是否为要查看的记录 if(strcmp(temp.name,name)=0) outtemp.id temp.name temp.person_num temp.moneyendl; fclose(fp);三、按照账号查询账户余额voi
6、d select_id() /按照账号查询账户余额 int count(); out*按照编号查询账户余额*endl; out编号 用户姓名 身份证号码 存款余额endl; out-i; if(imaxnum) out你要查询的账号不存在!; return; while(fread(&temp,sizeof(struct user),1,fp)/循环读取每一条记录 判断是否为要查看的记录 if(temp.id=i) outtemp.id temp.name temp.person_num temp.moneyendl; fclose(fp);四、显示用户资料void display() /显示
7、用户资料 out*用户资料显示*endl; out账号 用户姓名 身份证号码 存款余额endl; out-endl; FILE * fp; struct user temp; if(fp=fopen(file,rb)=NULL) outcannot open file!endl; printf(cannot open file!n); exit(1); while(fread(&temp,sizeof(struct user),1,fp) outtemp.id temp.name temp.person_num temp.moneyendl; fclose(fp);五、函数功能:按账号存款vo
8、id save_money() /函数功能:按账号存款 out*用户存款业务*endl; out-endl; int count(); FILE *fp; int i,num,mark; struct user *temp; num=count(); /根据记录数申请空间 temp=(struct user *)malloc(num*sizeof(struct user); if(fp=fopen(file,rb)=NULL) outcannot open file!endl; printf(cannot open file!n); exit(1); for(i=0;imark; if(mar
9、knum) out你要存款账号不存在!endl; return; if(fp=fopen(file,wb)=NULL) /写方式打开文件,覆盖原文件中的内容 outcannot open file!endl; printf(cannot open file!n); exit(1); for(i=0;imoney; if(money=0) out只能为正数!endl; money=0; tempi.money +=money; /修改该用户的信息 fwrite(&tempi,sizeof(struct user),1,fp); fclose(fp); free(temp); out你存款业务已办
10、妥!endl;六、销户void del() /销户 int count(); out*注销账户*endl; out账号 用户姓名 身份证号码 存款余额endl; out-i; if(imaxnum) out你要查询的账号不存在!endl; return; while(fread(&temp,sizeof(struct user),1,fp)/循环读取每一条记录 判断是否为要查看的记录 if(temp.id=i&temp.money=0.00)/余额为0 temp.id=-1;/算无效帐户 printf(NO.%d %15s %15s %.2fn,temp.id,temp.name,temp.p
11、erson_num,temp.money); fwrite(&temp,sizeof(struct user),1,fp);/保存修改 fclose(fp);程序主要代码说明如上所示。:2测试设计与数据(设计充足合理的测试用例,说明测试策略)A一、(正常数据处理情况)办理开户业务:选择“1”分别输入用户姓名、用户身份证号、用户储存金额。二、选择以姓名的方式查看账户信息:输入“2”和“杨南儒”:三、选择以账号随机序号的方式查看账户信息:输入“3”和“2”:四、选择显示用户信息,输入“4”五、选择存款,输入“5”“1”(一号账户)“200”(存入金额):对已经办好存款业务的账户进行查询,结果显示已经存入200元:六、选择取款业务输入“6”“1”“600”(表示选择取款业务,并且取款的对象为1号账户,取出600元):B、当开户的时候存款少于100的情况:一、开户:二、出现错误提示:C、账户号由1开始自加,如现在进行第四次开户:提示账号为4:,如下图所示对账户输入的证件号无限制:显示所有账户信息:(如下图所示)3、实验分析与探讨(对测试现象和观察结果进行分析,探讨算法,提出见解)4、实验结论(算法设计是否得到实现,测试结果表明程序是否成功解决问题等)6、实验总结(成败得失,实验关键,算法改进,程序改善,自我评价)指导老师评语: 得分: 签名: 年 月 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1