| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1632 人关注过本帖
标题:麻烦指点下期末大作业——《实现一个基于命令行的简单数据库系统》
只看楼主 加入收藏
zjsxwc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:252
专家分:601
注 册:2011-1-20
收藏
得分:3 
可以直接参考sqlite源代码

The tools I recommended:
GUI: CSharp(VS), QT;    Core Code: Plain C (Tiny C Compiler);    Web: Python, JavaScript;    Android: Java;    Embedded System: ASM&C (Linux)
2013-12-11 08:13
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用beyondyf在2013-12-10 17:09:20的发言:

本来挺怀疑你这标题的,数据库系统?玩的有点大吧。

出于好奇下载了你的作业要求看了看,还真是做数据库系统。你们老师挺有水平的,敢给大一学生留这样的作业。

关于表的操作要求这部分我倒没觉得什么,引起我注意的是操作指令居然是仿SQL的。你学编译原理了么?虽然加入了参数降低了命令解析的难度但这依然不是一个刚学完函数、指针的普通的大一学生能完成的任务。

或者你的老师并没想要求冗错处理,他能保证他的输入都是正确的。这么考虑的话还靠谱点,但对一个大一学生来说要求依然不低。

不多说了,基本我认为这里能完成这个任务的人没几个。你还是多和你们老师交流的好,我猜他只是想通过这个任务锻炼一下你们的实践能力,结果也许并不重要。

也可以就具体细节在这里和大家探讨,我可以帮你解答部分疑问。但前提是你自己得有大体的实施思路。

或者就想直接要代码的话,我也可以给你实现完整工程,但这就不是免费的了

+1

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-12-11 08:50
大嘻哈S
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-12-5
收藏
得分:0 
回复 12楼 TonyDeng
实现一个基于命令行的简单数据库系统

基本功能:
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
[where column_name = column_value and | or …]

参数说明
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

13xxxx _select_1.txt
execute time: 1ms
execute result:
1,aaa,90
2,bbb,90

update1.txt
update Student set grade = 80 where id = 5

13xxxx _update_1.txt
execute time: 1ms
execute result:
5,ddd,80

delete1.txt
delete from Student where id = 4

13xxxx_delete_1.txt
execute time: 1ms
execute result:
1,aaa,90
2,bbb,90
3,ccc,90
5,ddd,80
2013-12-11 23:36
大嘻哈S
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-12-5
收藏
得分:0 
回复 12楼 TonyDeng
已经贴出来了,麻烦了!
2013-12-11 23:39
大嘻哈S
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-12-5
收藏
得分:0 
回复 20楼 beyondyf
呃,至今依然不会写,无力ing。。。。。。如果你可以帮我实现完整工程的话,是要报酬吗?就,,,可不可以详细谈下?拜托,,,不过太贵穷学生也消费不起,,,如果可以的话麻烦留下联系方式,或者加我qq 648643522,,,呃,这个不需要太精细,符合老师要求就可以了,尽量用基础的东西行不行?
2013-12-17 00:23
快速回复:麻烦指点下期末大作业——《实现一个基于命令行的简单数据库系统》
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044863 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved