码迷,mamicode.com
首页 > 编程语言 > 详细

【学生成绩管理系统】 大二c语言作业

时间:2014-10-10 10:19:24      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   io   os   ar   for   文件   

几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值...

#include <cstdio>
#include <conio.h>
#include <iostream>
#include <process.h>
#include <stdlib.h>
#include <algorithm>
#include <cstring>
#include <cmath>
#define N 5
const int maxn = 1002;
using namespace std;
void log_in();          // 登录系统
void menu();            // 菜单
void input();           // 输入数据
void savecore();        // 保存数据
void loadscore();       // 读取文件
void stdavg();          // 求平均数的算法
void delete_();         // 删除一个已知学号的学生的全部信息,并选择是否排序
void passrate();        // 及格率
void variance();        // 均方差
void browse();          // 显示数据
void function();        // 个性设计模拟动态链表实现增加n个学生成绩并排序
void read();            // 以下四个函数为实现function功能的嵌套函数
void add();
void output();
void solve();
typedef struct student
{
    int number;
    char name[20];
    float math;
    float english;
    float computer;
    float average;
    bool operator <(const struct student &a)const  // c++的sort排序
   {
      return average>a.average;
   }
}STU;
STU stu[N];
typedef struct  func_    //个性化设计结构体
{
    char name[102]; //姓名
    int no; //学号
    int score; //分数
}NODE;
NODE node[maxn];
int top;
int cmp(const func_ &a,const func_ &b)  // c++中sort函数排序
{
    return a.score > b.score;
}
int main()
{
    log_in();
    menu();
    return 0;
}

void log_in()
{
    short i;
    char name[20],key[20];
    cout << "欢迎进入教务综合管理系统登陆界面,请输入您的用户名和密码" << endl;
    cout << "初次登录用户名为yang,密码为grade_system " << endl;
    cout << endl;
    while(1)
    {
        cout << "please input the user‘s name:(中间请用_间隔)" << endl;
        cin >> name;
        cout << "please input your key(12 bits):" << endl;
        for(i=0;i<12;i++)
        {
            key[i]=getch();
            printf("*");
        }
        key[i]=\0;
        getch();
        if(strcmp(name,"yang")==0&&strcmp(key,"grade_system")==0)break;
        cout << "\nerror!" << endl;
        cout << "please input again!" <<endl;
    }
        cout << "great!wait a minute..." << endl ;
        system("cls");
}

void menu()
 {
    char ch;
    while(1)
        {
            cout << "  \t\t欢迎进入教务综合管理系统登陆界面!\n" <<endl;
            cout << "  \t\t* * * * * * * * * * * * * * * * * * * * *" << endl;
            cout << "  \t\t* \t Menu:                  \t*" << endl;
            cout << "  \t\t* \t0. input                \t*" << endl;
            cout << "  \t\t* \t1. savecore             \t*" << endl;
            cout << "  \t\t* \t2. loadcore             \t*" << endl;
            cout << "  \t\t* \t3. delete               \t*" << endl;
            cout << "  \t\t* \t4. passrate             \t*" << endl;
            cout << "  \t\t* \t5. variance             \t*" << endl;
            cout << "  \t\t* \t6. grade chart          \t*" << endl;
            cout << "  \t\t* \t7. personality design   \t*" << endl;
            cout << "  \t\t* \t8. Exit                  \t*" << endl;
            cout << "  \t\t* * * * * * * * * * * * * * * * * * * * *" <<endl;
            cout << "\t\t\t请选择对应序号: ";
            cin >> ch;
            switch(ch)
                {
                    case 0:{input();break;};
                    case 1:{savecore();break;};
                    case 2:{loadscore();break;}
                    case 3:{delete_();break;};
                    case 4:{passrate();break;};
                    case 5:{variance();break;};
                    case 6:{browse();break;};
                    case 7:{function();break;};
                    case 8:{ cout <<"Goodbye~~"<< endl; exit(1);};
                    default:cout << "input wrong,please input again!" <<endl;
                }
            getchar ();
        }
}

void input()
{
    int i,j;
    struct student *p=stu;
    cout << "now please begin to input the student‘s data:" << endl;
    cout << "注意:学号为int型,姓名之间若有间隔一定用连接,分数之间加空格" << endl;
    cout << endl;
    for(i=0;i<N;i++)
    {
        j=i+1;
        cout << "input" <<   << j <<
        "‘s number name and the score of the math english computer:" << endl;
        cin >> (p+i)->number;
        cin >> (p+i)->name;
        cin >> (p+i)->math;
        cin >> (p+i)->english;
        cin >> (p+i)->computer;
    }
        cout << "Now we have already input all the data!" << endl;
}

void savecore()
{
    FILE *fp;
    struct student *q=stu;
    int i;
    char ch;
    getchar();
    cout << "next,do you want to save file?(Y/N)" << endl;
    if((ch=getchar())==Y)
    {
        if((fp=fopen("d:\\score.txt","w"))==NULL)
        {
            cout << "File open error!" << endl;
            exit(0);
        }
        for(i=0;i<N;i++,q++)
        {
            if(fwrite(q,sizeof(STU),1,fp)==1)
            {
                if(i==N-1)
                {
                    cout << "you have saved successfully!" << endl;
                    cout << "press enter to continue" << endl;
                }
            }
            else cout << "file write wrong!" <<endl;
        }
       getchar();
       fclose(fp);
    }
}

void loadscore()
{
    FILE *fp;
    int i;
    char ch;
    getchar();
    printf("do you want to open the file?(Y/N)\n");
    if((ch=getchar())==Y)
    {
        if((fp=fopen("d:\\score.txt","r"))==NULL)
        {
            cout << "File open error!" <<endl;
            exit(0);
        }
        for(i=0;!feof(fp);i++)           //测试文件是否结束
        {
            fread(&stu[i],sizeof(STU),1,fp);
        }
//原型为unsigned fwrite(void *buffer,unsigned size,unsigned count,FILE *fp)
        cout << "you have loaded successfully!" << endl;
        cout << "press enter to continue" << endl;
        getchar();
        fclose(fp);
    }
}

void browse() 
{
    stdavg();
    sort(stu,stu+N);
    int i;
    char chart[][10]={"    ","Numb","Name","Math","Engl","Comp","Aver"};
    printf("\n\n\nNow the chart of student‘s grade is as below:\n");
    printf("***************************************************************************\n\t");
    for(i=1;i<7;i++)
        {
            printf("%s\t",chart[i]);
        }
    printf("\n");
    for(i=0;i<N;i++)
    {
        printf("    \t%ds  \t%.2f  \t%.2f  \t%.2f  \t%.2f",stu[i].number,stu[i].name,stu[i].math,
               stu[i].english,stu[i].computer,stu[i].average);
        printf("\n");
    }
    printf("\n");
    printf("***************************************************************************\n");
}

void stdavg()
{
    int i;
    float s;
    for(i=0;i<N;i++)
    {
        s=0;
        s+=stu[i].math+stu[i].english+stu[i].computer;
        stu[i].average=s/3;
    }
}

void passrate()
{
    float s,count_=0; 
    int i;
    stdavg();
    for(i=0;i<N;i++)
        {
            if(stu[i].average>=60)
            {
                count_++;
            }
        }
    s=count_/N*100;
    cout << "the passrate is " << s << % << endl;
    cout << endl;
}

void read()
{
    int n,i;
    top = 0;
    cout << "请输入当前学生人数" << endl;
    cin >> n;
    cout << "请输入学生的名字,学号(这里默认为int),分数(中间用空格间隔)" << endl;
    for(i=0;i<n;i++)
    {
        scanf("%s %d %d",node[top].name,&node[top].no,&node[top].score);
        if(node[top].score >= 60)
        {
            top++;
        }
    }
}

void add()
{
    cout << "please input:" << endl;
    cin >> node[top].name ;
    cin >> node[top].no;
    cin >> node[top].score;
    if(node[top].score >= 60)
    {
        top++;
    }
}

void output()
{
    sort(node,node+top,cmp);
    for(int i=0;i<top;i++)
    {
        printf("%s %d %d\n",node[i].name,node[i].no,node[i].score);
    }
}

void solve()
{
    int judge;
    cout << "提示:" << endl;
    cout << "输入‘0‘结束" << endl;
    cout << "输入‘1‘增加学生操作" << endl;
    cout << "输入‘2‘输出及格学生当前排榜单" << endl;
    while(scanf("%d",&judge) && judge)
    {
        if(judge == 1)
        {
            add();
            cout<<"\n提示:输入‘0‘结束\n输入‘1‘增加学生操作\n输入‘2‘输出及格学生当前排榜单\n"<<endl;
        }
        else if(judge == 2)
        {
            cout <<"当下所有及格学生的排名情况如下\n" << endl;
            output();
             cout<<"\n提示:输入‘0‘结束\n输入‘1‘增加学生操作\n输入‘2‘输出及格学生当前排榜单\n"<<endl;
        }
    }
}

void function()
{
    cout << "现在我们进入综合的个性类学生成绩管理系统" << endl;
    cout << "本个性设计旨在仿照malloc的动态分配内存" << endl;
    cout << endl;
    read();
    solve();
}

void delete_()
{
    int i,j,m;
    char ch;
    stdavg();
    cout << "input the number you want to delete_:\n" << endl;
    cin >> m;
    getchar();  //
    cout << "numb" << \t << "name" << \t << "math" << \t <<
    "endl" << \t << "comp" <<\t << "aver" <<endl;
    for(j=0;j<N;j++)
    {
        if(stu[j].number!=m)
        {
            cout << stu[j].number << \t <<stu[j].name  << \t <<
            stu[j].math << \t << stu[j].english << \t <<
            stu[j].computer << \t << stu[j].average << endl;
        }
    }
    cout << "若之前进行过显示数据操作(即菜单中的第六项操作)则已经排序好,否则为输入顺序" << endl;
    cout << "do you want to sort the grade(Y/N) ?" << endl;
    ch=getchar();
    struct student s;
    if(ch==Y)
    {
        getchar();
        if(stu[j].number!=m)
        {
            for(i=0;i<N-1;i++)
            {
                for(j=i+1;j<N;j++)
                {
                    if(stu[j].average>stu[i].average)
                    {
                        s=stu[i];
                        stu[i]=stu[j];
                        stu[j]=s;
                    }
                }
            }
        }
        cout << "now the sorted chart is:" <<endl;
        cout << "numb" << \t << "name" << \t  << "math" << \t <<
        "endl" << \t << "comp" <<\t << "aver" <<endl;
        for(j=0;j<N;j++)
        {
            if(stu[j].number!=m)
            {
                cout << stu[j].number << \t <<stu[j].name  << \t <<
                stu[j].math << \t << stu[j].english << \t <<
                stu[j].computer << \t << stu[j].average << endl;
            }
        }
    }
    cout <<"press enter to continue" << endl;
}

void variance()
{
    float s=0,sum=0,sum_,var;
    int i;
    stdavg();
    for(i=0;i<N;i++)
    {
        s=s+stu[i].average;
    }
    var=s/N;
    for(i=0;i<N;i++)
    {
        sum+=(stu[i].average-var)*(stu[i].average-var);
    }
    sum_= sum/N;
    cout << "the all student‘s average variance is :" << sum_ << endl;
}

 

 

 

 

 

 

帮别人调试的另一个版本

#include<stdio.h>
#include<string.h>
#include<stdlib.h> 
#include<conio.h> 
#define N 100  
#define M 3   
#define LEN 9 
void menu();
void browse();
typedef struct student  
{
 char num[11];   
 char name[20];
 int score[M];
 double ave;
}STU;
STU stu[N];   

int save(int n)   
{ 
 FILE *fp;
 int i;
 if((fp=fopen("tangjie.txt","wb"))==NULL)
 {
  printf("无法打开文件!\n任意键退出程序... ...\n");
  getch();      
  return 0;      
 }
 for(i=0;i<n;i++)
  if(stu[i].ave!=0)    
   if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
    printf("文件写入发生错误\n");
 fclose(fp);
 return 0;     
}

int load()
{
 FILE *fp;
 int i;
 if((fp=fopen("tangjie.txt","rb"))==NULL)       //以二进制读的方式打开
 {
  printf("无法打开文件!\n任意键退出程序... ...\n");   //显示不能打开文件的信息
  getch();             //预防闪屏
  return 0;
 }
 for(i=0;!feof(fp);i++)
  fread(&stu[i],sizeof(struct student),1,fp);     //将文件数据读入学生结构体
 fclose(fp);
 return(i-1);             //返回目前总的记录个数*/
}

void printf_back()
{
 int w;
 printf("\n\t操作成功!\n");
 printf("\t请选择!\n\t1).立刻浏览全部数据\t2).返回:[ ]\b\b");
 scanf("%d",&w);
 if(w==1)
  browse();
 else
  menu();
}

void printf_face()
{
 printf("\n\t学号\t姓名\t\t   数学\t    英语    C语言    平均分\n");  
}

void average(int i)
{
 int j,sum;
 for(sum=0,j=0;j<M;j++)
  sum+=stu[i].score[j];
 stu[i].ave=sum*1.0/M;
}

void no_deal(int i)
{
 int j,l,a;
 l=strlen(stu[i].num);
 if(l<LEN)
 {
  for(j=LEN-l,a=0;j<LEN;j++)
  {
   stu[i].num[j]=stu[i].num[a++];
  }
  stu[i].num[i]=\0;
  for(a=0;a<LEN-l;a++)
   stu[i].num[a]=0;
 }
 if(l>LEN)
  stu[i].num[l]=\0;
}

int no_input(int i,int n)      
{
 int j,k,w1;
 do{
  w1=0;
  printf("学号:\t\t 【%d位,低于%d位前面补0,长的截尾处理!】\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",LEN,LEN);
  scanf("%s",stu[i].num);
  no_deal(i);
  for(j=0;stu[i].num[j]!=\0;j++)    
   if(stu[i].num[j]<0 || stu[i].num[j]>9) 
   {
    puts("请输入0~9的数字!\n");
    w1=1;         
    break;
   }
   if(w1!=1)         
    for(k=0;k<n;k++)      
     if(k!=i && strcmp(stu[k].num,stu[i].num)==0)
     {
      puts("已存在!\n");
      w1=1;       
      break;
     }
 }
 while(w1==1);          
 return 0;
}

int score_input(int i)
{
 int j;
 for(j=0;j<M;j++)
 {
  printf("分数 %d:",j+1);
  scanf("%d",&stu[i].score[j]);
 }
 return 0;
}

void input(int i)
{
 no_input(i,i);       
 printf("姓名:");
 scanf("%s",stu[i].name);    
 score_input(i);      
 average(i);       
}

void printf_one(int i)
{
 int j;
 printf("s    %-14s",stu[i].num,stu[i].name);
 for(j=0;j<M;j++)
 printf("?",stu[i].score[j]);    
 printf("  %9.2f\n",stu[i].ave);    
}
void topput___()
{
 printf("\n       记 录浏览      ");
 printf("\n--------------------------------------------------------------------------------\n");
}
void puts___()
{
 printf("\n\n--------------------------------------------------------------------------------\n");
}

int modify_data(int i,int n)    
{
 int c,w1;
 do      
 {
  puts("\n请选择修改项: =>\n\n1).学号\t2).姓名\t3).数学\t4).英语\t5).C语言\n6).重输所有分数\t7).重输所有记录\t8).取消并返回");
  printf("请选择:[ ]\b\b");
  scanf("%d",&c);
  if(c>8 || c<1)
  {
   puts("\n选择错误");
   getchar();      
  }
 }while(c>8 || c<1);
 do
 {
  switch(c)      
  {
  case 1:no_input(i,n);break;
  case 2:printf("姓名:");scanf("%s",stu[i].name);break;
  case 3:printf("数学:");scanf("%d",&stu[i].score[0]);break;
  case 4:printf("英语:");scanf("%d",&stu[i].score[1]);break;
  case 5:printf("C语言:");scanf("%d",&stu[i].score[2]);break;
  case 6:score_input(i);break;
  case 7:input(i);break;
  case 8:menu();  
  }
  if(c>2 && c<7)
   average(i);  
  puts("\n现在:\n");
  printf_face();
  printf_one(i);   //显示修改后的数据
  printf("\n确定当前的决定?\n\n\t1).是 \t2).否\n\t3).不保存退出[ ]\b\b");
  scanf("%d",&w1); 
 }while(w1==2);
 return w1;     //返回控制值
}

void enter()
{
 int i,n;
 system("CLS");     //引用外部清屏
 printf("输入要记录的学生数:(1~%d)?\t[‘0‘返回]:\n",N);
 scanf("%d",&n);     //要输入的计入个数
 if(n==0)
  menu();      //输 0 的时候返回
 else
 {
  printf("\n\t开始输入...\n");
  for(i=0;i<n;i++)
  {
   printf("\n请输入第%d个的记录.\n",i+1);
   input(i);      //调用输入函数
  }
  if(i!=0)
   save(n);      //调用保存函数
  printf_back();
 } 
}

int add()
{
 int i,n,m,k;
 FILE *fp;
 system("CLS");
 n=load();        //获得总记录的个数,并加载记录 
 printf("需要加入的学生人数:(0 ~ %d)?:",N-n);
 scanf("%d",&m);       //输入要追加记录的个数
 if(m==0)
  menu();
 else
 {
  k=m+n;
  for(i=n;i<k;i++)
  {
   printf("\n请输入第%d个的记录.\n",i-n+1);
   input(i);      //调用输入函数
  }
  if((fp=fopen("tangjie.txt","ab"))==NULL)
  {
   printf("文件无法打开!\n");  //显示不能打开文件的信息
   getch();
   return 0;
  }
  for(i=n;i<k;i++)
   if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
    printf("文件写入错误!\n");
  fclose(fp);
  printf_back();    
 }
 return 0;
}

void modify()
{
 struct student s;
 int i,n,k,w0=0,w1,w2=0;
 n=load();        //获得总记录的个数,并加载记录
 do
 {
  system("CLS");
  k=-1;
 
  topput___();
  printf_face();
  for(i=0;i<n;i++)
   printf_one(i);    //调用显示一个记录的函数
  puts___();
 
  do
  {
   printf("\n\n输入要修改记录的学号! :\t");
   if(scanf("%s",s.num)!=1)  //输入要修改数据的学号
   menu();
   for(i=0;i<n;i++)    //查找要修改的数据
    if(strcmp(s.num,stu[i].num)==0)
    {
     k=i;     //找到要修改的记录
     s=stu[i];   
    }
  if(k==-1)   
   printf("\n\n不存在! 请重新输入");
  }while(k==-1);     
 printf_face();       //调用显示数据结构项目函数
 printf_one(k);      
 w1=modify_data(k,n);    
 if(w1==1)        //代表确认修改
 {
  printf("\n操作成功!\n\n决定修改其他信息吗?\n\n\t1).是的\t2).不!保存并返回\t[ ]\b\b");
  scanf("%d",&w0);
  w2=1;    
 }
 else     
 {
  w0=0;
  if(w2==1)   
   stu[k]=s;  
 }
 if(w0!=1 && w2==1)   
  save(n);    
 }while(w0==1);
 menu();       //返回主菜单
}

void del()
{
 struct student s;
 int i,k,n,c,w0=1;
 system("CLS");
 n=load();      //获得总记录的个数,并加载记录
 do
 {
  system("CLS");
  k=-1;
 
  topput___();
  printf_face();   
  for(i=0;i<n;i++)
   if(stu[i].ave!=0)
    printf_one(i);  //显示所有数据
  puts___();
   
  do      
  {
   printf("\n\n输入你要删除记录的学号! NO.:\t");
   if(scanf("%s",s.num)!=1)
    menu();
   for(i=0;i<n;i++)
    if(strcmp(s.num,stu[i].num)==0)
    {
     k=i;   
     s=stu[i];
    }
   if(k==-1)    
    printf("\n\n不存在! 请重新输入!");
  }while(k==-1);
  puts("\n");
  printf_face();
  printf_one(k);     //显示要删除的记录
  printf("\n确定?\n\t1).是   2).否   3).不保存退出[ ]\b\b");
  scanf("%d",&c);
  if(c==1)
  {
   stu[k].ave=0;   
   printf("\n\n操作成功!\n\n要继续删数据吗?\n\t1).继续 2).返回主菜单\t[ ]\b\b");
   scanf("%d",&w0);
  }
  if(c==3)
   w0=0;      //不删除直接返回
  if(w0!=0 && c!=3)   
   save(n);
 }while(w0==1);
 menu();
}

void browse()
{
 int i,n;
 n=load();     //获得总记录的个数,并加载记录
 system("CLS");
 topput___();
 printf_face();   
 for(i=0;i<n;i++)   //循环输出所有学生的信息
  printf_one(i);
 puts___();
 printf("\n\t 这里一共有 %d 个记录!\n",n);
 printf("\n\t 输入任意键返回主菜单... ...");
 getch();
 menu();
}

void search()
{
 int i,n,k,w1=1,w2,w3,w4;
 struct student s;
 system("CLS");
 n=load();          //获得总记录的个数,并加载记录
 do
 {
  do
  {
   k=-1;
   printf("\n\n输入你要查找记录的姓名:");
   scanf("%s",s.name);
   printf_face();
   for(i=0;i<n;i++)
    if(strcmp(s.name,stu[i].name)==0)
    {
     k=i;
     printf_one(k);     //考虑到同名的情况,可能输出不只一个,把所有的记录都查找一下
    }
   if(k==-1)        //没找到相同的
   {
    printf("\n\n不存在! 请重新输入!");
    printf("\n\n继续?\n\t1).是\t 2).否 \t[ ]\b\b");
    scanf("%d",&w1);
   }
  }while(k==-1 && w1!=2);     
  w4=w3=0;        
  if(k!=-1)
  {
   printf("\n\n接着干什么?\n\t1).再次查找 2).修改 3).删除 4).返回主菜单 [ ]\b\b");
   scanf("%d",&w2);
   switch(w2)
   {
   case 2:w3=modify_data(k,n);break; 
   case 3:
    {
     printf("\n\n确定?\n\t1).是 2).否 \t[ ]\b\b");
     scanf("%d",&w4);
     if(w4==1)    //表示确定删除
      stu[k].ave=0; 
     break;
    }
   }
   if(w3==1 || w4==1)
   {
    save(n);
    printf("\n\n操作成功!");
    printf("\n\n继续\n\t1).再次查找 2).返回 [ ]\b\b");
    scanf("%d",&w2);
   }
  }
 }while(w2==1);
 menu();
}

void order()
{
 
 int i,j,k,n;
 struct student s;
 system("CLS");    //清屏
 n=load();     //获得总记录的个数,并加载记录
 for(i=0;i<n-1;i++)
 {
  k=i;
  for(j=i+1;j<n;j++)
   if(stu[j].ave>stu[k].ave) //选择法排序,按平均分降序
    k=j;
  s=stu[i];
  stu[i]=stu[k];
  stu[k]=s;
 }
 save(n);
 puts("\n\n");
 printf_back();
}

void menu()
{
 int n,w1;
 do
 {
  system("CLS");;
  puts("\n\t\t\t\t学生信息管理系统\n");
  puts("\t     ------- 汤杰  \n");
  puts("\t    ************************ 主菜单 *********************\n\n");
  puts("\t\t\t 1.学生信息及成绩录入");
  puts("\t\t\t 2.添加信息");
  puts("\t\t\t 3.修改信息");
  puts("\t\t\t 4.删除信息");
  puts("\t\t\t 5.输出统计结果");
  puts("\t\t\t 6.查询信息");
  puts("\t\t\t 7.成绩排序");
  puts("\t\t\t 0.退出系统");
  puts("\n\n\t    ****************************************************\n");
  printf("\t输入你的选择(0~7):[ ]\b\b");
  scanf("%d",&n);
  if(n<0 || n>7)
  {
   w1=1;
   printf("\t你的选择不再 0 到 7 之间,按任意键重新输入!");
   getch();
  }
  else
   w1=0;
  }while(w1==1);
 switch(n)
 {
 case 1:enter();break;
 case 2:add();break;
 case 3:modify();break;
 case 4:del();break;
 case 5:browse();break;
 case 6:search();break;
 case 7:order();break;
 case 0:exit(0);break;
 }
}
void main()
{
 menu();
}

 

【学生成绩管理系统】 大二c语言作业

标签:des   style   blog   color   io   os   ar   for   文件   

原文地址:http://www.cnblogs.com/balfish/p/4014965.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!