# calc **Repository Path**: njbinbin/calc ## Basic Information - **Project Name**: calc - **Description**: 软件设计实验示例。 用加减乘除模运算演示如何设计更良好的软件架构。 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-06 - **Last Updated**: 2024-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # calc #### 介绍 软件设计实验示例。十几年前写的,今天看仍有一定教学价值。 用加减乘除模运算演示如何设计更良好的软件架构。 虽然C语言以及VC6这种古老的工具已经不再用于现代大型应用软件的开发,但是面向非计算机专业的学生用来演示编码与软件设计思想仍是一种简洁直观的方式。 希望帮助大家理解关于工程、开发环境、编程语言、模块与框架的概念与关系,从学习编程转到软件开发的观念上来。 有关代码的相关解释,请移步[WiKi](https://gitee.com/njbinbin/calc/wikis)部分 #### 从这里开始 - 建议先按3-5人的小组完成以下实验,然后再对照思考本示例与WIKI思考。 - 实验目的:体验基于团队合作的软件项目开发与基于个人的编程的区别,初步了解软件项目开发的要求,培养基本的软件开发素质 - 实验任务:以小组为团队完成一个程序,实现 - 1)用户从键盘输入两个整数; - 2)从屏幕输出两个数的和,差,积,商,模的结果。 - 实验要求: - 1)团队协作,划分模块,分工进行; - 2)找出合理有效的方式完成程序 - 3)要求程序没有错误; - 4)同时思考 - 1.协作应如何组织? - 2.开发过程是否需要设计阶段?如何控制版本并避免冲突与矛盾?是否有测试阶段?测试应如何组织?编码风格是否影响程序员之间的交流?完整的开发过程应该有哪些步骤? - 3.如何考虑代码的重用,以及应对未来需求发生变化的情况,如将输入输出改为文件,如何保证对软件质量的影响最小? - 注意:训练C语言不是本实验的目的,因此简化所有业务逻辑为最简单的计算,这里【假设】所有计算逻辑的功能实现都有上百行代码,【必须】考虑代码的组织问题。 #### 目录结构 目录结构说明 ``` |-first - 学生作业及重构示例 |-examples - 项目示例 |--source 可复用的业务逻辑代码 |--cmdline 命令行示例,客户代码需要source源码编译 |--gui 图形界面示例,客户代码需要source源码编译 |--calclib source源码编译打包为静态库,客户代码编译时不需要source源码 |--calcdll source源码编译为动态库dll,客户代码编译时不需要source源码,运行时需要调用dll |--2tier source源码+网络接口生成server,客户代码作为client通过网络协议调用 |--more 如何通过开闭原则与单一原则去设计灵活性、扩展性、可复用性和可维护性的软件架构 ``` #### 安装教程 直接复制到某文件夹下,未经测试请尽量避免中文目录名或含有空格的目录名 #### 使用说明 请使用VC6.0开发环境,配置好相关环境变量 first目录下的源码直接使用命令行编译,cl编译器应配置好环境变量 examples目录下的源码需要用VC6 IDE环境打开并编译测试