1、学 号 1307010225 高级程序设计语言C++课程设计 设计说明书 通讯录信息管理系统 起止日期: 2014年 6 月 16日 至 2014 年 6 月 20日 学生姓名 **** 班级 计算机科学与技术(2)班 成绩 指导教师(签字) 计算机与信息工程学院 2014 年 6 月20日 21 高级程序设计语言C++课程设计 目 录 1、设计目的 5 2、总体设计 5 3、详细设计: 6 3.1、程序具体功能 6 3.2
2、调试分析 7 4、源程序和运行结果 8 4.1、源程序 8 4.2、运行结果 20 4.3、心得体会 24 工资管理系统 1、 设计目的 .通过实验实现对学生信息系统的管理操作; .进一步掌握和利用C++进行程设计的能力; .进一步理解和运用结构化程序设计的思想和方法; .初步掌握开发一个小型实用系统的基本方法; .学会利用流程图或N-S图表示算法; .掌握书写程设计开发文档的能力(书写课程设计报告); 2、总体设计 通讯录信息管理系统 录入功能 文件读取功能 文件保存功能 浏览功能
3、 查询功能(按ID,类别) 修改功能(按ID) 删除供能(按ID) 排序供能(按ID,类型) 退出功能 3、详细设计: 3.1、程序具体功能: 1、联系人信息录入功能 2、联系人信息文件读取功能 3、联系人信息文件保存功能v 4、联系人信息浏览功能 5、查询功能: l 1)按ID查询 l 2)按类型查询 6、修改功能: 根据ID修改相应信息; 7、删除联系人功能: 删除相应ID的联系人信息。 8、排序功能(由用户指定按照联系人类型或ID;指定升序或降序) 9、退出 3.2、调试分析 上机调试之前我们对所编
4、的程序作了纸面上的检查,先改正一些不该犯错误,如{ }没有搭配完整,漏写 ,拼写错误等,这些都是我们通过认真的态度在运行之前可以解决、避免的。而且还可以减少机器时间。往往一连串的错误是由于漏写或写错一个字符引起的。 在上机调试过程中,对文件这一节的知识还不够熟悉,所以在解决输入输出流的过程中出了很多问题。 问题如下: (1)定义了count这menu类的成员,使count的寿命在执行系统操作时一直延续,但是保存文件后,不知如何读取,进一步又了解到输入流的读取方式。除此之外,还发现无法读取保存文件中的汉字,会出现乱码。(2)文件输入输出时要保证读取和保存的数据顺序一致。(3)读取之前要先保
5、存文件
1、类函数声明后,要在括号后加逗号。
2、头文件的声明(如string,iomanip等)。
3、派生类构造函数的定义问题,(如基类构造函数为空时,派生类无需再定义,以及个数问题)。
4、if判断,for循环语句,中括号不成对,以及括号所包围的内容。
5、类的私有成员只能通过共有的成员函数和友元函数来调用。
6、定义的变量在全体函数中的寿命。
4、源程序和运行结果
4.1、源程序
#include
6、 std; ////////////////////////////////// class Date { private: int year; int day; int month; public: Date(); void set_Date(); void Date_display(); int get_year(); int get_day(); int get_month(); string get_data(); void Date_sweep(); void change_year(int n); void c
7、hange_month(int n); void change_day(int n); void set_all(int y,int m,int d); }; void Date::set_all(int y,int m,int d) { year = y; month = m; day =d ; } Date::Date() { year=0; month=0; day=0; } void Date::change_month(int n) { month=n; } void Date::change_yea
8、r(int n)
{
year=n;
}
void Date::change_day(int n)
{
day=n;
}
void Date::Date_sweep()
{
year=0;
month=0;
day=0;
}
void Date::set_Date()
{
cout<<"存储日期"< 9、Date_display()
{
cout<<"年:"< 10、
}
/////////////////////////////////////////
class people:public Date
{
private:
int ID;
int ID1;
int ID2;
int relation1;
int relation2;
string mobilephone;
string telephone;
string address;
string name;
string sex;
string relation;
public:
int get_ID();
string g 11、et_mobilephone();
string get_telephone();
string get_address();
string get_name();
string get_sex();
string get_relation();
void change_mobilephone(string n);
void change_telephone(string n);
void change_address(string n);
void change_sex(string n);
void change_name(string n); 12、
void change_relation(string n);
void set_people();
void in_ID();
void people_display();
void people_sweep();
int compare_relation1(people &a,string b);
int compare_relation2(people &a,people &b);
int compare_ID1(people &a,people &b);
int compare_ID2(people &a,int b);
void set_al 13、lE(int I,string na,string se,string re,string mo,string te,string ad,int y,int m,int d);
people():Date()
{
ID=0;
ID1=4;
ID2=4;
relation1=4;
relation2=4;
mobilephone="?";
telephone="?";
address="?";
name="?";
sex="?";
relation="?";
}
14、};
void people::set_allE(int I,string na,string se,string re,string mo,string te,string ad,int y,int m,int d)
{
ID=I;
mobilephone=mo;
telephone=te;
address=ad;
name=na;
sex=se;
relation=re;
set_all(y,m,d);
}
void people::change_mobilephone(string n)
{
mobilephone=n;
}
15、
void people::change_telephone(string n)
{
telephone=n;
}
void people::change_address(string n)
{
address=n;
}
void people::change_sex(string n)
{
sex=n;
}
void people::change_name(string n)
{
name=n;
}
void people::change_relation(string n)
{
relation=n;
}
void 16、people::in_ID()
{
cout<<"ID:";
cin>>ID;
}
void people::set_people()
{
cout<<"姓名:";
cin>>name;
cout<<"性别:";
cin>>sex;
cout<<"关系:";
cin>>relation;
cout<<"手机:";
cin>>mobilephone;
cout<<"座机:";
cin>>telephone;
cout<<"地址:";
cin>>address;
}
void people::people_disp 17、lay()
{
cout<<"ID:"< 18、{
return mobilephone;
}
string people::get_telephone()
{
return telephone;
}
string people::get_name()
{
return name;
}
string people::get_sex()
{
return sex;
}
string people::get_address()
{
return address;
}
string people::get_relation()
{
return relation;
}
19、
int people::compare_relation1(people &a,string b)
{
if(a.relation>b)
relation1=0;
if(a.relationb.relation)
relation2=0;
if(a.rel 20、ation 21、)
{
if(a.ID==b)
ID2=1;
if(a.ID>b)
ID2=0;
if(a.ID 22、/////////
class Menu
{
private:
int count;
people Re[1000];
public:
Menu();
void menu();//显示菜单
void input_all();//输入所有联系人信息
void output_all();//输出所有联系人信息
void search_num();//查找指定联系人ID
void read_fromfile();//联系人信息的读取
void save_tofile();//联系人信息的保存
void order_message();//联 23、系人信息排序
void Clean_Message();//删除联系人信息
void change_message();//修改联系人信息
void op();
};
Menu::Menu()
{
count=1;
}
void Menu::menu()
{
cout< 24、的读取"< 25、手机"< 26、" b.降序"< 27、[a];
Re[a]=Re[i];
Re[i]=b;
}
}
if(a=='B')
{
char c;
cout<<"请输入(a升序,b降序):";
cin>>c;
if(c=='a')
{
for(int i=0;i 28、a];
Re[a]=Re[i];
Re[i]=b;
}
}
if(c=='b')
{
for(int i=0;i 29、
}
void Menu::input_all()
{
for(int i=0;i<=count;i++)
{
char a;
Re[i].in_ID();
for(int x=0;x<10;x++)
for(int b=0;b 30、 }
}
}
Re[i].set_people();
Re[i].set_Date();
cout<<"是否继续输入(回复“N(或n)”停止输入,回复“Y(或y)”继续输入):";
cin>>a;
for(int c=0;c<10;c++)
{
if(a!='y'&&a!='Y'&&a!='n'&&a!='N')
{
cout<<"输入错误!,请重新输入:";
cin>>a;
}
else
break;
}
count++;
if(a=='n'||a== 31、'N')
{
count--;
break;
}
}
op();
}
void Menu::output_all()
{
if(count==0)
cout<<"亲,你还没有存储的联系人哦!";
else
for(int i=0;i 32、0;
cout<<"请输入要删除联系人的ID号:";
cin>>number;
for(int c=0;c<10;c++)
{
for(int i=0;i 33、t;d++)
Re[d]=Re[d+1];
count--;
op();
}
void Menu::change_message()
{
char a;
int b;
int number;
string c;
int d;
int x=0;
char e;
cout<<"请输入要修改联系人的ID号:";
cin>>number;
for(int f=0;f<10;f++)
{
for(int i=0;i 34、e[i],number)==1)
{
d=i;
x=1;
break;
}
if(x==0)
{
cout<<"输入有误!请重新输入:";
cin>>number;
}
}
cout<<"请输入要修改联系人信息的方面(例如A,B):";
cin>>a;
if(a=='A')
{
cout<<"请重新输入年:";
cin>>b;
Re[d].change_year(b);
}
if(a=='B')
{ 35、
cout<<"请重新输入月:";
cin>>b;
Re[d].change_month(b);
}
if(a=='C')
{
cout<<"请重新输入日:";
cin>>b;
Re[d].change_day(b);
}
if(a=='D')
{
cout<<"请重新姓名:";
cin>>c;
Re[d].change_name(c);
}
if(a=='E')
{
cout<<"请重新输入手机号:";
cin>>c;
Re[d].cha 36、nge_mobilephone(c);
}
if(a=='F')
{
cout<<"请重新输入座机号:";
cin>>c;
Re[d].change_telephone(c);
}
if(a=='G')
{
cout<<"请重新输入联系人关系:";
cin>>c;
Re[d].change_relation(c);
}
if(a=='H')
{
cout<<"请重新输入地址:";
cin>>c;
Re[d].change_address(c);
}
if(a=='I')
{
37、cout<<"请重新输入性别:";
cin>>c;
Re[d].change_sex(c);
}
cout<<"是否查看修改后的信息(回复“N(或n)”否,回复“Y(或y)”是):";
cin>>e;
if(e=='y'||e=='Y')
{
Re[d].people_display();
Re[d].Date_display();
}
op();
}
void Menu::search_num()
{
char choice;
cout<<"请选择以何种方式查询(A或B):";
cin>>choice;
if(c 38、hoice=='A')
{
int number;
int d;
int a=0;
cout<<"请输入要查询联系人的ID号:";
cin>>number;
for(int c=0;c<100;c++)
{
for(int i=0;i 39、t<<"输入有误!请重新输入:";
cin>>number;
}
}
if(a==1)
{
Re[d].people_display();
Re[d].Date_display();
}
}
if(choice=='B')
{
int a=0;
int d;
string Name;
cout<<"请输入要查询联系人的关系:";
cin>>Name;
for(int c=0;c<100;c++)
{
for(int i=0;i 40、)
if(Re[i].compare_relation1(Re[i],Name)==1)
{
d=i;
a=1;
break;
}
if(a==0)
{
cout<<"输入有误!请重新输入:";
cin>>Name;
}
}
if(a==1)
{
Re[d].people_display();
Re[d].Date_display();
}
}
op();
}
void Menu::read_from 41、file()
{
int I;
string mo;
string te;
string ad;
string na;
string se;
string re;
int y,m,d;
ifstream infile("people.txt",ios::in);
if(!infile)
{
cerr<<"err!"< 42、mo>>te>>ad>>y>>m>>d;
Re[i].set_allE(I,na,se,re,mo,te,ad,y,m,d);
}
infile.close();
op();
}
void Menu::save_tofile()
{
ofstream outfile("people.txt",ios::out);
if(!outfile)
{
cerr<<"err!"< 43、 44、
outfile< 45、
case 3:read_fromfile();break;
case 4:output_all();break;
case 5:search_num();break;
case 6:change_message();break;
case 7:Clean_Message();break;
case 8:order_message();break;
case 9:exit(1);break;
}
}
}
//////////////////////////////////
int main()
{
Menu em;
em 46、op();
return 0;
}4.2、运行结果
4.3、心得体会
感觉这次的课程设计就像一次小型的复习,在设计中自己学习中的一些记忆不牢固,不清楚的知识点逐一显现,同时又锻炼自己设计程序时的全局观。“我就是程序,程序就是我”希望自己在不断实践中达到如此境界。这次课程设计,通过向别人请教、自己琢磨、向同学解答的形式完成。向别人请教时,不同的思路,不同的见解在交流中交汇,对程序的使用方法的理解更加深刻;自己琢磨时,可以理清自己的设计思路;向同学解答时,锻炼自己对程序专有名词的运用,表达能力。由于,这一学期学的是基础,在自己设计的通讯录管理系统中,总感觉和如今生活中的程序有很大差别,想使自己的程序更完美,却又发现知识有限,从另一方面,激发好奇心,求知欲。






