做一个图书管理系统,有一些疑惑~~~~高手赐教~~~~

时间:2022-10-26 17:44:51
学了一段时间Delphi了,想自己做一个图书管理系统,但是我还是小菜一个。我的打算和预期会遇到的问题见下~~~~~~~~~~~高手指导一二~~~~~~~

打算:
一、采用Delphi7.0+SQL sever 2000
二、一般学校里图书管理系统至少有两个不同的客户端。1是管理员管理借书那一端,2是供学生查找信息的一端。自己打算就先写这两个客户端。估计以后再增加不同的客户端。
三、界面放在在.exe里面。而具体对数据库的操作放到DLL中。打算用3个DLL。一个是封装学生类、一个是封装管理员类、还有一个是封装对数据库基本操作的方法等。

预期问题:
一、由于自己是菜鸟,所以没打算自己写控件。打算全部用delphi提供的控件。
二、我在每个DLL中放一个数据模块,但是自己在界面中放了DBgrid控件。DLL能不能返回一TDataSource的类型,以便简单DBGrid显示数据。
三、是在学生类和管理员类里直接调用操作数据库DLL,而不用加数据模块呢?还是在类DLL中自己加数据模块。

其实最疑惑的就是一二。
等待你的指点~~~~~~~~~~~~~~~

5 个解决方案

#1


做一个分权限不就行了
呵呵 都你知道把学生和管理远封成类 干嘛不把数据操作也封成类 

#2


1.delphi提供的控件已经足够了;
2.你可以不用DLL,直接建立一个单元文件,实现对数据库基本操作的封装,然后在各个模块
  里引用该单元即可;

#3


RAD工具最好别用MVC模式了,数据控件直接放界面上方便一些,即使独立封装会发现仍然没多少独立性
一些通用的、简单的对象要进行封装,如你所说的学生类、管理员类之类的,把其属性方法全部封装,最好在外部看不出来其是从数据库读取的。DLL模块中不要传递对象想因为RTTI无法统一,也就是你从一个DLL从传过来的一个DataSource,想用is TDataSource会判断失败,不要想你不用is判断就行了,就算你不这样判断并不代表VCL源代码中没有这样的判断语句。如果实在需要这样使用,请把Delphi编译选项中的带包编译勾上,所有模块都带包编译,然后发布的时候把需要的包全部拷贝出来放一起就行了(貌似在System32下面)

#4


我感觉不用dll吧,我就直接写的,而且客户端两个也把问题复杂了,可以涉及两套登录系统,用户名密码设定权限字段也是不错的,相关的书籍也是比较多,我最近写了个系统,以前没接触过,也只用了几天就写出来了,至于控件,delphi很好很强大,不用自己写了。

#5


谢谢大家指点。
我最后还是决定,
1、界面是exe
2、管理员类、学生类分别放在两个DLL中
3、直接对数据库的操作封装一个DLL
估计,这就是n多书上说的三层吧。做完了代码传上了,大家进一步交流。
其实不写DLL,直接新建单元放类,貌视简单多了。但是,写方法的时候,很多地方和界面上的数据库控件有关联,看着不安逸。

为什么,我会那么强烈的要写DLL呢。原因很简单,我想来点新鲜感,不想老是一个程序就一个exe完事。呵呵,初学嘛,大家应该能理解吧。

至于上面说的返回TDataSource这个问题,我已经解决。我在DLL中放了一个TDataProvider。呵呵。方法灵感来源于《Delphi+SQL Sever~~~~》

#1


做一个分权限不就行了
呵呵 都你知道把学生和管理远封成类 干嘛不把数据操作也封成类 

#2


1.delphi提供的控件已经足够了;
2.你可以不用DLL,直接建立一个单元文件,实现对数据库基本操作的封装,然后在各个模块
  里引用该单元即可;

#3


RAD工具最好别用MVC模式了,数据控件直接放界面上方便一些,即使独立封装会发现仍然没多少独立性
一些通用的、简单的对象要进行封装,如你所说的学生类、管理员类之类的,把其属性方法全部封装,最好在外部看不出来其是从数据库读取的。DLL模块中不要传递对象想因为RTTI无法统一,也就是你从一个DLL从传过来的一个DataSource,想用is TDataSource会判断失败,不要想你不用is判断就行了,就算你不这样判断并不代表VCL源代码中没有这样的判断语句。如果实在需要这样使用,请把Delphi编译选项中的带包编译勾上,所有模块都带包编译,然后发布的时候把需要的包全部拷贝出来放一起就行了(貌似在System32下面)

#4


我感觉不用dll吧,我就直接写的,而且客户端两个也把问题复杂了,可以涉及两套登录系统,用户名密码设定权限字段也是不错的,相关的书籍也是比较多,我最近写了个系统,以前没接触过,也只用了几天就写出来了,至于控件,delphi很好很强大,不用自己写了。

#5


谢谢大家指点。
我最后还是决定,
1、界面是exe
2、管理员类、学生类分别放在两个DLL中
3、直接对数据库的操作封装一个DLL
估计,这就是n多书上说的三层吧。做完了代码传上了,大家进一步交流。
其实不写DLL,直接新建单元放类,貌视简单多了。但是,写方法的时候,很多地方和界面上的数据库控件有关联,看着不安逸。

为什么,我会那么强烈的要写DLL呢。原因很简单,我想来点新鲜感,不想老是一个程序就一个exe完事。呵呵,初学嘛,大家应该能理解吧。

至于上面说的返回TDataSource这个问题,我已经解决。我在DLL中放了一个TDataProvider。呵呵。方法灵感来源于《Delphi+SQL Sever~~~~》