C++课程设计 通讯录.docx
- 文档编号:25078952
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:31
- 大小:534.40KB
C++课程设计 通讯录.docx
《C++课程设计 通讯录.docx》由会员分享,可在线阅读,更多相关《C++课程设计 通讯录.docx(31页珍藏版)》请在冰豆网上搜索。
C++课程设计通讯录
淮海工学院计算机工程学院
课程设计报告
设计名称:
学生成绩系统
姓名:
学号:
专业班级:
系(院):
设计时间:
设计地点:
计算机工程学院机房、教室、学生宿舍、图书馆
成绩:
指导教师评语:
签名:
年月日
1.课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《C++程序设计》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
(1)巩固和加深学生对C++课程的基本知识的理解和掌握;
(2)掌握C++编程和程序调试的基本技能;(3)利用C++进行简单软件设计的基本思路和方法;(4)提高运用C++解决实际问题的能力;(5)掌握书写程序设计说明文档的能力。
本次课程设计利用《C++程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,使学生能够独立完成所布置的任务。
2.课程设计任务与要求:
要求:
1)设计题目、设计要求以及系统功能需求分析;
2)总体设计:
包括模块说明、模块结构图和系统流程图;
3)详细设计:
包括主要功能模块的算法设计思路以及对应的工作流程图;
4)源程序代码及设计成果:
完整源程序清单和设计成果;
5)总结:
调试分析过程描述:
包括测试数据、测试输出结果以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等)包括课程设计过程中的学习体会与收获、对C++和本次课程设计的认识等内容.;
任务:
设计一个同学通讯录实现功能:
1) 通讯录编辑(添加、删除)。
2) 按不同的项进行查找。
3) 对已存在的通讯录按不同的项排序。
4) 将通讯录写入文件
5) 从文件读入通讯录
备注:
通讯录至少应该有以下数据项:
姓名,地址,电话,邮编,E-mail。
3.课程设计说明书
概要设计
一、模块说明
二、模块结构图
三、系统流程图
详细设计
各功能模块设计思路及流程图:
主要函数:
voidfind_num():
按照学号查找联系人的函数,在主界面按1进入查询功能,输入1进入按学号查找功能,输入学号查询,如果没有此学号显示“输入的学号查不到”
voidfind_name():
按照姓名查找联系人的函数,主界面按1进入查询功能,输入2进入按姓名查找功能,输入姓名查询,如果没有此姓名显示“输入的姓名查找不到”
voidfind_tel():
按照号码查找联系人的函数主界面按1进入查询功能,输入3进入按号码查找功能,输入号码查询,如果没有此号码显示“输入的号码查找不到”
voidadd():
用来添加联系人的函数,在主界面输入2后选择编辑,再输入1选择添加联系人功能进入,输入要添加的联系人的个数,再照显示输入各个信息。
voiddel():
用来删除联系人的函数,主界面输入2后选择编辑,再输入2选择删除选项进入。
voidlist_num():
按照学号排序的函数,按3选择排序功能,在输入1进入按学号排序选项,将文件里已有联系人进行排序。
voidlist_name():
按姓名排序的函数,按3选择排序功能,在输入2进入按姓名排序选项,将文件里已有联系人进行排序。
4.课程设计成果
此程序可实现功能:
按学号,姓名,号码查询联系人;添加,删除联系人;按学号,姓名排序,将联系信息写入文件。
源代码:
#include
#include
#include
#include
classstudent
{
public:
charnum[20];
charname[20];
charaddress[40];
chartel[12];
charpost[6];
chare_mail[40];
};
classfunction:
publicstudent
{
public:
voidadd();
voiddel();
voidfind_num();
voidfind_name();
voidfind_tel();
voidlist_num();
voidlist_name();
voidformat();
voidshow();
voidimport();
};
voidfunction:
:
add()
{
inti;
cout<<"输入添加个数:
";
cin>>i;
studentstud1[40]={0};
ofstreamoutfile("学生通讯录.txt",ios:
:
app|ios:
:
binary);
if(!
outfile)
{
cerr<<"错误!
";
abort();
}
for(intj=0;j
{
cout<<"学号:
";
cin>>stud1[j].num;
cout<<"姓名:
";
cin>>stud1[j].name;
cout<<"地址:
";
cin>>stud1[j].address;
cout<<"电话号码:
";
cin>>stud1[j].tel;
cout<<"邮编:
";
cin>>stud1[j].post;
cout<<"电子邮件:
";
cin>>stud1[j].e_mail;
outfile.write((char*)&stud1[j],sizeof(stud1[j]));
}
outfile.close();
}
voidfunction:
:
del()
{
studentstud2[40]={0};
charname[20];
cout<<"请输入要删除的学生的姓名:
";
cin>>name;
ifstreaminfile("学生通讯录.txt",ios:
:
binary);
if(!
infile)
{
cerr<<"打开错误,程序将退出!
";
abort();
}
intk=0;
while
(1)
{
infile.read((char*)&stud2[k],sizeof(stud2[k]));
if(infile.eof())break;
k++;
}
infile.close();
remove("学生通讯录.txt");
ofstreamoutfile("学生通讯录.txt",ios:
:
binary);
if(!
outfile)
{
cerr<<"打开错误,程序将退出!
";
abort();
}
inti=0;
while
(1)
{if(i>k-1)break;
if(!
strcmp(stud2[i].name,name))
i=i+1;
if(i>k-1)break;
outfile.write((char*)&stud2[i],sizeof(stud2[i]));
i++;
}
outfile.close();
if(k-1==0)
remove("学生通讯录.txt");
}
voidfunction:
:
find_num()
{
studentstud4[40]={0};
ifstreaminfile("学生通讯录.txt",ios:
:
binary);
if(infile.peek()==EOF)
{
cout<<"文件为空"< return; } cout<<"请输入学号: "; charnum[20]; cin>>num; cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"< inti=0; while (1) { infile.read((char*)&stud4[i],sizeof(stud4[i])); if((! strcmp(stud4[i].num,num))||infile.eof())break; i++; } if(! infile.eof()) { cout<<"学号: "< cout<<"姓名: "< cout<<"地址: "< cout<<"电话号码: "< cout<<"邮编: "< cout<<"E-MAIL: "< } else cout<<"输入的学号查不到"< infile.close(); } voidfunction: : find_name() { studentstud5[40]={0}; ifstreaminfile("学生通讯录.txt",ios: : binary); if(infile.peek()==EOF) { cout<<"文件为空"< return; } cout<<"请输入姓名: "; charname[20]; inttotal[40]; for(intf=0;f<40;f++) { total[f]=0; } cin>>name; cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"< for(inti=0;i<40;i++) { infile.read((char*)&stud5[i],sizeof(stud5[i])); if(strcmp(stud5[i].name,name)==0||infile.eof()) break; } if(! infile.eof()) { cout<<"学号: "< cout<<"姓名: "< cout<<"地址: "< cout<<"电话号码: "< cout<<"邮编: "< cout<<"E-MAIL: "< } else cout<<"输入的姓名查不到"< infile.close(); } voidfunction: : find_tel() { studentstudtel[40]; ifstreaminfile("学生通讯录.txt",ios: : binary); if(infile.peek()==EOF) { cout<<"文件为空"< return; } cout<<"请输入号码: "; charteltel[12]; cin>>teltel; cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"< for(inti=0;i<40;i++) { infile.read((char*)&studtel[i],sizeof(studtel[i])); if(! strcmp(studtel[i].tel,teltel)||infile.eof()) break; } if(! infile.eof()) { cout<<"学号: "< cout<<"姓名: "< cout<<"地址: "< cout<<"电话号码: "< cout<<"邮编: "< cout<<"E-MAIL: "< } else cout<<"输入的号码查找不到"; infile.close(); } voidfunction: : list_num() { studentstud6[40]={0}; ifstreaminfile("学生通讯录.txt",ios: : binary); intk=0; while (1) { if(infile.eof())break; infile.read((char*)&stud6[k],sizeof(stud6[k])); k++; } charnum[20]; charname[20]; charaddress[40]; chartel[12]; charpost[6]; chare_mail[40]; for(inti=0;i { for(intj=0;j { if(strcmp(stud6[j].num,stud6[j+1].num)>0) { strcpy(num,stud6[j].num); strcpy(stud6[j].num,stud6[j+1].num); strcpy(stud6[j+1].num,num); strcpy(name,stud6[j].name); strcpy(stud6[j].name,stud6[j+1].name); strcpy(stud6[j+1].name,name); strcpy(address,stud6[j].address); strcpy(stud6[j].address,stud6[j+1].address); strcpy(stud6[j+1].address,address); strcpy(tel,stud6[j].tel); strcpy(stud6[j].tel,stud6[j+1].tel); strcpy(stud6[j+1].tel,tel); strcpy(post,stud6[j].post); strcpy(stud6[j].post,stud6[j+1].post); strcpy(stud6[j+1].post,post); strcpy(e_mail,stud6[j].e_mail); strcpy(stud6[j].e_mail,stud6[j+1].e_mail); strcpy(stud6[j+1].e_mail,e_mail); } } } infile.close(); remove("学生通讯录.txt"); ofstreamoutfile("学生通讯录.txt",ios: : binary); intl=0; while (1) {if(l>k-2)break; outfile.write((char*)&stud6[l+2],sizeof(stud6[l+2])); l++; } outfile.close(); } voidfunction: : list_name() { studentstud7[40]={0}; charnum[20]; charname[20]; charaddress[40]; chartel[20]; charpost[6]; chare_mail[40]; ifstreaminfile("学生通讯录.txt",ios: : binary); intk=0; while (1) {if(infile.eof())break; else infile.read((char*)&stud7[k],sizeof(stud7[k])); k++; } infile.close(); for(inti=0;i { for(intj=0;j { if(strcmp(stud7[j].name,stud7[j+1].name)>0) { strcpy(num,stud7[j].num); strcpy(stud7[j].num,stud7[j+1].num); strcpy(stud7[j+1].num,num); strcpy(name,stud7[j].name); strcpy(stud7[j].name,stud7[j+1].name); strcpy(stud7[j+1].name,name); strcpy(address,stud7[j].address); strcpy(stud7[j].address,stud7[j+1].address); strcpy(stud7[j+1].address,address); strcpy(tel,stud7[j].tel); strcpy(stud7[j].tel,stud7[j+1].tel); strcpy(stud7[j+1].tel,tel); strcpy(post,stud7[j].post); strcpy(stud7[j].post,stud7[j+1].post); strcpy(stud7[j+1].post,post); strcpy(e_mail,stud7[j].e_mail); strcpy(stud7[j].e_mail,stud7[j+1].e_mail); strcpy(stud7[j+1].e_mail,e_mail); } } } remove("学生通讯录.txt"); ofstreamoutfile("学生通讯录.txt",ios: : binary); intl=0; while (1) {if(l>k-2)break; outfile.write((char*)&stud7[l+2],sizeof(stud7[l+2])); l++; } outfile.close(); } voidfunction: : format() { remove("学生通讯录.txt"); } voidfunction: : show() { studentstud8[40]={0}; ifstreaminfile("学生通讯录.txt",ios: : in|ios: : binary); infile.seekg(0,ios: : beg); if(infile.peek()==EOF) { cout<<"文件为空"< return; } inti=0; while (1) { infile.read((char*)&stud8[i],sizeof(stud8[i])); if(infile.eof()) break; else cout< : left); cout<<"学号: "< cout<<"姓名: "< cout<<"地址: "< cout<<"电话号码: "< cout<<"邮编: "< cout<<"E-MAIL: "< i++; } infile.close(); } voidfunction: : import() { studentstud9[40]={0}; charname1[20]; cout<<"输入要读取的文件名(不含后缀名): "; cin>>name1; ifstreamfile(name1); charline[100]; charnum[100]; charname[100]; charaddress[100]; chartel[100]; charpost[100]; chare_mail[100]; inttime=0; file.getline(line,100); while(! file.eof()) { for(intk=0;k<100;k++) { if(time==0) { strcpy(num,line); time=1; for(inti=0;i<100;i++) { if(num[i]==': ') { i++; for(intj=0;j<100;j++) { stud9[k].num[j]=num[i]; i++; } } } file.getline(line,100,'\n'); } if(time==1) { strcpy(name,line); time=2; for(inti=0;i<100;i++) { if(name[i]==': ') { i++; for(intj=0;j<100;j++) { stud9[k].name[j]=name[i]; i++; } } } file.getline(line
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+课程设计 通讯录 C+ 课程设计