| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 839 人关注过本帖
标题:发个百分贴,在此求助各位,希望有人可以帮帮我,谢谢
取消只看楼主 加入收藏
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
结帖率:92.31%
收藏
已结贴  问题点数:100 回复次数:8 
发个百分贴,在此求助各位,希望有人可以帮帮我,谢谢
我刚刚学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
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 2楼 Devil_W
恩 我只是想将它的功能实现的相对来说多一点,不过我能力还不行,所以只能求助啦,写这些程序的时候,不知道借鉴了多少程序,可是仍然写不好
2011-10-31 21:11
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 4楼 qfyzy
恩 您的意思是说 通过画图来明白结构体指针之间的转换关系么
2011-11-01 07:37
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 8楼 beyondyf
真的么 呵呵 如果分数全给你啦 我就对不住其他参与的人啦 不过呢如果可以的话 我那里还有六十多分您如果需要的话也可以
2011-11-01 07:39
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 5楼 绿茶盖儿
呵呵 谢谢啦 其实吧 思路复不复杂没关系 主要思路清晰就成 很感谢您的程序 我先看看嘛看能能学习到一些东西
2011-11-01 07:41
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 6楼 laznrbfe
恩 好的 那我就先参考您的意见先尝试改动下看我能不能行 不行的话还要劳烦您可以指点下 谢谢
2011-11-01 07:45
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 8楼 beyondyf
动态的扩展数组是一个怎样的数组呢 可以给个解释或者范例么
2011-11-01 07:47
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 7楼 吴军旗
呵呵 挺努力哈 加油
2011-11-01 07:49
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 9楼 pauljames
好的 谢谢哟 或许在写不出来 我还真得再去找点书看看呢
2011-11-01 07:50
快速回复:发个百分贴,在此求助各位,希望有人可以帮帮我,谢谢
数据加载中...
 
   



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

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