《面向对象程序设计》课程设计报告:同学通讯录管理程序
- 格式:doc
- 大小:473.00 KB
- 文档页数:17
《面向对象程序设计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+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 可以进行排序,可以根据姓名和学号排序,按姓名排序需要自己编辑的姓氏排序规则才能使用,本次使用学号排序,运行如下:将资料写入文件功能是将编辑好的通讯录写入文本文件,文本文件的名字可以自己输入。
《面向对象程序设计》课程设计报告姓名:班级:信息管理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++面向对象程序设计课程设计报告设计题目:简单通讯录管理系统学生学号:********学生姓名: ***专业班级: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++面向对象程序设计课程设计报告设计题目:学生学号:学生姓名:专业班级:学生成绩:指导教师:计算机科学与技术系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可以进行排序,可以根据姓名和学号排序,按姓名排序需要自己编辑的姓氏排序规则才能使用,本次使用学号排序,运行如下:将资料写入文件功能是将编辑好的通讯录写入文本文件,文本文件的名字可以自己输入。
C语言程序设计报告一.课题通讯录管理系统二.设计方案简介为了帮助广大人群解决笔记通讯录所带来的诸多不便,本人利用所学的专业知识,设计了一个简单,便利的系统供大家在线存储众多联系人信息。
这样做一来可以将自己的知识生活化,运用自己所学为他人做点事,二来,在完成这项任务的过程中,通过克服一道又一道难题,我巩固了自己的知识,发现了自己的不足,进而提升了自己的能力。
该方案从整体出发,化整为零。
各个功能都是通过独立函数实现。
其中设计了信息录入,信息查询,信息修改,信息删除,信息保存,信息显示等功能。
方案的结构一目了然,便于用户操作。
经过在Microsoft Visual C++ 6.0中多次测试,结果均与预期相符。
加上该程序要求的平台不是很高,一般用户均可方便使用。
三.算法与数据结构<一>运用的数据类型有:int, char, file,.<二>主要功能模块的算法设计思路如下:1、添加信息函数(void Add(Link l))(1)定义指向结构体变量的指针;(2)移动指针,找到插入结点;(3)在要插入的结点输入信息;(4)调用保存函数,打开文件,保存输入信息。
2、修改信息函数(void Modify(Link l))(1)定义指向结构体变量的指针;(2)用指针检验链表中是否有记录,若没记录,返回主函数;(3)根据要修改的编号查找对应结点;(4)修改信息;(5)打开文件,保存修改记录。
3、删除信息函数(void Del(Link l))(1)定义指向结构体变量的指针;(2)用指针检验链表中是否有记录,若没记录,返回主函数;(3)根据要修改的编号查找要删除的结点;(4)修改链表,删除对应结点。
4、显示记录函数(void Disp(Link l))(1)打开文件;(2)用指针检验是否有记录;(3)若无记录,输出提示信息,返回主函数;若有记录,移动指针,依次输出记录;(4)关闭文件。
5、查询通讯录信息(void Find(Link l))(1)选择查询方式(按姓名、编号或地址);(2)输入查询关键字:(3)在链表中寻找相应结点;(4)调用输出函数,输出结点信息。
通讯录管理系统课程设计报告Java1. 简介通讯录管理系统是一种方便用户存储和管理联系人信息的工具。
本课程设计将使用Java语言开发一个简单的通讯录管理系统,实现对联系人信息的增删改查功能。
通过本项目的实践,学习者将掌握Java编程语言的基础知识和面向对象编程的技巧。
2. 功能需求通讯录管理系统应包含以下功能: - 添加联系人信息:用户可以输入联系人的姓名、电话号码、邮箱等信息添加到通讯录中。
- 显示所有联系人信息:系统能够展示所有已保存在通讯录中的联系人信息。
- 查找联系人信息:用户可以通过姓名或电话号码查找特定联系人的信息。
- 修改联系人信息:用户可以对已保存的联系人信息进行修改。
- 删除联系人信息:用户可以删除通讯录中的联系人信息。
实现以上功能需要设计相应的数据结构和算法,以及编写用户交互界面。
3. 技术实现3.1 数据结构在Java中,可以使用ArrayList或HashMap等数据结构来存储联系人信息。
ArrayList适用于有序的联系人列表,而HashMap适用于根据键值快速查找联系人信息。
3.2 用户交互界面用户交互界面可以通过Java的Swing或JavaFX等GUI工具包来实现。
设计一个简洁明了的界面,包含菜单栏、输入框、按钮等组件,以方便用户操作。
3.3 功能实现•添加联系人信息:用户输入信息后,将联系人信息添加到数据结构中。
•显示所有联系人信息:遍历数据结构,将所有联系人信息展示在界面上。
•查找联系人信息:根据用户输入的查询条件,在数据结构中查找对应的联系人信息。
•修改联系人信息:根据用户输入的修改信息,更新数据结构中相应的联系人信息。
•删除联系人信息:根据用户输入的删除条件,从数据结构中移除对应的联系人信息。
4. 总结通讯录管理系统是一个简单实用的应用程序,能够帮助用户有效管理联系人信息。
通过本课程设计,学习者将学习如何使用Java语言开发基本的应用程序,掌握面向对象编程的基本原理和技巧。
课程实践任务书信息技术的快速发展的同时也带来了社会各个行业的发展。
它的发展已经深入到社会的各个角落。
作为社会发展的前沿技术,各行各业只要对其合理的进行运用,必将会带来巨大的便捷。
成功的运用信息技术将为各类学校学生信息管理带来无限便利。
作为计算机应用的一部分,使用学生信息管理系统对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,大地提高学生档案管理的效率。
本文介绍了系统开发的全过程。
该系统以Windows为操作平台,Java为开发语言,Access为数据库,Eclipse为开发工具,使用JDBC技术进行连接,实现了在可视化的基础上,利用数据库进行后台管理。
系统由学生和老师基本信息添加、学生和老师基本信息查询、学生和老师基本信息删除、学生和老师基本信息修改及退出系统等功能模块组成,基本功能较全面。
用户界面友好、清晰、操作简便,易学易用;系统可读性好,易于维护、更新,安全性较好。
采用传统下拉菜单功能选择,方便、快捷、一目了然,并且在一个窗体中进行操作,可视化强。
采用链入数据库进行存储,可动态进行查看、操作,这样的系统可修改性较强。
关键字:面向对象;Eclipse;JDBC1 前言 (1)1.1 课题简介 (1)1.2 设计目的 (1)2 需求分析 (2)2.1业务需求分析 (2)2.2功能需求分析 (2)2.2.1 学生信息 (2)2.2.2 教师信息 (2)2.2.3 成绩管理 (3)3 数据库设计 (4)3.1 Java连接数据库 (4)3.1.1 关系数据库概述 (4)3.1.2 通过JDBC访问数据库 (4)3.2 数据库与基本表设计 (4)4 系统设计与实施 (7)4.1 Eclipse Java Neon 3 (7)4.2 结构设计 (7)4.3 文件组织结构 (7)4.4 登录模块 (8)4.4.1 设计构想 (8)4.4.2 实现登录模块 (8)4.5 学生信息模块 (11)4.5.1 设计构想 (11)4.5.2 实现学生信息模块主界面 (11)4.5.3添加信息 (12)4.5.4 删除信息 (14)4.5.5修改信息 (15)4.5.6 基本信息查询 (17)4.5.7 成绩查询 (19)4.5.8 退出系统 (21)4.6 教师信息模块 (22)结束语 (26)参考文献 (27)附录A............................................. 错误!未定义书签。
目录1.设计题目................................. 错误!未定义书签。
2.设计目的和内容........................... 错误!未定义书签。
设计目的................................... 错误!未定义书签。
设计内容................................... 错误!未定义书签。
3.基本功能描述............................. 错误!未定义书签。
4.设计思路................................. 错误!未定义书签。
5.软件设计................................. 错误!未定义书签。
设计步骤................................... 错误!未定义书签。
界面设计................................... 错误!未定义书签。
关键功能的实现............................. 错误!未定义书签。
添加记录................................ 错误!未定义书签。
删除记录................................ 错误!未定义书签。
选中记录................................ 错误!未定义书签。
确认修改................................ 错误!未定义书签。
保存记录................................ 错误!未定义书签。
退出.................................... 错误!未定义书签。
6.结论与心得体会........................... 错误!未定义书签。
7.参考文献................................. 错误!未定义书签。
学生通讯录管理系统课程设计报告一、课程设计背景学生通讯录管理系统是一个旨在帮助学生和教师更好地管理个人信息和通讯录的软件系统。
随着信息技术的不断发展,现代教育领域对教学、管理和学习等方面的要求越来越高,传统的纸质通讯录管理方式已经无法满足教育机构的需求。
因此,开发一个便捷、高效的学生通讯录管理系统成为当今教育信息化的重要课题。
二、需求分析学生通讯录管理系统主要包括以下功能模块:1.学生信息管理:用于录入、修改和删除学生个人信息,包括姓名、学号、性别、联系方式等;2.通讯录管理:实现通讯录的分类、查找、添加和删除功能,方便学生和教师进行联系;3.用户权限管理:设置不同权限等级的用户,如学生、教师和管理员,确保信息安全性;4.数据备份与恢复:对系统中的重要数据进行定期备份,保障数据的安全性;5.界面友好性:系统界面简洁明了,操作便捷,用户体验良好。
三、系统设计1. 系统架构学生通讯录管理系统采用客户端-服务器架构,客户端提供给学生和教师使用,服务器端用于存储核心数据和处理业务逻辑。
2. 数据库设计系统采用关系型数据库,主要包括以下表:•学生表(Student):包含学生的基本信息;•教师表(Teacher):包含教师的基本信息;•通讯录表(Contact):记录学生或教师之间的联系方式;•用户表(User):存储系统用户的账号信息和权限。
3. 功能实现(1)学生信息管理学生信息管理模块提供学生信息的增删改查功能,管理员可以对学生信息进行修改和删除,学生可以查看、修改自己的个人信息。
(2)通讯录管理通讯录管理模块支持对通讯录的分类和搜索功能,学生和教师可以添加、删除通讯录条目,并对通讯录进行管理。
(3)用户权限管理系统设定不同权限等级的用户,管理员有最高权限,可以管理用户账号和角色,确保系统的安全性。
四、系统实现系统采用Java语言进行开发,前端界面使用JavaFX技术,后端采用Spring框架实现业务逻辑,数据库连接采用JDBC等技术。
目录1程序的目的和需求分析 (2)1.1设计项目名称: (2)1.2课程设计目的: (2)1.3任务与需求分析 (2)2 程序的主要功能 (3)2.1输入功能:添加一个学生的基本通讯信息,包括姓名、电话号码、地址、邮编和e-mail。
(3)2.2显示功能:显示所有学生的信息包括姓名、电话号码、地址、邮编和e-mail。
(3)2.3查找功能:根据你键入的学生姓名或电话号码,显示其详细信息。
(3)2.4排序功能:能够对所有学生的信息按姓名进行排序。
(3)2.5删除功能:能够对一个学生的通讯信息进行删除,按姓名或电话号码进行删除。
. 32.6保存功能:对输入的所有信息进行保存。
(3)2.7退出系统 (3)3 程序运行平台 (3)4 总体设计 (3)5 设计思路 (3)6 详细设计与模块分析 (4)6.1 添加模块 (4)6.2 显示模块 (4)6.3 查找模块 (4)6.4删除模块 (5)7 程序代码 (6)8 结论与实验心得 (16)9参考文献 (18)1程序的目的和需求分析1.1设计项目名称:学生通讯录管理系统1.2课程设计目的:通过设计一个《学生通讯录管理系统》,进一步熟悉C++中类的概念、基本知识和技能,类的封装、继承的实现方式。
掌握面向对象程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。
了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。
1.3任务与需求分析本课题主要任务是编译学生通讯录管理系统,可以录入、显示、查找、插入、排序、删除和保存学生通讯信息。
(1)录入通讯信息——建立一个函数,可以添加学生通讯信息,添加完后返回主菜单;(2)显示通讯信息——建立一个函数,可以显示全部学生的通讯信息,实现后可返回主菜单。
(3)查找通讯信息——建立二个函数,可以分别通过学号、姓名查询通讯信息,查询完后返回主菜单。
湖南涉外经济学院课程设计报告课程名称:面向对象程序设计课程设计报告题目:通讯录管理学生姓名:蒋行伍田方成刘倩所在学院:信息科学与工程学院专业班级:计应1301 指导教师:2014 年6月10日课程设计任务书摘要在《面向对象程序设计》课程理论与实验教学的基础上,根据软件工程的方法与流程,在相对集中的实训教学时间内,通过一个功能较完整的小型应用系统,复习与深入掌握面向对象的程序设计思想与技术方法。
同时,作为整个实践教学体系一部分,系统培养学生采用面向对象的方法分析问题与解决问题的能力及团体组织与协作能力。
本课题要设计的是简单的通讯录管理程序。
通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。
程序提供了通信录的基本管理功能。
包括添加、显示、存储、装入、查询和修改等功能。
关键词:类;C++;通讯录;结构体目录一、概述 (1)二、方案设计 (2)1.类设计 (2)2.特殊设计 (2)三、系统整体设计及详细设计 (2)1.整体设计 (2)2.详细设计 (3)四、系统测试 (6)五、结论与心得 (8)六、参考文献 (10)七、程序代码 (11)一、概述编写一个简单的通讯录管理程序。
通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。
程序应提供的以下基本管理功能有:1)添加:即增加一个人的记录到通信录中2)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
3)存储:即将通讯录信息保存在一个文件中。
4)装入:即将文件中的信息读入程序。
5)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。
6)修改:可修改一个人的除姓名外其它信息。
二、方案设计1.类设计程序可用一个单向链表来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个类来实现,作为链表的值指针指向这些类对象,通过链表的遍历可以操作这些数据。
首先,本程序中设计如下的结构体存储通信录信息。
面向对象课程实习报告班级:电子商务092班学号:200936627228姓名:李清强指导老师:罗移祥成绩:时间:2011.1.4—2011.1.101 / 19目录一课程设计的目的 (3)二课程设计的要求 (3)三课程设计报告内容 (3)1 程序设计题目 (3)2 程序实现思路 (3)3 程序模块分析 (3)4 系统详细设计 (4)5 部分程序 (7)四总结 (8)附录1 (8)附录2 (8)2 / 19学生成绩排名管理系统一、课程设计教学目的课程实习作为独立的教学环节,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
其目的在于加深对面向对象基础理论和基本知识的理解,掌握使用具体编程工具,提高解决实际问题的实践能力,进一步巩固面向对象程序设计课程所学到的知识,深刻把握C++语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力。
二、课程设计的要求1、分析课程设计题目的要求2、写出详细设计说明3、编写程序代码,调试程序使其能正确运行4、设计完成的软件要便于操作和使用5、设计完成后提交课程设计报告,课程设计报告内容包括:课程设计目的、设计任务与要求、设计说明书、设计成果和设计心得五个部分,具体要求见设计报告模板。
三、课程设计报告内容1题目内容学生成绩统计管理系统功能要求:1) 具备对成绩的管理功能(添加、删除、排序)2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)3) 具备按学号、姓名、或课程名查询成绩的功能。
2程序实现思路:先创建一个学生元素类,用于存放学生的各种数据。
然后创建另一个类,把数据存储,可便进行各种操作。
3程序模块分析:1)添加数据:3 / 19把用户输入的数据添加到学生类对象数组中,然后再将其入堆,使其有序。
2)删除数据:由用户输入要删除的学生的学号,然后将其从学生类对象数组中删除,使数组中的数据仍然有序。
3)查找数据:由用户输入要查找的学生的学号或姓名,然后调用Studentmanage(学生管理)类中关于查找的函数,将查找结果显示在屏幕上。
************ 课程设计课程面向对象程序设计和数据库开发技术题目个人通迅录系统专业计算机应用技术班级姓名指导教师2011 年 6 月18 日一、课程设计目的课程设计有肋于大家的动手能力的增强,有利于大家对基础知道的掌握,有利于同学们对面向对象和数据库开发的进一步了解和深刻体会。
我所做的系统是为了大家能更好的管理自己的通迅录,妥善管理个人的联系人的信息。
二、系统需求分析(简要描述系统业务和功能,开发环境)。
个人通迅录管理系统是在面向对象和数据库开发两方面的基础上开发出来的,它是为了让大家妥善处理自己的联系人的信息,具有一定的保密功能,有利于自己联系人信息的安全性。
该系统主要由:用户登陆,用户注册,修改密码,查看,查询,进入登陆界面这六个界面组成,含有对通讯录信息进行添加,修改,删除的功能。
还有对用户对象信息的添加和修改功能。
对通迅录可以按不同的条件查询。
三、系统总体设计1、系统功能模块图2、系统功能描述(1)用户登录模块:分为一般用户和管理员两种身份登录,这两种身份登录后进入同一种主界面。
(2)个人管理模块:这个模块是个人对自己的相关信息进行处理,包括登陆的密码的修改;查看自己的通迅录信息,查看到联系人的具体信息。
(3)用户管理模块:包括用户注册,和用户登陆。
(4)通迅录管理模块:这个部分主要是用户对其进行操作,是用户对自己的通迅录进行添加联系人,修改联系人和删除联系人。
(5)一般管理模块:这个模块主要是用户进行查询,用户对其他用户的联系人的查询,按照不同的条件进行查询。
四、数据库设计1、概念设计(ER图)(此部分可以省略)2、逻辑设计用户信息表(用户名,用户密码,用户类型)联系人信息表(用户名,联系人编号,姓名,性别,类别名,移动电话,固定电话,工作单位,生日,)联系人类别表(类别,类别编号,备注)用户信息表—联系人信息表(用户名,用户名)联系人类别表—联系人信息表(类别,类别名)3、表的设计,包括表的结构、约束等图联系人信息表图用户信息表图联系人类别表4、视图设计(包括视图和作用)视图创建如下:SELECT dbo.[User].Type, erName, dbo.ContactsInfo.ContactsName, dbo.ContactsInfo.ContactsId, dbo.ContactsInfo.Sex, dbo.ContactsInfo.WorkUnit, dbo.ContactsInfo.Birthday, dbo.ContactsInfo.ClassName, dbo.ContactsInfo.Mobilephone, dbo.ContactsInfo.F_Telephone FROM dbo.[User] INNER JOIN dbo.ContactsInfo ON dbo.[User].UserName = erName作用:可以选取一个表或多个表中的某些字段来建立视图,这样对于某些操作更方便,更简单5、存储过程设计(包括功能算法描述和存储过程代码)(1)性别存储过程如果性别为女,则显示女的联系人的信息,如果是男,则显示男的联系人的信息。
面向对象程序设计课程设计报告题目:专业:班级:学号:姓名:指导老师:时间:一、课程设计题目及所涉及知识点设计题目是“java通讯录”,所涉及的知识点主要是:1、利用Java图形界面进行对通讯录的整体界面设计,调用java.swing包里面的组件,如按钮(Jbutton)、文本框(JtextFrield)、标签(JLable)、文本域(JTextArea)、面板(JPanel)2、对组件进行布局管理,调用Java、awt包中的GridLayout和BorderLayout类实现按钮、标签、文本框、及文本域的布局。
3、利用Jframe类中的getContentPane().add()方法进行添加组件,形成具体的界面。
4、使用ActionListener类进行事件的监听。
4、利用数据库的管理对通讯录的内容进行操作,调用java.sql包,通过加载JDBC驱动程序、创建数据库的连接、创建Statement、执行Statement、关闭数据库的连接等操作来实现其功能。
二、课程设计思路设计思路:1、要实现有界面的通讯录,首先是对于主界面的创建,里面具体包含标签、文本框、按钮、文本域等组件。
调用Jlabel(String text)方法,然后根据所需要的通讯录信息确定标签上显示内容具体分别为编号、姓名、性别、电话、Email、地址。
对于每个标签的后面跟着一个文本框(JtextFrield())用来写对应标签内容的数据,其次就是对于按钮(JButton(String text))上面显示的内容根据所需要进行的操作进行修改,具体内容为增加、删除、查询、显示所有。
调用JtextArea类来显示进行每个操作后应出现的信息。
2、调用GridLayout、BordLayout和Jpanel类,利用GridLayout(4,4)布局通过面板的add()方法依次对标签、文本框、按钮进行添加,然后利用另一个面板对于文本域的添加,最后用BordLayout布局添加到容器中形成界面。
目录目录 (1)摘要 (2)前言 (3)正文 (4)1.概要设计 (4)1.1信息结构体: (4)1.2系统结构图 (5)2.详细设计 (6)2.1 类的编写 (6)2.1.1stuClass类 (6)2.1.2stuOperate类 (7)3.程序调试与分析 (6)3. 1增加学生信息: (8)3. 2修改学生信息: (10)3.3删除学生信息: (12)3.4查询学生信息: (13)3.5查看学生男女比例: (15)3.6查看近期过生日的学生: (16)参考文献 (21)总结 (22)源程序附件 (23)、通讯录管理系统的主要功能有:添加学生信息、修改学生信息、删除学生信息、查询学生信息、查看学生男女比例、查看近期过生日的学生。
采用面向对象的思想建立两个类,一个类封装学生信息;另一个类封装对数据进行操作的一些函数;从而实现对系统的操作。
做这个系统主要用到了微软公司的:Visual C++6.0开发环境,班级通讯录管理系统是一个专门针对储存学生联系方式以及一些简单个人信息的实用管理系统,它方便了教师对众多学生信息的储存和快速查阅的功能,大大减少了查找过程的时间。
关键词:通讯录,查找,删除,添加,统计。
班级通讯录管理系统主要功能分为六个模块:添加学生信息、修改学生信息、删除学生信息、查询学生信息、查看学生男女比例、查看近期过生日的学生。
添加学生信息:录入学生的基本信息如学号、姓名、性别、出生日期、兴趣爱好、联系方式(电话、QQ、电子邮箱)、地址等。
修改学生信息:可对系统中已录入的信息进行修改,如要修改学号为36的信息,这时需选择修改学生信息菜单,然后输入要修改的学生的学号,即可进行修改。
删除学生信息:可对系统中已存在的信息按学号进行删除。
查询学生信息:每个学生都可以查询通讯录的全部记录,或按条件进行查询查看学生男女比例:系统会根据系统中已录入的学生自动计算出百分比。
查看近期生日的学生:自动列出近7日内要过生日的学生的信息。
目录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();}。