您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言课程设计报告1
C语言课程设计院系:工程学院姓名:彭聪学号:20051000084班号:05205216指导教师:王老师日期:2007年9月银行卡管理系统一、题目要求请设计《银行卡管理系统》,要实现系统的主要功能模块有:(1)实现系统内制卡、发卡功能;(2)实现系统内卡帐户几相关帐户管理;(3)实现卡交易和合法性检查;(4)实现卡金融交易积分功能;(5)实现卡报表功能;(6)数据以文件形式存储。[提示]制卡:指申请一个银行卡,但还没有使用。发卡;指该卡已经起用。实现卡交易:指从卡中消费掉一定金额。二、需求分析根据题目要求,由于数据以文件形式存储,因此应该提供文件的输入和输出等操作;在程序中需要浏览卡帐户信息,应提供显示、查找等操作;另外还应该提供键盘式选择采单实现功能选择。三、总体设计根据需求分析,可以将这个银行卡系统的设计分为5个模块:制卡、发卡、管理、交易、报表。四、详细设计1.主函数主函数比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。[流程图]N银行卡管理系统制卡发卡管理交易报表显示功能选项输入n,判断n是否是0-6Y将main()函数体内的界面选择部分语句单独抽取出来作为一独立函数,便于系统执行完每部分功能模块后能够方便返回到系统界面。[程序]voidmenu(){intn,w1;/*变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围内*/do{voidnew_card();voiduse_card();voidconduct();voidtransaction();voidform();puts(\n\t\t*********************MENU*********************\n\n);puts(\t\t\t\t1.Newcard);puts(\t\t\t\t2.Usecard);puts(\t\t\t\t3.Accountconduct);puts(\t\t\t\t4.Transaction);puts(\t\t\t\t5.Reportform);puts(\t\t\t\t6.Exit);puts(\n\n\t\t*********************************************\n);printf(Choiceyournumber(1-6):[]\b\b);scanf(%d,&n);if(n1||n6)/*对选择的数字作判断*/{w1=1;getchar();}elsew1=0;}while(w1==1);/*选择功能*/switch(n){case1:new_card();break;case2:use_card();break;case3:conduct();break;case4:transaction();break;case5:form();break;case6:exit(0);}根据n的值调用个功能模块函数}main(){menu();}2.各功能模块设计(1)制卡模块[需求分析]该模块的功能是增加新的卡,也就是新的帐户,让系统自动设置帐户原始信息(卡号自动加1,用户名为NO,钱数和积分都为0)。采用追加的方式保存。[分析]由题目知,系统内的数据有卡号、姓名、钱数和积分。单独看各数据信息,卡号和积分是整数,可以采用整型;姓名是字符型,采用字符型数组;钱数有可能为小数可采用实型。数据信息存放在文件中,一条记录对应一个帐户。用结构体数组存放若干个帐户信息。structuser{intnum;charname[10];floatmoney;intscore;}user[30];[流程图][程序]/**************制卡模块****************/voidnew_card()/*制卡模块*/{intn,i;n=load_user();user[n+1].num=n+1;/*设置帐户数据*/strcpy(user[n+1].name,NO);/*设置帐户数据*/user[n+1].money=0;user[n+1].score=0;/*设置帐户数据*/save(n+1);printf_onedata(n+1);menu();}(2)发卡模块调用加载函数n=load_user(),并计算可以记录个数n设置要追加的帐户数据保存追加的记录[需求分析]该模块的功能是起用新的卡,就是把新的卡的用户名设置为实际用户的名字,钱数和积分以用户的实际数据设置,从键盘中输入并写到原来输入文件中。[流程图]YNNY[程序]/***************发卡模块**************8*/voiduse_card()/*发卡模块*/{intn,c,b=0,i,k=-1;n=load_user();printf(Howmanynewcardsdoyouwant?[]\b\b);scanf(%d,&c);/*输入需要的卡数*/for(i=0;in+1;i++)/*查找用户名为NO的卡*/if(strcmp(user[i].name,NO)==0){k=i;b+=1;if(b=c)printf(\nThereisanewcard!\n);name(i);/*调用命名函数*/elsemenu();调用加载函数n=load_user();并计算可以记录个数n输入要起用的卡数c是否找到此卡查找用户名为NO的卡返回菜单调用命名函数,修改帐户信息记录找到的卡数bb=c返回菜单保存修改记录}if(k==-1){printf(\nthereisnonewcard!\n);menu();}}(3)管理模块[需求分析]该模块的功能有两个,一是显示所有帐户记录,二是根据输入的卡号查找对应的帐户信息。该模块采用菜单的形式分成3个部分:浏览模块,查找模块,退出。[流程图]NY[程序]/*****************管理模块******************/voidconduct(){intn,w1;do{voidbrowse_data();intsearch_data();puts(\n\t\t********************MENU********************\n\n);puts(\t\t\t\t1.Browseall);puts(\t\t\t\t2.Search);puts(\t\t\t\t3.Back);puts(\n\n\t\t********************************************\n);printf(Choiceyournumber(1-3):[]\b\b);scanf(%d,&n);if(n1||n3){w1=1;getchar();}elsew1=0;}while(w1==1);switch(n)显示功能选项输入n,判断n是否是0-3根据n的值调用个功能模块函数{case1:browse_data();break;case2:search_data();break;case3:menu();break;}}(4)浏览模块[需求分析]该模块的功能是显示所有帐户信息。[流程图][程序]/*********************浏览模块***********************/voidbrowse_data()/*浏览模块*/{intn;n=load_user();printf_data(n);printf_back();}(5)查找模块[需求分析]该模块的功能是根据输入的卡号查找对应的帐户信息。查找完就返回到管理模块的菜单。[流程图]YN显示帐户信息(10个一屏)按任意键显示下一屏按任意键返回菜单是否找到此帐户信息输入要查找的卡号提示没有找到显示找到的帐户信息YN[程序]/******************查找模块********************/voidsearch()/*查找模块*/{inti,n,k,w1,w2,w3;structuseru;n=load_user();do{do{k=-1;printf(\n\nEnternumberthatyouwanttosearch!NO:);scanf(%d,&u.num);/*输入要查找的卡号*/for(i=0;in;i++)/查找卡号*/if(u.num==user[i].num){k=i;printf_onedata(k);}if(k==-1){printf(\n\nNoexist!please);printf(\n\nAreyouagain?\n\t1.again2.Noandback[]\b\b);scanf(%d,&w1);if(w1==2){menu();break;}}}while(k==-1&&w1==1);printf(\n\nwhatdoyouwanttodo?\n\t1.Searchanother2.Backmenu[]\b\b);scanf(%d,&w2);}while(w2==1);conduct();}(6)交易模块[需求分析]该模块的功能是实现用户普通交易和金融交易,对交易后卡内钱数扣减和积分的增添。该模块有3部分:普通交易,金融交易,返回。[流程图]询问用户是否继续查找返回管理模块菜单让用户选择1)查找另一个2)返回管理模块菜单是否找到此帐户信息输入要进行交易的卡号YN[程序]/******************交易模块********************/voidtransaction()/*交易模块*/{inti,w2;voidprintf_face(inti);i=search_data();if(i!=-1)printf_face(i);/*调用显示菜单函数*/}voidprintf_face(inti)/*显示菜单函数*/{intw2;printf(\n\nWhatdoyouwanttodo?\n\t1.commontransaction2.financialtransaction3.back[]\b\b);scanf(%d,&w2);switch(w2){case1:common(i);break;case2:financial(i);break;case3:menu();break;}}(7)普通交易模块[需求分析]该模块的功能是根据用户输入的交易数据进行钱数的扣减,然后保存修改。[流程图]YNYN交易金额是否大于或等于卡内金额输入要交易的金额提示输入错误进行钱数的扣减并保存询问用户是否继续交易提示没有找到显示找到的帐户信息返回管理模块菜单让用户选择1)普通交易2)金融交易3)返回[程序]voidcommon(inti)/*普通交易模块*/{intt,n;floatw;load_user();printf(Imputhowmuch:[]\b\b);scanf(%d,&w);/输入交易金额*/if(user[i].money=w){printf(\nItisallowed!\n);user[i].money-=w;save(i);}elseprintf(\nInputError!\n);printf_face(i);}(8)金融交易模块[需求分析]该模块的功能是根据用户输入的金融交易数据进行钱数的扣减和积分的增添,然后保存修改。[流程图]YNYN[程序]/*******************金融交易模块*********************/voidfinancial(inti)/*金融交易模块*/{intt,n;floatw;返回交易模块菜单让用户选择1)再交易2)返回交易模块菜单交易金额是否小于或等于卡内金额输入要交易的金额提示输入错误进行钱数的扣减和积分的增添并保存询问用户是否继续交易返回交易模块菜单让用户选择1)再交易2)返回交易模块菜单load_user();printf(Imputhowmuch:[]\b\b);/*输入交易今额*/scanf(%d,&w);if(user[i].money=w){p
本文标题:C语言课程设计报告1
链接地址:https://www.777doc.com/doc-3259613 .html