综合案例:
发展道路:
外行->菜鸟->准程序员->程序员->核心程序员(高级)->系统分析师/系统架构师/项目经理-->部门经理/总监(管理职位)-->CTO技术方面的总裁-->自己搞公司
从菜鸟到准程序员 就是至少要 自己独立完成一个小项目。
要求:
1 一定自己动手,不要不写,也不要去抄。
2 尽可能的完成,不懂的要问。
做项目、软件的流程:
1 需求 (要写什么)
2 系统分析 (把客户的要求转成计算机软件系统)
3 系统设计 (设计计算机的软件系统)
4 编码 (把设计用代码实现)
5 测试 (保证软件的质量,是否遵循需求)
6 安装、调试和维护
案例:写一个模拟银行ATM的案例
银行包括:开户、销户、存取、取钱、转账、查询余额 6 个基本功能,今天重点实现开户。
分析:
系统包括 服务端和客户端,暂时做单机版。客户端和服务端数据交互用 消息队列,创建两个消息队列:一个是用于 服务端 发给 客户端,另一个用于 客户端发给服务端。
服务端的功能:
1 启动时 创建 两个消息队列,关闭时 删除。用信号关闭,在信号处理函数中删除。
2 服务端要根据 客户端发送的数据,判断是 何种请求,再根据各种请求作出相应的处理。
数据封存在struct msg{
long mtype;
struct account acc;
};
struct account 是账户类型的结构体,包括成员
账号、用户名、密码、金额。
3 分析开户的流程。
客户端输入 用户名、密码和金额,把数据封在msg中,通过消息队列发送给服务端,服务端生成一个账号,然后把account信息写入文件中,并把处理结果返回给客户端。
账号怎么生成?(保证不重复)
先建一个账号的生成文件,写入初值。每次开户都先读文件,然后把读到的数加1,并作为新的账号,再把新的账号写回文件中。
账户信息写入文件,一个账户对应文件,以账号+.dat做文件名。
4 服务端用多进程完成各种功能。(vfork+exec)
客户端的代码:
1 提供选择的界面,打印各种功能的选择。
2 提交相应数据(用struct msg),并等待处理结果
数据(用struct msg),并等待处理结果