| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1704 人关注过本帖, 3 人收藏
标题:简单的学生成绩管理系统001版。求意见。
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用Devil_W在2012-3-6 14:38:07的发言:

 
 
1. 首先你分析了这个玩意应该分为几个模块?
2. 逻辑层和数据层分离了吗?
3. 我一般是见不得我的代码里面有中文的。
1 3 我都可以试着做到 2 就不太明白了,可不可以写一个DataType.h & DataType.c将数据封装起来?

梅尚程荀
马谭杨奚







                                                       
2012-03-06 14:40
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 16楼 有容就大
退出条件最好写成
while(~scanf("....",....))
{
    ............
}

                                         
===========深入<----------------->浅出============
2012-03-06 14:41
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
比如要设计输入quit就退出 -->
char ch[];
if (0 == strcmp((ch = scanf("%s",ch)), "quit"))
break;

还不知
while(~scanf("....",....))
{
    ............
} 怎么弄,循环输入能退出吗?

梅尚程荀
马谭杨奚







                                                       
2012-03-06 14:49
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用有容就大在2012-3-6 14:40:55的发言:

1 3 我都可以试着做到 2 就不太明白了,可不可以写一个DataType.h & DataType.c将数据封装起来?


一般写这种玩意就是为了锻炼。 既然锻炼就要试着做到perfect.

一个project主要分为 module 逻辑层, view 视图层, ctrl 控制层。

数据层跟逻辑层分离,是为了扩展。

如果你某个底层数据结构改变了,要改动的代码尽可能少,维护的成本要尽可能低。

只有好的模块划分, DAO层和Ctrl分离的到位才能降低维护成本。
2012-03-06 14:51
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用Devil_W在2012-3-6 14:51:07的发言:

 
 
一般写这种玩意就是为了锻炼。 既然锻炼就要试着做到perfect.
 
一个project主要分为 module 逻辑层, view 视图层, ctrl 控制层。
 
数据层跟逻辑层分离,是为了扩展。
 
如果你某个底层数据结构改变了,要改动的代码尽可能少,维护的成本要尽可能低。
 
只有好的模块划分, DAO层和Ctrl分离的到位才能降低维护成本。
嗯 谢谢你指明的方向

梅尚程荀
马谭杨奚







                                                       
2012-03-06 15:01
yxiangyxiang
Rank: 3Rank: 3
来 自:/\/\/\/\/
等 级:论坛游侠
帖 子:130
专家分:186
注 册:2012-1-29
收藏
得分:2 
的确 4  楼说的很对 加个文件比较好,
学生信息就保存住了,下次还能用,
我感觉scanf后面家个fflush(stdin);比较好
2012-03-06 18:01
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
Devil_W的意见有容该好好听取,这才是在教你如何做实用软件。
很多人拿学生XX系统练手,不过实用的没几个。
三层架构是前人几十年软件开发经验总结出来的到现在来说最有效的架构(不要和设计模式混淆,这是更高层面的结构抽象),一定要学学。
这里也谈点个人意见。

首先,作为系统,数据如果不能保存到永久介质上就没有实用价值。难道每次使用前都录入一遍数据?关于这一点,数据库是最恰当的选择,但不是唯一的选择。对于这种简单的数据结构也可以自己设计一种数据格式保存到文件。初学我倒是建议偿试一下这种方式,因为这一方式除了需要设计数据格式外,还需要自己设计数据访问接口。

第二,业务逻辑的设计。有容代码中的函数算是逻辑层。再说细点,它们其实就是数据访问接口(其中混入了用户输入输出这些属于表示层的东西,不是说不能这么做,只是这么做对于将来的维护扩展很不利)。作为系统来说,这点功能有些单薄。系统设计首先要考虑它是给谁用的。给老师?给学生?老师和学生?需不需要管理员?有容的代码看起来是只给自己用的呵呵。之后要分析这些人用它干什么。老师登录修改查看学生信息(再细分某个老师只能修改自己的学生自己这一科的信息),学生只能查看个人或者班级的信息,管理员负责系统维护数据备份等等。这两步还只是业务逻辑设计的准备工作,属于用例分析阶段,用于指导之后的业务建模。在这两步的基础上再近一步细分会话功能。如何区分是谁登录了系统?他可以使用哪些功能?如何向他开放他可以使用的功能并屏蔽他不权使用的功能?这一账户控制也就是Devil_W所说的安全机制。

第三,用户接口的设计。也就是界面部分。应该尽量与功能分离开。有容的代码这部分与功能混在了一起。这不利于系统需求变更时的维护工作。有容前段时间不是在学习视窗编程么。这段代码是控制台下的,如果想实现视窗界面是不是代码得全部重写?如果增加了管理功能呢?再改成分布式系统呢?

呵呵,两天没来话多了些。总之,既然是练手不妨尽力做的深一些,向实用靠近。


重剑无锋,大巧不工
2012-03-06 18:12
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
楼上杨大哥说的很详细,受教了。
如果真要做使用的软件,光靠这个显然不行。在现在GDI统治的时代,显然点个鼠标比敲几个字符容易。对c语言课程而言,做成这样当课程设计而言就可以了(当初我的课设也差不多这样的),当然如果要做实用显然还不够。首先,价格用户界面是必须的,然后是数据存储的方面,功能的话看着设计就行了,注意面向的对象就行了。当这些都能正常运行之后,再考虑安全问题也不迟。
杨大哥的意见是根据他多年的经验来提的,事实上当我们有这这种经验之后会感觉这样很自然很合理(至少我是这么认为的),不过对于我这种还没什么经验的小菜来说,杨大哥的表述我看着有点云里雾里的感觉,没有感性的认知。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2012-03-06 18:27
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 27楼 beyondyf
杨大哥 谢谢你讲这么多,受益匪浅啊
信息保存 视窗界面 业务设计 特别是哪个不同对象的使用权限对我真是个挑战。很多东西还不懂啊,还有很多东西要学习嘎。数据库以后再学,先把文件搞定。现在争取把模块划分清楚,在实现模块接口正常安全的情况下尽量提高内聚性。
以后写东西不再就写给自己用了。

梅尚程荀
马谭杨奚







                                                       
2012-03-06 18:59
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 26楼 yxiangyxiang
嗯 这样更保险些。

梅尚程荀
马谭杨奚







                                                       
2012-03-06 18:59
快速回复:简单的学生成绩管理系统001版。求意见。
数据加载中...
 
   



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

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