📄 select.cpp
字号:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define STUDENTSIZE 9
#define COURSESIZE 4
#define GRADESIZE 36
struct student{
char sname[10]; //学生姓名
char sex[7];
int sage; //年龄
char sdept[15]; //班级
int sno; //学号
}stud[STUDENTSIZE];
struct course{
char cname[20]; //课程名称
int cno; //课程号
int ccredit; //学分
char tname[10]; //教师姓名
}cour[COURSESIZE];
struct grade{
int sno; //学号
int cno; //课程号
float score; //分数
}gra[GRADESIZE];
/****************************************************************/
void readStudent()
{
int i;
FILE *fp;
fp=fopen("student","rb");
for(i=0;i<STUDENTSIZE;i++)
{
fread(&stud[i],sizeof(struct student),1,fp);
//printf("%-10s %-7s %4d %-15s% 4d\n",stud[i].sname,stud[i].sex,stud[i].sage,stud[i].sdept,stud[i].sno);
}
fclose(fp);
}
void readGrade()
{
int i;
FILE *fp;
fp=fopen("Grade","rb");
for(i=0;i<GRADESIZE;i++)
{
fread(&gra[i],sizeof(struct grade),1,fp);
//printf("%4d %4d %-4f\n",gra[i].sno,gra[i].cno,gra[i].score);
}
fclose(fp);
}
void readCourse()
{
int i;
FILE *fp;
fp=fopen("course","rb");
for(i=0;i<COURSESIZE;i++)
{
fread(&cour[i],sizeof(struct course),1,fp);
//printf("%-20s %4d %4d %-10s\n",cour[i].cname,cour[i].cno,cour[i].ccredit,cour[i].tname);
}
fclose(fp);
}
void searchtable()
{
printf("数据库中的表有:\n");
printf("\n");
printf("学生信息表 课程表 成绩表\n");
printf("\n");
printf("student course grade\n");
printf("\n");
}
void searchAttr()
{
char table[10];
printf("请输入你要查询的表:");
scanf("%s",table);
printf("\n");
//printf("%s\n",table);
if(!strcmp(table,"student"))
{
printf("学生姓名 性别 年龄 班级 学号\n");
printf("\n");
printf("sno sex sage sdept sno\n");
}
else if(!strcmp(table,"course"))
{
printf("课程名称 课程号 学分 教师姓名\n");
printf("\n");
printf(" cname cno ccredit tname\n");
}
else if(!strcmp(table,"grade"))
{
printf("学号 课程号 分数\n");
printf("\n");
printf(" sno cno score\n");
}
}
void outStudent1(int size,char input[6][15])
{
//printf("姓名 性别 年龄 系别 学号\n");
int i;
for(i=0;i<size;i++){
if(!strcmp(input[i],"sname")){
printf("姓名 ");
}
else if(!strcmp(input[i],"sex")){
printf("性别 ");
}
else if(!strcmp(input[i],"sage")){
printf("年龄 ");
}
else if(!strcmp(input[i],"sdept")){
printf("系别 ");
}
else if(!strcmp(input[i],"sno")){
printf("学号");
}
}
printf("\n");
}
void outStudent2(int t,int size,char input[6][15])
{
//printf("%-10s %-7s %4d %-15s% 4d\n",stud[i].sname,stud[i].sex,stud[i].sage,stud[i].sdept,stud[i].sno);
int i=0;
for(i=0;i<size;i++){
if(!strcmp(input[i],"sname")){
printf("%-10s ",stud[t].sname);
}
else if(!strcmp(input[i],"sex")){
printf("%-7s ",stud[t].sex);
}
else if(!strcmp(input[i],"sage")){
printf("%4d ",stud[t].sage);
}
else if(!strcmp(input[i],"sdept")){
printf("%-15s ",stud[t].sdept);
}
else if(!strcmp(input[i],"sno")){
printf("%4d ",stud[t].sno);
}
}
printf("\n");
}
void selects()
{
int i;
char inputSelect[6][15];
char inputFrom[2][10];
char inputWhere[10][15];
//char inputOrder[2][10];
int wherelen,selectlen;
/*************************************************/
/*************读入select语句**********************/
/*************************************************/
printf("select ");
for(i=0;strcmp(inputSelect[i-1],";");i++)
{
scanf("%s",inputSelect[i]);
//printf("%s ",inputSelect[i]);
}
selectlen=i-2;
printf(" from ");
for(i=0;strcmp(inputFrom[i-1],";");i++)
{
scanf("%s",inputFrom[i]);
//printf("%s ",inputFrom[i]);
}
printf(" where ");
for(i=0;strcmp(inputWhere[i-1],";");i++)
{
scanf("%s",inputWhere[i]);
//printf("%s ",inputWhere[i]);
}
printf("\n");
wherelen=i-2;
/*printf(" group by ");
for(i=0;strcmp(inputOrder[i-1],"end");i++)
{
scanf("%s",inputOrder[i]);
//printf("%s ",inputOrder[i]);
}*/
/*******************************************************/
/****************处理student表**************************/
/*******************************************************/
if(!strcmp(inputFrom[0],"student"))
{
readStudent();//selectlen inputSelect[]
/*.....................................................*/
/* 查询条件为"="时 */
/*.....................................................*/
if(!strcmp(inputWhere[1],"="))
{
if(!strcmp(inputWhere[0],"sname"))
{
int flag=0;
outStudent1(selectlen,inputSelect);
for(i=0;i<STUDENTSIZE;i++){
if(!strcmp(inputWhere[2],stud[i].sname)){
printf("\n");
outStudent2(i,selectlen,inputSelect);
flag=1;
break;
}
}
if(flag==0)
printf("没有姓名为%s的学生\n",inputWhere[2]);
}
else if(!strcmp(inputWhere[0],"sdept"))
{
int flag=0;
outStudent1(selectlen,inputSelect);
for(i=0;i<STUDENTSIZE;i++){
if(!strcmp(inputWhere[2],stud[i].sdept)){
printf("\n");
outStudent2(i,selectlen,inputSelect);
//printf("%-10s %-7s %4d %-15s% 4d\n",stud[i].sname,stud[i].sex,stud[i].sage,stud[i].sdept,stud[i].sno);
flag=1;
}
}
if(flag==0)
printf("没有%s系的学生\n",inputWhere[2]);
}
else if(!strcmp(inputWhere[0],"sex"))
{
int flag=0;
outStudent1(selectlen,inputSelect);
for(i=0;i<STUDENTSIZE;i++){
if(!strcmp(inputWhere[2],stud[i].sex)){
printf("\n");
outStudent2(i,selectlen,inputSelect);
//printf("%-10s %-7s %4d %-15s% 4d\n",stud[i].sname,stud[i].sex,stud[i].sage,stud[i].sdept,stud[i].sno);
flag=1;
}
}
if(flag==0){
printf("\n");
printf("没有性别为%s的学生\n",inputWhere[2]);
}
}
else if(!strcmp(inputWhere[0],"sno"))
{
int flag=0;
int intSno=atoi(inputWhere[2]);
outStudent1(selectlen,inputSelect);
for(i=0;i<STUDENTSIZE;i++){
if(intSno==stud[i].sno){
printf("\n");
outStudent2(i,selectlen,inputSelect);
//printf("%-10s %-7s %4d %-15s% 4d\n",stud[i].sname,stud[i].sex,stud[i].sage,stud[i].sdept,stud[i].sno);
flag=1;
break;
}
}
if(flag==0)
printf("没有学号为%s的学生\n",inputWhere[2]);
}
else if(!strcmp(inputWhere[0],"sage"))
{
int flag=0;
int intSage=atoi(inputWhere[2]);
outStudent1(selectlen,inputSelect);
for(i=0;i<STUDENTSIZE;i++){
if(intSage==stud[i].sage){
printf("\n");
outStudent2(i,selectlen,inputSelect);
flag=1;
}
}
if(flag==0)
printf("没有年龄为%s的学生\n",inputWhere[2]);
}
else printf("查询条件字段输入错误.\n");
}
/*.....................................................*/
/* 查询条件为"<"时 */
/*.....................................................*/
else if(!strcmp(inputWhere[1],"<"))
{
if(!strcmp(inputWhere[0],"sno"))
{
int flag=0;
int intSno=atoi(inputWhere[2]);
outStudent1(selectlen,inputSelect);
for(i=0;i<STUDENTSIZE;i++){
if(intSno>stud[i].sno){
printf("\n");
outStudent2(i,selectlen,inputSelect);
flag=1;
}
}
if(flag==0)
printf("没有学号小%s的学生\n",inputWhere[2]);
}
else if(!strcmp(inputWhere[0],"sage"))
{
int flag=0;
int intSage=atoi(inputWhere[2]);
outStudent1(selectlen,inputSelect);
for(i=0;i<STUDENTSIZE;i++){
if(intSage>stud[i].sage){
printf("\n");
outStudent2(i,selectlen,inputSelect);
flag=1;
}
}
if(flag==0)
printf("没有年龄小于%s的学生\n",inputWhere[2]);
}
else printf("查询条件字段输入错误.\n");
}
/*.....................................................*/
/* 查询条件为">"时 */
/*.....................................................*/
else if(!strcmp(inputWhere[1],">"))
{
if(!strcmp(inputWhere[0],"sno"))
{
int flag=0;
int intSno=atoi(inputWhere[2]);
outStudent1(selectlen,inputSelect);
for(i=0;i<STUDENTSIZE;i++){
if(intSno<stud[i].sno){
printf("\n");
outStudent2(i,selectlen,inputSelect);
flag=1;
}
}
if(flag==0)
printf("没有学号大于%s的学生\n",inputWhere[2]);
}
else if(!strcmp(inputWhere[0],"sage"))
{
int flag=0;
int intSage=atoi(inputWhere[2]);
outStudent1(selectlen,inputSelect);
for(i=0;i<STUDENTSIZE;i++){
if(intSage<stud[i].sage){
printf("\n");
outStudent2(i,selectlen,inputSelect);
flag=1;
}
}
if(flag==0)
printf("没有年龄大于%s的学生\n",inputWhere[2]);
}
else printf("查询条件字段输入错误.\n");
}
/*.....................................................*/
/* 查询条件为">="时 */
/*.....................................................*/
else if(!strcmp(inputWhere[1],">="))
{
if(!strcmp(inputWhere[0],"sno"))
{
int flag=0;
int intSno=atoi(inputWhere[2]);
outStudent1(selectlen,inputSelect);
for(i=0;i<STUDENTSIZE;i++){
if(intSno<=stud[i].sno){
printf("\n");
outStudent2(i,selectlen,inputSelect);
flag=1;
}
}
if(flag==0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -