C++通讯录管理系统课程设计报告.docx
- 文档编号:6960626
- 上传时间:2023-01-13
- 格式:DOCX
- 页数:55
- 大小:467.83KB
C++通讯录管理系统课程设计报告.docx
《C++通讯录管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《C++通讯录管理系统课程设计报告.docx(55页珍藏版)》请在冰豆网上搜索。
C++通讯录管理系统课程设计报告
(一)设计目的…………………………………1
(二)设计内容…………………………………3
(三)总体设计…………………………………3
(四)详细设计…………………………………10
(五)调试与测试………………………………22
(六)设计总结…………………………………23
(七)源码………………………………………47
(八)参考文献…………………………………48
(一).设计目的
●进一步学习和巩固本课程所讲解的主要内容,加深对面向对象程序设计思想的理解。
●掌握C++程序设计方法以及上机调试技巧,为今后学习其他专业课程打好基础。
●提高和加强计算机应用及软件开发能力,培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异的发展形势。
(二).设计要求
(1).学生信息的输入
包含功能:
对输入对学号是否重复进行判断(学号唯一);
对输入数据对有效性进行判断。
其中学号、姓名和联系电话为必填字段。
(2).学生信息的显示
包含功能:
以记录对方式显示文件中的对所有内容,每行对应一条记录。
(3).学生信息对查询
包含功能:
实现按“学号、姓名、性别、寝室号”等查询,把所有满足该条件对记录显示;若非法查询则或未查到则给予提示。
(4).学生信息的统计
包含功能:
统计学生对“男女人数、女生人数、总人数”。
(5).学生信息的删除
包含功能:
删除指定学号对学生信息;若无此记录,给予提示。
(6).学生信息的修改
包含功能:
根据接收到的待修改对学生的学号。
进行对相应信息的修改。
(7).清理屏幕
包含功能:
把当前屏幕上显示对内容清空。
可以采用调用system(“cls”)实现。
(8).退出
包含功能:
退出系统,只有当前用户选择此项功能时才能退出系统,其它情况循环。
具体要求
●熟悉VC++6.0编译环境,熟练使用变异调试工具。
●学习C++输入输出流对象的使用。
●通过系统分析和实现,掌握简单软件开发对一般过程。
●以学生独立思考、解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,撰写课程设计报告。
(三).总体设计
<1>.系统设计总模块(所包含的程序)
#include
#include
#include
usingnamespacestd;
1.包含一个学生类类
classStudent
{
};
2.以下是数据成员:
intnum;
charname[20];
intage;
charsex[10];
intbedchamber_num;//宿舍号
charhome_addr[20];//家庭住址
inttelephone;//联系电话
intscore;//高考成绩
3.以下是公有函数:
voidwelcome()//选择界面;
voidsetin();//学生信息的录入
voidrank();//学生信息排序
voidsetin();//学生信息的录入
voidshow();//学生信息的显示
voidseek();//查找
voidstatistics();//统计学生信息
voiddeletes();//删除
voidrecompose();//修改
voidquit();//退出
4.以下是主函数
intmain()
{
Studentstu[100];
welcome();
intselect;
switch(select)
{
case1:
case2:
case3:
case4:
case5:
case6:
case7:
case0:
}
return0;
}
<2>.系统设计总模块(程序之间的关系)图解
1.
2.
3.
4.
(四)详细设计
1.、接口函数
voidwelcome()//选择界面;
voidsetin();//学生信息的录入
voidrank();//学生信息排序
voidsetin();//学生信息的录入
voidshow();//学生信息的显示
voidseek();//查找
voidstatistics();//统计学生信息
voiddeletes();//删除
voidrecompose();//修改
voidquit();//退出
【1】主函数
If
(1)else(退出)If
(1)
If
(1)else(退出)If
(2)
If
(1)else(退出)If(3)
If
(1)else(退出)If(4)
If
(1)else(退出)If(5)
If
(1)else(退出)If(6)
If
(1)else(退出)If(7)
If
(1)else(退出)If(0)
【2】信息显示
If
(1)If
(1)
If
(2)
If
(1)If
(2)
If
(2)
If
(1)if(3)
If
(2)
【3】信息的查找
If
(1)If
(1)
If
(2)
If
(1)If
(2)
If
(2)
If
(1)if(3)
If
(2)
If
(1)If(4)
If
(2)
(五)调试
1.主函数的实现
intmain(){return0;}
首先引用welcome()函数进入信息选择主页面:
然后有八项选择,通过switch(){case:
}语句来供用户选择,
如果用户选择1;
会进入如下界面:
用户根据提示进行输入,在程序中
A.对性别输入的合法性进行判断;
if((strcmp(stu[i].sex,"f")!
=0)&&strcmp(stu[i].sex,"m")!
=0)
{
cout<<"你输入的性别不合法!
"< break; } B.对录入的姓名的重复性进行判断 while((i>0)&&(j! =-1)) { if(stu[i].name==stu[k].name) { cout<<"您输入的姓名和第"< "< } else k--; } C.对录入的学号的重复性进行判断 while((i>0)&&(j! =-1)) { if(stu[i].num==stu[j].num) { cout<<"您输入的学号和已经录入的学号重复,请您再次录入: "< break; } else j--; } 如果以上几项都合法,会把输入的信息保存在student1.txt文件里,然后会出现以下选项 如果用户选择1 会有以下界面重复录入; 如果用户用户选择0会退到以下界面 用户继续选择1进入 选择2会退出! 操作结束! 如果用户选择2 会进入如下界面 该函数中首先把student1.txt中的的信息调出放在数组中,对数组中的信息进行排序.然后把排好序的信息分别存在student2.txt,student3.txt 在排序函数中用到了 For(;;) {if() else if(判断是否退出) } 排序结束后会出现如下选择 如果用户选择1会继续排序,如果选择2会退到主程序! 如果用户选择3 会进入如下界面 如果用户选择1 如果用户选择2, 如果用户选择3 在显示排序体中 Switch() {case1, case2, case3 if()判断是否退出排序 } if()判断是否退出函数 如果用户选择4 会进入如下界面 用户可以选择查找类型 1学号排序,如果用户输入一个不存在的信息会出现 如果用户输入存在的学号 其他选择程序与其类似; 在程序中for(;;) { If() Ifelse() Ifelse() else if()判断是否退出查找循环体 } 如果用户选择5 该函数仅是统计男女以及总人数! while(! feof(p)) { fscanf(p,"%d%s%d%s",&std1[i].num,std1[i].name,&std1[i].age,std1[i].sex); fscanf(p,"%d%s%d%d",&std1[i].bedchamber_num,std1[i].home_addr,&std1[i].telephone,&std1[i].score); if(strcmp("m",std1[i].sex)==0) { boy+=1; bg+=1; } if(strcmp("f",std1[i].sex)==0) { girl+=1; bg+=1; } i++; } fclose(p); 从student1.txt文件中调出信息,进行比对统计 如果用户选择6 会出现 如果输入不存在学号 如果存在 接着选择1 程序中 if((p=fopen("students1.txt","r"))==NULL)//以读方式打开文本文件 { cout<<"Cannotopentxtfile."< exit(0); } i=0; while(! feof(p)) { fscanf(p,"%d%s%d%s",&std1[i].num,std1[i].name,&std1[i].age,std1[i].sex); fscanf(p,"%d%s%d%d",&std1[i].bedchamber_num,std1[i].home_addr,&std1[i].telephone,&d1[i].score); count3=i+1; i++; } 先把student1.txt中的信息存在数组中,然后查找需要删除的信息进行删除,最后清空student1.txt再把删除后的信息存进student1.txt 删除后的信息查看 while(! feof(p2)) { fscanf(p,"%d%s%d%s",&stu3[i].num,stu3[i].name,&stu3[i].age,stu3[i].sex); fscanf(p,"%d%s%d%d",&stu3[i].bedchamber_num,stu3[i].home_addr,&stu3[i].telephone,&stu3[i].score); cout< cout< cout< i++; } fclose(p2); 如果用户选择7 会出现 接下来 然后 修改结束 程序中 和删除程序一样先把student.txt中的信息调出然后查找修改 修改后把把student.txt清空,再把修改后的信息保存到student.txt中最后最后显示在屏幕上! 如果用户选择0 用户选择0会退出 1会继续进入主页面! 程序中在 if(select==0) { system("cls"); stu[100].quit(); cin>>s; if(s==1) continue; else break; } 进行退出判断 (六)总结 课程设计小结。 三周的课程设计已经结束,其实这三周的学习实践给我最多的印象不是苦与累,而是程序设计时所遇到的困难以及解决的过程。 平时总以为书本上的知识学好就万事ok了,其实经过三周的实践我深深体会到自己知识的不足,好多的知识其实不是知道就行了,关键是要会用,懂得怎样用。 其次,我感觉平时仅限于书本上的东西使自己的知识面太窄,而且没有基本量的练习,平时应该多找点东西练练,这样才会发现自己在编程的那一方面具有缺陷,及时的总结改进! 另外,我深刻体会到程序设计(特别是比较大的工程)不是一个人能够完成的,最需要的是团队合作,团队中的每一个人都如一条钢索上的一个铁环,每个人都是团队的核心,任何一个环节出现了问题都会导致整个工程的失败,所以说每个人都必须要有团队合作的意识,因为只有团队的成功才是成功! (七)源码 #include #include #include usingnamespacestd; classStudent { private: intnum; charname[20]; intage; charsex[10]; intbedchamber_num;//宿舍号 charhome_addr[20];//家庭住址 inttelephone;//联系电话 intscore;//高考成绩 public: voidsetin();//学生信息的录入 voidrank();//学生信息排序 voidshow();//学生信息的显示 voidseek();//查找 voidstatistics();//统计学生信息 voiddeletes();//删除 voidrecompose();//修改 voidquit();//退出 }; voidwelcome() { cout<<"<中原工学院信息商务学院软件101王柏涛(201001014122)>"< cout<<"*******************************************************"< cout<<"******************学生信息管理系统*********************"< cout<<"*******************************************************"< cout<<"*******************************************************"< cout<<"*<请选择服务*>"< cout<<"*<1-信息录入*>"< cout<<"*<2-信息排序*>"< cout<<"*<3-信息显示*>"< cout<<"*<4-信息查找*>"< cout<<"*<5-信息统计*>"< cout<<"*<6-信息删除*>"< cout<<"*<7-信息修改*>"< cout<<"*<0-退出*>"< cout<<"*******************************************************"< cout<<"*******************************************************"< cout<<"*******************************************************"< } voidStudent: : setin()//1-信息录入 { Studentstu[100]; for(inti=0;i<100;i++) { cout<<"请输入学生的信息: "< cout<<"学号,姓名,年龄,性别,宿舍号,家庭住址,联系电话,高考成绩"< cin>>stu[i].num>>stu[i].name>>stu[i].age>>stu[i].sex>>stu[i].bedchamber_num; cin>>stu[i].home_addr>>stu[i].telephone>>stu[i].score; intj=i-1; while((i>0)&&(j! =-1))//对录入的学号的重复性进行判断 { if(stu[i].num==stu[j].num) { cout<<"您输入的学号和已经录入的学号重复,请您再次录入: "< break; } else j--; } if(stu[i].num==stu[j].num) { i=i-1; continue; } if((strcmp(stu[i].sex,"f")! =0)&&strcmp(stu[i].sex,"m")! =0) { cout<<"你输入的性别不合法! "< break; } intk=i-1; while((i>0)&&(j! =-1))//对录入的姓名的重复性进行判断 { if(stu[i].name==stu[k].name) { cout<<"您输入的姓名和第"< "< } else k--; } FILE*fp1; if((fp1=fopen("students1.txt","a+"))==NULL)//以写方式打开文本文件 { cout<<"Cannotopentextfile."< exit(0); } fprintf(fp1,"%d%s%d%s",stu[i].num,stu[i].name,stu[i].age,stu[i].sex); fprintf(fp1,"%d%s%d%d",stu[i].bedchamber_num,stu[i].home_addr,stu[i].telephone,stu[i].score); fclose(fp1); intselect; cout<<"请选择你是否要继续录入: "< cout<<"*******************************************"< cout<<"请选择是否继续"< cout<<"1-继续"< cout<<"0-退出"< cout<<"*******************************************"< cout<<"*******************************************"< cin>>select; if(select==1) { system("cls"); continue; } else break; } } voidrank1()//信息排序中的一个选择函数 { cout<<"*******************************************"< cout<<"请选择排序方式"< cout<<"1-学号"< cout<<"2-高考成绩"< cout<<"*******************************************"< cout<<"*******************************************"< cout<<"请选择你要的排序方式: "< } voidStudent: : rank()//2-信息排序 { Studentstu1[100]; Studentstu2[100]; Studentstu3[100]; FILE*fp1; FILE*fp2; FILE*fp3; FILE*fp4; FILE*fp5; FILE*fp6; intselect; for(;;) { rank1(); cin>>select; if(select==1)//学号排序 { intcount1=0;//记数 inti=0; if((fp1=fopen("students1.txt","r"))==NULL)//以读方式打开文本文件 { cout<<"Cannotopentextfile."< exit(0); } while(! feof(fp1)) { fscanf(fp1,"%d%s%d%s",&stu1[i].num,stu1[i].name,&stu1[i].age,stu1[i].sex); fscanf(fp1,"%d%s%d%d",&stu1[i].bedchamber_num,stu1[i].home_addr,&stu1[i].telephone,&stu1[i].score); count1=i+1; i++; }; fclose(fp1); inta; charb[10]; intc; chard[10]; inte; charf[10]; intl; intm; for(i=0;i { a=stu1[i].num; strcpy(b,stu1[i].name); c=stu1[i].age; strcpy(d,stu1[i].sex);; e=stu1[i].bedchamber_num; strcpy(f,stu1[i].home_addr); l=stu1[i].telephone; m=stu1[i].score;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 通讯录 管理 系统 课程设计 报告