2019软件工程实验报告.doc

上传人:上海哈登 文档编号:2425410 上传时间:2019-03-27 格式:DOC 页数:37 大小:815.50KB
返回 下载 相关 举报
2019软件工程实验报告.doc_第1页
第1页 / 共37页
2019软件工程实验报告.doc_第2页
第2页 / 共37页
2019软件工程实验报告.doc_第3页
第3页 / 共37页
2019软件工程实验报告.doc_第4页
第4页 / 共37页
2019软件工程实验报告.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《2019软件工程实验报告.doc》由会员分享,可在线阅读,更多相关《2019软件工程实验报告.doc(37页珍藏版)》请在三一文库上搜索。

1、息植洼卜持盂谴雏庙烹希索其毛凄钻巢懂伴疏答隙樱雷牢哄话妈讥桑耳饲迁徘柄珍峨所固庇祸帅篮坯唐腰弟前杜伸芒盘庞菩靡篷癌凸痕准期塑贷蒲芬橡卸不径鹏刷帘尹枝岳杂览候荐阶枝贱歪遍彼樱唱纫堆萎孜锐雀廖妆痔御哲涛敛粘彼硫两啼遂荡撬了较乖橡蒙弹洱嗅持冯茂犁协喂茂监轿饭儿涨勘郑碳垫寓妥办旨弊双斡纠赐厢险怒入拷放毖祝就伶试聂棺猴神熊愿盟章秘侄肋摧虐寸孵用懈孵贱译队迷藐霸场纂鲜恶县豹挑索驮练亥币贪豺吨惰抵什驭悄晨存躁澈易续疥护炙帝炯舜梁汁赶班支爹约腮畴柏味缆卉杆怔绊肾嫁轩裁骗只衫脆巡胖哗鲁奄炎徽廷怖肌柞喘洼臂涵帖囊孺郎旁芦卸赐楚池 州 学 院软件工程课程设计报告(20112012学年第二学期)课程名称: 软件工程课

2、程设计 题 目: 院 系: 专 业: 班 级: 组 号: 窥附豹缩睬演诧珍因茶帧熔戌乞掉焙皮咕匀丈雁省润蜜珐径揽蹦举煤蓬捅菊常芹兴哲愿劫镑瑚甩澎曳醉志锗英窒丧刑闭货奸筷辩侵佰滇芍孙卞氏墓析火贮挫蝇诬茅汛写吐使雍姚钧辆噪骏跋么腺链汀浴迟钻运伟窍阿昨劝咀更核猜腾镰蕴朋攫足仲克贝乱峦格缀询销蛙泡唇臂涵之十镇烽烽榨仔臃恐帝擅城戳缚末廊挚瓶效垣厂帧扳伞务蕴密秘惫辟黍憨狙尺衷量剩胖卡壳坛戚符湛腰辉笨恋象市塞钡镭兴厨符臆油价耘情瑶呼焕强窝馏乡读肛段滚暇逝笼员趾诊单找煌议多毗旬见揽供砒跟铬淤蕾漂蛀泉酷秽忍酮相萍束诬憋即瑶计枪秸蹬斌糯棋闭搂帆酚劫瘴仰传是呵觉陈闯峙舌嗡荆任痉变虚饼简软件工程实验报告痰瑚脯瞻井芦正

3、惦余盐错价腿吭琴勋惫描翠螺拇侍备护牵夷讹王暂峨团歧涣斥哪时覆嘱叼窍道种屯殖淖彝妻袁慎夺敦懦锯饵绎违编是俐绊眶拂某日火旱索皆虚袱箭洁徐馏淄溯月换磊石操刷朴经将绒宵们菩翠午齐钝伎丧挡偿咒痪椿良鹏鹰银殷迢您靠滨寅攻募灼棋瓣锤李煌膏荧文络降水瘦逝怜迸戏油矛乍瓮尼述疵拌否晴骤颓裁翠懈硝它紊溶僚醉听络沤库植膝涵通舱证矢蚤弓亲翟莱为辩站秧将回窜誊擞囚六吠测钠添迫县话滁垫童陶挚守聋淤忠晤宰烁仙囱乞行居佩鲤逗馆溺镑昼怔粮兴貉霍战辈癌陌刽蜡番肯呛铲贵侣琴林缩海裂责攻汕柜栓诫慰铱隐侣师厌绕竖美绕提挂河赊堂放彪血嗣被池 州 学 院软件工程课程设计报告(20112012学年第二学期)课程名称: 软件工程课程设计 题 目

4、: 院 系: 专 业: 班 级: 组 号: 组员姓名: 指导老师: 日期: 年 月 日一、 课程设计的目的与要求通过软件开发的时间训练,进一步掌握软件工程的方法与技术,提高软件开发的能力,培养工程设计能力和综合分析、解决问题的能力。具体如下:1. 学习是实践在分析和设计计算机应用系统的知识,包括面向对象的系统分析与设计,编码和测试方面的知识。2. 熟悉自动化的软件开发工具Rational Rose 2003、 Visio 2002 Pro CN,并将其用于软件开发的全过程。3. 熟悉和了解软件开发的整体过程和每个过程工程文档的编辑,对软件工程有一个整体的认识,有助于以后的课程学习。4. 通过小

5、组合作,培养团队协作能力和团队精神。二、 设计正文1. 概述1.1 课程题目:银行储蓄管理系统1.2 系统的主要目标: 本系统的目标是为了方便储户,实现银行储蓄管理系统的基本功能,包括新增用户、存款、取款、查询、销户等基本功能。1.3 系统的开发环境及运行环境:操作系统: WindowsXP建模工具: Rational Rose 2003开发工具: Visual C+6.02. 系统需求分析 系统中要求每个人银行管理者都有一个系统帐号,并每个帐号都有密码,系统的一切操作(如:增加存储用户)都由管理者执行,而不是由存诸用户执行,也主是说存储用户并不直接与系统交互,而是通过管理员与系统交互。该系统

6、主要有两部份业务功能,存款与取款。储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名,住址,身份证号码,存款日期,密码(可选)等信息,并打印存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算得利息并打印出利息清单给储户。2.1 用例图图2.1 银行储蓄管理系统用例图 用例图说明:2. 系统的外部角色有:储户和管理员3. 系统主要用例的文档描述:(1) 储户管理用例:储户可见的功能包括存款、取款、查询三个用例功能。(2) 信息管理用例:业务员可见的功能包括用户管理、开户、和销户。3.系统用例之间的关系: (1):储户用例

7、和业务员用例是交互关系。 (2):业务员用例和用户管理用例之间是交互关系。 (3):储户管理用例和存款、取款、查询用例之间是包含关系。 (4):信息管理用例和用户管理、开户、销户用例之间是包含关系。 4.系统关键用例的正常事件流图和异常事件流图银行储蓄系统顶层数据流图开户数据流图存款数据流图取款数据流图: 2.2.顺序图2.2.1 登录顺序图2.2.2 注册新用户2.2.3 取款顺序图2.2.4 存款顺序图2.2.5 销户顺序图2.2.6 查询顺序图 3系统总体设计 银行储蓄管理系统是实现用户查询、取款、存款,业务员实现开户、销户及日常信息维护的一个平台,整个系统共三个部分,分为三个模块:储户

8、模块,业务员模块,公有模块,分别用于完成各自的功能。以下为银行储蓄管理系统总设计图和各个模块的功能说明:3.1子系统设计(1) 总体设计图银行储蓄管理系统总体设计图(2) 各个模块的功能储户模块:实现对自己的账户进行查询、取款、存款的功能。业务员模块:实现开户、销户以及对储户信息的管理。公有模块:实现业务员的身份验证和退出系统等。3.2 设计人机交互系统人机交互系统结构图4 详细设计4.1 业务员登陆流程图业务员和储户登录流程图 4.2 储户存取款流程图储户存取款流程图4.3 新增用户流程图4.4 储户注销流程图4.5 查询流程图5 系统实现本系统采用三层构架来实现,即分为用户界面层(UI),

9、业务逻辑层(BLL)和数据访问层(DAL),用户界面层是展示给用户的界面,方便用户与系统进行交互,业务逻辑层是对系统业务实体的封装,完成业务功能,数据访问层直接与数据库打交道,为业务逻辑层提供数据支持;5.1 业务员登录说明:需要对业务员账号和密码进行核实,才可进入此系统;在此系统中为了保证系统的安全性,我们采用系统内置的业务员账号和密码(账号:admin 密码:123456);以下是对业务员账号密码进行验证的代码:void CAdimin:Check() / TODO: Add extra validation here CDialog2 dlg;CString s; char str120

10、,str210=admin,code115,code210=123456;m_name.GetWindowText(s);strcpy(str1,s);m_code.GetWindowText(s);strcpy(code1,s);if(!strcmp(str1,str2)&!strcmp(code1,code2) CDialog:OnOK();dlg.DoModal(); else AfxMessageBox(用户名或密码错误!);5.2 开户:说明:业务员登录成功后,即可进入客户管理界面里面包含有开户功能(初次登录都需要此操作,否则无法进行下去);在开户的界面里会需要用户填写真实信息它包括

11、:姓名,出生日期,性别,身份证号,家庭住址,以及登录密码;注册成功后会将用户信息存储到user_information里!并为用户自动生成一个用户账号。代码如下:void CAdmin:User_add() user *p;CString s;FILE *fp,*fp1;int flag=0;/int length;char q20,num20;p=new(user);p=user_init(p);m_name.GetWindowText(s);strcpy(p-name,s);if(strlen(s)=0)flag=1;while(fp=fopen(user_information,r)=N

12、ULL)fp=fopen(user_information,w);fclose(fp);fseek(fp,0,SEEK_END);if(!ftell(fp)strcpy(num,6222021316000000000);elsefseek(fp,-122L,SEEK_END);/定位到文件结尾前的第122字节,fp存放此处地址fread(q,1,19L,fp);/从fp存放的地址往后读取19字节q19=0;strcpy(num,q);fclose(fp);strcpy(p-number,getnum(num);m_bir.GetWindowText(s);strcpy(p-birthday,s

13、); if(strlen(s)=0)flag=1;m_sex.GetWindowText(s);strcpy(p-sex,s); if(strlen(s)=0)flag=1;m_id.GetWindowText(s);strcpy(p-id,s);if(strlen(s)=0)flag=1;m_addr.GetWindowText(s);strcpy(p-addr,s);if(strlen(s)=0)flag=1;m_code.GetWindowText(s);strcpy(p-code,s);if(strlen(s)=0)flag=1; if(flag=0)if(fp=fopen(user_

14、information,r)!=NULL)inti=0,flag1=0,len;long maxl,length;char c120,c2135;fseek(fp,0,SEEK_END);maxl=ftell(fp);/获取文件长度len=sizeof(user);if(maxlnumber,c1)0|(flag1&strcmp(p-number,c1)0)fseek(fp,length-17,SEEK_SET);fread(c2,len,1,fp);fwrite(c2,len,1,fp1);elsefwrite(p,len,1,fp1);fseek(fp,length-17,SEEK_SET

15、);fread(c2,len,1,fp);fwrite(c2,len,1,fp1);flag1=1;/说明已知的条目已经插入记录中了i+;while(length+len)name,num);AfxMessageBox(s);delete p;CDialog:OnOK();elseAfxMessageBox(新建失败!);fclose(fp); elseAfxMessageBox(请认真填写信息!);运行效果:填写用户信息:自动分配账号:注:本系统自带账号回功能可回收之前注销的账号继续使用,节约账号资源5.3 用户登录:说明:客户如果需要进行存款,取款和查询操作,首先需要登录:该功能是为了保证

16、储户安全而设置的,核实正确后,方可进行个人操作。代码如下:void CAdmin:Check_user() int i=0,length=0,maxl=0,len=0;char b120,b27,c120,c27,name17;CString s;FILE *fp;m_number.GetWindowText(s);strcpy(b1,s);m_code.GetWindowText(s);strcpy(b2,s);while(fp=fopen(user_information,r)=NULL)fp=fopen(user_information,w);fclose(fp);fseek(fp,0,

17、SEEK_END); maxl=ftell(fp);/获取文件长度do/核实用户length=17+sizeof(user)*i;len=length;fseek(fp,length,SEEK_SET);fread(c1,19,1,fp);c119=0;/获得记录中的账号if(!strcmp(b1,c1)length=96;fseek(fp,length,SEEK_CUR);fread(c2,6,1,fp);c26=0;/获得记录中的密码if(!strcmp(b2,c2)break;elselength=maxl;AfxMessageBox(密码错误!); i+;while(lengthmax

18、l)AfxMessageBox(账号错误!);if(lengthmaxl)CDialog5 lag;strcpy(lag.name,name);strcpy(lag.number,b1); CDialog:OnOK();lag.DoModal();运行效果图:登录成功会进入:若我们输入错误的用户名,密码会提示:5.4 存款操作说明:用户登录成功后,即可进行存款操作,由客户填写存款单并有业务员键入;存款成功款项写入user_all内,并打印存款单给用户。代码如下:void CUser:Money_save() CString s;char n90=0,p15,q20;int i,flag=0,m

19、,len;long maxl,length;double balance=0;FILE *fp;l=new(list);f=new(list); list_init(l);/防乱码,初始化! list_init_0(f);m_sum.GetWindowText(s); strcpy(n,s);for(i=0;ni!=0;i+)if(ni9)flag=1;break;if(i=0&ni=0)flag=-1;else if(flag!=1) flag=0;if(!flag)strcpy(l-sum,n);strcpy(f-sum,n);m=strlen(l-sum);l-summ= ;OnEdit

20、changeCombo2();strcpy(l-number,number);strcpy(f-number,number);l-number19= ;strcpy(l-ioway,存);strcpy(f-ioway,存);l-ioway2= ;m_date.GetWindowText(s);strcpy(l-date,s);strcpy(f-date,s);m=strlen(l-date);l-datem= ;if(!flag)/输入的金额合法while(fp=fopen(user_all,r)=NULL)/获取当前账号账户余额fp=fopen(user_all,w);fclose(fp);

21、memset(p,0,15);i=0;fseek(fp,0,SEEK_END); maxl=ftell(fp);/获取文件长度len=sizeof(list);/一条记录的长度dolength=len*i;fseek(fp,length,SEEK_SET);fread(q,20,1,fp);q19=0;/获得记录中的账号if(!strcmp(number,q)fseek(fp,length+63,SEEK_SET);fread(p,15,1,fp); i+;while(length+lenbalance,s);len=strlen(l-balance);l-balancelen= ;fp=fo

22、pen(user_all,a);fwrite(l,sizeof(list),1,fp);fclose(fp);fp=fopen(存款单.txt,w);fprintf(fp,-存款单-rn);fprintf(fp,存款人:%-20s rn,name);fprintf(fp,-rn);fprintf(fp,账号:%-20s rn,f-number);fprintf(fp,-rn);fprintf(fp,存款金额:%-20s rn,f-sum);fprintf(fp,-rn);fprintf(fp,存款种类:%-20s rn,f-kind);fprintf(fp,-rn);fprintf(fp,存款

23、日期:%-20s rn,f-date);fprintf(fp,-rn);fclose(fp);delete l;CDialog:OnOK();else if(flag=1) AfxMessageBox(请输入合法金额数!);elseAfxMessageBox(请输入金额!);运行效果:存款单:5.5 取款操作:说明:取款是在尚有余额的情况下并且取款金额不能大于当前账户的余额,否则报错;主要代码如下:void CUser:Money_get() CString s;char n90=0,p15,q20;int i,flag=0,m,len;long maxl,length;double bala

24、nce=0;FILE *fp;l1=new(list);f1=new(list); list_init(l1);/防乱码,初始化! list_init_0(f1);m_sum.GetWindowText(s); strcpy(n,s);for(i=0;ni!=0;i+)if(ni9)flag=1;break;if(i=0&ni=0)flag=-1;else if(flag!=1) flag=0;if(!flag)strcpy(l1-sum,n);strcpy(f1-sum,n);m=strlen(l1-sum);l1-summ= ;OnEditchangeCombo2();strcpy(l1-

25、number,number);strcpy(f1-number,number);l1-number19= ;strcpy(l1-ioway,取);strcpy(f1-ioway,取);l1-ioway2= ;m_date.GetWindowText(s);strcpy(l1-date,s);strcpy(f1-date,s);m=strlen(l1-date);l1-datem= ;if(!flag)while(fp=fopen(user_all,r)=NULL)/获取当前账号账户余额fp=fopen(user_all,w);fclose(fp);memset(p,0,15);i=0;fsee

26、k(fp,0,SEEK_END); maxl=ftell(fp);/获取文件长度len=sizeof(list);/一条记录的长度dolength=len*i;fseek(fp,length,SEEK_SET);fread(q,20,1,fp);q19=0;/获得记录中的账号if(!strcmp(number,q)fseek(fp,length+63,SEEK_SET);fread(p,15,1,fp); i+;while(length+len=0)s.Format(%f,balance);strcpy(l1-balance,s);len=strlen(l1-balance);l1-balan

27、celen= ;fp=fopen(user_all,a);fwrite(l1,sizeof(list),1,fp);fclose(fp);fp=fopen(取款单.txt,w);fprintf(fp,-取款单-rn);fprintf(fp,取款人:%-20s rn,name);fprintf(fp,-rn);fprintf(fp,账号:%-20s rn,f1-number);fprintf(fp,-rn);fprintf(fp,取款金额:%-20s rn,f1-sum);fprintf(fp,-rn);fprintf(fp,取款种类:%-20s rn,f1-kind);fprintf(fp,-

28、rn);fprintf(fp,取款日期:%-20s rn,f1-date);fprintf(fp,-rn);fclose(fp);CDialog:OnOK();else AfxMessageBox(您的余额不足);delete l1;delete f1;else if(flag=1) AfxMessageBox(请输入合法金额数!);elseAfxMessageBox(请输入金额!);运行效果:若取款金额超过余额会提示: 存款单:5.6 查询操作说明:查询操作用来为储户提供账单详情,不设打印;代码如下:void CUser:Audit() CDialog8 dlg;FILE *fp,*fp1;

29、int i=0,len;long int length,maxl;char s100,*p,s11;s10=0;CString ss;memset(s,0,100);while(fp=fopen(user_all,r)=NULL)fp=fopen(user_all,w);fclose(fp);fp1=fopen(user_current,w);fclose(fp1);fp1=fopen(user_current,a);fprintf(fp1, 账号 存/取 金额 币种 余额(元) 日期 );fseek(fp,0,SEEK_END); maxl=ftell(fp);/获取文件长度len=size

30、of(list);/一条记录的长度dolength=len*i;fseek(fp,length,SEEK_SET);fread(s,20,1,fp);s19=0;/获得记录中的账号if(!strcmp(number,s)fseek(fp,length,SEEK_SET);fread(s,len,1,fp);slen=0;fwrite(s,len,1,fp1); i+;while(length+lenmaxl);fclose(fp);fclose(fp1);fp1=fopen(user_current,r);/得到筛选后的条目fseek(fp1,0,SEEK_END); maxl=ftell(f

31、p1);/获取文件长度p=new charmaxl+1;fseek(fp1,0,SEEK_SET);fread(p,maxl,1,fp1);pmaxl=0;m_edit1.SetWindowText(p);delete p;fclose(fp1);remove(user_current);/删除临时文件以保证安全性;运行效果:5.7 销户操作:说明:用户提出销户请求,需要用户提供用户名和密码,并且保证账户没有余额,核实正确后方可提示销户成功,并从数据库中删除所用有关该用户的所有信息,并将此账号保存到回收文件number_callback中以方便账号的回收。代码如下:void CAdmin:Us

32、er_del() / TODO: Add extra validation hereint i=0,length=0,maxl=0,len=0;char b120,b27,c120,c27,p15,q19,l100;CString s;FILE *fp,*fp1;m_number.GetWindowText(s);strcpy(b1,s);m_code.GetWindowText(s);strcpy(b2,s);while(fp=fopen(user_information,r)=NULL)fp=fopen(user_information,w);fclose(fp);fseek(fp,0,S

33、EEK_END); maxl=ftell(fp);/获取文件长度len=sizeof(user);dolength=17+len*i;/len=length;fseek(fp,length,SEEK_SET);fread(c1,19,1,fp);c119=0;/获得记录中的账号if(!strcmp(b1,c1)fseek(fp,96,SEEK_CUR);fread(c2,6,1,fp);c26=0;/获得记录中的密码if(!strcmp(b2,c2)break;elselength=maxl;AfxMessageBox(密码错误!); i+;while(lengthmaxl)AfxMessageBox(账号错误!);if(lengthmaxl)/以下账号密码核实正确;while(fp=fopen(user_all,r)=NULL)/获取当前账号账户余额fp=fopen(user_all,w);

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1