版本15和16间的区别
于2006-11-17 19:23:26修订的的版本15
大小: 6395
编辑: czk
备注:
于2006-11-17 19:35:06修订的的版本16
大小: 7001
编辑: czk
备注:
删除的内容标记成这样。 加入的内容标记成这样。
行号 65: 行号 65:
    ContactList contacts;
行号 69: 行号 70:
        if(command == "list") {
        } else if(command == "show") {            
        if(command == "list") {
            contacts.list();

        } else if(command == "show") {
            string name;
            cin >> name;
            contacts.show(name);
行号 72: 行号 77:
            string name;
            cin >> name;
            contacts.add(name);
行号 73: 行号 81:
            string name;
            cin >> name;
            contacts.remove(name);
行号 74: 行号 85:
            string keyword
            cin >> keyword;
            contacts.search(keyword);
行号 75: 行号 89:
            string filename;
            cin >> filename;
            contacts.save(filename);
行号 76: 行号 93:
            string filename;
            cin >> filename;
            contacts.load(filename);
行号 84: 行号 104:

TableOfContents

面向对象课程设计

1. 通讯录

数据定义:

  • 一个通讯录包含若干联系人的通讯信息
  • 每个联系人有姓名及其他自定义信息
  • 姓名:假定没有重复
  • 自定义信息:用户自己可以添加的信息字段,比如QQ,手机,生日等。自定义信息分为5类:电话、地址、日期、数字、文字。电话用于保存各种电话;日期用于保存年、月、日信息;地址包括国家、省份、城市、住址、邮编等信息;数字只能输入数字;文字可以输入任意文字。

功能说明:

  • 用户可以添加、修改、删除联系人
  • 用户可以显示所有联系人列表
  • 用户可以输入姓名,显示这个联系人的详细信息
  • 用户可以在各种自定义信息中查找联系人,并给出找到的所有联系人列表
  • 可以存盘和读盘

输入输出格式:程序以命令行方式交互式运行,命令包括:

  • list: 列出所有用户清单
  • show <name>: 列出某联系人的详细信息,name是联系人的名字,

  • add <name>: 添加指定的联系人,name是联系人的名字。新添加的联系人的名字与已有的联系人的名字不能重复。

  • remove <name>: 后面加联系人的名字,删除指定的联系人。

  • update <name> <action>: 修改联系人的信息,name是联系人的姓名,action可以是:

    • add <type> <attribute> <value>: 添加属性,attribute表示属性的名字,value表示属性的值,type表示属性的类型,可以是date、text、phone、numeric、address。

    • remove <attribute>: 删除属性,attribute表示属性的名字

    • update <attribute> <value>:更新属性的值

  • search <keyword>: 查找联系人,列出所有包含keyword的联系人

  • save <filename>: 将所有信息写入filename文件

  • load <filename>: 从filename中载入联系人信息

使用举例:

 * add czk 添加联系人,姓名叫做czk
 * update czk add phone mobile 13587654600  为czk添加属性mobile
 * update czk add phone work 614600 为czk添加属性work
 * update czk add numeric qq 245149 为czk添加属性qq
 * update czk add date birth 1979 8 27 为czk添加属性birth
 * update czk add text email czk@wzu.edu.cn 为czk添加属性email
 * add ymc 添加联系人ymc
 * update ymc add phone mobile 13958895577
 * update ymc add phone work 665577
 * update ymc add text email jsj_ymc@wzu.edu.cn
 * list 显示所有的联系人
 * show czk  显示czk的详细信息
 * search 4600  查找4600,应该可以找到czk
 * search wzu.edu.cn 查找wzu.edu.cn,应该可以找到czk和ymc
 * update czk update email czk19790827@gmail.com 把czk的email属性改为另一个值
 * update czk remove mobile 删除czk的mobile属性
 * save contact.dat 将所有联系人存入contact.dat文件
 * remove ymc 删除联系人Ymc
 * load contact.dat 从contact.dat载入所有联系人信息(当前内存中的所有联系人被清空,替换成文件中所存储的联系人)

参考设计图:

  • attachment:OOPdesign1.png

主程序框架:

   1 #include <iostream>
   2 #include <string>
   3 using namespace std;
   4 
   5 int main() {
   6     ContactList contacts;
   7     string command;
   8     string prompt = ">>> ";
   9     cout << prompt;
  10     while (cin >> command) {
  11         if(command == "list") {
  12             contacts.list();            
  13         } else if(command == "show") {
  14             string name;
  15             cin >> name;
  16             contacts.show(name);            
  17         } else if(command == "add") {
  18             string name;
  19             cin >> name;
  20             contacts.add(name);
  21         } else if(command == "remove") {
  22             string name;
  23             cin >> name;
  24             contacts.remove(name);
  25         } else if(command == "search") {
  26             string keyword
  27             cin >> keyword;
  28             contacts.search(keyword);
  29         } else if(command == "save") {
  30             string filename;
  31             cin >> filename;
  32             contacts.save(filename);
  33         } else if(command == "load") {
  34             string filename;
  35             cin >> filename;
  36             contacts.load(filename);
  37         } else if(command == "exit") {
  38             return 0;
  39         }  else {
  40             cout << "Unknown command" << endl;
  41         }
  42         cout << prompt;
  43     }
  44 }

2. 个人财务软件

设计一个基于字符界面的个人财务软件,基本功能包括:

  1. 账户管理。包括:添加、删除、修改账户
    • 账户分为4类:资产、债务、收入、支出。
    • 资产账户是指个人所拥有的财产,比如现金、存款、借出款、股票等。
    • 债务账户是指个人所欠的债务,比如借入款,贷款等。
    • 支出账户是指个人的支出,比如交通、餐饮、购物、房租等
    • 收入账户是指个人的收入,比如工资、奖金、利息等
    • 每个资产账户和债务账户都有初始值。
  2. 交易管理(添加、删除交易,设置交易属性)
    • 交易用于完成在各个帐户之间的财务的转移,每笔记录有时间、转出账户、转入账户、金额、说明等属性。
    • 收入账户只能作为转出账户。支出账户只能作为转入账户。
  3. 统计功能
    • 统计各个资产账户和债务帐户的当前状况
    • 统计历史一段时间内的收入和支出状况
    • 统计一个账户的所有历史交易
  4. 存盘和读取
    • 所有操作能够自动存盘,下次打开程序时能够从磁盘读取,恢复到关闭程序前一样的状态。

使用举例:

刚开始使用可以设置如下账户:

  • 资产账户:现金、饭卡、招商银行卡、工商银行卡、借出
  • 债务账户:借入
  • 支出账户:交通支出、购物支出、吃饭支出
  • 收入账户:工资

每个资产账户和债务账户设置好初始值。然后开始记录每一笔交易:

  • 从家里到学校坐公交花去2元:新建交易,从现金转移到交通支出2元
  • 吃早饭,饭卡上花去4元:新建交易,从饭卡转移到吃饭支出4元
  • 从别人那里借了300元:新建交易,从借入账户转移300元到现金帐户
  • 发工资,工商银行卡多出1080元:新建交易,从工资帐户转移到工商银行卡1080元
  • 借给朋友现金200元:新建交易,从现金帐户转移到借出账户200元
  • 把借别人的300元还掉:新建交易,从现金转移300元到借入账户

3. 画板

设计一个图形编辑软件,基本功能包括:

  • 能够画点
  • 能够画直线
  • 能够画圆
  • 能够画圆弧
  • 能够写文字
  • 能够插入图像
  • 画面上的图形、文字、图像能够在画面上移动
  • 画面上的图形、文字、图像能够删除
  • 能够保存
  • 保存的画面能够打开,跟关闭前的画面一模一样

C++课程设计 (2008-02-23 15:36:45由localhost编辑)

ch3n2k.com | Copyright (c) 2004-2020 czk.