当前位置: 首页 > news >正文

自学网站建设需要什么学历安装wordpress数据库连接时出错

自学网站建设需要什么学历,安装wordpress数据库连接时出错,网站推广中h1标签的重要性,建设英文网站的申请怎么写目录 一、整体介绍 1.1、需求和目标 1.2、整体功能描述 二、页面及功能描述 2.1 主菜单 2.2 添加联系人菜单 2.3 显示联系人菜单 2.4 修改联系人菜单 2.5 退出功能 三、流程设计 3.1 主流程 3.2 添加操作流程 3.3 显示联系人操作流程 3.4 修改联系人操作流程 四… 目录 一、整体介绍 1.1、需求和目标 1.2、整体功能描述 二、页面及功能描述 2.1 主菜单 2.2 添加联系人菜单 2.3 显示联系人菜单 2.4 修改联系人菜单 2.5 退出功能 三、流程设计 3.1 主流程 3.2 添加操作流程 3.3 显示联系人操作流程 3.4 修改联系人操作流程 四、代码设计 4.1 核心思路 4.2 项目文件分类设计 4.2.1 头文件 4.2.2 源文件 4.2.3 代码实现步骤 4.3 代码具体实现 4.3.1 定义头文件 4.3.2 实现主体流程     4.3.3 绘制菜单 4.3.4 读取键盘输入 4.3.5 实现具体操作功能 一、整体介绍 1.1、需求和目标 项目的需求实现一个叫做“通讯录管理”的基于命令行界面的通讯录管理软件。 我们的目标是通过项目练习初步掌握编写软件的方法和技巧。 1.2、整体功能描述 这个软件相对简单只需要基于命令行做纯文本的交互不涉及图形化界面。作为一个记录通讯录软件主要有三大功能添加联系人、显示联系人与修改联系人。也就是说软件需要能够记录联系人的姓名与联系方式等相关信息并提供查询显示联系人信息的功能也可对联系人信息进行修改。而且为了让软件有真正的实用价值需要对数据做持久保存我们这里只需要存放在一个指定的文本文件中。 项目采用分级菜单方式每一级菜单应该有“返回主菜单”功能主菜单有“退出”选项。 二、页面及功能描述 2.1 主菜单 运行软件后首先应该显示主菜单。主菜单提供四个选项“添加联系人”、“显示联系人”、修改联系人和“退出”并在下方提示用户输入1-4的数字选择不同的功能。 主菜单界面如下 2.2 添加联系人菜单 在主菜单页面选择“1”可以进入记账菜单二级菜单。添加联系人菜单提供三个选项“办公”、“个人”和“退出”并在下方提示用户按对应的数字进行功能选择。 记账菜单界面如下 在添加联系人菜单页面选择“1”可以记录一条办公类联系人信息。联系人信息包括类型办公/个人、姓名、电话、住址。这里需要提示用户输入联系人的姓名、电话与住址信息然后显示完成添加。 类似地在联系人菜单页面选择“2”可以记录一条个人类联系人信息。提示用户输入联系人的姓名、电话与住址然后显示完成添加。 2.3 显示联系人菜单 在主菜单页面选择“2”可以进入显示联系人菜单。显示联系人菜单提供四个选项“全部”、“办公”、“个人”和“退出”并在下方提示用户按对应的数字进行功能选择。 显示联系人菜单界面如下 在显示联系人菜单页面选择“1”可以显示全部联系人信息选择“2”可以显示所有办公类联系人选择“3”可以显示所有个人类联系人。用户选择之后除了应该显示对应的联系人信息外还应该对所有联系人个数进行统计汇总。 对应地选择“1”之后列出所有联系人统计的是通讯录的总条数选择“2”之后列出所有办公类联系人统计办公类总条数选择“3”之后列出所有个人类联系人统计个人类总条数。 2.4 修改联系人菜单 在主菜单页面选择“3”可以进入修改联系人菜单。修改联系人菜单提供三个选项“办公”、“个人”和“退出”并在下方提示用户按对应的数字进行功能选择。 显示联系人菜单界面如下 在修改联系人菜单页面选择“1”可以修改办公类别联系人信息选择“2”可以个人类别联系人信息。用户选择之后根据提示输入要修改的联系人姓名如没有找到提示未找到此人如找到此联系人输入更改后的姓名、电话与住址并提示修改成功。 2.5 退出功能 在主菜单页面选择“3”可以退出软件。页面将做确认退出的对话提醒如果用户输入“Y”则退出输入“N”则返回主菜单页面。 三、流程设计 3.1 主流程 3.2 添加操作流程 3.3 显示联系人操作流程 3.4 修改联系人操作流程 四、代码设计 4.1 核心思路 通讯录软件处理的数据就是添加或者修改的“联系人”。每一条联系人数据都应该包含类型、姓名、电话、住址四部分这可以构建一个结构体类型 Person来表示。 而程序运行的开始应该读取保存在文件中的数据读取之后应该是一个 Person类型的数组。 在流程控制方面如果用户不选择退出程序就不会结束所以应该用一个while循环来处理整个流程当用户确认退出时更改一个标志位用来退出循环。 每一级菜单做键盘选择后可以用 switch 分支语句来处理不同的功能模块可以包装成函数。 4.2 项目文件分类设计 4.2.1 头文件 对于一个C项目来说构建整体架构很重要的一步就是定义头文件。一般我们会把全局变量、函数声明、以及结构体的定义都放在头文件中。 本项目可以设计两个头文件来管理不同的内容 结构体 Person的定义以及涉及到账目操作的函数声明都可以放在一个头文件 person_item.h 中其它一些通用的设置和功能性函数可以放在另一个头文件common.h 中 4.2.2 源文件 真正的代码实现都放在源文件中。根据不同的用途项目中可以用四个源文件来实现对应的功能 主体代码可以放在一个源文件 person_main.cpp 中绘制菜单的函数都放在menus.cpp中通用函数比如读取键盘输入放在read_input.cpp中针对账目的所有操作函数比如记账、查询全部放在operations.cpp中 4.2.3 代码实现步骤 1、实现整体框架和主题流程 在头文件person_item.h中定义好结构体在common.h 中定义通用配置在源文件person_main.cpp的主函数中参照主流程图实现主体流程 2、填充具体功能 在menus.cpp中定义绘制各级菜单的函数函数声明放在common.h里在read_input.cpp中定义读取键盘输入的函数包括读取菜单选择、读取输入的金额数、读取确认退出信息这些函数都需要对输入做合法性校验并返回正确的值函数声明放在common.h里在operations.cpp中定义从文件加载数据、记账、查询对应的函数。 3、各功能的细分 1添加功能 首先需要读取键盘输入的姓名、电话和备住址信息然后将其保存在一个Person对象中并添加到vector同时写入文件 2显示功能 需要用for循环遍历整个vector通过条件筛选需要的联系人打印输出并统计总和 2修改功能 需要用for循环遍历整个vector通过条件匹配到联系人对数据进行更改将更改后的数组重新写入文件 4退出功能 提示用户确认退出用户确认后更改循环标志位退出循环 4.3 代码具体实现 4.3.1 定义头文件 首先可以在common.h中引入相应的库定义出需要的全局变量以及声明绘制菜单和读取键盘输入的通用函数。通用设置通用功能性函数声明。 #pragma once //通用设置通用功能性函数声明 #includeiostream //输入输出 #includestring //字符串操作 #includefstream //文件操作 #includevector #include algorithm using namespace std;#define max 1000 #define OFFICE 办公 #define MYSELF 个人 #define FILENAME book.txt //绘制菜单函数 void menus_main(); void menus_app(); void menus_show(); void menus_revise(); void menus_delete();//读取键盘输入进行合法性校验的函数 char readMenuSelection(int options); char readquitconfirm(); 然后在person_item.h定义核心数据结构结构体 Person并声明涉及到账目操作的函数。结构体定义涉及账目操作的函数声明。 #pragma once //结构体定义涉及通讯录管理操作的函数声明 #include common.h//设计联系人结构体 struct Person {string PersonItem; //类别1、办公2、个人string name; //姓名string iphone; //电话string address; //单位 };//针对通讯录数据进行操作的函数//加载通讯录数据 void loadDataFromFile(vectorPerson ps);//添加 void person_add(vectorPerson ps); void insertIntoFile(const Person p); void person_addmyself(vectorPerson ps); void person_addOffice(vectorPerson ps); //显示 void person_show(vectorPerson ps); void showPerson(const vectorPerson ps); void showPerson(const vectorPerson ps, const string PersonItem); void printPerson(const Person p); //修改 void person_revise(vectorPerson ps); void change(vectorPerson ps, string item); 4.3.2 实现主体流程     在源文件 person_main.cpp 的主函数中参照主流程图实现主体流程。 代码如下 #include common.h #include person_item.hint main() {//从文件加载数据vectorPerson ps;loadDataFromFile(ps);bool quit false;while (!quit){//1、显示主菜单menus_main();//2、读取键盘输入并做合法性校验char key readMenuSelection(5);switch (key){case 1: //1、添加联系人menus_app(); //添加菜单person_add(ps); //添加功能break;case 2: //2、显示联系人menus_show(); //显示菜单person_show(ps); //显示功能break;case 3: //3、修改联系人menus_revise(); //修改菜单person_revise(ps); //修改功能break;case 4: //退出cout 确认退出 Y/N;if (readquitconfirm() Y)quit true;break;default:break;}}} 4.3.3 绘制菜单 在 menus.cpp 中定义绘制各级菜单的函数对应的函数声明放在 common.h里。 代码如下 //菜单函数 #include common.h//主菜单 void menus_main() {system(cls); //清屏cout ----------------------------------------------------------- endl;cout | | endl;cout |*************** 1 添加联系人 ********************| endl;cout |*************** 2 显示联系人 ********************| endl;cout |*************** 3 修改联系人 ********************| endl;cout |*************** 4 退 出 ********************| endl;cout |_________________________________________________________| endl;cout \n请选择(1 - 4); } //添加联系人菜单 void menus_app() {cout ----------------------------------------------------------- endl;cout | | endl;cout |*************** 请选择添加联系人类别 ********************| endl;cout |*************** 1 办 公 ********************| endl;cout |*************** 2 个 人 ********************| endl;cout |*************** 3 退 出 ********************| endl;cout |_________________________________________________________| endl;cout \n请选择(1 - 3);cin.get(); } //显示联系人菜单 void menus_show() {cout ----------------------------------------------------------- endl;cout | | endl;cout |*************** 请选择显示联系人类别 ********************| endl;cout |*************** 1 全 部 ********************| endl;cout |*************** 2 办 公 ********************| endl;cout |*************** 3 个 人 ********************| endl;cout |*************** 4 退 出 ********************| endl;cout |_________________________________________________________| endl;cout \n请选择(1 - 4); } //修改联系人菜单 void menus_revise() {cout ----------------------------------------------------------- endl;cout | | endl;cout |*************** 请选择修改联系人类别 ********************| endl;cout |*************** 1 办 公 ********************| endl;cout |*************** 2 个 人 ********************| endl;cout |*************** 3 退 出 ********************| endl;cout |_________________________________________________________| endl;cout \n请选择(1 - 3); } //删除联系人菜单 void menus_delete() {cout ----------------------------------------------------------- endl;cout | | endl;cout |*************** 请选择删除联系人类别 ********************| endl;cout |*************** 1 办 公 ********************| endl;cout |*************** 2 个 人 ********************| endl;cout |*************** 3 退 出 ********************| endl;cout |_________________________________________________________| endl;cout \n请选择(1 - 3); } 4.3.4 读取键盘输入 在 read_input.cpp 中定义读取键盘输入的函数包括读取菜单选择、读取输入的金额数、读取确认退出信息这些函数都需要对输入做合法性校验并返回正确的值。 代码如下 //读取输入函数 #include common.h//读取键盘输入的菜单选项进行合法性校验 char readMenuSelection(int options) {string str;while (true){getline(cin, str);//进行合法化校验if (str.size() ! 1 || str[0] - 0 0 || str[0] - 0 options)cout 输入错误请重新选择;elsebreak;}//输入合法return str[0];}//读取确认退出信息并进行合法性校验 char readquitconfirm() {string str;while (true){getline(cin, str);//进行合法性校验if (str.size() ! 1 || toupper(str[0]) ! Y toupper(str[0]) ! N)cout 输入错误请重新选择;elsebreak;}//输入合法return toupper(str[0]); }4.3.5 实现具体操作功能 在 operations.cpp 中定义从文件加载数据、添加、显示、修改等操作对应的函数。 1从文件加载数据 loadDataFromFile()逐行读取文件中数据按空格将每个词赋值给Person中的每个成员得到一个Person对象并把它保存到数组中。 由于数组长度是固定的这里应该用可变长的容器对象vectorPerson来保存为了能够在函数中修改vector应该把它的引用作为函数参数传入。 2添加功能 首先需要读取键盘输入的金额和备注信息然后将其保存在一个AccountItem 对象中并添加到数组同时写入文件。 person_add添加联系人主体函数 person_addOffice记录办公类联系人将数据添加到vector中并调用insertIntoFile()函数写入文件做持久化保存 person_addmyself记录个人类联系人将数据添加到vector中并调用insertIntoFile()函数写入文件做持久化保存 insertIntoFile将一条账目写入文件中。 3显示功能 需要用for循环遍历整个数组通过条件 筛选需要的联系人打印输出并统计总和。 person_show查询主体函数 showPerson显示通讯录联系人 4修改功能 需要用for循环遍历整个数组通过条件 筛选需要的联系人进行更改更改后使用for循环再次遍历整个数组重新写入文件中做持久化保存。 person_revise修改联系人主体函数 change遍历数组找到联系人进行更改将更改后的结果重新写入文件 具体代码如下 //涉及通讯录操作的函数 #include common.h #include person_item.h//读取文件中的账目数据 void loadDataFromFile(vectorPerson ps) {ifstream input(FILENAME);//逐行读取每一条数据包装成Person对象Person p;string line;while (input p.PersonItem p.name p.iphone p.address) {ps.push_back(p);}input.close(); }//----------------------------------------添加----------------------------------------------- //添加操作 void person_add(vectorPerson ps) {//读取键盘选择并做合法化校验char key readMenuSelection(3);switch (key){case 1: //办公person_addOffice(ps);break;case 2: //个人person_addmyself(ps);break;case 3: //返回主菜单break;default:break;} }//记录办公类别通讯录 void person_addOffice(vectorPerson ps) {//新构建一个Person对象Person p;//类型已经确定就是办公p.PersonItem OFFICE;//与用户交互键盘输入姓名电话住址cout \n请输入姓名;getline(cin, p.name);cout \n请输入电话;getline(cin, p.iphone);cout \n请输入住址;getline(cin, p.address);//添加到vector中ps.push_back(p);//写入文件做持久化保存insertIntoFile(p);//显示成功信息cout \n----------------添加成功----------------\n;cout \n请按回车键返回主菜单....... endl;string str;getline(cin, str);} //记录个人类别通讯录 void person_addmyself(vectorPerson ps) {//新构建一个Person对象Person p;//类型已经确定就是办公p.PersonItem MYSELF;//与用户交互键盘输入姓名电话住址cout \n请输入姓名;getline(cin, p.name);cout \n请输入电话;getline(cin, p.iphone);cout \n请输入住址;getline(cin, p.address);//添加到vector中ps.push_back(p);//写入文件做持久化保存insertIntoFile(p);//显示成功信息cout \n----------------添加成功----------------\n;cout \n请按回车键返回主菜单....... endl;string str;getline(cin, str); }//将一条数据写入文件中 void insertIntoFile(const Person p) {//创建一个ofstream对象第二个参数表示以追加的方式进行写入ofstream output(FILENAME, ios::out | ios::app);output p.PersonItem \t p.name \t p.iphone \t p.address endl;output.close(); }//-------------------------------------显示---------------------------------------------------------------- void person_show(vectorPerson ps) {//读取键盘选择并做合法性校验char key readMenuSelection(4);switch (key){case 1: //所有showPerson(ps);break;case 2: //办公showPerson(ps,OFFICE);break;case 3: //个人showPerson(ps,MYSELF);break;case 4: //返回主菜单break;default:break;} }//显示所有通讯录 void showPerson(const vectorPerson ps) {cout ----------------------查询结果----------------------- endl;cout \n类型\t\t姓名\t\t电话\t\t住址\n endl;//遍历所有通讯录并添加数目int count 0;for (auto p : ps) {printPerson(p);count;}//输出信息cout endl;cout 总联系人数 count endl;cout \n请按回车键返回主菜单...... endl;string str;getline(cin, str); }//函数重载显示联系人 void showPerson(const vectorPerson ps,const string PersonItem) {cout ----------------------查询结果----------------------- endl;cout \n类型\t\t姓名\t\t电话\t\t\t住址\n endl;//遍历所有通讯录并添加数目int count 0;for (auto p : ps) {if (p.PersonItem ! PersonItem)continue;printPerson(p);count;}//输出信息cout endl;cout 总联系人数 count endl;cout \n请按回车键返回主菜单...... endl;string str;getline(cin, str); }//打印每一条通讯录数据 void printPerson(const Person p) {cout p.PersonItem \t\t p.name \t\t p.iphone \t\t p.address endl; }//----------------------------------------修改--------------------------------------------------------------------------- //修改联系人主体函数 void person_revise(vectorPerson ps) {//读取键盘选择并做合法化校验char key readMenuSelection(3);switch (key){case 1: //办公change(ps,OFFICE);break;case 2: //个人change(ps,MYSELF);break;case 3: //退出break; default:break;} }//修改联系人操作函数 void change(vectorPerson ps, string item) {cout 请输入您要修改的联系人姓名;string name;bool found false;while (!found) {getline(cin, name);for (auto p : ps) {if (p.PersonItem item p.name name) {string changeNmae;string changeIphone;string changeAddress;cout 请输入更改后的姓名;getline(cin, changeNmae);p.name changeNmae;cout endl;cout 请输入更改后的电话;getline(cin, changeIphone);p.iphone changeIphone;cout endl;cout 请输入更改后的住址;getline(cin, changeAddress);p.address changeAddress;cout endl;found true;break;}}if (!found) {cout 未找到此联系人请重新输入 endl;}}// 将更改写回到文件, trunc模式会将文件中的数据清空然后重新写入新的内容ofstream outputFile(FILENAME, ios::out | ios::trunc);if (outputFile.is_open()) {for (const auto p : ps) {outputFile p.PersonItem \t p.name \t p.iphone \t p.address endl;}outputFile.close();}else {cerr 无法打开文件进行写入. endl;}// 显示成功信息cout ----------------修改成功---------------- endl;cout 请按回车键返回主菜单....... endl;string str;getline(cin, str); } 至此我们就完成了对通讯录管理的设计与实现啦你也快去试一下吧~
http://www.w-s-a.com/news/679011/

相关文章:

  • 南充网站建设网站网站备案安全责任书是谁盖章
  • 怎么将网站设置为首页网站子目录怎么做
  • 做网站交互wordpress信息导出
  • 如何自己做企业网站做外贸登录国外网站
  • 郑州炫彩网站建设网站集约化建设调研报告
  • 2016年两学一做教育网站优良的定制网站建设制作商
  • 自己做网站需要哪些流程网站建设服务费如何做会计分录
  • 莆田建站培训用手机制作游戏的app软件
  • 中山建网站找哪家wordpress采集图片插件
  • 网站首页做后台链接有什么好用的模拟建站软件
  • 宁波有没有开发网站的公司网站上线除了备案还需要什么
  • 网站备案授权wordpress默认主体设置
  • 厦门微信网站广州推广策划公司
  • 集团公司网站开发asp网站怎么运行
  • 广州短视频网站开发东莞市建设信息网
  • 建设网站如果赚钱电脑可以做服务器部署网站吗
  • 网站建设的编程专门做面包和蛋糕的网站
  • 档案网站建设比较分析南京建站公司
  • 哪个网站可以做店招傻瓜式wordpress
  • 网站开发项目经理职责青岛模版网站建设
  • 企业建站哪个好网站建设所用程序
  • 网站建设seo视频定制图片软件
  • 404错误直接转向到网站首页四川省建筑施工企业人员考试平台
  • 手表电商网站智能展厅
  • 南海网站推广梅州做网站公司
  • 昆明专业网站建设公司成都外贸网站建设费用
  • php mysql网站开发项目公司网站宣传设计
  • 自己做网站服务器的备案方法怎么查网站点击量
  • 信息产业部icp备案中心网站织梦做双语网站
  • 爱站网站长seo综合查询工具局网站信息内容建设 自查报告