资源简介

C++实现数据库DBMS建表插入删除属性功能

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#define MAXSIZE 60
using namespace std;

/*链表每一个节点为table的每个属性*/
struct Property                 //链表结点即表的属性
{
    char property[20];                       //属性名
    char type[20];                           //类型
    char   size[20];                         //属性分配的空间
    char  Constraint[40];                    //完整性约束
    struct Property *next;                   //下一结点指针
};
struct Table                                 //table结构体
{
    struct Property *head;                   //链表头指针
    int number;                              //链表结点数
    char TableName[20];                      //表名
    struct Table *next;
};

struct Schema                                //模式
{
    struct Table *head;                      //模式头指针
    int number;                              //模式中表的数量
    char SchemaName[20];                     //模式名字
};



/*初始化结构体*/
void InitSchema (struct Schema &schema)
{
    schema.head = NULL;
    schema.number = 0;
}
void InitTable (struct Table &table)
{
    table.head = NULL;
    table.number = 0;
}

/*将建表第一行命令中的表名分离出来,保存在TableName中*/
void DepartTable(char *CreateTable char *TableName)
{
    while(*CreateTable!=‘\0‘)
        CreateTable++;
    while(*CreateTable != ‘ ‘)
        CreateTable--;
    CreateTable++;

    while(*CreateTable!=‘\0‘)
    {
        *TableName = *CreateTable;
        *CreateTable = ‘\0‘;
        CreateTable++;
        TableName++;
    }
    *TableName = ‘\0‘;

}
/*删除输入属性每一行的首尾空格*/
void Delete_Start_End_Blank(char *Member)
{
    /*去除首部空格*/
    char temp_1[MAXSIZE] *p = Member;
    while(*p == ‘ ‘)
        p ++;
    int j = 0;
    while(*p != ‘\0‘)
    {
        temp_1[j] = *p;
        j++;
        p ++;
    }
    temp_1[j] = ‘\0‘;
    strcpy(Member temp_1);
    /*去除尾部空格*/
    char temp_2[MAXSIZE] *p_1 = Member *p_2 = Member;
    while(*p_1 != ‘\0‘)
        p_1 ++;
    p_1 --;
    while(*p_1 == ‘ ‘)
        p_1 --;
    p_1++;
    int i = 0;
    while(p_2 != p_1)
    {
        temp_2[i] = *p_2;
        i++;
        p_2 ++;

    }
    temp_2[i] = ‘\0‘;
    strcpy(Member temp_2);
}
/*建表第一行命令去掉空格并全部转换为小写,例如:create table stu->createtablestu*/
void DeleteBlankAndChange(char *CreateTable)
{
    char temp[MAXSIZE];
    int j = 0;
    for(int i = 0; i < strlen(CreateTable); i++)
    {
        if(CreateTable[i] != ‘ ‘)
        {
            temp[j] = CreateTable[i];
            if(temp[j]>=65 && temp[j]<=90)
                temp[j] = temp[j] + 32;
            j++;
        }
    }
    temp[j] = ‘\0‘;
    strcpy(CreateTable temp);
}
/*将每一属性输入行分为:propertytypesizeConstraint*/
void DepartProperty(struct Property *Pro char Member[])
{
    char *temp_1;                //保存去掉部分空格后的字符串
    temp_1 = (char *)malloc(MAXSIZE * sizeof(char));
    char *temp_2;                //保存‘(‘前去掉空格后的字符串
    temp_2 = (char *

评论

共有 条评论