注册 登录
编程论坛 C++教室

编写学生信息管理系统

阳光大地 发布于 2007-05-29 22:11, 5642 次点击
用C/C++写一个“学生信息管理系统”,有5个子程序,分别是“学生信息查询”“增加学生信息”“删除学生信息”“修改学生信息”“退出系统”,5个子程序又有子程序,可适当增加其它功能.
32 回复
#2
aipb20072007-05-30 11:48
在这里搜索下吧,遍地都是。

怎么都问这个,现在老师都出这个题目吗?
#3
hu8605032007-05-30 15:51
怎么是个老师都是这问题啊~
#4
阳光大地2007-05-31 00:43
是啊,是期末的题目.很难啊,才学了一年就出这么难的题.
#5
天下第二刀2007-05-31 00:55

学了 一年了这个还不会,
要问问自己干什么了

#6
zkkpkk2007-05-31 09:25
以下是引用aipb2007在2007-5-30 11:48:20的发言:
在这里搜索下吧,遍地都是。

怎么都问这个,现在老师都出这个题目吗?

因为这个问题好象是某本比较有名的书的例子,所以那些老一辈看过这本书的个个都出

#7
TenY2007-05-31 12:48
自己硬吃.
唯一的出路
#8
sqyang5212007-05-31 15:01

你就用栈来做吧,这样简单点的。

然后建个空文件,把输入的数据自动存入这个文件中。

#9
zkkpkk2007-05-31 22:24
以下是引用sqyang521在2007-5-31 15:01:54的发言:

你就用栈来做吧,这样简单点的。

然后建个空文件,把输入的数据自动存入这个文件中。

用栈来做?你这个设计模式倒是很新颖的

#10
lzq_wise12007-06-04 14:06

用链表就简单多了,不是很难的,自己搞定吧

#11
李震2007-06-04 17:27

你确定老师是要求用C做的吗?这样的题目只有大2时候学完了数据库才出的题,如果用C做是很麻烦的,如果是,你用链表做吧

#12
阳光大地2007-06-04 18:33
用C或者C++都得.
#13
jinchaoren2007-06-06 22:55
呵呵,一个student类就搞定了.
#14
jinchaoren2007-06-06 23:57
可以按照学号录入,然后增加和删除程序分别是类的构造和析构函数.其他的可以用起成员函数实现.
#15
trhuang2007-06-07 17:53
这种题就是我们现在的练习题,我是大2生,大1时上了c和c++,现在学的是课程设计,也不知这种题目是是算浅还是难!
#16
撒旦2007-06-08 14:22
你可以上网查询,我看网上有很多这类的,不像我的通信录,唉
#17
jssqpwj2007-06-09 21:10

c++ 比c 多了 你该高兴才对

#18
xiongxueming2007-06-26 21:33

我用的是数组:
#include<stdio.h>
struct node
{
int id;
char name[10];
float math,english,computer;
};
struct biao
{
struct node chen[50];
int biaochang;
}biao1;
void chengjiluru()
{
int a,i,s;
float z;
char x;
loop:for(;;)
{
if (biao1.biaochang>=50)
printf("%s\n","gaibiaoyiman!");
else
{
for(;;)
{
printf("qingshuruxuehao:");
scanf("%d",&a);
if(a<0||a>50)
{
printf("shuruxuehaoyouwu!\n");
continue;
}
else
break;
}
for(i=0;i<biao1.biaochang;i++)
{
if(a==biao1.chen[i].id)
{
printf("gaishengyicunzai!\n");
break;
}
}
if(i==biao1.biaochang)
{ s=biao1.biaochang;
biao1.chen[s].id=a;
printf("qingshuruxingming:");
scanf("%s",&biao1.chen[s].name);
for(;;)
{
printf("qingshurushuxue:");
scanf("%f",&z);
if(z<0||z>100)
{
printf("shurushuxueyouwu!\n");
continue;
}
else break;
}
biao1.chen[s].math=z;
for(;;)
{
printf("qingshuruyingyu:");
scanf("%f",&z);
if(z<0||z>100)
{
printf("shuruyingyuyouwu!\n");
continue;
}
else break;
}
biao1.chen[s].english=z;
for(;;)
{
printf("qingshurujisuanji:");
scanf("%f",&z);
if(z<0||z>100)
{
printf("shurujisuanjiyouwu!\n");
continue;
}
else break;
}
biao1.chen[s].computer=z;
biao1.biaochang=biao1.biaochang+1;
}
}
for(;;)
{
printf("shifoujixuluru(Y/N):");
getchar();
x=getchar();
if(x=='n'||x=='N')
goto lp;
else
{if(x=='y'||x=='Y')
goto loop;
else
{printf("shurubuhefa!\n");
continue;}
}
}
}lp:;
}
char fuzhi(char a[10],char b[10])
{
int i=0;
while(b[i]=='\0')
a[i]=b[i];
return a[10];
}
void chengjishanchu()
{
int d,i,x;
char q;
loop:for(;;)
{
if(biao1.biaochang==0)
{printf("gaibiaowujilu!\n");
break;
}
else
{
for(;;)
{
printf("qingshuruyaoshanchudexuehao:");
scanf("%d",&d);
if(d<0||d>50)
{printf("xuhaoyouwu!\n");
continue;}
else
break;
}
if(biao1.biaochang==1)
biao1.biaochang=biao1.biaochang-1;
else
{
for(i=0;i<biao1.biaochang;i++)
{
if(biao1.chen[i].id==d)
break;
}
if(i==biao1.biaochang)
printf("xuehaobucunzai!\n");
else
if(i==biao1.biaochang-1)
biao1.biaochang=biao1.biaochang-1;
else
{
{for(x=i+1;x<=biao1.biaochang-1;x++)
{
biao1.chen[x-1].id=biao1.chen[x].id;
fuzhi(biao1.chen[x-1].name,biao1.chen[x].name);
biao1.chen[x-1].math=biao1.chen[x].math;
biao1.chen[x-1].english=biao1.chen[x].english;
biao1.chen[x-1].computer=biao1.chen[x].computer;
biao1.biaochang=biao1.biaochang-1;
}}}}}
for(;;)
{
printf("shifoujixushanchu(Y/N):");
getchar();
q=getchar();
if(q=='n'||q=='N')
goto lp;
else
{
if(q=='y'||q=='Y')
goto loop;
else
{printf("shurubuhefa!\n");
break;}
}
}
}lp:;
}
void chengjixiugai()
{
int x,i;
char q;
float a;
loop:for(;;)
{
if(biao1.biaochang==0)
{
printf("gaibiaowujilu!\n");
break;
}
else
{
for(;;)
{
printf("qingshuruyaoxiugaidexuehao:");
scanf("%d",&x);
if(x<0||x>50)
{printf("xuehaoyouwu!\n");
continue;}
else
break;
}
for(i=0;i<biao1.biaochang;i++)
{ if(biao1.chen[i].id==x)
{printf("xuehao:%d\n",biao1.chen[i].id);
printf("xingming:%s\n",biao1.chen[i].name);
printf("shuxue:%f\n",biao1.chen[i].math);
printf("yingyu:%f\n",biao1.chen[i].english);
printf("jisuanji:%f\n",biao1.chen[i].computer);
printf("qingchongxinshurushuxue:");
scanf("%f",&a);
biao1.chen[i].math=a;
printf("qingchongxinshuruyingyu:");
scanf("%f",&a);
biao1.chen[i].english=a;
printf("qingchongxinshurujisuanji:");
scanf("%f",&a);
biao1.chen[i].computer=a;
}}
if(i==biao1.biaochang)
printf("xuehaobucunzai!\n");
for(;;)
{
printf("shifoujixuxiugai(Y/N):");
getchar();
q=getchar();
if(q=='n'||q=='N')
goto lp;
else
{
if(q=='y'||q=='Y')
goto loop;
else
{printf("shufubuhefa!\n");
break;}
}
}
}
}lp:;
}
void chengjixianshi()
{
int i;
if(biao1.biaochang==0)
printf("gaibiaowujilu!\n");
else
{
printf(" xuehao xingming shuxue yingyu jisuanji\n");
for(i=0;i<biao1.biaochang;i++)
printf("%9d%10s %-8.2f %-8.2f %-8.2f\n",biao1.chen[i].id,biao1.chen[i].name,biao1.chen[i].math,biao1.chen[i].english,biao1.chen[i].computer);
}
}
void jisuanzongfenhepingjunfen()
{ int i;
float x,y;
if(biao1.biaochang==0)
printf("gaibiaowujilu!\n");
else
{
printf(" xuehao xingming zongfen pingjunfen\n");
for(i=0;i<biao1.biaochang;i++)
{x=biao1.chen[i].math+biao1.chen[i].english+biao1.chen[i].computer;
y=x/3;
printf("%9d%10s %-8.2f %-8.2f\n",biao1.chen[i].id,biao1.chen[i].name,x,y);
}}}
main()
{
int x;
biao1.biaochang=0;
for(;;)
{
printf(" chengjiguanli[shuzu] \n");
printf(" ----------------------------------------------\n");
printf(" | 1.chengjiluru |\n");
printf(" | 2.chengjishanchu |\n");
printf(" | 3.chengjixiugai |\n");
printf(" | 4.chengjixianshi |\n");
printf(" | 5.jisuanzongfenhepingjunfen |\n");
printf(" | 6.tuichu! |\n");
printf(" ----------------------------------------------\n");
printf(" qingshurugongnenghao:");
scanf("%d",&x);
if(x==1) chengjiluru();
if(x==2) chengjishanchu();
if(x==3) chengjixiugai();
if(x==4) chengjixianshi();
if(x==5) jisuanzongfenhepingjunfen();
if(x==6) break;
}
}
用的是链表:
#include<stdio.h>
#include<stdlib.h>
struct node
{
int id;
char name[10];
float english,math,computer,zongfen,pingjunfen;
struct node *next;
}*head;
void luru();
void shanchu();
void xiugai();
void xianshi();
void zongfenhepingjunfen();
void luru()
{
float a;
struct node *p,*q;
if(head==NULL)
{
head=(struct node *) malloc(sizeof(struct node));
head->next=NULL;
}
p=(struct node *) malloc(sizeof(struct node));
printf(" qingshuruxuehao:");
scanf("%d",&p->id);
printf(" qingshuruxingming:");
scanf("%s",&p->name);
for(;;)
{
printf(" qingshuruyingyu(0~100):");
scanf("%f",&a);
if(a<0||a>100)
{
printf(" shuruyingyuyouwu!\n");
continue;
}
else break;
}
p->english=a;
for(;;)
{
printf(" qingshurushuxue(0~100):");
scanf("%f",&a);
if(a<0||a>100)
{
printf(" shurushuxueyouwu!\n");
continue;
}
else break;
}
p->math=a;
for(;;)
{
printf(" qingshurujisuanji(0~100):");
scanf("%f",&a);
if(a<0||a>100)
{
printf(" shurujisuanjiyouwu!\n");
continue;
}
else break;
}
p->computer=a;
p->next=NULL;
q=head;
if(head->next==NULL)
{
head->next=p;
}
else
{
while(q->next!=NULL)
q=q->next;q->next=p;
}
}
void shanchu(n)
{
struct node *q1,*q2,*q3;
q1=head;
q3=q1;
if(head->next==NULL)
{
printf(" chengjibiaowujilu!\n");
}
else
{
while(q1->id!=n && q1->next!=NULL)
{
q3=q1;q1=q1->next;
}
if(q1->id==n)
{
q2=q3->next;
q3->next=q2->next;
free(q2);
}
else return;
}
}
void xiugai()
{
int n;
struct node *p;
float a;
p=(struct node *) malloc(sizeof(struct node));
p->next=NULL;
printf(" qingshuruyaoxiugaidexuehao:");
scanf("%d",&n);
p->id=n;
p=head;
if(p!=NULL)
{
while(p->id!=n && p->next!=NULL)
{
p=p->next;
}
if(p->id==n)
{
printf(" qingshuruxingming:");
scanf("%s",&p->name);
for(;;)
{
printf(" qingshuruyingyu(0~100):");
scanf("%f",&a);
if(a<0||a>100)
{
printf(" shuruyingyuyouwu!\n");
continue;
}
else break;
}
p->english=a;
for(;;)
{
printf(" qingshurushuxue(0~100):");
scanf("%f",&a);
if(a<0||a>100)
{
printf(" shuruyingyuyouwu!\n");
continue;
}
else break;
}
p->math=a;
for(;;)
{
printf(" qingshurujisuanji(0~100):");
scanf("%f",&a);
if(a<0||a>100)
{
printf(" shuruyingyuyouwu!\n");
continue;
}
else break;
}
p->computer=a;
}
else
printf(" xuehaobucunzai!\n");
}
else
printf(" xuehaobucunzai!\n");
}
void xianshi()
{
struct node *p;
p=head;
if(p->next==NULL)
{
printf(" chengjibiaowujilu!\n");
}
else
{
printf(" xuehao xingming yingyu shuxue jisuanji\n");
while(p->next!=NULL)
{
printf(" %d %s %3.2f %3.2f %3.2f\n",p->next->id,p->next->name,p->next->english,p->next->math,p->next->computer);
p=p->next;
}
}
}
void zongfenhepingjunfen()
{
struct node *p;
p=head;
p->zongfen=p->english+p->math+p->computer;
p->pingjunfen=p->zongfen/3;
p=head;
if(p->next==NULL)
{
printf(" chengjibiaowujilu!\n");
}
else
{
printf(" xuehao xingming zongfen pingjunfen\n");
while(p->next!=NULL)
{
printf(" %d %s %3.2f %3.2f\n",p->next->id,p->next->name,p->next->zongfen,p->next->pingjunfen);
p=p->next;
}
}
}
main()
{
int x,n;
for(;;)
{
printf(" chengjiguanli \n");
printf(" ----------------------------------------\n");
printf(" | 1.chengjiluru |\n");
printf(" | 2.chengjishanchu |\n");
printf(" | 3.chengjixiugai |\n");
printf(" | 4.chengjixianshi |\n");
printf(" | 5.jisuanzongfenhepingjunfen |\n");
printf(" | 0.tuichu! |\n");
printf(" ----------------------------------------\n");
printf(" qingshurugongnenghao:");
scanf("%d",&x);
if(x==1) luru();
if(x==2)
{
printf(" qingshuruyaoshanchudexuehao:");
scanf("%d",&n);
shanchu(n);
}
if(x==3) xiugai();
if(x==4) xianshi();
if(x==5) zongfenhepingjunfen();
if(x==0) break;
}
}

#19
野比2007-06-26 21:39
真详细啊.. LS...
#20
tangofan2007-06-27 23:31
回复:(jinchaoren)可以按照学号录入,然后增加和删除...

去找找我的文章吧!我也问过这个问题,已经得到答案了,很不错的。

#21
tangofan2007-06-27 23:35

都二年级了,学的也是C++了,多少要有点类的思想吧,
所以上面那位仁兄给的答案我觉得不适合了。

#22
天下第二刀2007-06-28 00:25


#include <iomanip>
#include <iostream>
#include <fstream>
#include <vector>
#include <conio.h>
#include <stdlib.h>
#include <string>
#include <process.h>
#include <algorithm>
#include <stdio.h>
using namespace std;

struct student
{
char name[10]; /// 姓名
char id[10]; /// 学号
float Ynum; /// 语文分数
float Snum; /// 数学分数
float Enum; /// 英语分数
float number; /// 总分
student *next;
};
///////////-------定义类-----------------------////////////

class stud
{
student *p1,*p2,*head;
public:

~stud() {}

///------------成员函数------------
void output(student *head); // 输出学生成绩
void Inputs(student *p); //用于添加数据的子函数
student * input(student *head); // 增加学生记录
student* del(student *head, char*p); // 删除记录
student* find(student *head,char *p,int &n); // 查找学生记录(可查找多个同名数据)
student* stat(student *head); //排序统计学生总分
student* insert(student *head); //按学生总分插入记录
student* clear(student *head); // 删除当前表
friend void total(student*head); //统计学生总分
};//----------------------------------------------------

////---------用于添加数据的子函数-------///////
void stud::Inputs(student*p)
{
cout<<setw(6)<<"姓名"<<setw(8)<<" 学号"
<<setw(8)<<"语文"<<setw(8)<<"数学"
<<setw(8)<<"英语"<<endl;

cin>>p->name >>p->id;
cin >>p->Ynum;
while(cin.fail())
{ cerr<<"您的输入有误,请重新输入"<<endl;
cin.clear ();
cin.sync ();
cin>>p->Ynum;
}
cin>>p->Snum;
while(cin.fail())
{ cerr<<"您的输入有误,请重新输入"<<endl;
cin.sync ();
cin.clear ();
cin>>p->Snum;
}
cin>>p->Enum;
while(cin.fail())
{ cerr<<"您的输入有误,请重新输入"<<endl;
cin.clear ();
cin.sync ();
cin>>p->Enum;
}
total(p); //计算出总分
}
////////-----输出学生成绩-----------------/////////////////////
void stud::output (student *head)
{ p1=head;
while(p1!=NULL)
{
cout<<setw(6)<<p1->name<<setw(8)
<<p1->id<<setw(8)<<p1->Ynum
<<setw(8)<<p1->Snum <<setw(8)
<<p1->Enum <<setw(7)<<p1->number <<endl;
p1=p1->next ;
}
}
/////////------------插入学生成绩记录--------////////////////
student* stud::insert(student *head)
{
p1=new student;
Inputs(p1); //调用子函数 增加数据

p2=head;
student* p3=NULL;
while((p2->number < p1->number ) && p2->next !=NULL)
{ p3=p2;
p2=p2->next;
}
if(p2->number > p1->number)
{ p1->next=p2;
if(p3==NULL) // 若当前值是最小的
return p1;
p3->next =p1;
return head;
}
else
{ p2->next=p1;
p1->next=NULL;
return head;
}
}
//////----------清空数据------------/////////////
student* stud::clear(student*head)
{
while(head)
{ p1=head->next ;
delete head;
head=p1;
}
return head;
}
//////////-----------排序统计函数-----------/////////////////
student *stud::stat(student *head)
{
p2=head;
p1=p2->next;

while(p2->next) //冒泡泡法, 呵呵`~~~
{

if(p2->number > p1->number)
{ // 把头指针指向当前比较小的节点
p2->next=p1->next;
p1->next=head;
head=p1;

// 把用于比较的两个指针复位
//p2=head;
p1=p2->next ;
}
else
{ // 指向下一个节点
p2=p2->next ;
p1=p2->next ;
}//-------------------------------------------

}
cout<<"当前表以按学生总分排序成功"<<endl;
return head;
}

/////-----------删除记录-----------//////////////////////
student* stud::del (student *head,char *p)
{
p1=head;
p2=NULL;

while(strcmp(p1->name ,p)&& p1->next !=NULL)
{ p2=p1;
p1=p1->next ;
}

if(!strcmp(p1->name ,p))
{
if(p1==head)
head=p1->next;
else
p2->next=p1->next ;

cout<<"删除成功,OK"<<endl;
delete p1;
}
else
cout<<" 没找到姓名"<<p<<"的学生.\n"; //结点没找到

return head ;
}
///////----------统计总分---------------///////////////
void total(student *p)
{ p->number = p->Ynum + p->Snum + p->Enum;

}

///////-------------查找函数----------///////////////////
student* stud::find (student *head,char *p,int& n)
{
p2=head;
while(strcmp(p2->name ,p) !=0 && p2->next !=NULL)
p2=p2->next ;
if(0==strcmp(p2->name,p))
{
cout<<setw(6)<<p2->name<<setw(8)
<<p2->id<<setw(8)<<p2->Ynum
<<setw(8)<<p2->Snum <<setw(8)
<<p2->Enum <<setw(7)<<p2->number <<endl;
n++;
return p2;
}
else
if(n==0)
{
system("cls");
cout<<"对不起,没有您要查找的学生数据"<<endl;
}
return NULL;
}

///////----------------增加学生记录-----------////////////////////////////
student *stud::input (student *head)
{ p1=new student;
p2=head;
Inputs(p1); //调用子函数 增加数据
if(head ==NULL)
{
head=p1;
p1->next =NULL;
return head;
}
while(p2->next !=NULL)
p2=p2->next;
p2->next=p1;
p1->next=NULL;

return head;
}
//----------- 输出错误 -----------//////////
void error()
{
cout<<"错误,这还是一张空表,请输入数据"<<endl;
getch();

}
///////////////////------------main函数--------//////////////////-----------
int main(void)
{
stud stus;
student *head=NULL;
student *pd; //临时指针, 用于查找函数
char choice; //用于存放用户的选择项
char name[10]; //查找,删除记录的 key
while(1)
{ system("cls");
cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓";
cout<<"┃**************** ☆ 学 生 成 绩 管 理 系 统 ☆ ****************** ┃";
cout<<"┃********** ★★★★★ ★★★★★★★ ★★★★★ *********** ┃";
cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫";
cout<<"┃****************★ ☆ 1.增加学生成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 2.显示学生成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 3.排序统计成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 4.查找学生成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 5.删除学生成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 6.插入学生成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 7.清空所有数据 ☆ ★****************┃";
cout<<"┃****************★ ☆ 8.安全退出系统 ☆ ★****************┃";
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛";
cout<<" 请输入您的选择(0--8):";cout<<endl;

int n=0; //计数器,用于在查找时计算有没有同名学生
cin>>choice;
fflush(stdin);

if(choice=='8') //安全退出
{ cout<<"谢谢使用,再见"<<endl;
exit(0);
}//------------------------------------------------
switch(choice)
{
case '1':
head=stus.input (head);
break;//------------------------------------------------
case '2':
if(head==NULL)
{
error();
break;
}
cout<<setw(6)<<"姓名"<<setw(8)<<" 学号"
<<setw(8)<<"语文"<<setw(8)<<"数学"
<<setw(8)<<"英语"<<setw(13)<<"总分!!!"<<endl;
stus.output (head);
getch();
break;//------------------------------------------------
case '3':
if(head==NULL)
{
error();
break;
}
head=stus.stat(head);
getch();
break;//------------------------------------------------

case '4':
if(head ==NULL)
{
error(); //调用函数输出错误信息
break;
}
cout<<"请输入想要查找的学生姓名"<<" ,"<<"可以查找重复的姓名"<<endl;
cin>>name;
pd=head;
cout<<setw(6)<<"姓名"<<setw(8)<<" 学号"
<<setw(8)<<"语文"<<setw(8)<<"数学"
<<setw(8)<<"英语"<<setw(13)<<"总分!!!"<<endl;

while(pd) // 循环调用函数, 用于输出多个的同名学生成绩
{
pd=stus.find (pd,name,n);
if(pd==NULL)
break;
pd=pd->next ; //指针指向当前以找到的下一个节点,用于查找多个同名学生
}
getch();
break;//------------------------------------------------
case '5':
if(head==NULL)
{
error();
break;
}
cout<<"请输入想要删除学生姓名"<<endl;

cin>>name;
head=stus.del(head,name);
getch();
break;//------------------------------------------------

case '6':
if(head==NULL)
{
error();
break;
}
head=stus.stat (head);
head=stus.insert(head);
break;//-----------------------------------------------
case '7':
if(head==NULL)
{
error();
break;
}
head=stus.clear(head);
cout<<"删除表成功~"<<endl;
getch();
break;//-----------------------------------------------
default :
cout<<" 对不起,您的输入有误,请重新输入。\n";
getch();
break;
}//------------------------------------------------------
}
getch();
return 0;
}
///***********************************************************************


一个用链表写的,可以看看

#23
gdzhan2007-06-28 17:20
#24
huozoo2007-06-30 09:59
都是清华的谭浩强啦,写了c程序设计和c++程序设计。现在大学生几乎都用这两本教材.里面关于面向对象举的例子,很不幸正是学生类```
老师出题主要考察学生类的声明和对象的建立。拓展静态数据成员```
#25
llishaobiaohapp2008-07-04 09:19
sdf
sfds
#26
llishaobiaohapp2008-07-04 09:31
萨达
按时打算
#27
answer_05142008-07-08 13:58
bu 不知道怎么加入图表界面的说阿
#28
tyronerush2008-12-09 19:16
不错
#29
liangzhuobin2008-12-11 20:03
hao
#30
liangzhuobin2008-12-11 20:12
.......
#31
liangzhuobin2008-12-11 20:13
.......
#32
夏天彩虹2013-06-22 20:10
太有同感了   只学了半学期,真心不知道怎么写
1