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

合集下载

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

面向对象程序设计课程设计--个人通讯录管理
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));

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

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

目录1.设计题目 (1)2.设计目的和内容 (1)2.1设计目的 (1)2.2设计内容 (1)3.基本功能描述 (1)4.设计思路 (1)5.软件设计 (2)5.1设计步骤 (2)5.2界面设计 (3)5.3关键功能的实现 (3)5.3.1添加记录 (3)5.3.2删除记录 (4)5.3.3选中记录 (4)5.3.4确认修改 (4)5.3.5保存记录 (4)5.3.6退出 (4)6.结论与心得体会 (4)7.参考文献 (4)8.附录 (5)8.1调试报告及测试结果 (5)8.2关键源代码 (10)8.2.1 Student类 (10)8.2.2全局 (10)8.2.3List Control初始化 (10)8.2.4添加记录 (11)8.2.5删除记录 (11)8.2.6选中记录 (12)8.2.7修改记录 (12)8.2.8保存记录 (13)8.2.9退出程序 (13)1.设计题目同学通讯录管理程序2.设计目的和内容2.1设计目的1)学习Visual C++的MFC开发程序的步骤。

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

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

2.2设计内容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。

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语言课程设计通讯录管理系统课程设计报告

c语言课程设计通讯录管理系统课程设计报告一、教学目标本课程旨在通过学习C语言通讯录管理系统的设计与实现,让学生掌握C语言编程的基本技能,培养其软件开发的基本思路与方法。

具体目标如下:1.知识目标:–理解C语言的基本数据类型、运算符、控制结构。

–学习C语言函数的定义与调用。

–掌握结构体、文件操作等高级C语言特性。

2.技能目标:–能够运用C语言实现简单的数据结构,如链表、数组。

–培养学生使用C语言进行程序设计的能力,能够独立完成程序编写、调试与优化。

–学会使用C语言实现文件操作,包括文件的读取与写入。

3.情感态度价值观目标:–培养学生对计算机科学的兴趣,增强其自主学习的动力。

–通过项目实践,培养学生的团队协作能力和解决问题的能力。

–引导学生理解技术对生活的影响,培养其对技术发展的责任感。

二、教学内容教学内容选取C语言编程的核心知识点,结合通讯录管理系统的实例进行讲解。

具体内容包括:1.C语言基础:数据类型、变量、运算符、控制结构。

2.函数:函数定义、调用、参数传递、返回值。

3.数据结构:数组、链表、栈和队列。

4.文件操作:文件读写、文件指针。

5.通讯录管理系统实现:结构体定义、系统功能实现、项目管理。

三、教学方法结合C语言特点和通讯录管理系统实例,采用以下教学方法:1.讲授法:系统讲解C语言基础知识和通讯录管理系统的设计理念。

2.案例分析法:通过分析典型代码案例,让学生理解程序设计逻辑。

3.实验法:学生在实验室进行编程实践,巩固理论知识。

4.讨论法:分组讨论问题,培养学生的团队协作和沟通能力。

四、教学资源1.教材:《C程序设计语言》(K&R)、《C Primer Plus》。

2.参考书:《C语言编程思想》、《C语言实践》。

3.多媒体资料:教学PPT、在线编程教程、视频讲解。

4.实验设备:计算机、网络环境、编程环境(如Code::Blocks、VisualStudio)。

五、教学评估本课程的教学评估将综合考虑学生的平时表现、作业、考试等方面,以全面、客观、公正地评价学生的学习成果。

java课程教学设计(通讯录管理方案系统)

java课程教学设计(通讯录管理方案系统)

合肥学院计算机科学与技术系课程设计报告2013~2014 学年第二学期课程面向对象课程设计课程设计名称通讯录程序学生姓名XXX学号专业班级XXXXX指导教师 XXX20 年月目录一、设计题目 (1)二、设计要求 (1)三、总体设计 (1)3.1 系统功能框架 (1)3.2 系统功能说明 (3)四、详细设计 (3)1 .数据结构设计 (3)2 .系统模块设计 (10)五、运行结果 (13)一.设计题目随着社会的进步与发展,通讯越来越密切。

希望能通过对java 课程设计的学习和掌握来编写一个通讯录管理系统。

二.设计要求(1)只能使用Java 语言,采用面向对象方法进行设计,要求源程序要有适当的注释,使程序容易阅读。

2)程序必须与数据库进行通信3)系统必须是图形用户界面的形式并连接数据库三. 总体设计3.1系统总体功能框架图3.2系统功能说明1)具有新用户注册功能。

2)具有注册用户登录功能。

3)具有数据的录入功能。

4)具有数据查询功能,可以实现查询全部信息和按条件执行查询5)具有按条件删除数据功能。

6)具有统计功能4. 详细设计4.1 数据结构设计( java 程序设计)// 登录系统package com.ibm.etp.addressbook.action;import java.util.HashMap;import java.util.List;import er;import com.ibm.etp.addressbook.service.LoginService;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {private static final long serialVersionUID = 1L;public String username;public String password;private String message;@Overridepublic String execute() throws Exception {HashMap<Object, Object> result = new HashMap<Object, Object>();List<User> list = null;System.out.println(username);if(username == null || username.trim().length() == 0){ result.put("success", false); result.put("msg","ername.empty");} else if(password == null || password.trim().length() == 0){ result.put("success", false);result.put("msg", "login.password.empty");} else {LoginService ls = new LoginService();list = ls.checkLogin(username);}if(list == null) {result.put("success", false); result.put("msg","er.not.exist");} else if(list.get(0).getPassword().equals(password)){ result.put("success", true); result.put("msg", "login.success");} else {result.put("success", false); result.put("msg","error.password.wrong");}if((Boolean) result.get("success")) {message = (String) result.get("msg"); return "success";} else {message = (String) result.get("msg"); return "error";}}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public void setUsername(String username) {ername = username;}public void setPassword(String password) {this.password = password;}public String getUsername() {return username;}public String getPassword() {return password;}}// 增加记录package com.ibm.etp.addressbook.action;import java.util.HashMap;import java.util.List;import er;import com.ibm.etp.addressbook.service.LoginService;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport { private static final long serialVersionUID = 1L; public String username;public String password;private String message;public String execute() throws Exception {HashMap<Object, Object> result = new HashMap<Object, Object>();List<User> list = null;System.out.println(username);if(username == null || username.trim().length() == 0){ result.put("success", false);result.put("msg", "ername.empty");} else if(password == null || password.trim().length() == 0){ result.put("success", false);result.put("msg", "login.password.empty");} else {LoginService ls = new LoginService(); list = ls.checkLogin(username);}if(list == null) { result.put("success", false); result.put("msg", "er.not.exist");} else if(list.get(0).getPassword().equals(password)){ result.put("success", true); result.put("msg", "login.success");} else { result.put("success", false); result.put("msg","error.password.wrong");}if((Boolean) result.get("success")) { message = (String)result.get("msg"); return "success";} else {message = (String) result.get("msg"); return "error";}}public String getMessage() {return message;}public void setMessage(Stringmessage) { this.message = message;public void setUsername(String username) { ername = username;}public void setPassword(String password) { this.password = password;}public String getUsername() { return username;}public String getPassword() { return password;}}// 删除记录package com.ibm.etp.addressbook.action;import java.util.ArrayList;import com.ibm.etp.addressbook.pojo.Record; importcom.ibm.etp.addressbook.service.DeleService;import com.opensymphony.xwork2.ActionSupport; public class DeleAction extends ActionSupport {private int id[];public String message; private boolean success=true;public boolean isSuccess() { return success;}private ArrayList<Record> list= new ArrayList<Record>(); publicArrayList<Record> getList() {return list;}public int getId(int i){ return id[i];}public int[] getId() { return id;}public void setId(int[] id) { this.id = id;public String getMessage() {return message;}public void setMessage(Stringmessage) { this.message = message;}public String execute() throws Exception { DeleService ds=new DeleService(); list=ds.removeRecord(this);try {success=true;return SUCCESS;}catch (Exception e) { success=false; return ERROR;}}}// 修改记录package com.ibm.etp.addressbook.action;import com.ibm.etp.addressbook.service.UpdateService;import com.opensymphony.xwork2.ActionSupport;public class UpdateAction extends ActionSupport { private int id;private String name;private String phone;private String email;private String birthday;private String sex;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;} public String getPhone() { return phone;}public void setPhone(Stringphone) { this.phone = phone;}public StringgetEmail() { returnemail;}public void setEmail(Stringemail) { this.email = email;} public String getBirthday() { return birthday;}public void setBirthday(Stringbirthday) { this.birthday =birthday;} public String getSex() { return sex;}public void setSex(Stringsex) { this.sex = sex;}public String execute() throwsException { UpdateService us=newUpdateService();if(us.setRecord(this)!=null) returnSUCCESS;else{ return ERROR;}}}// 查找记录行package com.ibm.etp.addressbook.action; import java.sql.SQLException;import java.util.List;import com.ibm.etp.addressbook.pojo.Record;import com.ibm.etp.addressbook.service.FindService; importcom.opensymphony.xwork2.ActionSupport; public class FindAction extends ActionSupport { private String field;private String input;private int size;private String sort;private List<Record> list ;private boolean success=true;public boolean isSuccess() { return success;}public List<Record> getList() {return list;}public void setList(List<Record> list) {this.list = list;}public String getField() {return field;}public void setField(Stringfield) { this.field = field;}public String getInput() {return input;}public void setInput(Stringinput) { this.input = input;}public int getSize() {return size;}public void setSize(intsize) { this.size = size;}public String getSort() {return sort;public void setSort(String sort) {this.sort = sort;}public String execute() throws Exception {FindAction fb = new FindAction(); fb.setField(field);fb.setInput(input);}fb.setSize(size);fb.setSort(sort);FindService fs = new FindService(); try { list = fs.find(fb);success=true; return SUCCESS;} catch (SQLException e) { e.printStackTrace(); success=false; return ERROR;4.2系统模块设计图1-1 登陆功能展示图LoginAction 类,封装的信息由密码和账户名,以及登录失败时抛出的异常方法。

课程设计---面向对象的程序设计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)//将链表中数据//写入指定的二进制文件};三、特色对于本程序来说,最有特色的地方就是使用了类,还有链表来共同完成对于通讯录信息的记录还有各方面的操作。

个人通讯录系统课程设计-面向对象程序设计和数据库开发技术

个人通讯录系统课程设计-面向对象程序设计和数据库开发技术

************ 课程设计课程面向对象程序设计和数据库开发技术题目个人通迅录系统专业计算机应用技术班级姓名指导教师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)性别存储过程如果性别为女,则显示女的联系人的信息,如果是男,则显示男的联系人的信息。

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

目录1.设计题目 (1)2.设计目的和内容 (1)2.1设计目的 (1)2.2设计内容 (1)3.基本功能描述 (1)4.设计思路 (1)5.软件设计 (2)5.1设计步骤 (2)5.2界面设计 (3)5.3关键功能的实现 (3)5.3.1添加记录 (3)5.3.2删除记录 (4)5.3.3选中记录 (4)5.3.4确认修改 (4)5.3.5保存记录 (4)5.3.6退出 (4)6.结论与心得体会 (4)7.参考文献 (4)8.附录 (5)8.1调试报告及测试结果 (5)8.2关键源代码 (10)8.2.1 Student类 (10)8.2.2全局 (10)8.2.3List Control初始化 (10)8.2.4添加记录 (11)8.2.5删除记录 (11)8.2.6选中记录 (12)8.2.7修改记录 (12)8.2.8保存记录 (13)8.2.9退出程序 (13)1.设计题目同学通讯录管理程序2.设计目的和内容2.1设计目的1)学习Visual C++的MFC开发程序的步骤。

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

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

2.2设计内容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.软件设计5.1设计步骤1) 建立程序,添加变量和函数打开Microsoft Visual Studio 2010,新建一个基于对话框的MFC应用程序。

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

在各控件属性中修改Caption,见表 1。

选择项目→类向导,添加成员变量(表 2)和成员函数(表 3)。

表 1 Caption表 2成员变量表 3成员函数2) 添加一个Student类,在Ctry2Dlg.cpp中定义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()退出程序。

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

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

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

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

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

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

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

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

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

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

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

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

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

7.参考文献孙鑫.(2006).VC++深入详解北京:电子工业出版社Visual.C++6.0技术内幕北京:希望电子出版社侯俊杰.(1998).深入浅出MFC8.附录8.1调试报告及测试结果图 2运行初始界面图 3键入信息图 4点击“添加记录”图 5再添加一个学生信息图 6点击第一行后点击“选择该列”取出信息到Edit Control图 7修改信息图 8点击“确认修改”图 9点击emily行后点击“删除记录”图 10点击yukaiyuan行后点击“选择该列”图 11点击“确认保存”图 12 D盘自动生产student.txt8.2关键源代码8.2.1 Student类class Student{public:Student(void);~Student(void);CString name;CString num;CString ins;CString email;CString call;void Delete();};8.2.2全局Student emily[15];int i=0;8.2.3List Control初始化BOOL Ctry2Dlg::OnInitDialog(){……// TODO: 在此添加控件通知处理程序代码DWORD dwStyle = m_list.GetExtendedStyle();m_list.SetExtendedStyle(dwStyle|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_list.InsertColumn(0,_T( "姓名"));m_list.InsertColumn(1, _T("学号"));m_list.InsertColumn(2,_T( "院系"));m_list.InsertColumn(3,_T( "邮箱"));m_list.InsertColumn(4,_T( "电话"));m_list.SetColumnWidth(0, 80);m_list.SetColumnWidth(1, 80);m_list.SetColumnWidth(2, 120);m_list.SetColumnWidth(3, 120);m_list.SetColumnWidth(4, 120);return TRUE;}8.2.4添加记录void Ctry2Dlg::OnClickedButton1add(){// TODO: 在此添加控件通知处理程序代码?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 = m_list.InsertItem(0,emily[i].name);m_list.SetItemText(nCurItem, 1,emily[i].num);m_list.SetItemText(nCurItem, 2, emily[i].ins);m_list.SetItemText(nCurItem, 3,emily[i].email);m_list.SetItemText(nCurItem, 4, emily[i].call);m_name="";m_num="";m_ins="";m_email="";m_call="";UpdateData(FALSE);i=i+1;}8.2.5删除记录void Ctry2Dlg::OnClickedButton2delete(){// TODO:i=m_list.GetSelectionMark ();m_list.DeleteItem(i);emily[i].Delete();}void Ctry2Dlg::OnClickedButton3modify(){// TODO: 在此添加控件通知处理程序代码i=m_list.GetSelectionMark (); //获取点击的那一行emily[i].name= m_list.GetItemText(i,0);//获得已被选择的行 SetDlgItemText(IDC_EDIT1,emily[i].name);emily[i].num=m_list.GetItemText(i,1);SetDlgItemText(IDC_EDIT2,emily[i].num);emily[i].ins=m_list.GetItemText(i,2);SetDlgItemText(IDC_EDIT3,emily[i].ins);emily[i].email=m_list.GetItemText(i,3);SetDlgItemText(IDC_EDIT4,emily[i].email);emily[i].call=m_list.GetItemText(i,4);SetDlgItemText(IDC_EDIT5,emily[i].call);}8.2.7修改记录void Ctry2Dlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码?i=m_list.GetSelectionMark ();m_list.DeleteItem(i);emily[i].Delete();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 = m_list.InsertItem(i,emily[i].name);m_list.SetItemText(nCurItem, 1,emily[i].num);m_list.SetItemText(nCurItem, 2, emily[i].ins);m_list.SetItemText(nCurItem, 3,emily[i].email);m_list.SetItemText(nCurItem, 4, emily[i].call);m_name="";m_num="";m_ins="";m_email="";m_call="";UpdateData(FALSE);}// TODO: 在此添加控件通知处理程序代码CFile txt;int j;txt.Open( _T("d://student.txt") ,CFile::modeCreate|CFile::modeWrite);for(int i=0;i<15;i++){j=emily[i].name.GetLength();txt.Write(emily[i].name,2*j);j=emily[i].num.GetLength();txt.Write(emily[i].num,2*j);j=emily[i].ins.GetLength();txt.Write(emily[i].ins,2*j);j=emily[i].email.GetLength();txt.Write(emily[i].email,2*j);j=emily[i].call.GetLength();txt.Write(emily[i].call,2*j);}txt.Close();}}8.2.9退出程序void Ctry2Dlg::OnBnClickedCancel(){// TODO: 在此添加控件通知处理程序代码CDialogEx::OnCancel();}。

相关文档
最新文档