求一个c++项目需求分析

求教C++项目_百度知道
求教C++项目
小弟学C++已有多月,就是不知道怎么开发一个东东.望大哥哥们帮小弟一下,下野帮我介绍一些有关C++开发的一些项目,最好是比较简单一点的.我的信箱是:QQ:
提示该问答中所提及的号码未经验证,请注意甄别。
我有更好的答案
那你肯定还没接触图形编程了那就做个简单的通讯录吧,我们以前课程设计做的 需要代码我可以给你面向对象课程设计——通信录本章课程设计是设计一个实用的小型通信录,具有查询和删除功能,并且能够打开或修改指定文件及将多个文件组成一个文件,它完全使用类来实现,充分体现了面向对象的程序设计特点。本章的参考程序使用双向链表保存数据的底层数据结构,并使用C++标准库提供的list来实现这个链表的结构,由于利用list类,所以实现起来很简单。虽然这种方法超出一般的教材,但只要学习下一个标准库,还是容易理解的。C++推荐使用标准库,这也是目前编程的方向,所以设计本章作为所选内容,以便学生熟悉和了解C++的标准库。一、功能设计要求设计要求实现的功能较多,所以将它们分为几个部分叙述。1. 建立文件(1) 存储文件可以使用默认文件名或指定文件名。(2) 可以不保存输入记录,但需要确认是否保存输入记录。(3) 如果已经有文件,只能在其后追加(4) 新增的记录可以不存入原文件中,也可以用原来的文件覆盖内存的内容。(5) 可以将指定文件的内容追加到目前内存的链表后面。2. 文件的存取和显示(1) 可以单独存取文件。(2) 可以随时显示内存中记录的全部内容。(3) 可以直接存取默认文件或指定文件。3. 删除记录(1) 可以按“姓名”或“电话”方式删除记录并更新内存链表内容。(2) 能给出被删除记录的信息。(3) 如果已经是空表,删除时应该给出提示信息并返回主菜单。(4) 如果没有要删除的信息,输出没有找到的信息。(5) 删除操作仅限于内存,只要执行记录时,才能覆盖原记录。4. 查询记录(1) 可以按“姓名”或“电弧“方式查询记录。(2) 能给出查询记录的信息。(3) 如果查询的信息不存在,输出“没有找到“的信息。5. 整体性能(1) 应可以随时检索|、删除或增加新记录,也可以保存或取消新的记录。(2) 姓名可由字符和数字混合编码。(3) 电话号码可由字符和数字组成。(4) 将输出信息加上栏头,例如:
(86)-10-
86 551 9823555
Les Hancock
8(5) 使用菜单实现功能的正确选择。6. 测试程序(1) 应列出测试大纲对程序进行测试(2) 应保证测试用例能测试到程序的各种边缘情况。二、使用List类的成员函数
List 对象的定义方式是:
其中T 是链表所存储的数据类型,也就是链表的每一个结点的数据类型。
List 类中使用typedef定义的常用的数据类型是iterator和const_iterator,可将它们看成是指向每条记录的指针和指向记录的const指针。
在通信录程序中使用到的list类的成员函数如下:1. bool list ::empty()const当且仅当list为空时,就返回true.2.size_t list::size()const返回链表中记录的元素个数。该函数的运行复杂度是线性的,即O(N)。3.iterator list::begin()返回一个iterator,指向此链表的开头。4.iterator list::end()返回一个iterator,指向此链表的尾端,这里的尾端指的是链表的最后一个元素之后,即链表中实际存有函数的范围是[begin(),end()].5.const_iterator list::begin()const返回一个const_iterator,指向此链表的开头。6.const_iterator list::end()const返回一个const_iterator,指向此链表的尾端,这里的尾端指的是链表的最后一个元素之后,即链表中实际存有元素的范围是[begin(),end()]。7.void list::push_bace(constT&t)将元素t安插于链表尾。8.iterator list::erase(iterator pos)删除pos所指向的元素,返回指向被删除元素后面一个元素的iterator.9.void list::clear()删除链表中的所有元素。三、结构和类
在通信录中共定义了1个结构和3个数,下面对它们加以说明。1、结构Record
首先要定义通信录中每一条记录的内容的结构,它的每个域对应着记录中的一项信息。这里使用类string的对象来定义Record域的信息项。
sruct Record
//电话号码
如果使用字符串,其长度必须事先定义,使用string类,存储对象需要的长度则随机具体对象的实际长度而定。
在使用VS7(Microsoft Visual Studio.NET 2003)和VC(Microsoft Visual C++.NET 2003)软件时,不会有任何问题。但在使用Visual C++6.0时,由于VC6本身存在一些问题,所以也给本设计带来一个问题:使用getline()函数需要再按一次“回车”键,从而产生交互错误。本程序将在实际设计中做进一步说明,此处不再赘述。2、类RecordList
类RedcordList 是一个针对通信录做了特殊处理的链表,它继承于list&Record*&,即以指向Record的指针为元素的链表。
Class RecordList
: public list&Record*&
fiend ostream& operator&&(ostream& os, const RecordList& c_rl);
fiend istream& operator&&(istream& is, RecordList& rl);
void clear();
iterator erase(iterator where);
~RecordList();
类RecordList可以直接使用类list中定义的所以函数,但重写了clear()函数、erase()函数和增加了析构函数,并重载了输入、输出操作符。这是因为类list的删除元素的操作只会释放存储元素的空间;对于本程序来说,就是只释放Record指针,却并不会释放该指针所指向的对象。因此,类RecordList覆盖了基类中的clear()函数、erase()函数,使得其在删除元素时首先释放该元素(即Record指针所指向的Record对象),然后再调用基类中被覆盖的同名函数以实现删除元素的功能。增加了析构函数是为了链表被销毁的同时,也销毁其所记录的所有对象。重载了输入、输出操作符是便于从输入、输出流中还原或保存链表。3、类AddressList
AddressList类是处理通信录的底层类,针对增加记录、删除记录、查询记录以及保存和读取记录等操作进行与底层数据结构相关的处理,该类不涉及任何与用户界面与用户交互相关的操作。
该类以“包含”关系(has-a)持有一个RecordList类的对象recList,作为保护型数据成员,这是存取记录的底层数据结构。
Class AddressList
RecordList recL
//RecordList类的对对象作为数据成员
RecordList::iterator I
//从通信录中寻找一个记录
vtual Iterator findRecord(string patten,int type,Iterator from);
//其他成员函数
vrtual void addRecord(Record*rec);
virtual Iterator removeRecord(Iterator it);
virtual void saveRecords(ostream& os);
virtual int loadRecords(istream* is);
virtual ~AddressList();
const int size() const {return (int)recList.size();}
const bool empty() const {return recList.empty();}
virtual void clear() {recList.clear();}
Iterator first() {return recList.begin();}
Iterator pastEnd() {return recList.}
};在类AddressList中定义的一些函数直接使用了类RecordList的函数,没有增加太多的功能,如addRecord()只是用了类RecordList继承自基类的push_back(), removeRecord()只是调用了类Record重写了的erasse().需要特别解释的是findRecord()函数,它用于从通信录中寻找一个符合条件的记录,并返回指向该记录的iterator。该函数将从给定的iterator开始,按递增的顺序一次考查每一条记录,直到找到符合条件的记录或者到达通信录的末尾。在iterator迭代遍历记录时,采用如下的代码: I Iterator it_end =recList.end(); for (it= it!=it_end(); {
} 这里from是迭代开始的位置,it_end是通信录的末尾,若想遍历个通信录找出所有符合条件的记录,from可以第一次取值recList.begin(),之后每次取前一次运行findRecord()所得返回值增1,直到findRecord()返回it_end为止。4、类AddressBook类AddressBookshichu是处理通信录操作的面向用户使用的类,包含所有功能的用界面及用户交互的实现。
Class AddressBook : public AddressList
protected:
//通信录是否已被修改还未保存
AddressBook();
~AddressBook();
//开始通信录的用户界面操作
virtual void start();
//菜单处理函数
virtual void displayRecords();
//显示记录
virtual void queryRecord();
//增加记录
virtual void addRecord();
//删除记录
virtual void removeRecords();
//保存记录
virtual void loadRecords();
//结束程序
virtual void loadRecords();
//清空当前通信录
virtual void clear();
protected:
//菜单选择函数
clear menuSelect();
//显示表头
void disputable();
该类继承了类AddressList,可以直接使用它的直接基类AddressList的函数。在运行通信录时只要新建一个AddressBook类的对象,就可以通过这个对象自动执行与用户交互的操作。
类AddressBook的构造函数将调用欢迎界面成员函数strat()将调用菜单处理函数handleMenu(),在成员函数handMenu()中,将反复调用菜单选择函数menuSelect(),然后依据用户的选择调用相应的处理函数displayRecords()、queryRecord()、addRecord()、removeRecord()、saveRecord()、loadRecords()、clear()、quit()等。
成员函数displayRecords()会iterator迭代遍历整个通信录,显示所有的记录。
成员函数addRecord()会首先获得用户要求的查询条件,然后通过前面介绍的方法反复调用类AddressList()函数,找出所有匹配条件的记录并显示出来。
成员函数addRecord()将要求用户输入必要的信息以构建新的Record对象,然后将指向该对象的指针作为链表的元素,通过调用类AddressList的addRecord()函数添加到通信录的末尾。
成员函数removeRecord()会首先获得用户要求的查询条件,使用该查询条件来找到用户想要删除的确切记录,将每一个符合条件的记录显示给用户看,询问用户是否确定删除该记录;若确定删除,则调用类RddressList的removeRecord()函数完成删除记录。
成员函数saveRecords()让用户输入文件名,然后建立文件输出流,再调用类AddressList的saveRecords()函数完成。
成员函数loadRecords()会将从文件读入的记录追加到当前通信录的末尾,所以如果希望当前通信录与文件中记录的通信录完全一致,就应该先调用成员函数clear),再调用成员函数loadRecord(),loadRecord()会首先让用户输入文件名,然后建立文件输入流,最后调用直接基类AddressList()的clear()函数完成清空操作。
成员函数quit()会首先检查当前通信录是否已被改动并提示用户进行保存,然后运行语句
delete this: 来销毁自己(AddressBook)的对象,最后运行exit()函数结束程序。5、类的UML
图1是使用类的短式形式表示的UML结构图。四、参考程序
本设计由3个.cpp文件及相应的3个头文件组成。
采纳率:36%
我觉得你不用着急,个人觉得C++入门至少需要半年,精通需要3年,我觉得你自学的课后题就已经够你喝一壶的了。古人云:书非借而不能读也。说人们往往不会在意自己手上的东西偏偏对别人的东西感兴趣。等你能够把课本后面所有的编程题都能够轻松Pass的时候再说吧。如果你感兴趣的话不妨去找一本书:C++ Primer上面有不少不错的题。我手上也有不少经典的题,如果需要可以contact me.
那你感得自己真的学完了C++了吗?后面还有很多啊,你的问题根本就不用现在去想,留给以后去想吧!
哈哈我学习它快一年了,有些基础还是不是特别会啊!你想开发一个东东自己身边就有啊,你在生活中电脑的系统的一个小功能是这怎样实现.试着去实现它.等等
其他1条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。哥哥们,姐姐们,小弟在街上求个C++表白程序
& & & 街上能人异士向来不缺,小弟在此求一个表白C语言程序,成功了必有重谢!!!拯救一个单身狗,胜造七级浮屠啊。
这些回帖亮了
小兄弟我和你讲,当年我刚上大学的时候,我是cs专业我就想我应该写程序表白才够叼,不过不能是那些一堆printf的垃圾程序,于是我就开始自学用户界面,学好了用户界面我发现大家都开始用智能手机,于是我又开始学移动开发,结果我们队的后台去考研了,于是我又开始学web,学了web我发现苹果又出来个swift,我又去学swift,好了,你知道我为什么快三十了还没有女朋友了吗?
。。。。真闲。
你要啥效果的啊?MFC啊还是控制台的啊?
真不如做个网页来得实在,C语言能出来个什么玩意。
引用1楼 @ 发表的:
。。。。真闲。
你要啥效果的啊?MFC啊还是控制台的啊?
真不如做个网页来得实在,C语言能出来个什么玩意。
大兄弟,你会吗?
我有网页的需要吗??
引用3楼 @ 发表的:
我有网页的需要吗??
求之不得
做个网址给她更有意思
发挥空间也更大一些
引用4楼 @ 发表的:
求之不得
等等,我上传个百度云
引用2楼 @ 发表的:
大兄弟,你会吗?
会倒是会,不过我是说真的还是网页来的效果好,楼下也有哥们儿提供网页的。
引用7楼 @ 发表的:
等等,我上传个百度云
引用8楼 @ 发表的:
会倒是会,不过我是说真的还是网页来的效果好,楼下也有哥们儿提供网页的。
同求 多谢哥哥们
引用8楼 @ 发表的:
会倒是会,不过我是说真的还是网页来的效果好,楼下也有哥们儿提供网页的。
我一个朋友也说网页好,C语言太LOW。那我看看大兄弟的网页。
马克一记两记三记
发自手机虎扑 m.hupu.com
引用6楼 @ 发表的:
好表!!!
引用7楼 @ 发表的:
等等,我上传个百度云
上传好了么,大兄弟,同求啊
引用11楼 @ 发表的:
马克一记两记三记
嗯?
密码: vxgb 大兄弟靠你自己了
这个里面需要自己更换添加照片,不知道适不适合你的要求,添加平时你们一起玩的,有关于主人公的更好
表白用c语言什么鬼……
引用9楼 @ 发表的:
同求 多谢哥哥们
密码: vxgb
请叫大叔,都是大龄单身狗。。。
发自手机虎扑 m.hupu.com
引用16楼 @ 发表的:
密码: vxgb
记得我们专业课老师刚教过一个,不过我忘记了,网页的
发自手机虎扑 m.hupu.com
小兄弟我和你讲,当年我刚上大学的时候,我是cs专业我就想我应该写程序表白才够叼,不过不能是那些一堆printf的垃圾程序,于是我就开始自学用户界面,学好了用户界面我发现大家都开始用智能手机,于是我又开始学移动开发,结果我们队的后台去考研了,于是我又开始学web,学了web我发现苹果又出来个swift,我又去学swift,好了,你知道我为什么快三十了还没有女朋友了吗?
您需要登录后才可以回复,请或者
200人参加团购399.00元&749.00元
284人参加团购328.00元&699.00元
70人参加团购226.00元&369.00元
59人参加团购99.00元&299.00元
1161人参加团购189.00元&629.00元
345人参加团购579.00元&1099.00元
565人参加团购487.00元&769.00元
601人参加团购259.00元&569.00元
332人参加团购125.00元&299.00元
417人参加团购769.00元&1399.00元
181人参加团购129.00元&299.00元
407人参加团购309.00元&799.00元C++ 是一种中级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C++ 可运行于多种平台上,如 Windows、MAC 操作系统以及 UNIX 的各种版本。
本教程通过通俗易懂的语言来讲解 C++ 编程语言。
本教程是专门为初学者打造的,帮助他们理解与 C++ 编程语言相关的基础到高级的概念。
在您开始练习本教程中所给出的各种实例之前,您需要对计算机程序和计算机程序设计语言有基本的了解。
#include &iostream&
using namespace std;
int main()
cout && &Hello, world!& && endl;
你可以用 "\n" 代替以上代码里的 endl。
5个月前 (01-27)
感谢您的支持,我会继续努力的!
扫码打赏,你说多少就多少
记住登录状态
重复输入密码用C++做个程序,不知从何下手,求大神!!
[问题点数:40分]
本版专家分:0
CSDN今日推荐
本版专家分:18975
本版专家分:0
本版专家分:0
本版专家分:284
本版专家分:387253
2017年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第二
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
本版专家分:1484
本版专家分:0
本版专家分:108
匿名用户不能发表回复!|
CSDN今日推荐

我要回帖

更多关于 项目需求分析 的文章

 

随机推荐