c++
第1个回答 2014-01-10
《C++语言程序设计课程设计》一、课程设计要求(以下内容,全部按:宋体5号,单倍行距格式编辑)1.题目:电话号码信息管理系统。2.基本要求:设计一个程序,掌握C++设计程序的一些流程,综合的运用C++使用。对流的使用,这个程序运用了一个流类的类库用继承的方法建立起来的。3.实验目的:掌握类的设计、类的派生;C++的输入输出流;继承性和派生类;函数应用运用,提高我们对系统应用,让我们更好的运用知识C和C++知识,还有一些语句的运用,格式控制符等运用。4.程序功能简介本程序具体功能如下:(1)用户登录界面设计。(2)信息维护:包括子模块有:增加电话号码信息、删除电话号码信息、修改电话号码信息。其中电话号码信息包括姓名、电话号码、序号。(3)信息查询:查询时实现按姓名、序号查询,提供电话号码信息。5.程序设计资料调研本课程的要求是电话号码信息管理,要求完成其基本功能。其信息经过搜索,查得电话号码表。在进行某种电话号码管理操作时,通过是先显示所有的电话号码的信息,再找到符合自己要找的电话号码的操作,本系统遵循了这一习惯。6.关键算法在本程序中使用了struct 数据类型,所用最多的是WHILE循环结构和IF语句,然而这也正为了它的特色。循环体的嵌套思路清晰,目的明确,格式规范,易于阅读和理解。If语句的逐层运用,正形象化的描述了计算机工作流程,而且与人的一般习惯相吻合,简单明了,易于观察理解它的来龙去脉,思路清晰直观。该程序是在汉化系统下编写完成的,所以它支持在汉化系统下运行,还支持在普通系统下运行,它允许完全用中文操作,包括对信息的添加浏览和查询等功能,它使用的指针是动态分配内存的,允许用户大量的信息录入,对它的长短不加限制,这样就方便了很多。而且中文环境更加方便使用,一目了然。7.存在的问题与次略本课程设计是在汉化环境下操作的,对系统要求相对严格。在输入信息时,每输入一条信息后用ENTER键结束,然后继续下一条信息的输入。如果不能按照规定方法录入,将导致信息混乱不清,只有重新启动系统开始新的输入。策略是:只有人为的去掌握输入方法,正确操作;还有是对程序改进,使程序对一些非法输入给予忽略,提示重新输入。二、设计的思路1.建立ifstream/ofstream/fstream、输入、输出、输入输出流对象,建立ifndef,define预编命令,STRUCT 数据。2.建立TelephoneBook类,构建PRIVATE私有成员和PUBLIC公有成员3.建TelephoneBook函数,建立输入输出文件,如何打开文件4.建立AddData函数,请输入序号、名字、电话号码构建电话号码本5.建立UpdateData函数,可以更改序号、名字、电话号码本功能项6.建立SearchData函数,制作输入查询电话号码的序号功能项7.建立DeleteData函数,制作输入可以删除的电话号码的序号8.建立Pack函数,写入电话号码二进制文件,写入电话号码本9.建立Run函数,用do. while界面制作界面10.建立一个主函数main(),#include"telephone_book .h"void main(void){TelephoneBook obj;obj.run();}11.运行主函数main,程序运行就可以了三、设计步骤#include<iostream.h>#include<string.h>#include<fstream.h>#include<ctype.h>#include<iomanip.h>#include<stdlib.h>#include<math.h>#include<stdio.h>
#ifndef _TELEPHONE_BOOK_H_#define _TELEPHONE_BOOK_H_struct TelephoneType{bool delfag;unsigned int seat;char name[16];char teleNo[80];};class TelephoneBook{private:fstream file;
void AddData();void UpdateData();void SearchData();void DeleteData();
public:TelephoneBook();virtual ~TelephoneBook(){file.close();}void run();};TelephoneBook::TelephoneBook(){ifstream ifile("telph.dat");//建立输入文件if(ifile.fail()){ofstream ofile("telph.dat");//建立输出文件if(ofile.fail()) throw(" 打开文件失败 ");ofile.close();}else{ifile.close();}file.open("telph.dat",ios::out|ios::binary);if(file.fail()) throw(" 打开文件失败 ");}void TelephoneBook::AddData(){TelephoneType telph;telph.delflag=false;char yesorno;do{cout<<"请输入序号 :";cin>>telph.seat;cout<<"请输入名字 :";cin>>telph.name;cout<<"请输入电话号码 :";cin>>telph.teleNo;file.write( (char*)&telph,sizeof(TelephoneType));cout<<"继续添加吗 ?";cin>>yesorno;}while(yesorno!='n');//注意相应成趣改变}void TelephoneBook::UpdateData(){TelephoneType telph;unsigned int seat;cout<<"请输入要更新的电话号码的序号 ";file.seekg(0);//从0位开始找while(!file.eof()){if(telph.seat==seat&&!telph.delflag)break;//找到了file.read((char*)&telph,sizeof(TelephoneType));}if(!file.eof()){cout<<setw(8)<<telph.seat<<setw(18)<<telph.name<<setw(18)<<telph.teleNo<<endl;cout<<"输入更新以后的数据:";cout<<"请输入序号:";cin>>telph.seat;cout<<"请输入姓名:";cin>>telph.name;cout<<"请输入电话号码:";cin>>telph.teleNo;file.seekg(-sizeof(TelephoneType),ios::cur);file.write((char*)&telph,sizeof(TelephoneTye));}else{cout<<"查无此号!"<<endl;file.clear();}}void TelephoneBook::SearchData(){TelephoneType telph;unsigned int seat;cout<<"输入要查询电话号码的序号:";cin>>seatl;file.seekg(0);//从0位开始找。file.read((char*)&telph,sizeof(TelephoneType));//没有找到就往下找while(!file.eof()){if(telph.seat--seat&&!telph.delflag)break;//找到了}if(!file.eof()){cout<<setw(8)<<"号码序号:"<<setw(18)<<"姓名:"<<setw(18)<<"电话号码"<<endl;cout<<" "<<endl;cout<<setw(8)<<telph.seat<<setw(18)<<telph.name<<setw(18)<<telph.teleNo<<endl;cout<<" "<<endl;}else{cout<<"查无此号!"<<endl;file.clear();}}void TelephoneBook::DeleteData(){TelephoneType telph;unsigned int seat;cout<<输入删除的电话号码的序号cin>>seat;file.seekg(0);//从0位开始找。file.read((char*)&telph.sizeof(TelephoneType));while(!file.eof()){if(telph.seat==seat && !telph.delflag)break;//找到了file.read((char*)&telph,sizeof(TelephoneType));//没找到就往下找。}if(!file.eof()){cout<<"被删除的记录为:"<<endl;cout<<setw(8)<<telph.seat<<setw(18)<<telph.name<<setw(8)<<telph.telNo<<endl;telph.delflag=true;file.seekg(-sizeof(TelephoneType),ios::cur);file.write((char*)&telph,sizeof(TelephoneType))//ikgikgbgcout<<"删除成功!";}else{cout<<"删除失败!"<<endl;file.clear();}}void TelephoneBook::Pack(){ofstream outfile("tem.dat",ios::app|ios::binary);TelephoneType telph;file.seekg(0);file.read((char*)&telph,sizeof(TelephoneType));while(!file.eof()){if(!telph.delflag){outfile.write((char*)&telph,sizeof(TelephoneType));}file.close();outfile.close();remove("telph.dat");rename("tem.dat","telph.dat");file.open("telph.dat",ios::in|ios::out|ios::binary);}void TelephoneBook::run(){int sel;do{cout<<" 请选择:"<<endl;cout<<"1.增加数据"<<endl;cout<<"2.更新数据"<<endl;cout<<"3.查询数据"<<endl;cout<<"4.删除数据"<<endl;cout<<"5.重组文件"<<endl;cout<<"6.退出"<<endl;cin>>sel;while(cin.get()!='\n');//;dkf;IdfkI;dfswitch(sel){case 1:AddData();break;case 2:UpdateData();break;case 3:SearchData();break;case 4:DeleteData();break;case 5:Pack();break;} } while(sel!=6);}#endif四、设计心得经过一个学期的学习和上机实践,使我对C++语言有了更认识和和了解,要想学好它要重在实践,要通过不断的上机操作才能更好的学习它,通过实践,我也发现我的好多不足之处,对各种控制结构及语句、数组的基本与高级应用、指针数组、字符数组、动态数组、函数的定义、调用方式;函数在编程中的具体应用;以及变量存储特征与标识符的作用域,通过实践,使我在这些方面有了认识和提高。课程设计它是一项任务,更是一种挑战和历练。在课程设计中,为了使用时方便,着重对不足方面的知识进行了分析与理解,在这一过程中对文件的操作有了很大的提高。通过实际的演练,可以增强对知识的理解和运用能力。五、参考文献[1]吴乃陵, 况迎辉.C++课程设计. 北京:高等教育出版社,2006[2]谢昕,刘觉夫,王更生.C++程序设计.北京:北京邮电大学出版社,2008
#ifndef _TELEPHONE_BOOK_H_#define _TELEPHONE_BOOK_H_struct TelephoneType{bool delfag;unsigned int seat;char name[16];char teleNo[80];};class TelephoneBook{private:fstream file;
void AddData();void UpdateData();void SearchData();void DeleteData();
public:TelephoneBook();virtual ~TelephoneBook(){file.close();}void run();};TelephoneBook::TelephoneBook(){ifstream ifile("telph.dat");//建立输入文件if(ifile.fail()){ofstream ofile("telph.dat");//建立输出文件if(ofile.fail()) throw(" 打开文件失败 ");ofile.close();}else{ifile.close();}file.open("telph.dat",ios::out|ios::binary);if(file.fail()) throw(" 打开文件失败 ");}void TelephoneBook::AddData(){TelephoneType telph;telph.delflag=false;char yesorno;do{cout<<"请输入序号 :";cin>>telph.seat;cout<<"请输入名字 :";cin>>telph.name;cout<<"请输入电话号码 :";cin>>telph.teleNo;file.write( (char*)&telph,sizeof(TelephoneType));cout<<"继续添加吗 ?";cin>>yesorno;}while(yesorno!='n');//注意相应成趣改变}void TelephoneBook::UpdateData(){TelephoneType telph;unsigned int seat;cout<<"请输入要更新的电话号码的序号 ";file.seekg(0);//从0位开始找while(!file.eof()){if(telph.seat==seat&&!telph.delflag)break;//找到了file.read((char*)&telph,sizeof(TelephoneType));}if(!file.eof()){cout<<setw(8)<<telph.seat<<setw(18)<<telph.name<<setw(18)<<telph.teleNo<<endl;cout<<"输入更新以后的数据:";cout<<"请输入序号:";cin>>telph.seat;cout<<"请输入姓名:";cin>>telph.name;cout<<"请输入电话号码:";cin>>telph.teleNo;file.seekg(-sizeof(TelephoneType),ios::cur);file.write((char*)&telph,sizeof(TelephoneTye));}else{cout<<"查无此号!"<<endl;file.clear();}}void TelephoneBook::SearchData(){TelephoneType telph;unsigned int seat;cout<<"输入要查询电话号码的序号:";cin>>seatl;file.seekg(0);//从0位开始找。file.read((char*)&telph,sizeof(TelephoneType));//没有找到就往下找while(!file.eof()){if(telph.seat--seat&&!telph.delflag)break;//找到了}if(!file.eof()){cout<<setw(8)<<"号码序号:"<<setw(18)<<"姓名:"<<setw(18)<<"电话号码"<<endl;cout<<" "<<endl;cout<<setw(8)<<telph.seat<<setw(18)<<telph.name<<setw(18)<<telph.teleNo<<endl;cout<<" "<<endl;}else{cout<<"查无此号!"<<endl;file.clear();}}void TelephoneBook::DeleteData(){TelephoneType telph;unsigned int seat;cout<<输入删除的电话号码的序号cin>>seat;file.seekg(0);//从0位开始找。file.read((char*)&telph.sizeof(TelephoneType));while(!file.eof()){if(telph.seat==seat && !telph.delflag)break;//找到了file.read((char*)&telph,sizeof(TelephoneType));//没找到就往下找。}if(!file.eof()){cout<<"被删除的记录为:"<<endl;cout<<setw(8)<<telph.seat<<setw(18)<<telph.name<<setw(8)<<telph.telNo<<endl;telph.delflag=true;file.seekg(-sizeof(TelephoneType),ios::cur);file.write((char*)&telph,sizeof(TelephoneType))//ikgikgbgcout<<"删除成功!";}else{cout<<"删除失败!"<<endl;file.clear();}}void TelephoneBook::Pack(){ofstream outfile("tem.dat",ios::app|ios::binary);TelephoneType telph;file.seekg(0);file.read((char*)&telph,sizeof(TelephoneType));while(!file.eof()){if(!telph.delflag){outfile.write((char*)&telph,sizeof(TelephoneType));}file.close();outfile.close();remove("telph.dat");rename("tem.dat","telph.dat");file.open("telph.dat",ios::in|ios::out|ios::binary);}void TelephoneBook::run(){int sel;do{cout<<" 请选择:"<<endl;cout<<"1.增加数据"<<endl;cout<<"2.更新数据"<<endl;cout<<"3.查询数据"<<endl;cout<<"4.删除数据"<<endl;cout<<"5.重组文件"<<endl;cout<<"6.退出"<<endl;cin>>sel;while(cin.get()!='\n');//;dkf;IdfkI;dfswitch(sel){case 1:AddData();break;case 2:UpdateData();break;case 3:SearchData();break;case 4:DeleteData();break;case 5:Pack();break;} } while(sel!=6);}#endif四、设计心得经过一个学期的学习和上机实践,使我对C++语言有了更认识和和了解,要想学好它要重在实践,要通过不断的上机操作才能更好的学习它,通过实践,我也发现我的好多不足之处,对各种控制结构及语句、数组的基本与高级应用、指针数组、字符数组、动态数组、函数的定义、调用方式;函数在编程中的具体应用;以及变量存储特征与标识符的作用域,通过实践,使我在这些方面有了认识和提高。课程设计它是一项任务,更是一种挑战和历练。在课程设计中,为了使用时方便,着重对不足方面的知识进行了分析与理解,在这一过程中对文件的操作有了很大的提高。通过实际的演练,可以增强对知识的理解和运用能力。五、参考文献[1]吴乃陵, 况迎辉.C++课程设计. 北京:高等教育出版社,2006[2]谢昕,刘觉夫,王更生.C++程序设计.北京:北京邮电大学出版社,2008
第2个回答 2014-01-10
题目 高校人事管理系统 一、目的与要求:1、目的: (1)要求学生达到熟练掌握C++语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法; (4)在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能及设计出比较友好的界面等。 4、写出设计说明书二、设计方法和基本原理: 1、问题描述(功能要求): 某高校,主要人员有:在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。要求: 1) 添加删除功能:能根据学院人事的变动情况,添加删除记录;2) 查询功能:能根据编号和姓名进行查询;3) 编辑功能(高级):根据查询对相应的记录进行修改,并存储;4) 统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);5) 保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。6) 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。 2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述(包括属性和方法); (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试; (8)完成系统总结报告以及系统使用说明书。