银行账户管理系统的基本功能模拟_课程设计论文.doc_第1页
银行账户管理系统的基本功能模拟_课程设计论文.doc_第2页
银行账户管理系统的基本功能模拟_课程设计论文.doc_第3页
银行账户管理系统的基本功能模拟_课程设计论文.doc_第4页
银行账户管理系统的基本功能模拟_课程设计论文.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计说明书题目银行账户管理系统的基本功能模拟系(部)基础学院专业(班级)姓名学号指导教师起止日期5课程设计任务书课程名称:程序设计基础课程设计设计题目:银行账户管理系统的基本功能模拟、手机软件通讯录模块的功能模拟(任选一题)已知技术参数和设计要求:需求说明及要求:题目一:银行账户管理系统的基本功能模拟银行账户管理系统的基本功能业务描述如下:银行系统一般由三个部分组成,atm机、前台的柜台系统和后台数据服务的系统。后台服务系统管理着储户的账号、密码、余额和姓名等信息,而前台系统和atm机为用户使用这些功能提供了接口。一般而言,用户使用银行系统时使用的功能为:开户注册(一般在柜台)、销户、取款、存款、转账、查询余额、修改密码等等。本题假设所有上述功能都在atm机上实现,为了模拟真实的atm业务环境,本系统必须实现开户注册(一般在柜台)、销户、取款、存款、转账、查询余额、修改密码的功能。用户通过开户业务在本系统开立银行账户,之后可以通过该银行账户登陆atm系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。本系统各个业务有如下注意点:(1) 登陆系统用户登陆之前,必须在登陆界面输入其银行账户,通过其正确输入的银行账户登陆系统。(2) 开户业务 要使用本系统必须首先执行开户业务开立新的银行账户,并且将此新开的银行账户存储于文件当中。同时,系统以身份证号码作为开户的充分条件,即一个身份证号码只能开立一次银行账户。(3) 存款业务 客户登陆系统后,选择存款业务,即可以将输入的存款金额存入相应的账户。(4) 取款业务客户登陆系统后,选择取款业务,即可以将输入的取款金额从相应的银行账户取出,但是取款金额必须大于目前的账户余额。(5) 查询业务 客户登陆系统后,可以选择查询业务,查询账户余额。(6) 转账业务 客户登陆系统后,可以选择转账业务,进行转账。注意的是转账的目的账户必须是本系统已经存在的银行账户。(7) 修改密码客户登陆系统后,可以选择修改密码业务,进行密码修改。设计要求:为控制实现难度,本系统可以使用结构数组完成。除上述功能外,应该对用户的信息中的一项进行排序(如将余额按照从高到低的顺序排序)。题目二:手机软件通讯录模块的功能模拟手机软件通讯录模块的功能的业务描述如下:通信录必须为用户提供联系人管理、系统管理和帮助三个部分。通讯录管理包括联系人信息录入、联系人信息修改、联系人信息删除和联系人信息查询的功能,在此基础上可以设置联系人分组;系统管理包括密码修改、分组配置;帮助需要为用户提供系统的操作帮助。联系人的信息应该包括:联系人姓名、联系人电话号码、联系人地址。本系统各个业务有如下注意点:(1)登陆系统用户在登陆界面输入用户名和密码,校验正确后可以登陆系统。(2)联系人管理新增的联系人信息保存至文件,之后对联系人信息的管理都是对文件中的联系人信息进行处理,并且可以将联系人信息进行分组。(3)系统管理可以在密码修改中修改本用户的密码;可以在此功能中配置系统需要的分组名,并且将分组名保存到文件中。(4)帮助帮助业务需要为用户提供系统的操作帮助。设计要求:为控制实现难度,本系统可以使用结构数组(数组长度为500)完成。除上述功能外,应该对用户的信息中的一项进行排序(如将联系人的电话号码进行排序)。各阶段具体要求:1、需求分析阶段熟悉系统业务,从业务中抽取出系统的需求,形成完善的需求说明书。2、系统设计阶段根据需求,进行程序设计,包括定义系统的界面、定义系统数据的存储方式等,形成完善的设计说明书。3、编码实现阶段(1)完成代码编写 (2)要求代码编写规范4、系统测试阶段(1)完成功能调试(2)要求完成必要的测试工作5、交付实施阶段(1)提交可正常执行的系统(2)提交系统需求说明书、设计说明书、程序代码(3)撰写课程设计报告书(4)要求规范地书写文档设计工作量:(1)软件设计:完成问题陈述中所提到的所有需求功能。(2)论文:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。工作计划:软件开发进度如下,论文同步进行;1.选定题目(2课时)2.需求分析(2课时)3.概要设计(2课时)4.详细设计(2课时)5.编码实现(8课时)6.系统测试(1课时)7.模拟实施(1课时)8.答辩(2课时)注意事项n 提交文档 长沙学院课程设计任务书(每学生1份) 长沙学院课程设计论文(每学生1份) 长沙学院课程设计鉴定表(每学生1份)指导教师签名: 日期: 教研室主任签名: 日期:系主任签名: 日期: 长沙学院课程设计鉴定表姓名学号专业 软件工程班级12软件设计题目 银行账户管理系统的基本功能模拟指导教师 卓琳指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类; 目 录第1章 问题描述61.1 设计内容61.2 设计要求61.1.1 功能要求61.1.2 界面要求71.1.3 技术要求7第2章 设计阶段82.1 系统总体设计82.1.1 各功能模块间的关系82.2 系统详细设计92.2.1 主函数92.2.2 开户函数92.2.3 登录函数92.2.4 输出账号信息函数92.2.5 菜单函数92.2.6 存款函数92.2.7 取款函数92.2.8 查询函数102.2.9 转账函数102.2.10 密码修改函数102.2.11 初始化账号信息函数102.3 流程图10第3章 界面与测试103.1 界面设计113.2 测试17结 论18参考文献19附 录20第1章 问题描述1.1 设计内容本课题是设计一个atm取款机的模拟程序。本程序主要思路是把文件转为链表,利用链表实现用户信息的建立,查找,密码修改,存款,取款及转账等功能,并将链表排序运用到其中,再将链表转为文件。文件用来保存用户的信息。1.2 设计要求银行atm系统的功能必须包括开户,登陆,初始化账号信息,排序,存款,取款,转账,查询,修改密码等功能。用户进入系统后可以先开户,然后登陆,再进行其他一系列的操作。而且再查询用户信息时还采用了排序的方式,使得用户在查看信息时更直观。1.1.1 功能要求 为了模拟真实的银行atm系统,本系统需实现功能的有开户,登陆,退出,初始化账号信息,输出账号信息,存款,取款,查询,转账,修改密码等。用户首先需要开户,然后就能在本系统完成登陆,初始化账号信息,输出账号信息,存取款,查询,转账,修改密码,退出等功能。以下是主要功能实现方法:1、 开户功能 用户在使用本系统之前首先得注册一个账号。需要姓名,身份证号,账号,密码,以及开户预存金额等。注册完成后系统会有提示。而且每个账号只能开一个户。2、 登陆功能在本系统开过户的用户可以通过正确输入账号密码登陆。3、 存款功能客户登陆成功后,会出现一个界面,选择存款对应的编号,输入要存入的金额即可。4、 取款功能 客户登陆成功后,会出现一个界面,选择取款对应的编号,输入小于账号上金额的数目即可成功取款。5、 查询功能客户登陆成功后,会出现一个界面,选择查询对应的编号,即可查询账号信息。6、 转账功能客户登陆成功后,会出现一个界面,选择转账对应的编号,然后输入要转入的账号和金额。但是输入的金额必须小于转出账号上的金额,且转入的账号必须为存在的即成功开户的账号。7、 修改密码功能客户登陆成功后,会出现一个界面,选择修改密码对应的编号,输入新密码两次即可。8、 初始化账号信息功能客户登陆成功后,会出现一个界面,选择初始化对应的编号按提示操作即可。1.1.2 界面要求用户界面应做到界面直观简洁,菜单操作简单易懂。1.1.3 技术要求首先要求各功能能完整实现,其次修改密码时,为了保证准确性,要求密码输入两次。整个系统的代码不能杂乱无章,要有条理,看起来很清晰。排序时,需要使用多种排序方法来实现。包括冒泡排序法,选择排序法,插入法排序。然后还要求下次登录时,已注册的账号信息还保存还能使用。这就需要用到文件来保存信息。第2章 设计阶段2.1 系统总体设计首先进入系统有一个提示界面,一共有八个选项,分别是开户,登录,退出,初始化账号信息,冒泡排序,选择排序,插入法排序,输出账号信息。开户需要输入姓名,身份证号,账号,密码和金额。开户成功后即可登录。登录时需要输入账号和密码,登录成功后会出现一个界面,一共有六个选项,分别是存款,取款,转账,查询,修改密码和退出。选择相应的编号进行相应的操作。2.1.1 各功能模块间的关系功能模块间的关系主要是把各模块联系起来。1、 主界面主界面一共有八个选项。分别是开户,登陆,退出,初始化账号信息,冒泡排序,选择排序,插入法排序和输出账号信息。新用户需要先开户,按照提示成功开户后即可完成登陆等功能,老用户可以直接登陆。2、 开户界面客户在主界面选择编号1即可进入开户界面,然后按要求输入姓名,身份证号,账号,密码以及开户金额即可开户成功。3、 登录界面客户在主界面选择编号2即可进入登录界面。登陆时需要输入正确的账号密码即可登陆成功。登陆成功后系统会自动跳转到一个菜单界面。4、 菜单界面客户登录成功后即可进入菜单界面,菜单界面一共有六个选择编号,分别是存款,取款,转账,查询,修改密码,退出。客户可以选择相应的编号根据提示完成所需要的服务。2.2 系统详细设计主界面在主函数里面,其他所有的界面也都应以函数的形式表示。当输入错误时重新循环,输入正确自动跳出循环开始下一步。2.2.1 主函数主函数内首先定义一个指针变量,系统清屏,设计主界面。并嵌套一个switch函数把信息里的代码给予实际意义,选择相应的代码后跳转到相应界面。2.2.2 开户函数在主函数内选择1编号即可进入开户函数。跳转页面完毕清屏,接着输出提示语句让客户一步一步的输入结构体内的信息即可。2.2.3 登录函数在主函数内选择2编号即可进入登录函数。输入账号开始查找该账号的节点,找到了即可继续输入密码,并判断该密码是否为正确密码,找不到则会出现提示该账号不存在。2.2.4 输出账号信息函数用户输入相应的编号后,系统查找节点,然后把各节点相应的信息输出。2.2.5 菜单函数嵌套一个switch函数把信息里的代码给予实际意义,选择相应的代码后跳转到相应界面。2.2.6 存款函数用户输入需要存款的金额,在该节点上加上新存入的金额数,并提示存款成功。2.2.7 取款函数用户输入需要取款的金额,用一个if函数判断该节点的剩余金额是否大于输入的要取金额,若金额不足则提示该账号余额不够,若剩余金额足够则输出取款成功的语句。取款成功后该节点上金额自动减少相应的金额。2.2.8 查询函数输出该节点所有信息,包括姓名,身份证号,账号,密码,余额。2.2.9 转账函数输入需要转入的账号后查找该账号,若找到该账号则自动跳出循环,若账号不存在则会出现提示。正确输入账号并找到该账号的节点后输入要转入的金额,并且所转入的金额必须小于转出账号上的金额。若大于则会出现提示说明余额不足。转账完成后转出账户金额会自动减少相应金额,转入账户金额会自动增加相应金额。2.2.10 密码修改函数用户直接输入新密码两次,使用一个if函数判断前后输入的密码是否一致,若一致则密码修改成功,若不一致则会提示两次密码不一致。2.2.11 初始化账号信息函数用户输入链表节点的个数。然后查找节点,排出用户信息。把节点街道链表上去。主界面2.3 流程图 其他操作 退出修改密码 转账 查询 取款 存款初始化登陆退出输出账号信息插入排序选择排序开户冒泡排序第3章 界面与测试3.1 界面设计 该程序界面十分直观简洁友好。客户可根据提示完成相应的操作。当输入错误时还会有提示。 图3.1.1主界面 图3.1.2 开户界面 图3.1.3登陆界面 图3.1.4存款界面 图3.1.5取款界面 图3.1.6转账界面 图3.1.7查询界面 图3.1.8修改密码界面 图3.1.9初始化账号信息界面 图3.1.10冒泡排序界面 图3.1.11选择排序界面 图3.1.12插入法排序界面 图3.1.13输出账号信息界面3.2 测试 测试该程序的十分简单,首先进入主界面后,选择相应的编号完成相应的操作。所选编号必须是界面上有的。输入正确则可继续操作,输入错误会出现提示输入错误的提示框。比如选择了登陆对应的编号,然后输入正确的账号密码登陆即可,若输入错误会有一个提示框出现。登陆成功后会出现一个菜单界面,界面上一共有六个选择编号,分别是存款,取款,查询,转账,修改密码,退出。定义一个变量接收用户从键盘输入的数据,后面有switch语句,根据用户输入的数据来判断执行哪个条件中的函数,这些函数的功能和菜单中提供的操作是相对应。调用完服务函数后再调用一个函数将修改后的信息存进文件中,用户下次进入时将会显示修改后的信息。 结 论经过一个学期的战斗,atm自动存取款机的模拟程序终于被我完成了,尽管这其中还有些瑕疵,但是我还是为我自己感到欣慰,因为从一开始,对于链表,我是什么都不懂,虽然上个学期老师有给我们讲解过,但是还是一无所知。而现在却能够完成简单的单向链表建立,删除,插入,查找。此次atm系统比上个学期的更完善,还有很多的改进。需要完成的功能有开户功能,登陆功能,退出,排序,账号初始化,存款,取款,查询,转账,修改密码等。整个程序的基本思路就是把文件转为链表,用链表完成各功能的实现,把链表转为文件。即把账号信息等用文件的方式保存,方便下次登录时所有信息都还在。然后在界面上需要界面看起来很直观,一目了然,操作简单,使一般的人都能很容易懂得这个程序的操作。回顾整个做程序的过程,似乎有那么点遗憾,因为从开学一直到现在,真正的认认真真在做程序的时间也就只有每周一的第一大节课,有时候上课时还要去刷刷微博什么的,花在程序上的时间真是少之又少,花在程序上的精力也非常少。直到要答辩了才开始着急,翻书找资料什么的。在答辩之前,我一直以为,程序一定要运行才可以,答辩后,我才知道,程序能运行并不代表你已将所有的东西都弄懂了。有很多东西虽然虽然会写,但是不能引申,只会生搬硬套。通过这次的实训,使我对单向链表有了一定了了解,并能完成一些简单的操作,链表建立,便利,插入,删除。并能将链表建立,便利,插入3个操作运用到实际中去。能够以返回值的形式调用函数。学会了传递参数和使用文件。参考文献 1 袁庆龙,候文义ni-p合金镀层组织形貌及显微硬度研究太原理工大学学报,2001,32(1):51-53.(连续出版物:序号 主要责任者文献题名j刊名,出版年份,卷号(期号):起止页码)2刘国钧,王连成图书馆史研究北京:高等教育出版社,1979:15-18,31(专著:序号 主要责任者文献题名出版地:出版者,出版年:起止页码)3 孙品一高校学报编辑工作现代化特征中国高等学校自然科学学报研究会科技编辑学论文集(2)北京:北京师范大学出版社,1998:10-22(论文集:序号 主要责任者文献题名主编论文集名出版地:出版者,出版年:起止页码)4 张和生地质力学系统理论太原:太原理工大学,1998(学位论文:序号 主要责任文献题名保存地:保存单位,年份)5 冯西桥核反应堆压力容器的lbb分析.北京:清华大学核能技术设计研究院,1997(报告:序号 主要责任文献题名报告地:报告会主办单位,年份)6 姜锡洲一种温热外敷药制备方案中国专利:881056078,1983-08-12(专利文献:序号专利所有者专利题名p专利国别:专利号,发布日期)7 gb/t 161591996,汉语拼音正词法基本规则s北京:中国标准出版社,1996(国际、国家标准:序号标准代号,标准名称s出版地:出版者,出版年)8 谢希德创造学习的思路人民日报,1998-12-25(10)(报纸文章:序号主要责任者文献题名报纸名,出版日期(版次)9 王明亮中国学术期刊标准化数据库系统工程的eb/ol/pub/wml.txt/9808 10-2.html,1998-08-16/1998-10-04(电子文献: 序号主要责任者电子文献题名文献类型/载体类型电子文献的出版或可获得地址,发表或更新的期/引用日期(任选) 附 录#include#include#include#includestruct accountchar name8;char id18;char acc_no8;char mima8; int balance; struct account *next;void inquire();void transfer(struct account *head ,struct account *curnode);void deposit(struct account *curnode); void withdraw(struct account *curnode);void login_success(struct account *head,struct account *curnode);void kaihu();struct account* create_acc(struct account *head);void delete_acc();struct account * createlist(int n); void outputlist(struct account *temp);void exchange(struct account*p,struct account*q);void bubble_sort(struct account*head); void change_password();void select_sort(struct account*head);void login_success(struct account *head,struct account *curnode);struct account *insert(struct account *head,struct account*p);struct account *insert_sort(struct account*head);struct account* login(struct account *head );void save(struct account *head);struct account *read()/把文件转为链表file *fp;struct account *head,*p1,*p2;if(fp=fopen(d:atmaccount_list,rb)=null)return(null);p1=p2=(struct account *)malloc(sizeof(struct account);head=p1;fread(head,sizeof(struct account),1,fp);while(!feof(fp)p2=p1;p1=(struct account *)malloc(sizeof(struct account);fread(p1,sizeof(struct account),1,fp);p2-next=p1;p2-next=null;fclose(fp);return (head);int main()int n; int chose=0;struct account *head=null,*curnode;/定义指针变量head=read(); system(pause); do system(cls); printf(n); printf(#n); printf(# #n); printf(# 1.开户 #n); printf(# 2.登录 #n); printf(# 3.退出 #n); printf(# 4.初始化账号信息 #n); printf(# 5.冒泡排序 #n); printf(# 6.选择排序(金额按大到小排列) #n); printf(# 7.插入法排序(金额按小到大排列) #n); printf(# 8.输出账号信息 #n); printf(#n); printf(n); printf(请选择:); scanf(%d,&chose); switch(chose) case 1:head=create_acc(head);break; case 2: curnode=login(head); if (curnode) login_success(head,curnode); else printf(登陆失败!请重新登陆!); break; case 3: save(head);exit(0);break; case 4: printf(请输入链表初始结点的个数:n); scanf(%d,&n); head=createlist(n);break; case 5: bubble_sort(head); printf(冒泡法排序成功!n); break; case 6: select_sort(head); printf(选择法排序成功! n); break; case 7: insert_sort(head); printf(排序成功! n); break; case 8: if (head) outputlist(head); else printf(账号信息空n); break; default: printf(输入有误,请重新输入!n); system(pause);while(1);return 0;void delete_acc()printf(销户n); void login_success(struct account *head,struct account *curnode) int serld=0; do system(cls); printf(n); printf(# 菜 单 #n); printf(* #n); printf(* 1.存 款 2.取 款 #n); printf(* #n); printf(* 3.转 账 4.查 询 #n); printf(* #n); printf(* 5.修改密码 6.退 出 #n); printf(* #n); printf(#nn); printf(请选择:); scanf(%d,&serld); switch(serld) case 1: deposit(curnode);break; case 2: withdraw(curnode);break; case 3: transfer( head, curnode);break; case 4: inquire(curnode);break; case 5: change_password(curnode);break; case 6: return; default: printf(输入有误,请重新输入!n); system(pause);while(1);void transfer(struct account *head ,struct account *curnode)/转账 int money; char acc_no8; struct account *dest_acc=null; printf(请输入转入目标账号n); scanf(%s,acc_no); dest_acc=head; while(dest_acc!=null) if(strcmp(dest_acc-acc_no,acc_no)=0) break; dest_acc=dest_acc-next; if(dest_acc=null) printf(目标账号不存在n); else printf(请输入转账金额n); scanf(%d,&money); if(curnode-balance=money) curnode-balance-=money; dest_acc-balance+=money; printf(账号成功转出%d元n,money); else printf(余额不够!); void withdraw(struct account *curnode)/取款 int money; printf(请输入取款金额n); scanf(%d,&money); if(curnode-balancemoney) curnode-balance-=money;printf(账号成功取出%d元n,money); else printf(余额不够!); void change_password(struct account *curnode)/修改密码 char pass8,pass18; printf(请输入新密码n); scanf(%s,pass); printf(请再次输入新密码n); scanf(%s,pass1); if (strcmp(pass,pass1)=0) strcpy(curnode-mima,pass); printf(密码修改成功!n); else printf(两次输入密码不一致); void deposit(struct account *curnode)/存款 int money; printf(请输入存款金额n);scanf(%d,&money);curnode-balance+=money;printf(账号成功存入%d元n,money);void inquire(struct account *curnode)/查询 printf(姓名t身份证号码t账号t密码t余额n); printf(%st,curnode-name); printf(%stt,curnode-id); printf(%st,curnode-acc_no); printf(%st,curnode-mima); printf(%dn,curnode-balance); void kaihu()system(cls); printf(#开 户 功 能 #nn); struct account *createlist(int n)/初始化账号信息int i; struct account*temp,*tail=null,*head=null; char name8;char id18;char acc_no8;char mima8; int balance; head=(struct account*)malloc(sizeof(struct account);if(head=null)printf(no memory avoiable);return null;elseprintf(第一个用户信息n);printf(姓名:);scanf(%s,name);printf(身份证号:);scanf(%s,id);printf(账号:);scanf(%s,acc_no);printf(密码:);scanf(%s,mima);printf(余额:);scanf(%d,&balance);strcpy(head-name ,name); strcpy(head-id ,id); strcpy(head-acc_no ,acc_no); strcpy(head-mima,mima); head-balance=balance; head-next = null; tail = head;for(i=0;iname ,name);/把节点接到链表上去strcpy(temp -id ,id);strcpy(temp -acc_no ,acc_no);strcpy(temp -mima,mima);temp-balance=balance; temp-next = null; tail-next = temp; tail = temp; return head;void outputlist(struct account *head)/输出账号信息 struct account *wang=head; if(wang) printf(姓名t身份证号码t账号t密码t余额n); while(wang) printf(%st,wang-name); printf(%stt,wang-id); printf(%st,wang-acc_no); printf(%st,wang-mima); printf(%dn,wang-balance); wang=wang-next; return;struct account* create_acc(struct account *head)/新开户 struct account *temp=null,*zhu=head; temp = (struct account*)malloc(sizeof(struct account); if (temp = null) printf(内存不足!); return head; else printf(请输入新开账户的用户信息n); printf(姓名:n); scanf(%s,temp-name); printf(身份证号码:n); scanf(%s,temp-id); printf(账号:n); scanf(%s,temp-acc_no); printf(密码:n); scanf(%s,temp-mima); printf(余额:n); scanf(%d,&temp-balance); temp-next=null; if (head=null) head=temp;return head;while(zhu-next!=null) zhu=zhu-next; zhu-next=temp; return head;void exchange(struct account*p,struct account*q) struct account temp,*p1,*q1; p1=p-next;q1=q-next; temp=(*p); (*p)=(*q);(*q)=temp; p-next=p1; q-next=q1;void bubble_sort(struct account*head)/冒泡排序 struct account *p1,*p2,*pmax=null; while(1) p1=head; for(p2=p1-next;p2!=null&p2!=pmax;p2=p2-n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论