📄 复件 sql.c
字号:
/*^^^^^^^^^^^^^^^^^^^^^^^^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 + -