| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1945 人关注过本帖, 3 人收藏
标题:学生信息录入小程序,大家都来帮忙看看哈!!!
取消只看楼主 加入收藏
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
结帖率:100%
收藏(3)
已结贴  问题点数:100 回复次数:6 
学生信息录入小程序,大家都来帮忙看看哈!!!
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
struct student
{
long num;            //索引,具有唯一标识不允许重复!!!   
char name[20];
char sex[10];
char brith[15];
char remark[30];
struct student *next;
};


struct student *creat(void)//创建n个同学的链表,以输入NUM==0结束!!!
{
    struct student *p1, *p2;
    struct student *head=NULL;
    int m=0;
    long n;


    for( ; ; )
    {
        p1=(struct student *)malloc(sizeof(struct student));
            printf("      num:");
       scanf("%ld",&n);
            if(n==0)
            {
                    p2->next=NULL;
                       return head;
       
            }
   
    
                
                   p1->num=n;

                   printf("      name:");

              scanf("%s",&p1->name);

                   printf("      sex:");

              scanf("%s",&p1->sex);

                   printf("      brith:");

              scanf("%s",&p1->brith);

                   printf("      remark:");

              scanf("%s",&p1->remark);
           
             
                 if(m==0)
                 { 
                      head=p1;
                 }
                   else
                         p2->next=p1;
                           p2=p1;
                             m++;
                            
        }
return head;
}
struct student *search1(long num,char *name,struct student *h)//查询返回该num所在地址!
{

 struct student *p1;

 int n=1;


 p1=h;
   for(;p1!=NULL;)
   {
      if(p1->num==num||strcmp(p1->name,name)==0)
      {
   
           printf("%-13ld  %-13s  %-13s  %-13s  %-200s\n",h->num,h->name,h->sex,h->brith,h->remark);
                
                               n++;
      }
          if(p1->num==num)
                  return p1;
            p1=p1->next;
      
   }
if(n==1)
{
printf("没有查找到该数据!");
}
  
   
  
  return NULL;  
} 

   struct student *search2(long num,char *name,struct student *h)//返回num所在地址的前一地址!
   {
       struct student *p1, *p2;
     int n=1;

 
     p1=h;
     p2=h;
     if(h==NULL)
     {
         //printf("没有查找到该数据\n");
          return NULL;
           
     }
     if(h->num==num)
     {
           return p2;
     }
       else if(p1->next==NULL)
       {
             if(p1->num==num)
                    {
   
                        //printf("%-13ld  %-13s  %-13s  %-13s  %-20s\n",h->num,h->name,h->sex,h->brith,h->remark);
                           
                          return p2;
                    }
             else
             {
                //printf("没有查找到该数据!");

                            return NULL;   
             }
       }
         else
         {
           
                for(;p1!=NULL;)
                {
                    p2=p1;
                        p1=p1->next;
                   
                    if(p1->num==num)
                    {
   
                        printf("%-13ld  %-13s  %-13s  %-13s  %-20s\n",h->num,h->name,h->sex,h->brith,h->remark);
                           
                          return p2;
                    }

                }
    
           }
  //printf("没有查找到该数据!");

  return NULL;  
}
struct student *add(struct student *p1,struct student *p2,struct student *h)//add插入
{

struct student *p3;

       if(p1!=NULL)
       {
          p3=(struct student *)malloc(sizeof(struct student));
                        printf("      num:");
                    scanf("%ld",&p3->num);
                        printf("      name:");
                    scanf("%s",&p3->name);
                        printf("      sex:");
                    scanf("%s",&p3->sex);
                        printf("      brith:");
                    scanf("%s",&p3->brith);
                        printf("      remark:");
                    scanf("%s",&p3->remark);
                p1->next=p3;
                   p3->next=p2;
                       return h;
       }

  
return h;
}
struct student *delet(struct student *p1,struct student *p2,struct student *h)//delete删除
{
    if(p1==NULL)
    {
        return h;
    }
     if(p1->num==h->num)//1
     {
        if(p1->num==p2->num)
        {
          h=h->next;
             return h;
        }
         else
             p1->next=p2->next;
            
            
    }
        else if(p1==NULL)//z1
            { 
                 printf("\n");//bcz
                     
            }
                  else
                     p1->next=p2->next;
       
return h;
}

 struct student *revise(struct student *p1,struct student *h)//revise修改
{
   struct student *p2;
    
   if(p1==NULL)
   {
        return h;
   }
       //p2=p1;
    p2=(struct student *)malloc(sizeof(struct student));
                        printf("      num:");
                    scanf("%ld",&p1->num);
                        printf("      name:");
                    scanf("%s",&p1->name);
                        printf("      sex:");
                    scanf("%s",&p1->sex);
                        printf("      brith:");
                    scanf("%s",&p1->brith);
                        printf("      remark:");
                    scanf("%s",&p1->remark);
                           p2=p1->next;
                           p1=p2;

return h;
}
int print(struct student *h)//printf输出!
{

   
              for(;h!=NULL;)
              {
                  printf("%-13ld  %-13s  %-13s  %-13s  %-20s\n",h->num,h->name,h->sex,h->brith,h->remark);
                    
                     h=h->next;
              }
   
return 0;
}

void menu1(void)//菜单一
{
    system("CLS");
    printf("\t\t\t单链表C语言实现实例\n");
    printf("\t\t|————————————————|\n");
    printf("\t\t| |\n");printf("\t\t| [1] 建 立 新 表 |\n");
    printf("\t\t| [2] 查 找 数 据 |\n");
    printf("\t\t| [3] 插 入 数 据 |\n");
    printf("\t\t| [4] 删 除 数 据 |\n");
    printf("\t\t| [5] 修 改 数 据 |\n");
    printf("\t\t| [6] 打 印 数 据 |\n");
    printf("\t\t| [7] 帮 助()  |\n");
    printf("\t\t| [8] 退 出 |\n");
    printf("\t\t| |\n");
    printf("\t\t| 如未建立新表,请先建立! |\n");
    printf("\t\t| |\n");
    printf("\t\t|————————————————|\n");
    printf("\t\t 请输入你的选项(1-8):");
}
void menu2(void)//菜单2
{
    system("CLS");
    printf("\t\t 请输入你的查询方式(1-2):\n");
    printf("\t\t|————————————————|\n");
    printf("\t\t| [1] 按 学 号 查 询\n");
    printf("\t\t| [2] 按 姓 名 查 询\n");
    printf("\t\t| |\n");
    printf("\t\t| 如未建立新表,请先建立! |\n");
    printf("\t\t|————————————————|\n");
    printf("\t\t 请输入你的选项(1-2):");
}







int main()
{
  int m, choise;
  long num;
  struct student *head, *p1, *p2;
  char name[20], *a="0";

  head=NULL;
  menu1();
  for( ; ; )    
  {
     scanf("%d",&choise);

  switch(choise)
  {
    case 1: head=creat();system("CLS");break;
            case 2: printf("请选择查询方式:");
                    menu2();
                    scanf("%d",&m);
                    if(m==1)
                    {
                    printf("输入你所要查找的人的学号:");
                    scanf("%ld",&num);
                    printf("学号           姓名           性别           生日          备注\n");
                    search1(num,a,head);
                    }
                      else if(m==2)
                      {
                        printf("输入你所要查找的人的姓名:");
                        scanf("%s",name);
                    printf("学号           姓名           性别           生日          备注\n");
                        search1(0,name,head);
                      }
                    printf("\n按回车键回到主菜单。");
                    getchar();
                    getchar();
                    break;
            case 3: printf("学号           姓名           性别           生日          备注\n");//输出表后便于操作!
                    print(head);
                    printf("输入你要在哪个学号后面插入(如在排头插入请输入0):");
                    scanf("%ld",&num);
                    if(num==0)
                    {
                           p1=(struct student *)malloc(sizeof(struct student));
                        printf("      num:");
                    scanf("%ld",&p1->num);
                        printf("      name:");
                    scanf("%s",&p1->name);
                        printf("      sex:");
                    scanf("%s",&p1->sex);
                        printf("      brith:");
                    scanf("%s",&p1->brith);
                        printf("      remark:");
                    scanf("%s",&p1->remark);
                          p1->next=head;
                              head=p1;                         
                   
                    }
                        else
                        {
                               p1=search1(num,a,head);
                                  if(p1==NULL)
                                  {
                                      goto a;
                                  }
                                 p2=p1->next;
                                   head=add(p1,p2,head);
                        }
              a:    printf("\n按回车键回到主菜单!");
                    getchar();
                    getchar();
                    break;
            case 4: printf("学号           姓名           性别           生日          备注\n");//输出表后便于操作!
                    print(head);
                    printf("\n输入你所要删除的人的学号:");
                    scanf("%ld",&num);
                    p1=search2(num,a,head);
                    p2=search1(num,a,head);
                    head=delet(p1,p2,head);
                    printf("\n按回车键回到主菜单!");
                    getchar();
                    getchar();
                    break;
            case 5: printf("学号           姓名           性别           生日          备注\n");//输出表后便于操作!
                    print(head);
                    printf("\n输入你所要修改的人的学号:");
                    scanf("%ld",&num);
                    p1=search1(num,a,head);
                    revise(p1,head);
                   
                    printf("\n按回车键回到主菜单!");
                    getchar();
                    getchar();
                    break;
            case 6: printf("学号           姓名           性别           生日          备注\n");
                    print(head);
                    printf("\n按回车键回到主菜单。");
                    getchar();
                    getchar();
                    break;
            case 7: printf("1.“学号”索引具有唯一标识.不允许重复.系统默认唯一重复时查询时优先显示,不警告!!!\n");
                    printf("2.创建n个同学的链表,当输入NUM为0时结束 !!!\n");
                    printf("3.“姓名”不能为0  !!!\n");
                    printf("4.“插入”“删除”“修改”时输入无效学号系统不予提示保留本次操作前建表内容!!!\n");//已修复!!!
                    printf("5.未建表时不允许使用“删除”功能否则会引起奔溃!!!\n");//已修复!!!
                    printf("6.请按提示正确操作!!!\n");
                    printf("\n按回车键回到主菜单!");
                    getchar();
                    getchar();
                    break;
            case 8: return 0;break;
            default: printf("你输入了非法字符!按回车键回到主菜单。");

  }
                system("CLS");
                    menu1();
                





 }
}呵呵,学习c3个多月了,谢谢论坛里帮助过我的人,自己写的很吃力,但还是坚持写完了,大家帮忙看看,有什么问题帮忙指出来,格式,逻辑的都行哈!!一定虚心接受!
studentLDDNO2.zip (3.01 KB)


[ 本帖最后由 清微御宇 于 2012-5-29 23:15 编辑 ]
搜索更多相关主题的帖子: 录入 信息 color 
2012-05-29 20:25
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
我晕第一次粘贴东西掉太多了!!!!

Stay hungry , Stay foolish!
2012-05-29 23:12
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
回复 6楼 laoyang103
呵呵,你教我的释放内存还不太懂,也没敢加上,谢谢哈!

Stay hungry , Stay foolish!
2012-06-01 09:34
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
回复 7楼 hellovfp
还好有你,嘿嘿,我们快要考试了,不过问题都记下了,抽时间一定想办法改正!!!

Stay hungry , Stay foolish!
2012-06-01 09:36
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
回复 14楼 灰兜兜
是的!

Stay hungry , Stay foolish!
2012-06-01 09:37
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
回复 10楼 TonyDeng
呵呵,您也帮过我很多次,上次2点多回帖哦很感动,再说声谢谢哈!

Stay hungry , Stay foolish!
2012-06-01 09:40
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
回复 12楼 embed_xuel
呵呵,木有!

Stay hungry , Stay foolish!
2012-06-01 10:06
快速回复:学生信息录入小程序,大家都来帮忙看看哈!!!
数据加载中...
 
   



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

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