实现一个基于命令行的简单数据库系统
基本功能:
1、 建立数据库表
2、 能够对数据库中的单表进行数据导入
3、 能够对数据库中的单表进行插入
4、 能够对数据库中的单表进行查询
5、 能够对数据库中的单表进行更新
6、 能够对数据库中的单表进行删除
高级功能:
当数据量比较大的时候,请大家建立索引,并通过索引加快查询速度(选作)
要求:
1、 不能使用Cstring.h,string等类,只能使用char* 来处理字符串
2、 能够动态的申请和分配内存
上交的内容:
1、.cpp、.h、.exe文件
2、文件命名规则:学号_[数字].cpp 学号_[数字].h 学号.exe
程序具体要求:
1、 在命令行下运行 学号.exe 出现界面如下
2、 按输入参数
a)
–c 文件路径名 表示根据指定位置的文件内语句建立一个数据库表
文件格式如下:
CREATE TABLE
table_name
(
column_name datatype(datalength) [NULL/NOT NULL];
…
)
参数说明
table_name:是新表的名称。表名最多可包含 128 个字符
column_name:是表中的列名。列名必须符合标识符规则,并且在表内唯一。
datatype:是表中的列的数据类型。要求支持以下两类:数字(float)和字符串(char)
datalength:是表中的列的数据长度。如果datatype是数字,长度一律为4,如果是字符串,则表示允许的字符串的最大长度。
[NULL/NOT NULL]:是表中列的取值是否能为空的标志。[]表明本项可不出现。如果不出现,默认为NULL,也就是可以为空。
参数之间以单个空格分开。多列之间以分号分隔。
b) –i 数据库表名 数据文件路径名 表示从指定文本文件中导入数据到数据库的表中
数据文件格式如下:
每条记录占一行,一行中的数据每列之间以逗号分隔。
注意:实际提交后测试的数据文件中的数据量可能会比较大,几万条,上百兆。
举例:(上面建立的student表的数据)
1,aaa,97
2,bbb,87
3,ccc,56
c) –s 文件路径名 表示从指定文本文件中读取语句执行查询操作
文件格式如下:
select [TOP n] * | {column_name} from table_name
[where
colume_name like | = column_value and | or …
[order by column_name [ASC | DESC] ] ]
参数说明:
TOP n:表示查询结果显示最多多少个,n为显示的记录条数;[]表明本项可不出现。
|:表明|的左边和右边为“或”的关系,只出现任一项即可;
*:代表所有的列名;
{column_name}:是希望筛选的列名的表列,多个列名以逗号分隔,{}必须要有。
table_name:是数据库中待进行筛选操作的表名。
column_value:是表中该列的数据值。
like|=:字符串型的column_value用=关键字,表明精确匹配;用like关键字,表明模糊匹配,即column_value应当是列中值的子串。
数值型的column_value用=关键字,精确查询;不支持用like关键字。
and|or:表明多个筛选条件的逻辑关系。
order by: 表示按照后跟的column_name列进行排序,ASC表示升序,DESC表示降序,默认是升序排列。
查询后,将查询结果在屏幕上显示出来,应计算本次查询操作所花费的执行时间,并生成学号_select_序号.txt的文本文件,在文件的开头写明:
Execute Time: …ms
Execute Result:
查询结果
d) –u 文件路径名 表示从指定文本文件中读取语句执行更新操作
文件格式如下:
update table_name
set
colume_name = column_value and | or …
[where column_name = column_value]
参数说明
column_name:是表中的列名。
table_name:是数据库中的表名
column_value:是表中的列的数据值。
更新后,将更新结果在屏幕上显示出来,应计算本次更新操作所花费的执行时间,并生成 学号_update_序号.txt的文本文件,在文件的开头写明:
Execute Time: …ms
Execute Result:
更新后的结果
e) –d 文件路径名 表示从指定文本文件中读取语句执行删除操作
文件格式如下:
delete from table_name
[where column_name = column_value]
参数说明
column_name:是表中的列名。
Table_name:是数据库中的表名
Column_value:是表中的列的数据值。
删除后,将删除结果在屏幕上显示出来,应计算本次删除操作所花费的执行时间,并生成 学号_delete_序号.txt的文本文件,在文件的开头写明:
Execute Time: …ms
Execute Result:
删除后的结果
f) –h 帮助信息,提示各个参数的格式和含义
g) –q 退出程序
h) –index 0/1 0表示关闭索引功能,1表示打开索引功能,即在接下来的查询、更新、删除操作中使用索引。
例如:
程序执行界面如下:
相关文件格式如下:
create.txt
create table Student
(
id float(4) NOT NULL;
name char(100) NULL;
grade float(4) NULL;
)
data.txt
1,aaa,90
2,bbb,90
3,ccc,90
4,ddd,80
5,ddd,70
select1.txt
select top 2 * from Student
where grade = 90
04xxxx _select_1.txt
execute time: 1ms
execute result:
1,aaa,90
2,bbb,90
update1.txt
update Student set grade = 80 where id = 5
04xxxx _update_1.txt
execute time: 1ms
execute result:
5,ddd,80
delete1.txt
delete from Student where id = 4
04xxxx_delete_1.txt
execute time: 1ms
execute result:
1,aaa,90
2,bbb,90
3,ccc,90
5,ddd,80