于学校学生信息管理结构设计.doc_第1页
于学校学生信息管理结构设计.doc_第2页
于学校学生信息管理结构设计.doc_第3页
于学校学生信息管理结构设计.doc_第4页
于学校学生信息管理结构设计.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

C语言课程设计报告于学校学生信息管理结构设计第1章 绪论1、设计思想本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改 、增加、删除,针对这些要求设计了学生信息管理系统本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改 、增加、删除,针对这些要求设计了学生信息管理系统2、数据库种类选择C语言中可以调用数据库,但是想到数据库的复杂性,我们采用C语言用的文件的读取,与存储,用文件把数据存入记事本中,在调用记事本用的数据,记事本就相当于一个数据库,完成数据的存储与读取。3、程序语言简介C语言把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 第二章 系统分析2.1设计目的作为C课程结课设计,验证自身的学习效果,同时希望利用所学的基本知识和技能,进行简单程序设计。希望通过项目实践,熟悉巩固所学知识,以使自身达到熟练掌握C的基本知识和技能。2.2 需求分析学生管理系统的开发目的是为了实现学生成绩的信息化管理。本系统需要完成的功能有:学生信息即时录入、浏览、查询、修改、排序与统计,删除以及本人附加的密码系统。1. 学生信息录入:可对学生基本信息进行录入,录入类容有,学号、姓名、性别、年龄、数学成绩、英语成绩、计算机成绩。2. 学生信息浏览:可以及时的浏览文件中保存的信息。3.学生信息查询:可通过学生的学号或姓名来查询文件中的内容。4. 学生信息修改:可通过查询,查找到用户需要修改的学生的信息,然后进行对应的修改。5. 学生信息排序与统计:可根据总分降序或学号降序对学生信息进行排序,或选择对应的科目对学生信息进行统计,其中统计的内容包括及格率,最高与最低分和个分段所占比率。6学生信息删除:可通过查找,查找到用户需要删除的学生的信息,然后将其删除。7.密码系统:通过预先设定密码,在之后的每次运行中都需要密码验证,当密码验证正确后才能进入系统,否则会有三次输入错误的机会,错误输入三次就会自动退出程序。8.任务书要求学生信息管理系统开发学生信息至少包括学号,姓名,性别,计算机分数,数学分数,英语分数等(学号不得相等)。该系统需要能够提供下列功能: (1)系统以菜单方式工作(必做)(2)学生信息录入功能(学生信息用文件保存)(必做)(3)学生信息浏览功能 (能查看所有同学的记录)(必做)(4)学生信息查询功能,查询方式:(至少完成一项) 6行1)按学号查询 2)按姓名查询(5)成绩排序统计功能:(至少完成一项)1)按照指定的要求对学生记录进行排序 2)按照指定的学科对成绩进行统计,需要提供该门成绩的:最高分、最低分、平均分、及格率及在五个分数段的学生人数比率(0,59,60,69,70,79,80,89,90,100)(6)学生信息删除,修改功能(可选项)。 其中:学号系统随机生成,范围在2016000-2016999内。2.3 系统模块的实现 2.4 流程图录入学生信息。保存信息判断是否继续录入y退出生成随机数.信息录入(输入1执行)输入y录入信息,否则退出YN退出1、录入功能结构图信息浏览(输入2执行)从文件中读取信息到内存,用read()函数实现。将内存中信息显示到屏幕。3、浏览功能结构图4、查询功能结构图输入学号查找信息,并显示到屏幕输入姓名查找信息,并显示到屏幕退出提示输入错误信息查询(输入3执行)从文件中读取信息到内存,用read()函数实现。1、 按学号查询2、 按姓名查询5、修改功能结构图信息修改(输入4执行)从文件中读取信息到内存,用read()函数实现。输入学号判断是否有此人显示信息到屏幕显示对应修改项完成修改并保存退出显示提示信息NY6、排序于统计功能结构图总分降序排序信息排序与统计(输入5执行)选择排序或统计进入排序功能将文件信息读入内存根据要求排序学号降序排序显示信息到屏幕进入统计功能将文件信息读入内存根据要求统计对要求科目统计,并显示到屏幕。退出7、信息删除结构图信息删除(输入4执行)从文件中读取信息到内存,用read()函数实现。输入学号判断是否有此人显示信息到屏幕,并进行保存提示信息删除成功,并退出提示无此人,并退出。注:本程序中本将修改功能与删除功能合为了一个功能,只是在选择此功能的同时,会有下一个子菜单弹出供选择。这里为了能够明确的描绘流程图,因此才将其分开画。第3章 程序代码与分析3.1算法分析程序主要框架是以switch()函数构成,首先在主函数中,利用switch()函数来进行功能循环选择,其次在每个功能之中,都运用到了switch()函数,主要是起到一个选择、功能分支和信息警告的作用。本程序在文件存储方面使用了fwrite()和fread()函数,使用此函数存储数据方便简易,不足之处就是存储在文件中的信息杂乱、不能够直接识别。程序在浏览,查询,统计等许多功能中,都是使用选择法,来对数据进行一一检验的,运用这种方法能够快速的找到信息,读入与读出信息。程序使用了常见的定义标识的算法,这使得程序具有标示性,能够易懂的让读者理解程序,同时也使得程序的算法更明确,更简洁,可省略更多的运算量。程序在部分功能中都是用了死循环算法,这样做只是在使用程序的时候,当用户执行错误的操作,或者输入时,当系统发现后可以更智能化的为用户提供便捷。程序在统计与删除功能中使用了大量的循环嵌套,与函数递归调用。多重嵌套循环虽然使得数据的运算量变得非常的庞大,但是这也使得程序更精确,漏洞更少。递归的调用同死循环有些类似,都是为了智能化程序。在统计功能与排序功能中,使用了经典的算法,冒泡排序法。3.2功能分析1.密码系统这里我先解释密码系统是因为,在进入程序时,首先就是要通过密码系统的验证,只有通过验证,才能继续执行下面的功能,进入学生信息管理系统。密码系统使用了getch()函数,此函数最大的特点就是用户输入的数据在被内存接受的同时,不会被显示到屏幕,同时还会显示一个“*”来当做掩码,这样提高了密码的安全性。密码系统的密码存放于文件当中,每次运行程序的时候会将其调入内存,等待验证,这样也是在提高安全性。安全只是相对的,只要用户一旦看懂源程序,便可以轻而易举的跳过此关,直接接入系统。所以说密码系统只是为了提高知识面而设计的,并无他用。2.录入与浏览功能当用户进入到录入功能时,程序使用了一个if()语句来判断是否需要录入信息,这样可以防止用户误操。当通过if()语句后,用户便可录入数据,只是这里录入的内容当中跳过了学号,因为本程序的学号都是随机生成的,因此便没有输入。当录入的数据被暂时存放于结构体infoi中,也就是内存当中。直到用户输完本次数据之后便用fwrite()函数保存到了文件当中。然后继续判读是否需要录入信息,直到用户退出为止。浏览功能也是大同小异,只是相反,这里我先用了read()函数先将数据从文件中读取出来放到结构体infoi中,随后回到浏览函数,通过for()循环将信息一一打印到屏幕。3查询功能进入查询功能后,首先便是用read()函数读取数据,随后用户需要提供一个学号来进行查询,于是这里便要输入学号来进行校验,当校验到有和输入的学号相同时便将其信息显打印到屏幕。4.排序与统计功能进入排序或统计功能后首先是用read()函数读取数据,随后会有下一个子菜单供用户选择。其中排序的子功能有:1、总分降序排序,2、学号降序排序,统计的子功能有:1、数学、2英语、3计算机,他分分别统计的是该科目的及格率,最低最高分等,然后将其打印到桌面,排序也是如此。5.删除与修改功能进入删除与修改功能后首先是用read()函数读取数据,随后为用户提供的下一个子菜单便是删除或者修改,当用户选择其中的某一项后,用户便输入一个学号来进行校验,当校验到此人后便可对此进行操作,删除就是将信息从文件中删除掉(这里使用覆盖的方法进行删除的),修改便只是将修改的项进行保存。6.退出功能这个功能没有可以介绍的,用户输入其操作数后便直接退出了程序,运用了exit(0);函数。3.3程序的缺陷与改良前面对本程序进行了一些大概的介绍,下面我便来说说此程序的缺陷之处。首先数据量过于庞大,文件的读取操作不够优化,比如说:在保存的地方,我并没有采用数据追加的方式来对文件进行写入,而是使用了覆盖的方法,就是每次录入数据之前,先将原先的数据保存一次,然后再保存录入的数据,这样显得有些欲盖弥彰。改良的方法及时将读取方式”wt”改为”a”数据追加。文件存储方面也有一个缺陷,就是存放的数据在文件当中都是乱码,而且非常的杂乱,改良的方法及时将fwrite()和fread()函数改用fprintf()和fscanf()函数。密码系统不够完善:程序的密码系统不够完善,用户只有一次设置密码的机会,一旦密码设置便不可再程序中修改。其次就是安全性还不够高,用户可以通过修改程序直接跳过。目前暂无其他改良方法。系统功能不够齐全,虽然本次程序都是按任务书上来写的。但是我本人觉得还有很多重要的功能都没有,虽然这些功能可能涉及到我们没有学到的只是,或者说是这些功能很复杂,但本人认为功能一定要完善。3.4源代码#include#include#include#include#include #define LEN sizeof(struct mation)#define geshi %-10ld%-14s%-7s%-11d%-11d%-12dnn#define data infoi.number,,infoi.sex,infoi.math,infoi.eng,puter#define W hao.txtvoid shou();/*显示信息*/void in();/*输入信息*/int menu();/*菜单显示*/void quit();/*程序退出*/void browse();/*信息浏览*/ void query();/按学号查询void query1();/*信息查询*/void query2();/按姓名查询void stat();/*信息统计*/void stat_math();/数学分数统计int read();/文件读取void stat_eng();/英语分数统计void stat_computer();/计算机分数统计void sy();/学生信息删除与修改选择显示void alter();/学生信息修改void del();/学生信息删除void pt();/排序与统选择显示void pai();/排序选择显示void zp();/总分排序功能void xp();/学号排序功能void possword();/密码系统struct mation/定义结构体long number;/学号char name20;/姓名char sex10;/性别int math;/数学成绩int eng;/英语成绩int computer;/计算机成绩 info100;/定义结构体变量int read()int m=0;FILE *fp;if(fp=fopen(W,r)=NULL)/使用读的方式打开文件printf(文件打开出错!);while(!feof(fp)/判断文件是否读取到末尾if(fread(&infom,sizeof(struct mation),1,fp)=1)m+;/从fp所指定的文件中读取数据fclose(fp);return m;/返回人数m的值int menu()int a;printf(-n);printf(*n);printf(ttt欢迎进入学生信息管理系统n);printf(tt1、学生信息录入ttt);printf(2、学生信息浏览n);printf(tt3、学生信息查询tt);printf(t4、学生信息删除与修改n);printf(tt5、学生信息统计与排序tt);printf(6、退出n);printf(*n);printf(-n);printf(请输入对应的操作数:);scanf(%d,&a);/输入操作数来选择对应的操作return a;void shou() /*显示信息*/int i,m=0;m=read();/加载信息printf(学号: 姓名: 性别: 数学分数: 英语分数: 计算机分数: nn);for(i=0;im;i+)printf(geshi,data);void in() /*录入信息*/int i,m=0,flag;char ch2;FILE *fp;m=read();if(m=0)printf(当前无记录信息!n);elsesystem(cls);shou();/如果文件中有信息便清屏,显示信息。if(fp=fopen(W,w)=NULL)printf(文件打开出错!);return;for(i=0;im;i+)fwrite(&infoi,sizeof(struct mation),1,fp);printf(请输入Y或y来录入信息:);scanf(%s,ch);while(strcmp(ch,Y)=0|strcmp(ch,y)=0)/判断是否继续录入信息srand(unsigned)time(NULL);/用于生成随机数printf(学号:);if(m=0)infom.number=rand()%1000+2016000;/生成的随机数的范围是2016000-2016999printf(%ldn,infom.number);elsefor(;)infom.number=rand()%1000+2016000;for(i=0;im;i+)if(infoi.number=infom.number)/*判读输入的信息是否与文件中的信息有冲突*/flag=0;elseflag=1;if(flag=1)printf(%ldn,infom.number);break;printf(请输入学生姓名:);/输入信息scanf(%s,&);printf(请输入学生性别:);scanf(%s,&infom.sex);printf(请输入数学成绩:);scanf(%d,&infom.math);printf(请输入英语成绩:);scanf(%d,&infom.eng);printf(请输入计算机成绩:);scanf(%d,&puter);if(fwrite(&infom,sizeof(struct mation),1,fp)!=1)/*将输入的信息写入文件中*/printf(文件写入失败!);return;elseprintf(文件写入成功!);m+;printf(请输入Y或y来确定是否继续录入信息:);scanf(%s,&ch);fclose(fp);printf(已成功退出!n);void browse() /*浏览信息*/int i,m;m=read();/加载信息printf(学号: 姓名: 性别: 数学分数: 英语分数: 计算机分数: nn);for(i=0;im;i+)/打印文件中的所有信息printf(geshi,data);void query()int a;printf(1、按学号查询t2、按姓名查询n请输入对应操作数:);scanf(%d,&a);switch(a)case 1:query1();break;case 2:query2();break;default:printf(输入的操作数有误!n);void query1() /*按学号查询信息*/int i,flag=1,m=0;long a;FILE *fp;if(fp=fopen(W,r)=NULL)printf(文件打开出错!);while(!feof(fp)if(fread(&infom,sizeof(struct mation),1,fp)=1)m+;fclose(fp);printf(请输入你需要查询的学号:);scanf(%ld,&a);if(m=0)printf(文件中暂无信息可查!n);elsefor(i=0;im;i+)if(a=infoi.number)printf(已查询到该学生信息n);printf(学号: 姓名: 性别: 数学分数: 英语分数: 计算机分数: nn);printf(geshi,data);flag=0;if(flag!=0)printf(你需要查询的学号不存在!n);void query2()/按姓名查询信息int i,flag=1,m=0;char ch20;FILE *fp;if(fp=fopen(W,r)=NULL)printf(文件打开出错!);while(!feof(fp)if(fread(&infom,sizeof(struct mation),1,fp)=1)m+;fclose(fp);printf(请输入你需要查询的姓名:);scanf(%s,ch);if(m=0)printf(文件中暂无信息可查!n);elsefor(i=0;im;i+)if(strcmp(ch,)=0)printf(已查询到该学生信息n);printf(学号: 姓名: 性别: 数学分数: 英语分数: 计算机分数: nn);printf(geshi,data);flag=0;if(flag!=0)printf(你需要查询的姓名不存在!n);void pt()int a,m;m=read();if(m=0)printf(文件中暂无信息可供操作!n);elseprintf(1、学生信息统计tt2、学生信息排序n请输入对应的操作数:);scanf(%d,&a);switch(a)case 1:stat();break;case 2:pai();break;default:printf(输入的操作数有误!n);void pai()int a;printf(1、按总分降序排序tt2、按学号降序排序n请输入对应的操作数:);scanf(%d,&a);switch(a)case 1:zp();break;case 2:xp();break;default:printf(输入的操作数有误!n);void zp()/按总分降序排序int f,g,sum1000,m=0,t,i;char ch20;m=read();if(m=0)printf(文件中暂无信息可排序!n);elsefor(i=0;im;i+)sumi=infoi.math+infoi.eng+puter;i=0;for(f=0;fm;f+)for(g=f+1;gm;g+)if(sumfsumg)t=sumf;sumf=sumg;sumg=t;t=infof.number;infof.number=infog.number;infog.number=t;strcpy(ch,);strcpy(,);strcpy(,ch);strcpy(ch,infof.sex);strcpy(infof.sex,infog.sex);strcpy(infog.sex,ch);t=infof.math;infof.math=infog.math;infog.math=t;t=infof.eng;infof.eng=infog.eng;infog.eng=t;t=puter;puter=puter;puter=t;printf(学号: 姓名: 性别: 数学分数: 英语分数: 计算机分数: 总分: nn);for(i=0;im;i+)printf(%-10ld%-14s%-7s%-11d%-11d%-12d%-6dnn,infoi.number,,infoi.sex,infoi.math,infoi.eng,puter,sumi);void xp()/按学号降序排序int i,j,m,t;char ch20;m=read();for(i=0;im;i+)for(j=i+1;jm;j+)if(infoi.numberinfoj.number)t=infoi.number;infoi.number=infoj.number;infoj.number=t;strcpy(ch,);strcpy(,);strcpy(,ch);strcpy(ch,infoi.sex);strcpy(infoi.sex,infoj.sex);strcpy(infoj.sex,ch);t=infoi.math;infoi.math=infoj.math;infoj.math=t;t=infoi.eng;infoi.eng=infoj.eng;infoj.eng=t;t=puter;puter=puter;puter=t;printf(学号: 姓名: 性别: 数学分数: 英语分数: 计算机分数: nn);for(i=0;im;i+)printf(%-10ld%-14s%-7s%-11d%-11d%-12d%nn,infoi.number,,infoi.sex,infoi.math,infoi.eng,puter);void stat() /信息统计 int a,m;m=read();if(m=0)printf(文件中暂无信息可统计!n);else printf(1、数学tt2、英语tt3、计算机n请输入对应的操作数:);scanf(%d,&a);switch(a)case 1:stat_math();break;case 2:stat_eng();break;case 3:stat_computer();break;default :printf(输入的操作数有误!n);void stat_math()int max_math,min_math,i,sum=0,count=0,m;int b9=0,b8=0,b7=0,b6=0,b5=0;float avg,jige,duan5;m=read();max_math=info0.math;min_math=info0.math;for(i=1;im;i+)if(max_mathinfoi.math )min_math=infoi.math;for(i=0;im;i+)sum=sum+infoi.math;avg=sum/float(m);for(i=0;i=60)count+;jige=(float(count)/m)*100;for(i=0;i=90)b9+;else if(infoi.math=80)b8+;else if(infoi.math=70)b7+;else if(infoi.math=60)b6+;elseb5+;duan0=(float(b9)/m)*100;duan1=(float(b8)/m)*100;duan2=(float(b7)/m)*100;duan3=(float(b6)/m)*100;duan4=(float(b5)/m)*100;printf(信息统计结果:n);printf(最高分: 最低分: 均分: 及格率: 90-100: 80-89: 70-79: 60-69: 0-59: n);printf(%-9d%-9d%-7.2f%-9.0f%-8.0f%-8.0f%-9.0f%-7.0f%-8.0fn,max_math,min_math,avg,jige,duan0,duan1,duan2,duan3,duan4);void stat_eng()int max_eng,min_eng,i,sum=0,count=0,m;int b9=0,b8=0,b7=0,b6=0,b5=0;float avg,jige,duan5;m=read();max_eng=info0.eng;min_eng=info0.eng;for(i=1;im;i+)if(max_enginfoi.eng )min_eng=infoi.eng ;for(i=0;im;i+)sum=sum+infoi.eng;avg=sum/float(m);for(i=0;i=60)count+;jige=(float(count)/m)*100;for(i=0;i=90)b9+;else if(infoi.eng=80)b8+;else if(infoi.eng=70)b7+;else if(infoi.eng=60)b6+;elseb5+;duan0=(float(b9)/m)*100;duan1=(float(b8)/m)*100;duan2=(float(b7)/m)*100;duan3=(float(b6)/m)*100;duan4=(float(b5)/m)*100;printf(信息统计结果:n);printf(最高分: 最低分: 均分: 及格率: 90-100: 80-89: 70-79: 60-69: 0-59:n);printf(%-9d%-9d%-7.2f%-9.0f%-8.0f%-8.0f%-9.0f%-7.0f%-8.0fn,max_eng,min_eng,avg,jige,duan0,duan1,duan2,duan3,duan4);void stat_computer()int max_computer,min_computer,i,sum=0,count=0,m;int b9=0,b8=0,b7=0,b6=0,b5=0;float avg,jige,duan5;m=read();min_computer=puter;max_computer=puter;for(i=1;im;i+)if(max_puter )min_computer=puter ;for(i=0;im;i+)sum=sum+puter;avg=sum/float(m);for(i=0;i=60)count+;jige=(float(count)/m)*100;for(i=0;i=90)b9+;else if(puter=80)b8+;else if(puter=70)b7+;else if(puter=60)b6+;elseb5+;duan0=(float(b9)/m)*100;duan1=(float(b8)/m)*100;duan2=(float(b7)/m)*100;duan3=(float(b6)/m)*100;duan4=(float(b5)/m)*100;printf(信息统计结果:n);printf(最高分: 最低分: 均分: 及格率: 90-100: 80-89: 70-79: 60-69: 0-59:n);printf(%-9d%-9d%-7.2f%-9.0f%-8.0f%-8.0f%-9.0f%-7.0f%-8.0fn,max_computer,min_computer,avg,jige,duan0,duan1,duan2,duan3,duan4);void sy()int b,m;m=read();if(m=0)printf(文件中暂无信息可供删除与排序!n);elseprintf(1、学生信息删除tt2、学生信息修改n);printf(请输入对应的操作数:);scanf(%d,&b);switch(b)case 1:del();break;case 2:alter();break;default :printf(输入的信息有误!n);void del()int i,m,b,flag=0;FILE *fp;m=read();printf(请输入你删除的学生的学号:);scanf(%d,&b);for(i=0;im;i+)if(b=infoi.number)if(fp=fopen(W,w)=NULL)printf(文件打开出错!);return;printf(学号: 姓名: 性别: 数学分数: 英语分数: 计算机分数: nn);printf(geshi,data);for(;im-1;i+)infoi.number=infoi+1.number;strcpy(,infoi+1.name);strcpy(infoi.sex,infoi+1.sex);infoi.math=infoi+1.math;infoi.eng=infoi+1.eng;puter=infoi+1.computer;for(i=0;im-1;i+)fwrite(&infoi,sizeof(struct mation),1,fp);fclose(fp);printf(删除成功!n);flag=1;if(flag=0)printf(学号不存在,无法删除!n);void alter()int i,m,a,b,flag=0;FILE *fp;char ch10;m=read();for(;)printf(请输入你需要修改的学生信息的学号:);scanf(%d,&b);for(i=0;im;i+)if(b=infoi.number)printf(学号: 姓名: 性别: 数学分数: 英语分数: 计算机分数: nn);printf(geshi,data);printf(nn1、学号 2、姓名 3、性别 4、数学分数 5、英语分数 6、计算机分数n请选着你需要修改的项:);scanf(%d,&a);switch(a)case 1:printf(请输入学号:);scanf(%d,&b);infoi.number=b;break;case 2:printf(请输入姓名:);scanf(%s,ch);strcpy(,ch);break;case 3:printf(请输入性别:);scanf(%s,ch);strcpy(infoi.sex,ch);break;case 4:printf(请输入数学分数:);scanf(%d,&b);infoi.math=b;break;case 5:printf(请输入英语分数:);scanf(%d,&

温馨提示

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

评论

0/150

提交评论