#ifndef H_STUDENT_HH
#define H_STUDENT_HH
#include "stdio.h"
#include "string.h"
#include "malloc.h"
#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/
#define numsubs 5/*学科数目*/
typedef struct message_student /*结构体定义*/
{
char number[6]
char name[20]
char sex[4]
float subject[numsubs]
float score
float average
int index
}student
extern int numstus /*学生数目*/
extern student *pointer /*指向结构体数组*/
extern int lens
int menu_select() /*函数声明*/
int openfile(student stu[])
int findrecord(student stud[])
int writetotext(student stud[])
void welcome()
void display1()
void showtable()
void sort(student stu[])
void deleterecord(student stu[],int i)
void addrecord(student stud[])
void display(student stud[],int n1,int n2)
void amendrecord(student stud[])
void count(student stud[])
void sortnum(student stud[])
void sortnum2(student stud[])
void sortname(student stud[])
void sortname2(student stud[])
void sortcount(student stud[])
void sortcount2(student stud[])
void statistic(student stud[])
void display1()
#endif
#include "head.h"
int menu_select()
{
char c
printf("\n\n")
printf(" | 1. 增加学生记录5.统计信息 |\n")
printf(" | 2. 查询学生记录6.打开文件 |\n")
printf(" | 3. 修改学生记录7.保存文件 |\n")
printf(" | 4. 学生纪录排序8.显示记录 |\n")
printf(" |0.退出系统 |\n")
printf("\n\n")
printf("请选择(0-8):")
c=getchar()
getchar()
return (c-'0')
}
#include "head.h"
int findrecord(student stud[])/*查找信息*/
{
char str[2]
int i,num
if(numstus==0)
{
printf("没有可被查找的记录\n")
return -1
}
else
{
printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n")
gets(str)
if(str[0]=='1') /*按学号查找*/
{
printf("请输入学号:")
gets(str)
for(i=0i<=numstusi++)
if(strcmp(str,stud[i].number)==0)
{
display(stud,i,i)
break
}
else continue
}
else if(str[0]=='2') /*按姓名查找*/
{
printf("请输入姓名:")
gets(str)
for(i=0i<=numstusi++)
if(strcmp(str,stud[i].name)==0)
{
display(stud,i,i)
break
}
else continue
}
else if(str[0]=='3') /*按名次查找*/
{
printf("请输入名次:")
scanf("%d",&num)
getchar()
for(i=0i<=numstusi++)
if(num==stud[i].index)
{
display(stud,i,i)
break
}
else continue
}
if(i>numstus)
{
printf("没有查找所要的信息。\n")
return -1
}
return i
}
}
#include"head.h"
int openfile(student stu[])
{
int i=0,j
FILE *fp
char filename[20],str[2]
if(numstus!=0)
{
printf("已经有记录存在,是否保存?(y/n)")
gets(str)
if(str[0]=='y'||str[0]=='Y')
writetotext(stu)
}
printf("请输入文件名:")
gets(filename)
numstus=0
if((fp=fopen(filename,"rb+"))==NULL)
{
printf("无法打开该文件\n")
return(-1)
}
fscanf(fp,"%d",&numstus)
fgetc(fp)
while(i<numstus)
{
fscanf(fp,"%s",stu[i].number)
fscanf(fp,"%s",stu[i].name)
fscanf(fp,"%s",stu[i].sex)
for(j=0j<numsubsj++)
fscanf(fp,"%f",&stu[i].subject[j])
fscanf(fp,"%f",&stu[i].score)
fscanf(fp,"%f",&stu[i].average)
fscanf(fp,"%d",&stu[i].index)
i++
}
fclose(fp)
printf("文件读取成功\n")
printf("是否显示纪录?(y/n)")
gets(str)
if(str[0]=='y'||str[0]=='Y')
display(stu,0,numstus-1)
return(0)
}
#include "head.h"
void sort(student stud[])
{
int i,j=0
char str[5]
student *p
p=stud
if(numstus==0)
{
printf("没有可供查询的记录!")
}
while(1)
{
for(i=0i++)
{
printf(" 请输入查询方式:")
printf("(直接输入回车则结束查询 *** 作)\n")
printf("1.按照学号\t")
printf("2.按照姓名\t")
printf("3.按照名次\n")
gets(str)
if(strlen(str)==0) break
if(str[0]=='1')
{
printf("请输入排序次序:\n")
printf("1.升序排列\t")
printf("2.降序排列\n")
gets(str)
if(str[0]=='1')
sortnum2(p)
else
sortnum(p)
display(stud,0,numstus-1)
}
else if(str[0]=='2')
{
printf("请输入排序次序:\n")
printf("1.升序排列\t")
printf("2.降序排列\n")
gets(str)
if(str[0]=='1')
sortname2(p)
else
sortname(p)
display(stud,0,numstus-1)
}
else if(str[0]=='3')
{
printf("请输入排序次序:\n")
printf("1.升序排列\t")
printf("2.降序排列\n")
gets(str)
if(str[0]=='1')
sortcount2(p)
else
sortcount(p)
display(stud,0,numstus-1)
}
else printf("请输入1~3")
printf("是否退出排序?(y/n)")
gets(str)
if(str[0]=='y'||str[0]=='Y') break
}
return
}
}
void sortnum(student stud[])
{
int i,j
student temp
student *p
p=stud
for(i=0i<numstusi++)
for(j=0j<numstus-i-1j++)
{
if(strcmp(stud[j+1].number,stud[j].number)>0)
{
temp=*(p+j)
*(p+j)=*(p+j+1)
*(p+j+1)=temp
}
}
}
void sortnum2(student stud[])
{
int i,j
student temp
student *p
p=stud
for(i=0i<numstusi++)
for(j=0j<numstus-i-1j++)
{
if(strcmp(stud[j].number,stud[j+1].number)>0)
{
temp=*(p+j)
*(p+j)=*(p+j+1)
*(p+j+1)=temp
}
}
}
void sortname(student stud[])
{
int i,j
student temp
student *p
p=stud
for(i=0i<numstusi++)
for(j=0j<numstus-i-1j++)
{
if(strcmp(stud[j+1].name,stud[j].name)>0)
{
temp=*(p+j)
*(p+j)=*(p+j+1)
*(p+j+1)=temp
}
}
}
void sortname2(student stud[])
{
int i,j
student temp
student *p
p=stud
for(i=0i<numstusi++)
for(j=0j<numstus-i-1j++)
{
if(strcmp(stud[j].name,stud[j+1].name)>0)
{
temp=*(p+j)
*(p+j)=*(p+j+1)
*(p+j+1)=temp
}
}
}
void sortcount(student stud[])
{
int i,j
student temp
student *p
p=stud
for(i=0i<numstusi++)
for(j=0j<numstus-i-1j++)
{
if(stud[j+1].index>stud[j].index)
{
temp=*(p+j)
*(p+j)=*(p+j+1)
*(p+j+1)=temp
}
}
}
void sortcount2(student stud[])
{
int i,j
student temp
student *p
p=stud
for(i=0i<numstusi++)
for(j=0j<numstus-i-1j++)
{
if(stud[j].index>stud[j+1].index)
{
temp=*(p+j)
*(p+j)=*(p+j+1)
*(p+j+1)=temp
}
}
}
#include"head.h"
void statistic(student stud[])/*新增功能,输出统计信息*/
{
int i,j=0,k=0
char c1,str[2]
float average[numsubs],sum=0
if(numstus==0)
printf("没有可被查找的记录\n")
else
{
while(1)
{
printf("下面将统计考试成绩\n")
printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n")
c1=getchar()
printf("\t一共有个%d记录\n",numstus) /*总共记录数*/
switch(c1)
{
case '1':
for(i=0i<numstusi++)/*循环输入判断*/
{
sum+=stud[i].subject[0]
if(stud[k].subject[0]>stud[i].subject[0]) k=i
if(stud[j].subject[0]<stud[i].subject[0]) j=i
}
average[0]=sum/numstus
printf("\t科目A的最高分:\n") /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0])
printf("\t科目A的最低分是:\n") /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0])
printf("\t科目A的平均分是 %5.2f\n",average[0]) /*平均分*/
break
case '2':
for(i=0i<numstusi++)/*循环输入判断*/
{
sum+=stud[i].subject[1]
if(stud[k].subject[1]>stud[i].subject[1]) k=i
if(stud[j].subject[1]<stud[i].subject[1]) j=i
}
average[1]=sum/numstus
printf("\t科目B的最高分:\n") /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1])
printf("\t科目B的最低分是:\n") /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1])
printf("\t科目B的平均分是 %5.2f\n",average[1]) /*平均分*/
break
case '3':
for(i=0i<numstusi++)/*循环输入判断*/
{
sum+=stud[i].subject[2]
if(stud[k].subject[2]>stud[i].subject[2]) k=i
if(stud[j].subject[2]<stud[i].subject[2]) j=i
}
average[2]=sum/numstus
printf("\t科目C的最高分:\n") /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2])
printf("\t科目C的最低分是:\n") /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2])
printf("\t科目C的平均分是 %5.2f\n",average[2]) /*平均分*/
break
case '4':
for(i=0i<numstusi++)/*循环输入判断*/
{
sum+=stud[i].subject[3]
if(stud[k].subject[3]>stud[i].subject[3]) k=i
if(stud[j].subject[3]<stud[i].subject[3]) j=i
}
average[3]=sum/numstus
printf("\t科目D的最高分:\n") /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3])
printf("\t科目D的最低分是:\n") /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3])
printf("\t科目D的平均分是 %5.2f\n",average[3]) /*平均分*/
break
case '5':
for(i=0i<numstusi++)/*循环输入判断*/
{
sum+=stud[i].subject[4]
if(stud[k].subject[4]>stud[i].subject[4]) k=i
if(stud[j].subject[4]<stud[i].subject[4]) j=i
}
average[4]=sum/numstus
printf("\t科目E的最高分:\n") /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4])
printf("\t科目E的最低分是:\n") /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4])
printf("\t科目E的平均分是 %5.2f\n",average[4]) /*平均分*/
break
default:printf("输入错误!请输入1~5之间的数\n")
}
sum=0
getchar()
printf("是否继续进行统计?(y/n)")
gets(str)
if(str[0]=='y'||str[0]=='Y')
else break
}
}
}
#include"head.h"
int writetotext(student stud[])/*将所有记录写入文件*/
{
int i=0,j
FILE *fp
char filename[20]
printf("输入文件名称:")
gets(filename)
fp=fopen(filename,"w")
fprintf(fp,"%d\n",numstus)
while(i<numstus)
{
fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex)
for(j=0j<numsubsj++)
fprintf(fp,"%f ",stud[i].subject[j])
fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index)
i++
}
fclose(fp)
printf("已成功存储!\n")
display(stud,0,numstus-1)
numstus=0
return 0
}
#include"head.h"
void welcome()
{
printf("\t*************************************************************\n")
printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n")
printf("\t*************************************************************\n")
}
void showtable()
{
printf("---------------------------------------------------------------------------------------\n")
printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n")
printf("---------------------------------------------------------------------------------------\n")
}
void display(student stud[],int n1,int n2)
{
int i
showtable()/*显示表头*/
for(i=n1i<=n2i++)
printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index)
/*通过循环输出数据*/
}
void display1()
{
printf("\t\t本系统由计应精英一组亲情制作\n\n")
printf("\t\t制作人员列表:(按比划)\n")
printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n")
printf("\n\n")
getchar()
}
#include"head.h"
#include<string.h>
void amendrecord(student stud[])
{
char str[5] /*供用户输入*/
int i=-1,j
if(numstus==0)/*没有记录返回*/
printf("没有可供修改的记录!")
while(i<0)
{
i=findrecord(stud)
if(i>=0)
{
printf("要删除这个学生的信息吗?(y/n)")
gets(str)
if(str[0]=='y'||str[0]=='Y')
{
deleterecord(stud,i)
count(stud)
}
else
{
printf("确定要修改这个学生的信息吗?(y/n)")
gets(str)
if(str[0]=='y'||str[0]=='Y')
{
printf("下面请重新输入学生的信息:\n")
printf("请输入学号:")
gets(stud[i].number)
printf("请输入姓名:")
gets(stud[i].name)
printf("请输入性别(男/女 1/0):")
gets(str)
if(str[0]=='0')
strcpy(stud[i].sex,"女")
else
strcpy(stud[i].sex,"男")
stud[i].score=0
printf("请按顺序输入成绩:")
for(j=0j<numsubsj++)
{
scanf("%f",&stud[i].subject[j])
stud[i].score+=stud[i].subject[j]
}
getchar()
stud[i].average=stud[i].score/numsubs
}
count(stud)
}
display(stud,0,numstus-1)
}
printf("是否继续进行其他修改?(y/n)\n")
gets(str)
if(str[0]=='y'||str[0]=='Y')
i=-1
else i=1
}
}
void deleterecord(student stu[],int i) /*删除信息*/
{
int j
while(i>=0)
{
for(j=ij<numstusj++)
stu[j]=stu[j+1]
numstus--
printf("删除成功!\n")
}
}
void count(student stud[])
{
int i,j
for(i=0i<numstusi++)
{
stud[i].index=1
for(j=0j<numstusj++)
if(stud[j].score>stud[i].score)
stud[i].index++
}
}
#include "head.h"
void addrecord(student stud[])
{
int i=0,j,num
char str[5]
if(numstus!=0)
{
printf("已有记录存在是否覆盖?(y/n)\n")
gets(str)
if(str[0]=='Y'||str[0]=='y')
i=0
else i=numstus
}
printf("请输入增加的学生信息条目数:")
scanf("%d",&num)
if(i==0)
numstus=num
else numstus+=num
if(numstus>lens)
{
lens+=50
pointer=(student *)realloc(pointer,lens*LEN)
}
printf("请输入学生信息:\n")
for(i<numstusi++)
{
getchar()
printf("请输入学号:")
gets(pointer[i].number)
printf("请输入姓名:")
gets(pointer[i].name)
printf("请输入性别(男/女 1/0):")
gets(pointer[i].sex)
if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女")
else strcpy(pointer[i].sex,"男")
printf("请输入各科成绩:(按ABCDE的顺序):")
stud[i].score=0
for(j=0j<numsubsj++)
{
scanf("%f",&stud[i].subject[j]) /*计算总分*/
stud[i].score+=stud[i].subject[j]
}
stud[i].average=stud[i].score/numsubs /*计算平均分*/
}
count(stud) /*附名次*/
display(stud,0,numstus-1)
getchar()
}#include "head.h"
int numstus
int lens
student *pointer
void main()
{
int i=1
char str[2]
lens=100
pointer=(student *)malloc(lens*LEN) /*分配内存*/
numstus=0
welcome() /*欢迎界面*/
while(i>0)
{
i=menu_select() /*控制菜单*/
switch(i)
{
case 1:addrecord(pointer)break /*增加学生信息*/
case 2:findrecord(pointer)break /*查询学生信息*/
case 3:amendrecord(pointer)break /*修改学生信息*/
case 4:sort(pointer)break /*学生信息排序*/
case 5:statistic(pointer)break /*统计信息*/
case 6:openfile(pointer)break/*打开文件*/
case 7:writetotext(pointer)break /*保存文件*/
case 8:display(pointer,0,numstus-1)break /*显示记录*/
case 0:
if(numstus!=0) printf("是否保存当前记录?(y/n)")
gets(str)
if(str[0]=='y'||str[0]=='Y')
writetotext(pointer)
i=-1break/*退出系统*/
default:printf("请输入数字0~8:\n")i=1 /*输入错误*/
}
}
printf("\t\t欢迎再次使用本系统。\n\n")
display1()
}
自己一改就能用,给我加分哈!
代码如下:
for(i=0i<66i++)
printf("*")
printf("\n")
printf("1.Input record\n")
printf("2.Caculate totel and average score of every course\n")
printf("3.Caculate totel and average score of every student\n")
printf("4.Sort in descending order by total score of every student\n")
printf("5.Sort in ascending order by total score of every student\n")
printf("6.Sort in ascending order by number\n")
printf("7.Sort in ascending order by name\n")
printf("8.Search by number\n")
printf("9.Search by name\n")
printf("10.Statistic analysis for every course\n")
printf("11.List record\n")
printf("12.Write to a file\n")
printf("13.Read from a file\n")
printf("0.Exit\n")
for(i=0i<66i++)
printf("*")
printf("\n")
printf("Please enter your choice:")
printf("\n")
输入函数:
void Readscore (STU stu[],int n,int m) //1.输入数据
{
int i,j
for(i=0i<ni++)
{
printf("Input student's ID ,name and score")
scanf("%ld",&stu[i].studentID)
scanf("%s",stu[i].studentName)
for(j=0j<mj++)
scanf("%d",&stu[i].score[j])
}
}
数据处理函数:
void Tota (STU stu[],int n,int m) //2.计算每门课程的总分和平均分
{
int i,j,sum[M]
double ave[M]
for(j=0j<mj++)
{
sum[j]=0
for(i=0i<ni++)
{
sum[j]=sum[j]+stu[i].score[j]
}
ave[j]=(double)sum[j]/n
}
for(i=0i<mi++)
printf("Project %d 总分=%d,课程的平均分=%f\n",i+1,sum[i],ave[i])
}
void Datasort_1 (STU stu[],int n,int m) //3.计算每个学生的总分和平均分
{
int i,j,sum[N]
double ave[N]
for(i=0i<ni++)
{
sum[i]=0
for(j=0j<mj++)
{
sum[i]=sum[i]+stu[i].score[j]
}
ave[i]=(double)sum[i]/m
}
for(i=0i<ni++)
printf("ID:%10ld,Name: %s Allscore=%d,The ave=%f\n",stu[i].studentID,stu[i].studentName,sum[i],ave[i])
}
排序函数:
void Datasort_2 (STU stu[],int n,int m) //4.按每个学生的总分由高到低排出名次表
{
int i,j,k,h,sum[N]
STU t
for(i=0i<ni++)
{
sum[i]=0
for(j=0j<mj++)
{
sum[i]=sum[i]+stu[i].score[j]
}
}
for(i=0i<ni++)
{
k=i
for(j=i+1j<nj++)
{
if (sum[j]>sum[k])
k=j
}
if(i!=k)
{
t=stu[i],h=sum[i]
stu[i]=stu[k],sum[i]=sum[k]
stu[k]=t,sum[k]=h
}
}
for(i=0i<ni++)
printf("ID:%10ld,Name:%s,Score:%d\n",stu[i].studentID,stu[i].studentName,sum[i])
}
void Datasort_3 (STU stu[],int n,int m) //5.按每个学生的总分由低到高排出名次表
{
int i,j,k,h,sum[N]
STU t
for(i=0i<ni++)
{
sum[i]=0
for(j=0j<mj++)
{
sum[i]=sum[i]+stu[i].score[j]
}
}
for(i=0i<ni++)
{
k=i
for(j=i+1j<nj++)
{
if (sum[j]<sum[k])
k=j
}
if(i!=k)
{
t=stu[i],h=sum[i]
stu[i]=stu[k],sum[i]=sum[k]
stu[k]=t,sum[k]=h
}
}
for(i=0i<ni++)
printf("ID:%10ld,Name:%s,score:%d\n",stu[i].studentID,stu[i].studentName,sum[i])
}
void Datasort_4 (STU stu[],int n,int m) //6.按学号由小到大排出名次表
{
int i,j,k
STU t
for(i=0i<ni++)
{
k=i
for(j=i+1j<nj++)
{
if (stu[j].studentID<stu[k].studentID)
k=j
}
if(i!=k)
t=stu[k],stu[k]=stu[i],stu[i]=t
}
for(i=0i<ni++)
{
printf("ID:%10ld,Name:%s\n",stu[i].studentID,stu[i].studentName)
for(j=0j<mj++)
printf("Project %d Score:%d\n",j+1,stu[i].score[j])
}
}
数据分析函数:
void Statistis (STU stu[],int n,int m) //10.
{
int i,j,count_1,count_2,count_3,count_4,count_5
for(j=0j<mj++)
{
count_1=0,count_2=0,count_3=0,count_4=0,count_5=0
for(i=0i<ni++)
{
if(stu[i].score[j]>=90)
count_1++
else if(stu[i].score[j]>=80)
count_2++
else if(stu[i].score[j]>=70)
count_3++
else if(stu[i].score[j]>=60)
count_4++
else
count_5++
}
printf("project %d\n",j+1)
printf("优秀:%d\t优秀率:%f%\n",count_1,(float)count_1/n)
printf("良好:%d\t良好率:%f%\n",count_2,(float)count_2/n)
printf("中等:%d\t中等率:%f\n",count_3,(float)count_3/n)
printf("及格:%d\t及格率:%f\n",count_4,(float)count_4/n)
printf("不及格:%d\t不及格率:%f\n",count_5,(float)count_5/n)
}
}
数据界面打印函数:
void List (STU stu[],int n,int m) //11.
{
int i,j,sum[N]
double ave[N]
for(i=0i<ni++)
{
sum[i]=0
for(j=0j<mj++)
{
sum[i]=sum[i]+stu[i].score[j]
}
ave[i]=(double)sum[i]/m
}
for(i=0i<ni++)
{
printf("ID:%10ld,Name:%s\n",stu[i].studentID,stu[i].studentName)
for(j=0j<mj++)
{
printf("Score %d :%d\n",j+1,stu[i].score[j])
}
printf("Allscore=%d\n平均分%f\n",sum[i],ave[i])
}
}
文件处理函数:
void WritetoFile(STU stu[],int n,int m) //将每个学生的记录信息写入文件
{
Tota(stu,n,m)
Datasort_2 (stu,n,m)
FILE *fp
if((fp=fopen("student.txt","w"))==NULL)
{
printf("Failure to open student.txt!\n")
exit(0)
}
fwrite(stu,sizeof(STU),n,fp)
fclose(fp)
}
int ReadfromFile(STU stu[],int n,int m)//从文件中读出每个学生的记录信息并显示
{
FILE *fp
int i
if((fp=fopen("student.txt","r"))==NULL)
{
printf("Failure to open student.txt!\n")
exit(0)
}
for(i=0!feof(fp)i++)
{
fread(&stu[i],sizeof(STU),1,fp)
}
fclose(fp)
printf("Total student is %d.\n",i-1)
n=i-1
List(stu,n,m) //输出从文件中读出的信息到屏幕上
return i-1
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)