《面向对象程序设计》课程设计报告:同学通讯录管理程序

合集下载

面向对象程序设计课程设计--个人通讯录管理

面向对象程序设计课程设计--个人通讯录管理
findallbutton.addActionListener(new findall());
exportbutton.addActionListener(new export());
/*容器设置*/
con.add(pane);//添加面板
3.输入需要查询的联系人姓名,可以查询联系人的信息。
4.输入需要删除的联系人姓名,可以删除联系人。
5.可以查询全部联系人信息。
6.可以备份全部联系人的信息。
4.2总体设计
1.java.awt包,包含构成抽象窗口的工具集(abstract window toolkit)的多
个类,用来构建和管理应用程序的图形用户界面(GUI)。
combobox=new JComboBox(items);
sexlabel=new JLabel("性别:",SwingConstants.CENTER);
manradiobutton=new JRadioButton("男");
womanradiobutton=new JRadioButton("女");
软件学院
课程设计报告书
课程名称面向对象程序设计
设计题目个人通讯录管理
专业班级软件10-6班
2012年06月
目录
1设计时间1
2设计目的1
3设计任务1
4设计内容1
4.1需求分析1
4.1.1问题描述1
4.1.2基本要求1
4.2总体设计2
4.2.1包的描述2
4.2.2类的描述2
4.2.3类之间的关系2
4.3详细设计2
pane8.add(findbutton);
pane9=new JPanel(new FlowLayout(FlowLayout.CENTER,1,1));

《面向对象程序设计C 》-课程设计任务——电话号码管理系统

《面向对象程序设计C  》-课程设计任务——电话号码管理系统

《面向对象程序设计C++》课程设计《面向对象程序设计C++》课程设计任务书一、题目:电话号码管理系统二、目的要求:(1)掌握面向对象程序设计的基本思路和方法;(2)了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程;(3)进一步熟悉C++中类的概念、类的封装、继承的实现方式;(4)设计一个程序,掌握C++设计程序的一些流程,综合的运用C++使用。

对流的使用,这个程序运用了一个流类的类库用继承的方法建立起来的。

三、主要内容及实现的功能1、本程序具体功能如下:(1)用户登录界面设计。

(2)信息维护:包括子模块有:增加电话号码信息、删除电话号码信息、修改电话号码信息。

其中电话号码信息包括姓名、电话号码、序号。

(3)信息查询:查询时实现按姓名、序号查询,提供电话号码信息。

2、程序设计资料调研本课程的要求是电话号码信息管理,要求完成其基本功能。

其信息经过搜索,查得电话号码表。

在进行某种电话号码管理操作时,通过是先显示所有的电话号码的信息,再找到符合自己要找的电话号码的操作,本系统遵循了这一习惯。

3、关键算法在本程序中使用了struct 数据类型,所用最多的是WHILE循环结构和IF 语句,然而这也正为了它的特色。

循环体的嵌套思路清晰,目的明确,格式规范,易于阅读和理解。

If语句的逐层运用,正形象化的描述了计算机工作流程,而且与人的一般习惯相吻合,简单明了,易于观察理解它的来龙去脉,思路清晰直观。

该程序是在汉化系统下编写完成的,所以它支持在汉化系统下运行,还支持在普通系统下运行,它允许完全用中文操作,包括对信息的添加浏览和查询等功能,它使用的指针是动态分配内存的,允许用户大量的信息录入,对它的长短不加限制,这样就方便了很多。

而且中文环境更加方便使用,一目了然。

四、设计的思路1.建立ifstream/ofstream/fstream、输入、输出、输入输出流对象,建立ifndef,define预编命令,STRUCT 数据。

《面向对象程序设计》教案

《面向对象程序设计》教案

《面向对象程序设计》教案一、教案简介本教案旨在帮助学生掌握面向对象程序设计的基本概念、原理和方法,培养学生的编程能力和软件开发思维。

通过本课程的学习,学生将能够熟练运用面向对象的编程语言,如Java或C++,进行软件开发和设计。

二、教学目标1. 了解面向对象程序设计的基本概念,如类、对象、封装、继承和多态等。

2. 掌握面向对象程序设计的基本原则,如单一职责原则、开闭原则、里氏替换原则等。

3. 学会使用面向对象的编程语言进行程序设计和开发。

4. 培养学生的软件开发思维和团队协作能力。

三、教学内容1. 面向对象程序设计的基本概念1.1 类与对象1.2 封装1.3 继承1.4 多态2. 面向对象程序设计的基本原则2.1 单一职责原则2.2 开闭原则2.3 里氏替换原则2.4 接口隔离原则2.5 依赖倒置原则3. 面向对象的编程语言3.1 Java3.2 C++4. 面向对象的设计模式4.1 创建型模式4.2 结构型模式4.3 行为型模式四、教学方法1. 讲授法:讲解面向对象程序设计的基本概念、原理和编程方法。

2. 案例分析法:分析实际项目中的面向对象设计案例,让学生理解并掌握面向对象的设计思想。

3. 实践操作法:让学生通过编写代码,亲身体验面向对象程序设计的流程和方法。

4. 小组讨论法:分组进行讨论,培养学生的团队协作能力和解决问题的能力。

五、教学评价1. 课堂参与度:评估学生在课堂上的发言和提问情况,了解学生的学习兴趣和积极性。

2. 课后作业:布置相关的编程作业,检查学生对面向对象程序设计知识的掌握程度。

3. 项目实践:评估学生在团队项目中的表现,包括代码质量、设计思路和团队协作能力。

4. 期末考试:全面测试学生对面向对象程序设计知识的掌握情况。

六、教学资源1. 教材:推荐《Java面向对象程序设计》、《C++ Primer》等经典教材。

2. 在线资源:提供相关的在线教程、视频课程和编程练习平台,如慕课网、Coursera、LeetCode等。

《 面向对象程序设计》课程设计实验报告

《 面向对象程序设计》课程设计实验报告

《面向对象程序设计》课程设计实验报告指导教师小组成员:专业班级: 2010级计算机科学与技术专业开设时间:2011-2012(一)目录1.任务1 (2)1.1 任务介绍 (2)1.2 小组成员任务分配 (2)1.3.1设计思想及主要流程图 (2)1.3.1主要程序清单 (2)1.3.1 运行结果及分析 (4)1.3.2设计思想及主要流程图 (2)1.3.2主要程序清单 (2)1.3.2 运行结果及分析 (4)1.3.3设计思想及主要流程图 (2)1.3.3主要程序清单 (2)1.3.3 运行结果及分析 (4)2.任务2 (2)2.1 任务介绍 (2)2.2 小组成员任务分配 (2)2.3设计思想及主要流程图 (2)2.3主要程序清单 (2)2.3 运行结果及分析 (4)3收获、体会和建议 (4)任务1.按照要求设计类 1.根据输出设计类设计类就是根据数据封装的要求,抽象出适合的类。

有如下测试程序和测试程序的输出结果,要求设计类Welcome 。

void main() { Welcome we; Welcome you(we); you.Display();you.Set(“Thank you.”);cout<<you.Get()<<endl; you.talk(); you.Display();}测试程序的输出结果如右: 设计类Welcome 的原则 1)在头文件Cpp1.h 中声明类 2)在Cpp1.cpp 中实现类3)使用内联函数定义Display()函数2.使用类改写程序编写一个求方程02=++c bx ax 的根的程序,用三个函数分别求当ac b 42+大于零、等于零和小于零时方程的根。

要求从主函数输入a 、b 、c 的值并输出结果。

使用面向过程的解法一般是把变量设为double 型,适用库函数cmath 进行计算。

请注意:使用面向对象的方法解决这个问题,首先要从解一元二次方程出发,抽象一个代表一元二次方程的类。

C++面向对象程序设计---通讯录课程设计报告8

C++面向对象程序设计---通讯录课程设计报告8

C+H面向对象程序设计课程设计报告设计题目:_______________________________________学生学号:_______________________________________学生姓名:_______________________________________专业班级:_______________________________________学生成绩:_______________________________________指导教师:_______________________________________计算机科学与技术系20* * ** **设计任务分析实现以下功能:1) 通讯录编辑(添加、删除);2) 按不同的项进行查找;3) 对已存在的通讯录按不同的项排序;4) 将通讯录写入文件;5) 从文件读入通讯录。

模块设计本次程序设计主要设计了六个模块(主要是: a.add(), a.del(),a.correct(),a.find1(),a.list1(),a.read(),a.write())a.add()函数用于通讯录中的信息进行添加,主要流程如下:a.del()函数用于通讯录中的信息进行删除,主要流程如下:a.correct()函数用于通讯录中的信息进行修改,主要流程如下:a.find1() 函数用于通讯录中的信息进行查找,主要流程如下:a」ist1()函数用于通讯录中的信息进行排序,主要流程如下:a.read()函数用于从文本文件中读取信息,主要流程如下:a.write()函数用于将信息写入文本文件,主要流程如下:三、主要数据结构结构数组:struct student{char no[13];// 结构体// 学号char name[20];// 姓名char address[100]; // 地址char tel_no[12]; // 电话char post_code[7];// 邮编char e_mail[40]; }class inter{private://E-mail//派生类// 派生类增加或替代的私有成员student st[35];public: // 派生类增加或替代的公有成员void add(char no[13],char post_code[7],char e_mail[40]); // 成员函数,添加联系人void del(char name[20]);// 成员函数,删除联系人void find1(char no[13]);// 成员函数,按学号查找联系人voidfind2(char name[20]);// 成员函数,按姓名查找联系人void list1();// 成员函数,排序联系人void list2();// 成员函数,排序联系人int correct(char name[20]);// 成员函数,修改联系人void read();// 成员函数,读取文本文件void write();// 成员函数,写入文本文件void format();// 成员函数,格式化内存保存的数据int back()// 成员函数,返回首页void print(int i)name[20],char address[100],char tel_no[12],char// 成员函数,输出显示}四、流程图五、源代码#include<iostream.h> #include<fstream.h> #include<string.h> struct student // 结构体{char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];};class inter{private:student st[35];public:void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]);void del(char name[20]);void find1(char no[13]);void find2(char name[20]);void list1();void list2();int correct(char name[20]);void read();void write();void format();int back(){cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写)Jchar back;cin>>back;if(back=='R'||back=='r')return 1; else return 0;}void print(int i){cout<<" 学号 :"<<st[i].no<<endl; cout<<" 姓名 :"<<st[i].name<<endl; cout<<" 地址 :"<<st[i].address<<endl; cout<<" 电话号码 :"<<st[i].tel_no<<endl;cout<<" 邮编 :"<<st[i].post_code<<endl; cout<<"E_MAIL:"<<st[i].e_mail<<endl;}};// 主函数 首页 int main(){inter a; a.format(); char select1;cout<<endl;<<"\t\t ★★★★★★★★★★★★★★★★★★★★★★★★★★ " <<endl<<"\t\t ※※" <<endl <<"\t\t ※通迅录※" <<endl<<"\t\t ※※" <<endl<<"\t\t ※ 1. 通讯录编辑 .4.按序排列 . ※" <<endl <<"\t\t ※※" <<endl<<"\t\t ※ 2. 查询联系人 .5.将文件读入程序 . ※" <<endl <<"\t\t ※※" <<endl<<"\t\t ※ 3. 将资料写入文件 . 6. 格式化(慎用) . ※" <<endl<<"\t\t※※" <<endl<<"\t\t ★★★★★★★★★★★★★★★★★★★★★★★★★★ " <<endl<<"\t\tcin>>select1; char select2; top:cout<<"\t\t计科 N082 " <<endl "<<endl<<endl<<"\t\t\t选择switch(select1){case '1':cout<<" (1)cout<<" (2) cout<<" (3) 添加 :"<<endl; 删除 :"<<endl; 修改 :"<<endl; cout<<"请选择 :"<<endl;输入添加的资料 :"<<endl;输入学号 :"<<endl;输入姓名 :"<<endl; 输入地址 :"<<endl; 输入电话号码 :"<<endl; 输入邮编 :"<<endl; 输入 E_mail:"<<endl; a.add(no,name,address,tel_no,post_code,e_mail); cout<<"返回还是回到主菜单 (T 为退出,R 为回到主菜单, 写) : "; char back_add;cin>>back_add;if(back_add=='R'||back_add=='r')goto top; elsegoto bottom; break;case '2':cout<<" 输入要删除人的姓名 :"<<endl; char name2[20]; cin>>name2; a.del(name2); cout<<" 返回还是回到主菜单 (T 为退出,R 为回到主菜单,写) : ";char back_del; cin>>back_del;if(back_del=='R'||back_del=='r')goto top; elsegoto bottom;cin>>select2; switch(select2){case '1':cout<<"char no[13]; char name[20]; char address[100]; char tel_no[12]; char post_code[7]; char e_mail[40];cout<<" cin>>no; cout<<" cin>>name; cout<<" cin>>address; cout<<" cin>>tel_no; cout<<" cin>>post_code;cout<<"cin>>e_mail;不计大小不计大小break;case '3':cout<<" charname3[20]; cin>>name3;if(a.correct(name3)) gototop;else goto bottom;break;}break;case '2':cout<<" (1)cout<<" (2) charselect3;输入需要修改人的姓名:"<<endl;根据姓名查找"<<endl; 根据学号查找"<<endl;cout<<" 请选择: ";cin>>select3;switch(select3){case '1':char name4[20];cout<<" 输入姓名: "cin>>name4;a.find2(name4);cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,写) : ";不计大小char back_f1;cin>>back_f1;if(back_f1=='R'||back_f1=='r')goto top;elsegoto bottom;break;case '2':char no4[13];cout<<" 输入学号: ";cin>>no4;a.find1(no4);cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,写) : ";char back_f2;cin>>back_f2;if(back_f2=='R'||back_f2=='r')goto top;elsegoto bottom;break;不计大小返回还是回到主菜单 (T 为退出,R 为回到主菜单,不计大小写)char back_w; cin>>back_w; if(back_w=='R'||back_w=='r')goto top; elsegoto bottom; break;按学号排序 :"<<endl; 按姓名排序 :"<<endl; 请选择 :";char select4; cin>>select4; switch(select4){case '1':a.list1();cout<<" 返回还是回到主菜单 (T 为退出,R 为回到主菜单,不计大小 char back;cin>>back;if(back=='R'||back=='r')goto top; elsegoto bottom; break;case '2':a.list2();cout<<" 返回还是回到主菜单(T 为退出,R 为回到主菜单,不计大小写) : ";char back1; cin>>back1;if(back1=='R'||back1=='r')goto top; elsegoto bottom; break;}break;case '5':a.read();cout<<"返回还是回到主菜单(T 为退出,R 为回到主菜单,不计大小写)char back_r; cin>>back_r; if(back_r=='R'||back_r=='r') goto top; elsegoto bottom; break;case '6':cout<<" 请确认删除所有资料 !(Y/N) ";char select5; cin>>select5;if(select5=='Y'||select5=='y')a.format(); cout<<"返回还是回到主菜单(T 为退出,R 为回到主菜单,不计大小写)Jchar back_f; cin>>back_f; if(back_f=='R'||back_f=='r')break; case '3':a.write();cout<<" case '4':cout<<" (1)cout<<" (2) cout<<"写)goto top;elsegoto bottom;break;}bottom:cout<<" ★★★★★★★★★★★★欢迎使用本软件!★★★★★★★★★★★ "<<endl;return 0;}// 添加联系人void inter::add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]){int x=1;for(int i=0;i<35;i++){if(!strcmp(st[i].no,"0")){strcpy(st[i].address,address);strcpy(st[i].e_mail,e_mail);strcpy(st[i].name,name);strcpy(st[i].no,no);strcpy(st[i].post_code,post_code);strcpy(st[i].tel_no,tel_no);x=0;}if(x==0)break;}}// 删除联系人void inter::del(char name[20]){ int x=1;for(int i=0;i<35;i++){if(!strcmp(st[i].name,name)){strcpy(st[i].address,"0");strcpy(st[i].e_mail,"0");strcpy(st[i].name,"0");strcpy(st[i].no,"0");strcpy(st[i].post_code,"0");strcpy(st[i].tel_no,"0");}else x=0;}if(x==0)cout<<" error: 输入姓名错误!"<<endl;}// 修改联系人int inter::correct(char name[30]){int x;for(int i=0;i<35;i++){if(!strcmp(st[i].name,name))x=i;}char select;cout<<" (1) 修改姓名:"<<endl;cout<<" (2) 修改学号:"<<endl;cout<<" (3) 修改地址:"<<endl;cout<<" (4) 修改邮编:"<<endl;cout<<" (5) 修改电话号码:"<<endl;cout<<" (6) 修改E_MAIL:"<<endl;cout<<" 请选择:";cin>>select;switch(select){case '1':cout<<" 输入要修改的姓名:" char name1[30];cin>>name1;strcpy(st[x].name,name1);cout<<" 修改成功!"<<endl; return back();break;case '2':cout<<" 输入要修改的学号:"; char no1[13];cin>>no1; strcpy(st[i].no,no1);cout<<" 修改成功!"<<endl; return back();break;case '3':cout<<" 输入要修改的地址:"; char address1[100];cin>>address1; strcpy(st[x].address,address1); cout<<" 修改成功!"<<endl;return back();break;case '4':cout<<" 输入要修改的邮编:"; char post_code1[7];cin>>post_code1; strcpy(st[x].post_code,post_code1);cout<<" 修改成功!"<<endl; return back();break;case '5':cout<<" 输入要修改的电话号码:" char tel_no1[12];cin>>tel_no1; strcpy(st[x].tel_no,tel_no1);cout<<" 修改成功!"<<endl; return back();break;case '6':cout<<" 输入要修改的E_MAIL:"; char e_mail1[40];cin>>e_mail1; strcpy(st[x].e_mail,e_mail1);cout<<" 修改成功!"<<endl; return back();break;}}// 按学号查询联系人void inter::find1(char no[13]){int x,y=1,z=1;for(int i=0;i<35;i++){if(!strcmp(st[i].no,no)){ x=i; z=0;}else y=0;if(z==0) break;} if(y==0)cout<<" 输入的学号查找不到!!!"<<endl; print(x); }// 按姓名查询联系人void inter::find2(char name[20]){int x,y=1,z=1;for(int i=0;i<35;i++){if(!strcmp(st[i].name,name)){ x=i; z=0;}else y=0;if(z==0) break;} if(y==0)cout<<" 输入的姓名查找不到!!!"<<endl; print(x); }// 读取文件void inter::read(){char name1[20];cout<<" 输入你要导入的文件名: "; cin>>name1;strcat(name1,".txt"); ifstream file(name1); char line[120];char no[120];char name[120];char address[120];char post_code[120];char tel_no[120];char e_mail[120];int time=0;file.getline(line,120); while(!file.eof()){for(int k=0;k<35;k++){if(time==0){ strcpy(no,line); time=1;for(int i=0;i<120;i++){if(no[i]==':'){ i++;for(int j=0;j<13;j++) {st[k].no[j]=no[i]; i++;}}} file.getline(line,120,'\n');}if(time==1){strcpy(name,line);time=2;for(int i=0;i<120;i++){if(name[i]==':'){ i++;for(int j=0;j<20;j++) {st[k].name[j]=name[i];i++;}} file.getline(line,120,'\n');}if(time== 2){ strcpy(address,line); time=3;for(int i=0;i<120;i++){if(address[i]==':'){i++;for(int j=0;j<100;j++){ st[k].address[j]=address[i]; i++;}}} file.getline(line,120,'\n');}if(time==3){ strcpy(tel_no,line); time=4;for(int i=0;i<120;i++){if(tel_no[i]==':'){i++;for(int j=0;j<12;j++){st[k].tel_no[j]=tel_no[i]; i++;}}} file.getline(line,120,'\n');}if(time==4){ strcpy(post_code,line); time=5;for(int i=0;i<120;i++){if(post_code[i]==':'){i++;for(int j=0;j<7;j++) {st[k].post_code[j]=post_code[i]; i++;}}} file.getline(line,120,'\n');}if(time==5){ strcpy(e_mail,line); time=0;for(int i=0;i<120;i++) {if(e_mail[i]==':'){ i++; for(int j=0;j<40;j++) {st[k].e_mail[j]=e_mail[i]; i++;}}} file.getline(line,120,'\n');}}} file.close();}// 写入文件void inter::write(){char name[20];cout<<" 输入要保存的文件名" cin>>name;strcat(name,".txt");ofstream savefile(name);for(int i=0;i<35;i++){savefile << " 学号:"<<st[i].no<<endl; savefile << " 姓名:"<<st[i].name<<endl;savefile << " 地址:"<<st[i].address<<endl;savefile << " 电话号码:"<<st[i].tel_no<<endl;savefile << " 邮编:"<<st[i].post_code<<endl;savefile << "E_MAIL:"<<st[i].e_mail<<endl;}savefile.close();}// 按学号排序void inter::list1(){for(int i=0;i<34;i++){for(int j=0;j<35-i;j++){if(strcmp(st[j].no,st[j+1].no)>0){char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];strcpy(no,st[j].no); strcpy(st[j].no,st[j+1].no); strcpy(st[j+1].no,no);strcpy(name,st[j].name); strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name);strcpy(address,st[j].address); strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address); strcpy(tel_no,st[j].tel_no);strcpy(st[j].tel_no,st[j+1].tel_no); strcpy(st[j+1].tel_no,tel_no);strcpy(post_code,st[j].post_code); strcpy(st[j].post_code,st[j+1].post_code);strcpy(st[j+1].post_code,post_code); strcpy(e_mail,st[j].e_mail);strcpy(st[j].e_mail,st[j+1].e_mail); strcpy(st[j+1].e_mail,e_mail);}}}for(int k=0;k<35;k++){int x=0;if(strcmp(st[k].no,"0")){print(k);x=1;}if(x==1){cout<<endl;cout<<" --------------------------------------------------------------------------- "<<endl;}}}// 按姓名排序void inter::list2(){for(int i=0;i<34;i++){for(int j=0;j<35-i;j++){if(strcmp(st[j].name,st[j+1].name)>0){char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];strcpy(no,st[j].no); strcpy(st[j].no,st[j+1].no); strcpy(st[j+1].no,no);strcpy(name,st[j].name); strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name);strcpy(address,st[j].address);strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address);strcpy(tel_no,st[j].tel_no); strcpy(st[j].tel_no,st[j+1].tel_no);strcpy(st[j+1].tel_no,tel_no); strcpy(post_code,st[j].post_code);strcpy(st[j].post_code,st[j+1].post_code); strcpy(st[j+1].post_code,post_code);strcpy(e_mail,st[j].e_mail); strcpy(st[j].e_mail,st[j+1].e_mail);strcpy(st[j+1].e_mail,e_mail);}}}for(int k=0;k<35;k++){int x=0;if(strcmp(st[k].no,"0")){print(k);x=1;}if(x==1){cout<<endl;cout<<" --------------------------------------------------------------------"<<endl;}}}// 格式化void inter::format(){for(int i=0;i<35;i++){strcpy(st[i].address,"0"); strcpy(st[i].e_mail,"0"); strcpy(st[i].name,"0"); strcpy(st[i].no,"0");strcpy(st[i].post_code,"0"); strcpy(st[i].tel_no,"0");}}六、测试情况运行程序,首页显示如下:按1 选择通讯录编辑,编辑通讯录,显示(1)添加,(2)删除,(3)修改,运行后结果如下:第一次使用,按1 添加联系人,填入相关信息,运行图如下:返回首页,按2 可以查找联系人,可以根据姓名查找和学号查找,本次运用学号查找,运行如下:返回首页,按4 可以进行排序,可以根据姓名和学号排序,按姓名排序需要自己编辑的姓氏排序规则才能使用,本次使用学号排序,运行如下:将资料写入文件功能是将编辑好的通讯录写入文本文件,文本文件的名字可以自己输入。

课程设计---面向对象的程序设计C++电子通讯录系统

课程设计---面向对象的程序设计C++电子通讯录系统

《面向对象程序设计》课程设计报告姓名:班级:信息管理062学号:200805030342信息工程学院信息管理系二〇〇9年十二月题目:建立一个电子通讯录管理系统一、题目要求:采用面向对象程序设计思想,利用二进制文件来存储数据,实现数据的输入、编辑(修改通讯信息)、管理(添加、删除)、查询(姓名查询、类别查询)等功能。

二、需求分析:根据题目要求,要实现数据的输入、编辑(修改通讯信息)、管理(添加、删除)、查询(姓名查询、类别查询)等功能。

(程序开始运行时,自动调用文件函数,将文件中的信息导入到内存里)输入-------人物姓名(name)、通讯类型(species)、手机号码(mobilephone)、办公号码(officenum)、家庭电话(homenum)、E-mail地址(emailadd)、家庭住址(address)的输入。

管理-------添加:根据选择的通讯类型,将输入的信息添加到链表中。

删除:分为两种。

1.根据姓名删除人物的通讯信息。

2.删除全部的人物信息。

(程序运行结束时,链表中剩下的信息被写到文件中)编辑-------对通讯信息的修改。

查询-------按照姓名、和通讯类型进行查询。

三、设计思路:1、文件格式设计:直接将man对象的数据挨个存到文件中。

2、对象设计:把人物的通讯信息设计成类man,由结构体inform负责对二进制文件的操作和数据记录的操作。

并设计简单的类型转换函数!(string 定义的对象转换成char 定义的字符串变量)3、利用链表来存放记录,所有记录在操作开始的时候读入文件中的存有的数据(由结构体inform取出,转移到类man的对象中,再记录到链表中),在结束的时候再把记录存回(步骤与读入记录时相反)二进制文件中。

4、设计优缺点:优点:1.类man中的私有数据采用了类string定义的对象,类string对象具有简单的输入、赋值、读取,具有很高的灵活性,更重要的是string定义的字符串没有限制一定的长度,具有动态性,使用者可以更好的控制字符串的长度。

c++ 简单通讯录管理系统 课程设计 报告

c++ 简单通讯录管理系统  课程设计 报告

C++面向对象程序设计课程设计报告设计题目:简单通讯录管理系统学生学号:********学生姓名: ***专业班级:2010级飞行器设计专业指导教师:***航空宇航学院2011-6-211目录一.设计需求分析******************二.主要数据结构*******************三.特色**********************四.源代码*************************五.参考文献*************************一、设计需求分析2实现以下功能:1) 通讯录编辑(输入、储存、添加、删除、显示);2) 按不同的项进行查找;3) 对已存在的通讯录按不同的项排序;4) 将通讯录写入文件;5) 从文件读入通讯录。

二、主要数据结构class Node{char Name[10];//姓名int OfficePhone;//办公室电话int HomePhone;//住宅电话char MobilePhone[15];//手机号码char EMail[20];//email地址Node *Next;//下一结点指针public:Node(char *pname=NULL, int ophone=0, int hphone=0,char *pmphone=NULL, char *pemail=NULL);void Show();//显示结点数据void SetName(char *name);//修改姓名void SetOfficePhone(int o);//修改办公室电话 void SetHomePhone(int h);//修改住宅电话void SetMobilePhone(char *m);//修改手机号码void SetEMail(char *e);//修改email地址friend class AddrList;//将AddrList类说明为友元类friend void addfromtxtfile(AddrList &);//将addfromtxtfile说明为友元函数friend void writetotxtfile(AddrList &);//将writetotxtfile说明为友元函数};class AddrList{Node *HeadPtr;//链表首指针Node *TailPtr;//链表尾指针int Tag;//排序状态标志,当Tag=1时,按姓名排序当Tag=2时,按办公室电话排序public: //成员函数AddrList(Node *head=NULL, Node *tail=NULL, int tag=1)//构造函数,产生空链表,将tag的值置为1void AddTail(Node *p)//将p指向的结点加入到链表尾部void AddSort(Node *p)//将p指向的结点按Tag指定的顺序插入到链表中Node *LookUp(char *name)//按姓名查找结点,返回该结点指针void del(char *name)//删除指定姓名的结点void Sort(int tag)//按tag指定的关键字重新排序void ShowAll()//显示全部结点,每10个显示一屏void SetTag(int t)//置Tag值3int GetTag()//取tag值Node *GetHeadPtr()//取首指针~AddrList()//释放链表空间void CreateList(char *filename)//从二进制文件中读入数据,//构造链表void WriteToFile(char *filename)//将链表中数据//写入指定的二进制文件};三、特色对于本程序来说,最有特色的地方就是使用了类,还有链表来共同完成对于通讯录信息的记录还有各方面的操作。

C++面向对象程序设计---通讯录课程设计报告8

C++面向对象程序设计---通讯录课程设计报告8

C++面向对象程序设计课程设计报告设计题目:学生学号:学生姓名:专业班级:学生成绩:指导教师:计算机科学与技术系20**-**-**一、设计任务分析实现以下功能:1) 通讯录编辑(添加、删除);2) 按不同的项进行查找;3) 对已存在的通讯录按不同的项排序;4) 将通讯录写入文件;5) 从文件读入通讯录。

二、模块设计本次程序设计主要设计了六个模块(主要是:a.add(),a.del(),a.correct(),a.find1(),a.list1(),a.read(),a.write())a.add()函数用于通讯录中的信息进行添加,主要流程如下:a.del()函数用于通讯录中的信息进行删除,主要流程如下:a.correct()函数用于通讯录中的信息进行修改,主要流程如下:a.find1()函数用于通讯录中的信息进行查找,主要流程如下:a.list1()函数用于通讯录中的信息进行排序,主要流程如下:a.read()函数用于从文本文件中读取信息,主要流程如下:a.write()函数用于将信息写入文本文件,主要流程如下:三、主要数据结构结构数组:struct student //结构体{char no[13]; //学号char name[20]; //姓名char address[100]; //地址char tel_no[12]; //电话char post_code[7]; //邮编char e_mail[40]; //E-mail}class inter //派生类{private: //派生类增加或替代的私有成员student st[35];public: //派生类增加或替代的公有成员void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]);//成员函数,添加联系人void del(char name[20]);//成员函数,删除联系人void find1(char no[13]);//成员函数,按学号查找联系人void find2(char name[20]);//成员函数,按姓名查找联系人void list1();//成员函数,排序联系人void list2();//成员函数,排序联系人int correct(char name[20]);//成员函数,修改联系人void read();//成员函数,读取文本文件void write();//成员函数,写入文本文件void format();//成员函数,格式化内存保存的数据int back()//成员函数,返回首页void print(int i)//成员函数,输出显示}四、流程图五、源代码#include<iostream.h>#include<fstream.h>#include<string.h>struct student //结构体{char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];};class inter{private:student st[35];public:void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]);void del(char name[20]);void find1(char no[13]);void find2(char name[20]);void list1();void list2();int correct(char name[20]);void read();void write();void format();int back(){cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back;cin>>back;if(back=='R'||back=='r')return 1;elsereturn 0;}void print(int i){cout<<"学号:"<<st[i].no<<endl;cout<<"姓名:"<<st[i].name<<endl;cout<<"地址:"<<st[i].address<<endl;cout<<"电话号码:"<<st[i].tel_no<<endl;cout<<"邮编:"<<st[i].post_code<<endl;cout<<"E_MAIL:"<<st[i].e_mail<<endl;}};//主函数首页int main(){inter a;a.format();char select1;cout<<endl;top:cout<<"\t\t 计科N082 " <<endl <<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl<<"\t\t※※" <<endl<<"\t\t※通迅录※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 1. 通讯录编辑. 4. 按序排列 . ※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 2. 查询联系人. 5. 将文件读入程序. ※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 3. 将资料写入文件. 6. 格式化(慎用). ※" <<endl<<"\t\t※※" <<endl<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl<<"\t\t"<<endl<<endl<<"\t\t\t选择 :" ;cin>>select1;switch(select1){case '1':cout<<" (1)添加:"<<endl;cout<<" (2)删除:"<<endl;cout<<" (3)修改:"<<endl;char select2;cout<<" 请选择:"<<endl;cin>>select2;switch(select2){case '1':cout<<" 输入添加的资料:"<<endl;char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];cout<<" 输入学号:"<<endl;cin>>no;cout<<" 输入姓名:"<<endl;cin>>name;cout<<" 输入地址:"<<endl;cin>>address;cout<<" 输入电话号码:"<<endl;cin>>tel_no;cout<<" 输入邮编:"<<endl;cin>>post_code;cout<<" 输入E_mail:"<<endl;cin>>e_mail;a.add(no,name,address,tel_no,post_code,e_mail);cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_add;cin>>back_add;if(back_add=='R'||back_add=='r')goto top;elsegoto bottom;break;case '2':cout<<" 输入要删除人的姓名:"<<endl;char name2[20];cin>>name2;a.del(name2);cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_del;cin>>back_del;if(back_del=='R'||back_del=='r')goto top;elsegoto bottom;break;case '3':cout<<" 输入需要修改人的姓名:"<<endl;char name3[20];cin>>name3;if(a.correct(name3))goto top;else goto bottom;break;}break;case '2':cout<<" (1)根据姓名查找"<<endl;cout<<" (2)根据学号查找"<<endl;char select3;cout<<" 请选择: ";cin>>select3;switch(select3){case '1':char name4[20];cout<<" 输入姓名: ";cin>>name4;a.find2(name4);cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_f1;cin>>back_f1;if(back_f1=='R'||back_f1=='r')goto top;elsegoto bottom;break;case '2':char no4[13];cout<<" 输入学号: ";cin>>no4;a.find1(no4);cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_f2;cin>>back_f2;if(back_f2=='R'||back_f2=='r')goto top;elsegoto bottom;break;}break;case '3':a.write();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_w;cin>>back_w;if(back_w=='R'||back_w=='r')goto top;elsegoto bottom;break;case '4':cout<<" (1)按学号排序:"<<endl;cout<<" (2)按姓名排序:"<<endl;cout<<" 请选择:";char select4;cin>>select4;switch(select4){case '1':a.list1();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back;cin>>back;if(back=='R'||back=='r')goto top;elsegoto bottom;break;case '2':a.list2();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back1;cin>>back1;if(back1=='R'||back1=='r')goto top;elsegoto bottom;break;}break;case '5':a.read();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_r;cin>>back_r;if(back_r=='R'||back_r=='r')goto top;elsegoto bottom;break;case '6':cout<<" 请确认删除所有资料!(Y/N) ";char select5;cin>>select5;if(select5=='Y'||select5=='y')a.format();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_f;cin>>back_f;if(back_f=='R'||back_f=='r')goto top;elsegoto bottom;break;}bottom:cout<<" ★★★★★★★★★★★★欢迎使用本软件!★★★★★★★★★★★ "<<endl;return 0;}//添加联系人void inter::add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]){int x=1;for(int i=0;i<35;i++){if(!strcmp(st[i].no,"0")){strcpy(st[i].address,address);strcpy(st[i].e_mail,e_mail);strcpy(st[i].name,name);strcpy(st[i].no,no);strcpy(st[i].post_code,post_code);strcpy(st[i].tel_no,tel_no);x=0;}if(x==0)break;}}//删除联系人void inter::del(char name[20]){ int x=1;for(int i=0;i<35;i++){if(!strcmp(st[i].name,name)){strcpy(st[i].address,"0");strcpy(st[i].e_mail,"0");strcpy(st[i].name,"0");strcpy(st[i].no,"0");strcpy(st[i].post_code,"0");strcpy(st[i].tel_no,"0");}else x=0;}if(x==0)cout<<" error:输入姓名错误!"<<endl; }//修改联系人int inter::correct(char name[30]){int x;for(int i=0;i<35;i++){if(!strcmp(st[i].name,name))x=i;}char select;cout<<" (1)修改姓名:"<<endl;cout<<" (2)修改学号:"<<endl;cout<<" (3)修改地址:"<<endl;cout<<" (4)修改邮编:"<<endl;cout<<" (5)修改电话号码:"<<endl;cout<<" (6)修改E_MAIL:"<<endl;cout<<" 请选择:";cin>>select;switch(select){case '1':cout<<" 输入要修改的姓名:";char name1[30];cin>>name1;strcpy(st[x].name,name1);cout<<" 修改成功!"<<endl;return back();break;case '2':cout<<" 输入要修改的学号:";char no1[13];cin>>no1;strcpy(st[i].no,no1);cout<<" 修改成功!"<<endl;return back();break;case '3':cout<<" 输入要修改的地址:";char address1[100];cin>>address1;strcpy(st[x].address,address1);cout<<" 修改成功!"<<endl;return back();break;case '4':cout<<" 输入要修改的邮编:";char post_code1[7];cin>>post_code1;strcpy(st[x].post_code,post_code1);cout<<" 修改成功!"<<endl;return back();break;case '5':cout<<" 输入要修改的电话号码:";char tel_no1[12];cin>>tel_no1;strcpy(st[x].tel_no,tel_no1);cout<<" 修改成功!"<<endl;return back();break;case '6':cout<<" 输入要修改的E_MAIL:";char e_mail1[40];cin>>e_mail1;strcpy(st[x].e_mail,e_mail1);cout<<" 修改成功!"<<endl;return back();break;}}//按学号查询联系人void inter::find1(char no[13]){int x,y=1,z=1;for(int i=0;i<35;i++){if(!strcmp(st[i].no,no)){x=i;z=0;}else y=0;if(z==0)break;}if(y==0)cout<<" 输入的学号查找不到!!!"<<endl; print(x);}//按姓名查询联系人void inter::find2(char name[20]){int x,y=1,z=1;for(int i=0;i<35;i++){if(!strcmp(st[i].name,name)){x=i;z=0;}else y=0;if(z==0)break;}if(y==0)cout<<" 输入的姓名查找不到!!!"<<endl;print(x);}//读取文件void inter::read(){char name1[20];cout<<" 输入你要导入的文件名: ";cin>>name1;strcat(name1,".txt");ifstream file(name1);char line[120];char no[120];char name[120];char address[120];char post_code[120];char tel_no[120];char e_mail[120];int time=0;file.getline(line,120);while(!file.eof()){for(int k=0;k<35;k++){if(time==0){strcpy(no,line);time=1;for(int i=0;i<120;i++){if(no[i]==':'){i++;for(int j=0;j<13;j++){st[k].no[j]=no[i];i++;}}}file.getline(line,120,'\n');}if(time==1){strcpy(name,line);time=2;for(int i=0;i<120;i++){if(name[i]==':'){i++;for(int j=0;j<20;j++){st[k].name[j]=name[i];i++;}}}file.getline(line,120,'\n');}if(time== 2){strcpy(address,line);time=3;for(int i=0;i<120;i++){if(address[i]==':'){i++;for(int j=0;j<100;j++){st[k].address[j]=address[i];i++;}}}file.getline(line,120,'\n');}if(time==3){strcpy(tel_no,line);time=4;for(int i=0;i<120;i++){if(tel_no[i]==':'){i++;for(int j=0;j<12;j++){st[k].tel_no[j]=tel_no[i];i++;}}}file.getline(line,120,'\n');}if(time==4){strcpy(post_code,line);time=5;for(int i=0;i<120;i++){if(post_code[i]==':'){i++;for(int j=0;j<7;j++){st[k].post_code[j]=post_code[i];i++;}}}file.getline(line,120,'\n');}if(time==5){strcpy(e_mail,line);time=0;for(int i=0;i<120;i++){if(e_mail[i]==':'){i++;for(int j=0;j<40;j++){st[k].e_mail[j]=e_mail[i];i++;}}}file.getline(line,120,'\n');}}}file.close();}//写入文件void inter::write(){char name[20];cout<<" 输入要保存的文件名 ";cin>>name;strcat(name,".txt");ofstream savefile(name);for(int i=0;i<35;i++){savefile << "学号:"<<st[i].no<<endl;savefile << "姓名:"<<st[i].name<<endl;savefile << "地址:"<<st[i].address<<endl;savefile << "电话号码:"<<st[i].tel_no<<endl;savefile << "邮编:"<<st[i].post_code<<endl;savefile << "E_MAIL:"<<st[i].e_mail<<endl;}savefile.close();}//按学号排序void inter::list1(){for(int i=0;i<34;i++){for(int j=0;j<35-i;j++){if(strcmp(st[j].no,st[j+1].no)>0){char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];strcpy(no,st[j].no);strcpy(st[j].no,st[j+1].no);strcpy(st[j+1].no,no);strcpy(name,st[j].name);strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name);strcpy(address,st[j].address);strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address);strcpy(tel_no,st[j].tel_no);strcpy(st[j].tel_no,st[j+1].tel_no);strcpy(st[j+1].tel_no,tel_no);strcpy(post_code,st[j].post_code);strcpy(st[j].post_code,st[j+1].post_code);strcpy(st[j+1].post_code,post_code);strcpy(e_mail,st[j].e_mail);strcpy(st[j].e_mail,st[j+1].e_mail);strcpy(st[j+1].e_mail,e_mail);}}}for(int k=0;k<35;k++){int x=0;if(strcmp(st[k].no,"0")){print(k);x=1;}if(x==1){cout<<endl;cout<<"-----------------------------------------------------------------------------"<<endl;}}}//按姓名排序void inter::list2(){for(int i=0;i<34;i++){for(int j=0;j<35-i;j++){if(strcmp(st[j].name,st[j+1].name)>0){char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];strcpy(no,st[j].no);strcpy(st[j].no,st[j+1].no);strcpy(st[j+1].no,no);strcpy(name,st[j].name);strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name);strcpy(address,st[j].address);strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address);strcpy(tel_no,st[j].tel_no);strcpy(st[j].tel_no,st[j+1].tel_no);strcpy(st[j+1].tel_no,tel_no);strcpy(post_code,st[j].post_code);strcpy(st[j].post_code,st[j+1].post_code);strcpy(st[j+1].post_code,post_code);strcpy(e_mail,st[j].e_mail);strcpy(st[j].e_mail,st[j+1].e_mail);strcpy(st[j+1].e_mail,e_mail);}}}for(int k=0;k<35;k++){int x=0;if(strcmp(st[k].no,"0")){print(k);x=1;}if(x==1){cout<<endl;cout<<"---------------------------------------------------------------------"<<endl;}}}//格式化void inter::format(){for(int i=0;i<35;i++){strcpy(st[i].address,"0");strcpy(st[i].e_mail,"0");strcpy(st[i].name,"0");strcpy(st[i].no,"0");strcpy(st[i].post_code,"0");strcpy(st[i].tel_no,"0");}}六、测试情况运行程序,首页显示如下:按1选择通讯录编辑,编辑通讯录,显示(1)添加,(2)删除,(3)修改,运行后结果如下:第一次使用,按1添加联系人,填入相关信息,运行图如下:返回首页,按2可以查找联系人,可以根据姓名查找和学号查找,本次运用学号查找,运行如下:返回首页,按4可以进行排序,可以根据姓名和学号排序,按姓名排序需要自己编辑的姓氏排序规则才能使用,本次使用学号排序,运行如下:将资料写入文件功能是将编辑好的通讯录写入文本文件,文本文件的名字可以自己输入。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1.设计题目................................. 错误!未定义书签。

2.设计目的和内容........................... 错误!未定义书签。

设计目的................................... 错误!未定义书签。

设计内容................................... 错误!未定义书签。

3.基本功能描述............................. 错误!未定义书签。

4.设计思路................................. 错误!未定义书签。

5.软件设计................................. 错误!未定义书签。

设计步骤................................... 错误!未定义书签。

界面设计................................... 错误!未定义书签。

关键功能的实现............................. 错误!未定义书签。

添加记录................................ 错误!未定义书签。

删除记录................................ 错误!未定义书签。

选中记录................................ 错误!未定义书签。

确认修改................................ 错误!未定义书签。

保存记录................................ 错误!未定义书签。

退出.................................... 错误!未定义书签。

6.结论与心得体会........................... 错误!未定义书签。

7.参考文献................................. 错误!未定义书签。

8.附录..................................... 错误!未定义书签。

调试报告及测试结果 ......................... 错误!未定义书签。

关键源代码................................. 错误!未定义书签。

Student类 ............................. 错误!未定义书签。

全局.................................... 错误!未定义书签。

Control初始化 ......................... 错误!未定义书签。

添加记录................................ 错误!未定义书签。

删除记录................................ 错误!未定义书签。

选中记录................................ 错误!未定义书签。

修改记录................................ 错误!未定义书签。

保存记录................................ 错误!未定义书签。

退出程序................................ 错误!未定义书签。

1.设计题目同学通讯录管理程序2.设计目的和内容设计目的1)学习Visual C++的MFC开发程序的步骤。

.2)综合运用所学的类、继承和多态的知识。

3)进一步掌握程序的调试方法。

设计内容1)利用MFC的向导,创建基于对话框的应用程序,添加按钮、编辑框等控件;2)设计通讯录的数据结构(如:以数组或者动态链表)和相应的类;3)完成对通讯录中记录的增加、修改、删除和显示;4)将通讯录存入文本文件。

3.基本功能描述可以实现学生信息(姓名、学号、系别、邮箱、电话)的添加、显示、选中修改、删除选中和保存并退出程序的功能。

4.设计思路1)创建基于对话框的MFC应用程序,添加控件:5个Edit Control、6个Button、1个List Control;2)在5个Edit Control分别输入相应信息,点击“添加记录”Button可在ListControl 中显示相应信息,同时清空五个Edit Control以便下一个学生信息的输入;3)点中List Control选中已有一组学生信息,点击“删除记录”Button可删除该组信息;4)点中List Control选中已有一组学生信息,点击“选择该列”Button将该列信息返回到5个Edit Control。

修改完成后点击“确认修改”Button,对List Control 中选中列完成修改;5)点击“确认保存”将信息保存到文本文档;6)点击“退出”退出程序。

7)可在D盘查看保存的信息。

5.软件设计设计步骤1) 建立程序,添加变量和函数打开Microsoft Visual Studio 2010,新建一个基于对话框的MFC应用程序。

添加5个Static Text、5个Edit Control、6个Button、1个List Control。

在各控件属性中修改Caption,见错误!未找到引用源。

选择项目→类向导,添加成员变量(错误!未找到引用源。

)和成员函数(错误!未找到引用源。

)。

表 1 Caption表 2成员变量表 3成员函数2) 添加一个Student类,在中定义Student类的对象数组emily和一个全局变量i。

3) 初始化List Control在类视图→try2→Ctry2Dlg→OnInitialog()添加初始化的代码4) 实现添加、删除、修改和保存功能在类视图→try2→Ctry2Dlg中:OnClickedButton1add()实现添加记录到List Control功能;OnClickedButton2delete()实现删除记录功能;OnClickedButton3modify()实现选中记录返回到相应Edit Control功能;OnBnClickedOk()实现在OnClickedButton3modify()功能后替换List Control中原有内容确认修改;OnClickedButton4keep()实现在保存功能;OnBnClickedCancel()退出程序。

界面设计界面见错误!未找到引用源。

图 1界面关键功能的实现添加记录利用Edit Control关联的成员变量取其中的值存到对象数组中,再将对象数组中的值显示到List Control,同时清空Edit Control以便下一组学生记录的输入。

i自增1,这样下一个记录便会存储在下一个数组元素中。

删除记录调用选中点击了List Control中的一行;再调用删除该行;调用Student类的delete函数删除数组中的该组信息。

选中记录调用获取点击的那一行;获取想要的单元格返回到相应的Edit Control。

确认修改结合删除和添加功能即可。

保存记录建立CFile文件类的对象txt,文件路径为;CFile::modeCreate|CFile::modeWrite为文件操作类型参数设置;利用GetLength函数字符串长度,再调用Write写入到文本文档;退出OnBnClickedCancel()退出程序。

6.结论与心得体会在这个同学通讯录管理程序设计中,通过上网搜索,我学会并使用了很多编写MFC应用程序的函数。

在这个过程中,我觉得用msdn进行查询很重要。

MFC中有很多函数,功能非常强大,网上有人说“在MFC中只有想不到,没有做不到”。

设计过程中虽然遇到了很多次困难,在每次通过查阅资料后解决难题的过程中都有很多意想不到的收获。

全力投入后运行成功是无比喜悦的,C++作为MFC等其他很多程序编写的基础,是非常重要的。

这次课程设计过程我发现自己没有好好掌握C++,很多基本的概念没有彻底理解,需要再多看看书,查查资料。

通过这次课程设计,我初步学会了基于对话框的MFC应用程序的设计,我发现原来枯燥的程序编写也有很多快乐,我对编程产生了浓厚兴趣。

7.参考文献孙鑫.(2006).VC++深入详解北京:电子工业出版社++技术内幕北京:希望电子出版社侯俊杰.(1998).深入浅出MFC8.附录调试报告及测试结果图 2运行初始界面图 3键入信息图 4点击“添加记录”图 5再添加一个学生信息图 6点击第一行后点击“选择该列”取出信息到Edit Control图 7修改信息图 8点击“确认修改”图 9点击emily行后点击“删除记录”图 10点击yukaiyuan行后点击“选择该列”图 11点击“确认保存”图 12 D盘自动生产关键源代码Student类class Student{public:Student(void);~Student(void);CString name;CString num;CString ins;CString email;CString call;void Delete();};全局Student emily[15];int i=0;Control初始化BOOL Ctry2Dlg::OnInitDialog(){……ame=m_name;emily[i].num=m_num;emily[i].ins=m_ins;emily[i].email=m_email;emily[i].call=m_call;int nCurItem = (0,emily[i].name);(nCurItem, 1,emily[i].num);(nCurItem, 2, emily[i].ins);(nCurItem, 3,emily[i].email);(nCurItem, 4, emily[i].call);m_name="";m_num="";m_ins="";m_email="";m_call="";UpdateData(FALSE);i=i+1;}删除记录void Ctry2Dlg::OnClickedButton2delete(){elete();}选中记录void Ctry2Dlg::OnClickedButton3modify(){ame= (i,0);ame);emily[i].num=(i,1);SetDlgItemText(IDC_EDIT2,emily[i].num);emily[i].ins=(i,2);SetDlgItemText(IDC_EDIT3,emily[i].ins);emily[i].email=(i,3);SetDlgItemText(IDC_EDIT4,emily[i].email);emily[i].call=(i,4);SetDlgItemText(IDC_EDIT5,emily[i].call);}修改记录void Ctry2Dlg::OnBnClickedOk(){elete();UpdateData();emily[i].name=m_name;emily[i].num=m_num;emily[i].ins=m_ins;emily[i].email=m_email;emily[i].call=m_call;int nCurItem = (i,emily[i].name);(nCurItem, 1,emily[i].num);(nCurItem, 2, emily[i].ins);(nCurItem, 3,emily[i].email);(nCurItem, 4, emily[i].call);m_name="";m_num="";m_ins="";m_email="";m_call="";UpdateData(FALSE);}保存记录;(emily[i].name,2*j);j=emily[i].();(emily[i].num,2*j);j=emily[i].();(emily[i].ins,2*j);j=emily[i].();(emily[i].email,2*j);j=emily[i].();(emily[i].call,2*j);}();}}退出程序void Ctry2Dlg::OnBnClickedCancel(){// TODO: 在此添加控件通知处理程序代码CDialogEx::OnCancel();}。

相关文档
最新文档