⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 复件 sql.c

📁 中北大学大型软件实验设计
💻 C
📖 第 1 页 / 共 2 页
字号:
/*^^^^^^^^^^^^^^^^^^^^^^^^2006.1.5^^^^^_^twofat^_^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/

/********中北大学***计算机科学与技术系*****软件大型实验****02090402班**********/

/*===================================预定义===================================*/
#include <stdio.h>
#define closegr closegraph
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <graphics.h>



/*定义学生表学生信息的结构*/
typedef struct stuinfo
{
    int stunum;
    char name[20];
    int sex;
    int dep;
    int age;
    struct stuinfo* next;
} student;

/*定义成绩表记录的结构*/
typedef struct grainfo
{
    int num;
    int math;
    int eng;
    int che;
    int phy;
    struct grainfo* next;
} grade;

/*创建学生表*/
student* createstu()
{
/*初始化头节点*/
  student* head,*s,*q ;

  int i;
  head = (student *) malloc (sizeof(student));
  head -> next = NULL;
  q=head;
  for(i=1;i<4;i++)
  {
     s =(student *) malloc (sizeof(student));
     q->next=s;
     q=s;
     q->next=NULL;
  }
  s=head->next;
  s->stunum=1000;
  strcpy(s->name,"yuan");
  s->sex=1;/*1代表男性 2代表女性*/
  s->dep=2;
  s->age=22;
  s=s->next;
  s->stunum=1001;
  strcpy(s->name,"wang");
  s->sex=2;/*1代表男性 2代表女性*/
  s->dep=9;
  s->age=23;
  s=s->next;
  s->stunum=1002;
  strcpy(s->name,"xu");
  s->sex=1;/*1代表男性 2代表女性*/
  s->dep=14;
  s->age=21;
  return(head);
}

/*创建成绩表*/
grade* creategra()
{
  grade* head,*s,*q ;
  int i;

  head = (grade *) malloc (sizeof(grade));
  head -> next = NULL;
  q=head;
  for(i=1;i<4;i++)
  {
     s =(grade *) malloc (sizeof(grade));
     q->next=s;
     q=s;
     q->next=NULL;
  }
  s=head->next;
  s->num=1000;
  s->math=50;
  s->eng=66;
  s->che=80;
  s->phy=99;
  s=s->next;
  s->num=1001;
  s->math=33;
  s->eng=63;
  s->che=75;
  s->phy=86;
  s=s->next;
  s->num=1002 ;
  s->math=77;
  s->eng=75;
  s->che=99;
  s->phy=100;
  return (head);
}

/*图形初始化*/
void initgr(void)                 /* BGI初始化 */
{int gd=DETECT,gm=0;              /* 和gd=VGA,gm=VGAHI是同样效果 */
 registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
 initgraph(&gd,&gm,"");
}



/*查询学生信息子函数*/
void search1 (int n,student* a)
{
  int sn,i=0;
  char tmp[20],input;

  clrscr();
 if (n==1)
  {
    a=a->next;
    printf("请输入查询学生的学号:");
    scanf("%d",&sn);
    while (a->stunum!=sn)
    {
        if (a->next==NULL)
            break;
        a=a->next;
    }

    if (a->stunum!=sn)
        {
        printf("无此学生!");
        }
    else
      {
       printf("\n         =====学生信息=====\n");
       printf("\n----------------------------------------\n");
       printf("| 学 号|   姓  名 | 性别 | 系 别| 年龄 |\n");
       printf("----------------------------------------\n");
       printf("|%6d|%10s|%6d|%6d|%6d|",a->stunum,a->name,a->sex,a->dep,a->age);
       printf("\n----------------------------------------\n");

      }

  }
 else if (n==2)
   {
    a=a->next;
    getchar();  /*清除回车干扰*/
    printf("请输入查询学生的姓名:");

    while ((input = getchar()) != '\n')
        {
            tmp[i] = input;
            i++;
        }
    tmp[i] = '\0';
    while (strcmp(a->name,tmp)!=0)
    {   if (a->next==NULL)
            break;
        a=a->next;
    }

    if (strcmp(a->name,tmp)!=0)
        {
        printf("无此学生!");
        }
    else
      {
       printf("\n         =====学生信息=====\n");
       printf("\n----------------------------------------\n");
       printf("| 学 号|   姓  名 | 性别 | 系 别| 年龄 |\n");
       printf("----------------------------------------\n");
       printf("|%6d|%10s|%6d|%6d|%6d|",a->stunum,a->name,a->sex,a->dep,a->age);
       printf("\n----------------------------------------\n");
      }

   }
}

/*查询成绩子函数*/
void search2 (student*a,grade*b)
{
 int n;

 clrscr();
 a=a->next;
 b=b->next;
 printf("请输入查询学生的学号:");
 scanf("%d",&n);
 while (a->stunum!=n)
    {   if (a->next==NULL)
            break;
        a=a->next;
    }

 if (a->stunum!=n)
    {
        printf("无此学生!");
    }
 else
    {
        while (b->num!=n)
        {
            if (b->next==NULL)
                break;
            b=b->next;
        }
        if (b->num!=n)
            printf("无该学生成绩信息");
        else
            {
                printf("\n            =====学生成绩=====\n");
                printf("\n-----------------------------------------------\n");
                printf("| 学 号|   姓 名  | 数学 | 英语 | 化学 | 物 理|");
                printf("\n-----------------------------------------------\n");
                printf("|%6d|%10s|%6d|%6d|%6d|%6d|",a->stunum,a->name,b->math,b->eng,b->che,b->phy);
                printf("\n-----------------------------------------------\n");
            }
    }
}

 /*全部学生信息*/
void prints(student*a)
{
    clrscr();
    gotoxy(8,2);
    printf("=======学生信息表=======");
    gotoxy(1,6);
    printf("-----------------------------------------\n");
    printf("| 学 号*|   姓  名  |性 别|系 别 | 年 龄|\n");
    printf("-----------------------------------------\n");

    a = a -> next;
    while (a != NULL)
    {
        printf("|%6d |%10s | %4d|%6d|%5d |\n",a->stunum,a->name,a->sex,a->dep,a->age);
        printf("-----------------------------------------\n");
        a = a -> next;
    }
}

/*全部学生成绩*/
void printg(grade*a)
{
    clrscr();
    gotoxy(8,2);
    printf("=======学生成绩表=======");
    gotoxy(1,6);
    printf("----------------------------------------\n");
    printf("| 学 号*|  数学 |  英语 |  化学 |  物理|\n");
    printf("----------------------------------------\n");
    a = a -> next;
    while (a != NULL)
    {
        printf("|%6d |%6d |%6d |%6d |%6d|\n",a->num,a->math,a->eng,a->che,a->phy);
        printf("----------------------------------------\n");
        a = a -> next;
    }
}

/*查询学生信息*/
void pagestu(student*stu)
{
    int n;

    clrscr();
    gotoxy(31,8);
    printf("1.全部学生信息");
    gotoxy(31,10);
    printf("2.按学号查询");
    gotoxy(31,12);
    printf("3.按姓名查询");
    gotoxy(26,22);
    printf("请选择你操作表的序号:");
    scanf("%d",&n);
    switch(n)
    {
        case 1:prints(stu);break;
        case 2:search1(1,stu);break;
        case 3:search1(2,stu);break;
        default:getch();
    }
}

/*查询成绩*/
void pagegra(student*stu,grade*gra)
{
    int n;

    clrscr();
    gotoxy(31,8);
    printf("1.全部学生成绩");
    gotoxy(31,12);
    printf("2.按学号查询");
    gotoxy(26,22);
    printf("请选择你操作表的序号:");
    scanf("%d",&n);
    switch(n)
    {
        case 1:printg(gra);break;
        case 2:search2(stu,gra);break;
        default:getch();
    }
}

/*选择查询项*/
void pagecha(student* a,grade*b)
{
    int n;

    clrscr();
    gotoxy(31,8);
    printf("1.学生信息");
    gotoxy(31,10);
    printf("2.成绩");
    gotoxy(26,22);
    printf("请选择你操作表的序号:");
    scanf("%d",&n);
    switch(n)
    {
        case 1:pagestu(a);break;
        case 2:pagegra(a,b);break;
        default:getch();
    }

}




/*判断此学号是否在学生表中存在*/
int isexists(int sn,student*a)
{
   a=a->next;
   while (a->next!=NULL)
       {
            if (a->stunum==sn)
            {
                return(1);
            }
            else
                a=a->next;
       }
   if (a->stunum==sn)
        return(1);
   else
        return(0);

}
/*判断此学号是否在成绩表中存在*/
int isexistg(int sn,grade*a)
{
   a=a->next;
   while (a->next!=NULL)
       {
            if (a->num==sn)
            {
                return(1);
            }
            else
                a=a->next;
       }
   if (a->num==sn)
        return(1);
   else
        return(0);

}


/*新成绩信息*/
void ingra(student*a,grade*b)
{
    int sn,m,c,p,e;
    grade*n,*q;

    clrscr();
    q=b;
    n = (grade *) malloc (sizeof(grade));
    n -> next = NULL;
    if (b->next==NULL)
    {
            b->next=n;
            printf("请输入该学生的学号:");
            scanf("%d",&sn);
            while (a->stunum!=sn)
            {
                if (a->next==NULL)
                    break;
                a=a->next;
            }
            if (a->stunum!=sn)
                {
                    printf("无此学生信息,请添加");
                    b->next=NULL;
                    free(n) ;
                    getch();

                }
            else
                {
                    if (isexistg(sn,q)==0)
                    {
                    printf("请输入该学生的数学成绩:");
                    scanf("%d",&m);
                    printf("请输入该学生的英语成绩:");
                    scanf("%d",&e);
                    printf("请输入该学生的化学成绩:");
                    scanf("%d",&c);
                    printf("请输入该学生的物理成绩:");
                    scanf("%d",&p);
                    n->num=sn;
                    n->math=m;
                    n->eng=e;
                    n->che=c;
                    n->phy=p;
                    printg(q);
                    }

                    else

                    {
                        printf("该学生成绩已经存在!");
                        b->next=NULL;
                        free(n);
                        getch();
                    }
                 }
    }
  else
   {
        a=a->next;
        b=b->next;
        while(b->next!=NULL)
        {
            b=b->next;
        }
        b->next=n;
        printf("请输入该学生的学号:");
        scanf("%d",&sn);
        while (a->stunum!=sn)
        {
            if (a->next==NULL)
                break;
            a=a->next;
        }
        if (a->stunum!=sn)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -