| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 839 人关注过本帖
标题:发个百分贴,在此求助各位,希望有人可以帮帮我,谢谢
只看楼主 加入收藏
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
结帖率:92.31%
收藏
已结贴  问题点数:100 回复次数:15 
发个百分贴,在此求助各位,希望有人可以帮帮我,谢谢
我刚刚学c语言不久,本人自我感觉不是太能干得那种,因此学习起来感觉很是吃力啊,不过呢,还好到现在还可以坚持,呵呵,好不容易终于可以编写自己的第一个学生信息管理系统程序啦,但是能力有限对于链表的运用不是太熟练,写的程序很丑,我至此还没能够完全写完,希望各位可以给点指点,若果可以的话给写个示例程序,我学习下,谢谢,如果占用各位时间的话,可以指点一下也好。对于评论帖子的各位也表示感谢啦,大家重在参与嘛


我要实现的功能是:
第一:键盘输入和文件输入学生信息
第二:保存这些信息
第三:通过排序(学号,姓名,分数都可以)然后输出
排序输出是重中之中我跟人觉得,就是这里还写不好

如下:
110 uimg 50
119 haid 60
103 huid 90
储存之后学号排序后输出:
103 huid 90
110 uimg 50
119 haid 60
 

希望各位可以给予指点和帮助 谢谢啦
这是我写的很丑的程序,各位见谅啦,我没能实现排序输出:
请批评指教 谢谢
程序代码:
  #include<stdio.h>
    #include<stdlib.h>
    int N;
    void homepage();
    void into();
    void lists();
    void outputtypes();
    struct student * head;
    struct student
    {
       int num;
       char name[20];
       int grade;
       struct student * next;
    };
   
         
          
    void keyboards()//录入学生信息子函数(从键盘录入具有报重提示)
    {
        struct student *p1,*p2;
        N=0;
        p1=p2=(struct student *)malloc(sizeof(struct student));
        printf("学生学号\t学生姓名\t学生成绩\n");
        scanf("%d %s %d",&p1->num,p1->name,&p1->grade);
        while(p1->num!=0)
        {
            N=N+1;
            if(N==1)head=p1;
            else p2->next=p1;
            p2=p1;
            p1=(struct student * )malloc(sizeof(struct student));
            scanf("%d %s %d",&p1->num,p1->name,&p1->grade);
            if(p1->num==p2->num)
            {
              printf("\n\n\t当前输入学号与前面重复,请检查后重新输入!\n\n");
              p1=(struct student * )malloc(sizeof(struct student));
              scanf("%d %s %d",&p1->num,p1->name,&p1->grade);
            }
        }
        p2->next=NULL;
        system("cls");
        into();

    }
    void files()//录入学生信息子函数(从文件录入)
    {
        int i=0;
        FILE * fp;
        char filepath[20];
        struct student *p1,*p2;
        N=0;
        printf("输入要读入的文件路径:");
        getchar();
        gets(filepath);
        if((fp=fopen(filepath,"r"))==NULL)
        {
            printf("找不到%s文件!\n",filepath);
            exit(0);
        }
        p1=p2=(struct student*)malloc(sizeof(struct student));
        fread(p1,sizeof(struct student),1,fp);
        head=NULL;
        while(!feof(fp))
        {
            i=0;
            N=N+1;
            if(N==1)head=p1;
            else p2->next=p1;
            p2=p1;
            p1=(struct student * )malloc(sizeof(struct student));
            fread(p1,sizeof(struct student),1,fp);
        }
        p2->next=NULL;
        system("cls");
        lists();
        printf("\n\n");
       
    }
    void inputs()//录入学生信息主函数
    {
        int i;
        printf("\t\t\t录入学生信息\n");
        printf("\n1.从键盘录入\n");
        printf("2.从文件录入\n");
        printf("3.返回主菜单\n");
        printf("请选择(1~3):\n");
        scanf("%d",&i);
        switch(i)
        {
        case(1):system("cls");keyboards();break;
        case(2):files();break;
        case(3):system("cls");break;
        }
    }
    void inserts(struct student * incouse)//学生信息管理子函数(添加学生信息)
    {
        struct student *p0,*p1,*p2;
        p1=head;
        p0=incouse;
        if(head==NULL)
        {
            head=p0;
            p0->next=NULL;
        }
        else
        {

            while((p0->num > p1->num) && (p1->next!=NULL))
            {
                p2=p1;
                p1=p1->next;
            }
            if(p0->num <= p1->num)
            {
                if(head==p1) head=p0;
                else p2->next=p0;
                p0->next=p1;
            }
            else
            {
                p1->next=p0;
                p0->next=NULL;
            }
        }
        N=N+1;
        system("cls");
        printf("\t\t\t\t…………学生信息已经保存………\n");
        homepage();

    }
    void dels(int num)//学生信息管理子函数(删除学生信息)
    {
        struct student *p1,*p2;
        int i;
        if(head==NULL)
        {
            printf("\n没有该学生信息,无法删除!\n");
            goto end;
        }
        p1=head;
        while(num!=p1->num && p1->next!=NULL)
        {
            p2=p1;
            p1=p1->next;
        }
        if(num==p1->num)
        {
            if(p1==head) head=p1->next;
            else p2->next=p1->next;
            N=N-1;
            system("cls");
            printf("\t\t\t\t…………学生信息已经删除………\n");
            printf("\t\t\t\t…………此信息为当前信息………\n");
            lists();
        }
        else
        {
            printf("无该学号的学生!\n");
            printf("请你再次确认!\n\n");
            scanf("%d",&i);
            dels(i);    

        }
        

        end:;
    }
    void managements()//学生信息管理主函数
    {
        struct student * incouse;
        int i,num;
        printf("\t\t\t学生信息管理\n");
        printf("1.新增学生信息\n");
        printf("2.删除学生信息\n");
        printf("3.返回主菜单\n");
        printf("请选择(1~3):\n");
        scanf("%d",&i);
        switch(i)
        {
        case(1):
            {
                incouse=(struct student *)malloc(sizeof(struct student));
                printf("学生学号\t学生姓名\t学生成绩\n");
                scanf("%d %s %d",&incouse->num,incouse->name,&incouse->grade);
                inserts(incouse);
                break;
            }
        case(2):
            {
                printf("请输入要删除学生的学号:\n");
                scanf("%d",&num);
                dels(num);
                break;
            }
        case(3):system("cls");break;
        }
    }
    void lists()//输出学生信息
    {
        struct student * p;
        p=head;
        printf("学生学号  学生姓名  学生成绩\n");
        while(p!=NULL)
        {
            printf("%-4d %10s %10d\n",p->num,p->name,p->grade);
            p=p->next;
        }
        printf("\n\n\n");
        homepage();
    }
    void intos()//存储学生信息
    {
        FILE * fp;
        struct student * p;
        char filepath[30];
        printf("输入学生信息要保存的文件路径:");
        getchar();   
        gets(filepath);
        if((fp=fopen(filepath,"w"))==NULL)
        {
            printf("\n保存失败!");
            exit(0);
        }
        p=head;
        while(p!=NULL)
        {
            fwrite(p,sizeof(struct student),1,fp);
            p=p->next;
        }
        fclose(fp);
        system("cls");
        printf("\n\n");
        printf("\t\t\t学生信息已保存在%s中!\n\n\n",filepath);
        homepage();
    }
    void into()//存储信息
    {
        int i;
        printf("1.存储学生信息\n");
        printf("2.返回主菜单\n");
        printf("请输入(1~2)\n");
        scanf("%d",&i);
        switch(i)
        {
        case(1):intos();break;
        case(2):system("cls");break;
        }   
    }
    void store()//信息主函数用于查看和储存学生信息
    {
        int i;
        printf("\t\t系统信息查看及存储\n");
        printf("1.查看学生信息\n");
        printf("2.存储信息\n");
        printf("3.返回主菜单\n");
        printf("请输入(1~3):\n");
        scanf("%d",&i);
        switch(i)
        {
        case(1):
            system("cls");
            //outputtypes();
            lists();
            homepage();
            break;
        case(2):into();break;
        case(3):system("cls");break;
        }
    }
    void homepage()
    {
      int i;
      printf("\t友情提示:输入(1):\n");
      printf("\t返回主菜单\n");
      scanf("%d",&i);
        if(i<1 || i>2)
        {
            printf("输入错误,请重输:\n");
        }
        switch(i)
        {
      
        case(1):
            {
                system("cls");
                break;
            }
    }
    }
    int main()//主函数
    {
        int i,j;
       
        while(1)
        {
            printf("\n\t请输入密码进行验证登陆:\n");
            printf("\t\t");
            scanf("%d",&j);
            if(j==123)
                break;
            else
            {
              printf("你输入的密码有误,请重新输入!\n");
              scanf("%d",&j);
              system("cls");
            }
       
        }
        system("cls");
    start:
        printf("\n\t\t\t欢迎使用学生信息管理系统!\n");
        printf("菜单:\n");
        printf("1.录入学生信息\n");
        printf("2.学生信息管理\n");
        printf("3.系统信息查看及存储\n");
        printf("4.退出系统\n");
        printf("\n请输入菜单选项(1~4):\n");
        scanf("%d",&i);
        if(i<1 || i>4)
        {
            printf("输入错误,请重输:\n");
            goto start;
        }
        switch(i)
        {
      
        case(1):
            {
                system("cls");
                inputs();
                goto start;
                break;
            }
        case(2):
            {
                system("cls");
                managements();
                goto start;

                break;
            }
        case(3):
            {
                system("cls");
                store();
                goto start;
                break;
            }
       case(4):
            {
                system("cls");
                printf("\n\n\t\t\t感谢使用本系统!\n\n\t\t\t再见!\n\n\n\n\n\n");
            }
        }
        return(0);
    }




搜索更多相关主题的帖子: 键盘 信息 管理系统 时间 
2011-10-31 20:27
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:14 
其实这里能把这个玩意写完美的人基本上少得可怜。
2011-10-31 20:52
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 2楼 Devil_W
恩 我只是想将它的功能实现的相对来说多一点,不过我能力还不行,所以只能求助啦,写这些程序的时候,不知道借鉴了多少程序,可是仍然写不好
2011-10-31 21:11
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:14 
链表的交换排序并不是很困难,拿一张纸好好的划一划。
另外链表排序在实际运用中用处是不大的。

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2011-10-31 21:57
绿茶盖儿
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:363
专家分:1852
注 册:2011-9-3
收藏
得分:14 
程序代码:
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#define LEN sizeof(struct employee)
typedef struct employee
{
    char name[20];
    long num;
    char sex[5];
    int age;
    char addr[30];
    int wage;
    char health[20];
    char edu[20];
    struct employee * next;
}EMP;

void input();                //输入职工信息
EMP * open();                //将文件中的职工信息载入链表
void numfind(EMP *);        //查找职工信息,按职工号查找
void namefind(EMP *);        //查找职工信息,按职工姓名查找
void modify(EMP *);            //修改职工信息
void delet(EMP *);            //删除职工信息
void numsort(EMP *);        //按工号给职工信息排序
void wagesort(EMP *);        //按工资给职工信息排序
void print(EMP *);            //输出职工信息
void renew(EMP *);            //更新文件信息
int n;                        //职工的个数

void main()
{
    EMP *fhead;
    int choice,flag=1;
    char s;
    while(flag)
    {
        printf("\n        *****************************************************\n");
        printf("                欢迎使用职工信息管理系统!");
        printf("\n");
        printf("        *****************************************************\n\n");
        printf("                  >>> 主窗口菜单 <<<\n\n");
        printf("                1.录入职工信息\n\n");
        printf("                2.查找职工信息\n\n");
        printf("                3.修改职工信息\n\n");
        printf("                4.删除职工信息\n\n");
        printf("                5.排序职工信息\n\n");
        printf("                6.打印职工信息\n\n");
        printf("                0.退出\n");
        printf("\n请选择: ");
        scanf("%d",&choice);
        getchar();
        switch(choice)
        {
            case 0: exit(0);
            case 1: input();break;
            case 2: 
                system("cls");
                printf("\na.按工号查找\n\n");
                printf("b.按姓名查找\n");
                printf("\n请选择: ");
                scanf("%c",&s);
                getchar();
                fhead=open();
                if(s=='a')
                    numfind(fhead);
                else if(s=='b')
                    namefind(fhead);
                else    
                    printf("\n输入错误!\n");
                break;
            case 3: fhead=open();modify(fhead);break;
            case 4: fhead=open();delet(fhead);break;
            case 5:
                system("cls");
                printf("\na.按工号排序\n\n");
                printf("b.按工资排序\n");
                printf("\n请选择: ");
                scanf("%c",&s);
                getchar();
                fhead=open();
                if(s=='a')
                    numsort(fhead);
                else if(s=='b')
                    wagesort(fhead);
                else
                    printf("\n输入错误!\n");
                break;
            case 6: fhead=open();print(fhead);break;
            default: printf("\n输入错误!\n");
        }
        printf("\n按回车键返回主菜单!");
        getchar();
        system("cls");
    }
}

void input()            //录入信息
{
    int flag=1;
    char s;
    FILE *fp;
    EMP *p,*p1,*p2,*head;    
    head=p1=p2=(EMP *)malloc(LEN);
    while(flag==1)
    {
        system("cls");
        printf("\n姓名: ");
        scanf("%s",p1->name);
        printf("\n工号: ");
        scanf("%ld",&p1->num);
        getchar();
        printf("\n性别: ");
        scanf("%s",p1->sex);
        printf("\n年龄: ");
        scanf("%d",&p1->age);
        printf("\n地址: ");
        scanf("%s",p1->addr);
        printf("\n月薪: ");
        scanf("%d",&p1->wage);
        printf("\n健康状况: ");
        scanf("%s",p1->health);
        printf("\n教育程度: ");
        scanf("%s",p1->edu);
        getchar();
        printf("\n是否继续录入?(y/n): ");
        scanf("%c",&s);
        getchar();
        if(s=='y')
        {
            p2=p1;
            p1=(EMP *)malloc(LEN);
            p2->next=p1;
        }
        else
            flag=0;        
    }
    p1->next=NULL;
    p=head;
    if((fp=fopen("employee.txt","ab"))==NULL)
        if((fp=fopen("employee.txt","wb"))==NULL)
        {
            printf("无法打开文件!\n");
            exit(0);
        }
    while(p!=NULL)
    {
        if(fwrite(p,LEN,1,fp)!=1)
            printf("无法保存!\n");
        p=p->next;
    }
    fclose(fp);
    printf("\n录入成功!\n");
}

EMP * open(void)
{
    n=0;
    EMP *fhead,*p1,*p2;
    FILE *fp;
    fhead=NULL;
    p1=p2=(EMP *)malloc(LEN);
    if((fp=fopen("employee.txt","rb"))!=NULL)
    {
        fread(p1,LEN,1,fp);
        while(!feof(fp))
        {
            n=n+1;
            if(n==1)
                fhead=p1;
            else
                p2->next=p1;
            p2=p1;
            p1=(EMP *)malloc(LEN);
            fread(p1,LEN,1,fp);
        }
        p2->next=NULL;
    }
    else
        fp=fopen("employee.txt","wb");
    fclose(fp);
    return (fhead);
}

void namefind(EMP * head)
{
    int a=0;
    char findname[20];
    EMP *p;
    p=head;
    printf("\n请输入姓名: ");
    gets(findname);
    while(p!=NULL)
    {
        if(strcmp(findname,p->name)==0)
        {
            a=a+1;
            if(a==1)
                printf("\n姓名    工号    性别    年龄      地址        月薪    健康状况   教育程度\n\n");    
            printf("%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8s\n",p->name,p->num,p->sex,p->age,p->addr,p->wage,p->health,p->edu);
        }
        p=p->next;
    }
    if(a==0)
    printf("\n没有姓名为 %s 的职工\n",findname);
}

void numfind(EMP * head)
{
    int findnum,a=0;
    EMP *p;
    p=head;
    printf("\n请输入职工号: ");
    scanf("%ld",&findnum);
    getchar();
    while(p!=NULL)
    {
        if(findnum==p->num)
        {
            a=a+1;
            printf("\n姓名    工号    性别    年龄      地址        月薪    健康状况   教育程度\n\n");    
            printf("%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8s\n",p->name,p->num,p->sex,p->age,p->addr,p->wage,p->health,p->edu);
        }
        p=p->next;
    }
    if(a==0)
    printf("\n没有工号为 %ld 的职工\n",findnum);
}

void modify(EMP * head)
{
    EMP *p;
    int a=0;
    char findname[20];
    p=head;
    system("cls");
    printf("\n请输入姓名: ");
    gets(findname);
    while(p!=NULL)
    {
        if(strcmp(findname,p->name)==0)
        {
            a=a+1;
            printf("\n姓名    工号    性别    年龄      地址        月薪    健康状况   教育程度\n\n");
            printf("%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8s\n",p->name,p->num,p->sex,p->age,p->addr,p->wage,p->health,p->edu);
            printf("\n请修改!\n");
            printf("\n姓名: ");
            scanf("%s",p->name);
            printf("\n工号: ");
            scanf("%ld",&p->num);
            getchar();
            printf("\n性别: ");
            scanf("%s",p->sex);
            printf("\n年龄: ");
            scanf("%d",&p->age);
            printf("\n地址: ");
            scanf("%s",p->addr);
            printf("\n月薪: ");
            scanf("%d",&p->wage);
            printf("\n健康状况: ");
            scanf("%s",p->health);
            printf("\n教育程度: ");
            scanf("%s",p->edu);
            getchar();
            printf("\n修改成功!\n");
        }
        p=p->next;
    }
    if(a==0)
        printf("\n没有姓名为 %s 的职工\n",findname);
    else
        renew(head);
}

void delet(EMP * head)
{
    int a=0;
    char c,findname[20];
    EMP *p1,*p2;
    p1=p2=head;
    system("cls");
    printf("\n请输入姓名: ");
    scanf("%s",findname);
    getchar();                        //清空缓冲区
    while(p1!=NULL)
    {
        if(strcmp(findname,p1->name)==0)
        {
            a=a+1;
            printf("\n姓名    工号    性别    年龄      地址        月薪    健康状况   教育程度\n\n");
            printf("%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8s\n",p1->name,p1->num,p1->sex,p1->age,p1->addr,p1->wage,p1->health,p1->edu);
            printf("\n确定删除该职工信息?(y/n): ");
            c=getchar();
            getchar();                    //清空缓冲区
            if(c=='y')
            {            
                if(p1==head)
                    p1=p2=head=p1->next;
                else
                {
                    p2->next=p1->next;
                    free(p1);
                    p1=p2;
                }
                printf("\n删除成功!\n");
            }    
        }
        p2=p1;
        if(p1!=NULL)
            p1=p1->next;
        else;
    }
    
    if(a==0)    
        printf("\n没有姓名为 %s 的职工\n",findname);
    else
        renew(head);
}

void renew(EMP * head)
{
    FILE *fp;
    struct employee *p;
    p=head;
    if((fp=fopen("employee.txt","wb"))==NULL)
    {
        printf("无法打开文件!\n");
        exit(0);
    }
    while(p!=NULL)
    {
        if(fwrite(p,LEN,1,fp)!=1)
            printf("无法保存!\n");
        p=p->next;
    }
    fclose(fp);
}


void print(EMP * head)
{
    EMP * p;
    p=head;
    system("cls");
    if(p==NULL)
        printf("\n无任何信息!\n");
    else
    {
        printf("\n姓名    工号    性别    年龄      地址        月薪    健康状况   教育程度\n\n");
        while(p!=NULL)
        {
            printf("%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8s\n\n",p->name,p->num,p->sex,p->age,p->addr,p->wage,p->health,p->edu);
            p=p->next;
        }
    }
}

void  numsort(EMP * head)                //按工号排序
{
    int i;
    EMP *p1,*p2,*p3,*end=NULL;
    p1=p2=p3=head;
    if(head!=NULL&&head->next!=NULL)
        for(i=1;i<n;i++)
        {
            p1=p1->next;
            while(p1!=end)
                if(p1->num<p2->num)
                {
                    p2->next=p1->next;
                    p1->next=p2;
                    if(p2==p3)
                        head=p1;
                    else
                        p3->next=p1;
                    p3=p1;
                    p1=p2->next;
                }
                else
                {
                    p3=p2;
                    p2=p1;
                    p1=p1->next;
                }
            end=p2;
            p1=p2=p3=head;
        }
    renew(head);
}

void  wagesort(EMP * head)                //按工资排序
{
    int i;
    EMP *p1,*p2,*p3,*end=NULL;
    p1=p2=p3=head;
    if(head!=NULL&&head->next!=NULL)
        for(i=1;i<n;i++)
        {
            p1=p1->next;
            while(p1!=end)
                if(p1->wage<p2->wage)
                {
                    p2->next=p1->next;
                    p1->next=p2;
                    if(p2==p3)
                        head=p1;
                    else
                        p3->next=p1;
                    p3=p1;
                    p1=p2->next;
                }
                else
                {
                    p3=p2;
                    p2=p1;
                    p1=p1->next;
                }
            end=p2;
            p1=p2=p3=head;
        }
    renew(head);
}


这是我前段时间写的职工信息管理系统,和你那个差不多,可以实现排序,不过我的思路比较麻烦,我是先把信息从文件载入链表,对链表排序,然后再把链表又放回文件,应该有更简单的方法
2011-10-31 22:36
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:14 
1.在保存的之前用一个数组进行排序。
2.你的增加函数并没有把新增加的信息写到文件中,此时需要找到插入的位置。
3.你的删除函数并没有把相应的信息从文件中删除。应该p2->next=p1->next;后重新把信息写入文件中去。
4.给你一个建议,在没有调试好之前不要用清屏函数清屏。
2011-10-31 22:38
吴军旗
Rank: 5Rank: 5
等 级:职业侠客
帖 子:286
专家分:308
注 册:2011-9-14
收藏
得分:14 
我也找个时间去做做,要到过年吧,现在太忙了,我还有自学C++呢。。。。

最惨的不是忘不了悲伤的回忆,而是那些悲伤的回忆却开始记不清。。。
2011-10-31 23:58
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:14 
把分全给我,明天帮你重写一个。

开个玩笑,是为了练习使用链表的话我就不多说什么了,链表用在这里效率一般。换用数组吧,动态扩展数组。

重剑无锋,大巧不工
2011-11-01 00:55
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:14 
很多参考书上都有类似的信息管理程序,比如《C语言范例开发大全》

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-11-01 07:19
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 4楼 qfyzy
恩 您的意思是说 通过画图来明白结构体指针之间的转换关系么
2011-11-01 07:37
快速回复:发个百分贴,在此求助各位,希望有人可以帮帮我,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032486 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved