通讯录管理系统_通讯录信息管理系统
通讯录管理系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“通讯录信息管理系统”。
课 程 设 计 任 务 书
题
目
C语言课程设计
系
(部)
专
业
班
级
学生姓名
学
号
06 月
信息科学与电气工程学院
计算机科学与技术
计职141
王雪
140819139 日至
07 月
04 日
共 周 指导教师
院
长
2015 年 6月 23日
一、课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《C++程序设计语言》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。(6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。设计功能
录入联系人信息(包括姓名、电话号码、地址等信息);通讯录管理系统要求实现以下功能:
1、输入每一位联系人记录,将其信息存入文件中。
2、查询所有联系人的信息,并按可选的自定义规则进行排序;
3、记录修改,将修改的记录信息保存于文件中。设计要求
1、设一个通信录由以下几项数据信息构成: 数据项 类型
姓名 字符串
地址 字符串
邮政编码 字符串
电话号码 字符串
试为通信录数据定义类型和定义通信录变量,实现功能:存取、显示、删除记录、查询记录等功能。
2、要求:界面友好,易于操作 总体设计 系统功能模块图:
添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱等后,会提示是否继续添加。
显示:可以以表格形式输出所有通讯录里的记录
删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可以选择用姓名、电话、地址三种方式查询
修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改
保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件
课程设计名称及内容
课程设计名称:单项选择题标准化考试系统
设计内容:设计并实现一个单项选择题标准化考试系统。该系统可以完成试题录入、试题抽取、自动判卷等功能。
任务和要求
功能要求:
(1)用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)(2)试题录入:可随时增加试题到试题库中
(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)(4)答题:用户可实现输入自己的答案
(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
(二)其它要求:
(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)
主要知识点
l 面向对象程序设计方法
l 界面制作,switch的应用。l 类和对象。l 动态数组(链表)类模板。l 文件的读写。
五、其他
程序设计可在Microsoft VC++6.0、Borland C++ Builder环境下进行。
六、参考资料
【1】《C语言程序设计》,谭浩强编,清华大学出版社,2008年 出版 【2】《C语言程序设计》,吴明发编,北京理工大学出版社,2007年出版 【3】《C语言参考手册》邱仲潘 机械工业出版社,2004年出版
【4】《C语言课程设计案例精编》 姜灵之 清华大学出版社 2008年出版
详细设计(1).通讯录: 主要代码
#include #include #include struct student
//结构体 {
};cla inter { private: student st[35];char no[13];char name[20];char addre[100];char tel_no[12];char post_code[7];char e_mail[40];public: void add(char no[13],char name[20],char addre[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为回到主菜单,不计大小写):
“;
} void print(int i){
cout>back;if(back=='R'||back=='r')return 1;else return 0;
};
} cout
inter a;a.format();char select1;cout
计职141
”
※“
通 迅 录
※”
※“
4.按序排列.※” ※“ 5.读入数据.※” ※“ 6.格式化(慎用).※” ※“ ” >select1; switch(select1){ case '1':cout (1)添加:“ cout (2)删除:” (3)修改:“ 请选择:”>select2;switch(select2){ case '1':cout 输入添加的资料:“ char name[20]; char addre[100]; char tel_no[12]; char post_code[7]; char e_mail[40]; cout 输入学号:”>no;cout 输入姓名:“>name;cout 输入地址:”>addre;cout 输入电话号码:“>tel_no;cout 输入邮编:”>post_code; cout 输入E_mail:“>e_mail;a.add(no,name,addre,tel_no,post_code,e_mail); cout 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; char back_add;cin>>back_add;if(back_add=='R'||back_add=='r')goto top;else goto bottom;break;case '2':cout 输入要删除人的姓名:“ 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;else goto bottom;break;case '3':cout 输入需要修改人的姓名:“ char name3[20];cin>>name3;if(a.correct(name3)) } goto top;else goto bottom;break;break;case '2':cout (1)根据姓名查找” cout (2)根据学号查找“ 请选择: ”;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;else goto bottom;break;case '2':char no4[13];cout 输入学号: “;cin>>no4; a.find1(no4); cout 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; } break;char back_f2;cin>>back_f2;if(back_f2=='R'||back_f2=='r')goto top;else goto bottom;break;case '3':a.write();cout 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): “; char back_w;cin>>back_w;if(back_w=='R'||back_w=='r')goto top;else goto bottom;break;case '4':cout (1)按学号排序:” cout (2)按姓名排序:“ 请选择:”;char select4;cin>>select4;switch(select4){ case '1':a.list1(); cout 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): “; char back;cin>>back;if(back=='R'||back=='r')goto top;else goto bottom;break;case '2':a.list2(); cout 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; } break;char back1;cin>>back1;if(back1=='R'||back1=='r')goto top;else goto bottom;break;case '5':a.read();cout 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): “; char back_r;cin>>back_r;if(back_r=='R'||back_r=='r') goto top;else goto 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;else goto bottom;break;bottom:cout ★★★★★★★★★★★★欢迎使用本软件!★★★★★★★★★★★ ” void inter::add(char no[13],char name[20],char addre[100],char tel_no[12],char post_code[7],char e_mail[40]){ int x=1;for(int i=0;i } { } if(!strcmp(st[i].no,“0”)){ } if(x==0)break;strcpy(st[i].addre,addre);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;//删除联系人 void inter::del(char name[20]){ int x=1;for(int i=0;i strcpy(st[i].addre,“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:输入姓名错误!“ int inter::correct(char name[30]){ int x;for(int i=0;i } char select;cout (1)修改姓名:” (2)修改学号:“ (3)修改地址:” (4)修改邮编:“ (5)修改电话号码:” (6)修改E_MAIL:“ 请选择:”;cin>>select;switch(select){ case '1':cout 输入要修改的姓名:“;char name1[30];if(!strcmp(st[i].name,name))x=i; cin>>name1;strcpy(st[x].name,name1);cout 修改成功!” 输入要修改的学号:“; char no1[13];cin>>no1;strcpy(st[i].no,no1);cout 修改成功!” 输入要修改的地址:“; char addre1[100];cin>>addre1;strcpy(st[x].addre,addre1);cout 修改成功!” 输入要修改的邮编:“; char post_code1[7];cin>>post_code1;strcpy(st[x].post_code,post_code1);cout 修改成功!” 输入要修改的电话号码:“;char tel_no1[12]; cin>>tel_no1;strcpy(st[x].tel_no,tel_no1);cout 修改成功!” 输入要修改的E_MAIL:“; char e_mail1[40]; cin>>e_mail1; strcpy(st[x].e_mail,e_mail1); cout 修改成功!” return back(); break;} } //按学号查询联系人 void inter::find1(char no[13]){ int x,y=1,z=1;for(int i=0;i if(!strcmp(st[i].no,no)) { x=i; z=0; } else y=0; if(z==0)break; } if(y==0)cout 输入的学号查找不到!!“ print(x);} //按姓名查询联系人 void inter::find2(char name[20]){ } //读取文件 void inter::read(){ int x,y=1,z=1;for(int i=0;i } if(y==0)cout 输入的姓名查找不到!!” } else y=0;if(z==0)break;x=i;z=0; print(x); char name1[20];cout 输入你要导入的文件名: “;cin>>name1;strcat(name1,”.txt“);ifstream file(name1);char line[120];char no[120];char name[120];char addre[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 if(time==0){ strcpy(no,line);time=1;for(int i=0;i if(no[i]==':'){ i++;for(int j=0;j } } { } st[k].no[j]=no[i];i++;file.getline(line,120,'n');} if(time==1){ } if(time== 2){ strcpy(name,line);time=2; for(int i=0;i } file.getline(line,120,'n');if(name[i]==':'){ } i++;for(int j=0;j } st[k].name[j]=name[i];i++; } strcpy(addre,line);time=3;for(int i=0;i } file.getline(line,120,'n');if(addre[i]==':'){ } i++;for(int j=0;j } st[k].addre[j]=addre[i];i++;if(time==3){ strcpy(tel_no,line);time=4;for(int i=0;i if(tel_no[i]==':'){ i++;for(int j=0;j st[k].tel_no[j]=tel_no[i]; } } } } i++;file.getline(line,120,'n'); if(time==4){ } if(time==5){ strcpy(e_mail,line);strcpy(post_code,line);time=5;for(int i=0;i } file.getline(line,120,'n');if(post_code[i]==':'){ } i++;for(int j=0;j } st[k].post_code[j]=post_code[i];i++; } } } } time=0;for(int i=0;i } file.getline(line,120,'n');if(e_mail[i]==':'){ } i++;for(int j=0;j } st[k].e_mail[j]=e_mail[i];i++; file.close();//写入文件 void inter::write(){ char name[20];cout 输入要保存的文件名 ”;cin>>name;strcat(name,“.txt”);ofstream savefile(name);for(int i=0;i } { } savefile.close();savefile savefile savefile savefile savefile savefile strcpy(no,st[j].no);strcpy(st[j].no,st[j+1].no);for(int i=0;i for(int j=0;j if(strcmp(st[j].no,st[j+1].no)>0){ char no[13]; char name[20]; char addre[100]; char tel_no[12]; char post_code[7]; char e_mail[40]; 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(addre,st[j].addre); } for(int k=0;k } } strcpy(st[j].addre,st[j+1].addre);strcpy(st[j+1].addre,addre); 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); { } if(x==1){ cout } } } //按姓名排序 void inter::list2(){ for(int i=0;i for(int j=0;j if(strcmp(st[j].name,st[j+1].name)>0){ char no[13]; char name[20]; char addre[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(addre,st[j].addre); } for(int k=0;k } } strcpy(st[j].addre,st[j+1].addre);strcpy(st[j+1].addre,addre); 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); } } int x=0;if(strcmp(st[k].no,“0”)){ } if(x==1){ } cout void inter::format(){ } for(int i=0;i } strcpy(st[i].addre,“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”); (2).工作流程图: 1.通讯录主界面 2.添加:添加通讯录记录 3.显示:查询通讯录记录 4.删除:删除通讯录记录 5.修改:修改通讯录记录 小结(收获和建议)这次的程序实设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验,面对许多不懂得知识,通过他人的帮助,以及参考他人的成果,自己动手尝试,修改等,才完成。这个课程设计,花费了我近两个星期的时间,这也是因为书本不熟悉。通过这次设计,使我对《C语言》这门课程有了更深一步的了解。它不仅是计算机程序设计的重要理论技术基础,也在我们电子与信息专业的学习中占据着十分重要的地位。同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。利用计算机来编写程序,也让我感受到了编程的乐趣,极大的激发了我的兴趣。