C++课程设计报告完结.docx
《C++课程设计报告完结.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告完结.docx(19页珍藏版)》请在冰豆网上搜索。
![C++课程设计报告完结.docx](https://file1.bdocx.com/fileroot1/2023-2/1/27a38b4e-20e6-4254-b430-65a1de649798/27a38b4e-20e6-4254-b430-65a1de6497981.gif)
C++课程设计报告完结
课程设计报告
课程名称:
程序设计基础课程设计
学院名称:
计算机科学与工程学院
专业:
计算机科学与技术
学期:
08-09-2日期:
09-6-8~09-6-19
班级:
08计三W学号:
08141310
姓名:
周倩倩教师姓名:
罗烨
学分:
2成绩:
《程序设计基础》
课程设计指导书(第二版)
罗烨李秉璋著
江苏技术师范学院计算机科学与工程学院
2007年3月
1、课程设计目的
《程序设计基础》课程设计是在学习完《程序设计基础》课程后开设的一门实践性课程。
要求学生以个人为单位,在教师指导下,运用理论课所学知识,借助参考书籍,选择一个课题,使用C++语言,完成一个功能相对完整,具有应用价值的软件。
达到加深理解课堂教学内容,熟悉程序设计的基本流程、掌握程序设计基本方法,基本技巧、并能综合运用,提高程序设计能力。
通过本课程的实践,熟练掌握C++语言中面向过程部分的内容,能够运用C++语言解决一个实际问题。
课程设计属于研究型、创新型、自主型学习。
学生可以根据自己的兴趣、爱好、特长,或者以前已经接触过的内容,自行确定课程设计课题。
也可完成老师提供的参考课题。
2、设计环境及语言
VisualC+集成开发环境(IDE)C++语言。
3、课题设计步骤
3.1需求分析从软件使用者处获得用户需求,确定课题开发应具备的功能;
3.2系统结构设计将整个系统功能分块,考虑各个功能模块应具备的功能,模块间的联系,划分成不同的子系统进行设计;
3.3数据设计设计系统中新的数据类型、存储类型;
3.4代码设计在上述3个阶段的基础上编写代码;
3.5软件测试使用事先设计好的测试用例、对编制的程序进行测试,发现存在错误(包括潜在的问题),加以修改,完善。
4、课程设计提交材料
4.1电子版的所有.cpp文件和.h文件。
每个学生以自己的名字建了一个文件夹,通过网络提交。
4.2课程设计报告内容包括;
1)课题设计内容、具备的功能;
2)模块(函数)的划分、各模块(函数)的功能;
3)采用的自定义的数据类型;
4)程序设计过程、调试中过程中所用的测试用例、程序运行的结果;
5)在课程设计中遇到的问题和解决的方法,还没有能解决的问题;
6)通过课程设计的体会、收获。
5、参考课题
5.1参考课题内容及知识点
“学生成绩表”是一个参考课题。
本课题通过建立、修改、查询、排序、显示学生成绩等功能,具体要求掌握的技术有:
1)结构、枚举类型的定义与使用;
2)数组的定义使用;
3)程序的三种基本控制流程的综合、灵活运用;
4)普通指针和数组指针的定义和使用;
5)各类函数的定义和调用;
6)文件的输入/输出;
7)程序的调试。
5.2功能要求
1)新增学生数据的添加:
学号,姓名,性别,3门课程成绩,计算总成绩并显示;
2)修改学生成绩数据:
输入学号,根据学号,修改该生的3项成绩数据计算总成绩并显示;
3)删除一个学生:
输入学号,根据学号删除该生;
4)根据学号查询:
输入学号,查找该生并显示学生数据;
5)显示全部学生数据;
6)根据学号排序学生数据;
7)根据总成绩排序学生数据;
8)退出:
保存学生总数文件及学生数据文件,然后结束程序运行。
5.3设计要求
1)在VisualC++控制台应用程序方式下设计课题。
2)设计的程序要求完成5.2节规定的功能。
3)程序应具有一定的健壮性。
即程序必须具有必要的检查和出错处理,如在新增学生数据时检查输入的学号是否相同。
删除、查询学生时检查输入的学号是否存在等。
5.4参考课题部分设计
1)建立student工程
2)在头文件中,设计Student结构类型,成员为
charNo[5]学号
charName[8]姓名
charGender[7]性别
intScore[4]3门课程成绩及总成绩
3)设计下列函数
intEnterChoice();//输入选项
voidInit();//数据文件初始化
voidAdd();//增加一个学生
voidUpdate();//修改学生成绩
voidDelete();//删除一个学生
voidQuery();//查询学生数据
voidDisplay();//显示全部学生
voidDisplay(Student*);//显示一个学生的重载函数
voidSortNo();//按学号排序(从小到大)
voidSortScore();//按成绩排序
intCheckNo(char*);//检查学号是否存在,存在返回序号,不存在返回-1
4)设计主函数main(),运行后,屏幕显示功能菜单
1:
addstudent2:
updatestudent
3:
deletestudent4:
querystudent
5:
displaystudents6:
SortstudentbyNo
7:
Sortstudentbyscore8:
end
用户输入选择后,程序运行相应的处理函数Add()、Update()、Delete()、Query()、Display()、SortNo()、SortScore()。
运行主函数main(),调用Init()函数,从文件count.dat生总数,从文件student.dat中读取学生数据。
然后等待用户输入选项,进行相应处理。
程序运行结束前,调用Save()函数保存学生总数到文件count.txt数据到文件student.txt中。
设计除main()主函数和Init()函数、Add()、SortNo()、CheckNo()、EnterChoice()、GetData()函数之外的Display()、Update()、Delete()、Query()、SortScore()等函数。
附件:
参考课题部分源程序
//结构定义文件
//student.h
#ifndefSTUDENT_H
#defineSTUDENT_H
structStudent
{
CharNo[9];
CharName[9];
CharGender[7];
intScore[4];
};
#endif
//函数实现文件
//student.cpp
#include
#include
#include
#include
#include"student.h"
usingnamespacestd;
intEnterChoice();
voidInit();
voidAdd();
voidUpdate();
voidDelete();
voidQuery();
voidSortScore();
voidDisplay();
voidDisplay(Student*);
voidSortNo();
voidSaveTxt();
intCheckNo(char*);
voidPrintTitle();
voidGetData(Student*);
externconstintMaxNum=100;
externintCurNum;
externStudentstudent[MaxNum];
intEnterChoice()
{
cout<<"\nEnteryourChoice\n"
<<"1:
addstudent2:
updatestudent\n"
<<"3:
deletestudent4:
querystudent\n"
<<"5:
displaystudents6:
SortstudentbyNO\n"
<<"7:
Sortstudentbyscore8:
end\n";
intChoice;
cin>>Choice;
returnChoice;
}
voidInit()
{
ifstreaminCount,inStudent;
ofstreamoutCount,outStudent;
inCount.open("count.txt",ios:
:
in);
if(!
inCount)
{
inCount.close();
outCount.open("count.txt",ios:
:
out);
outCount<outCount.close();
}
else
{
inCount>>CurNum;
inCount.close();
}
if(CurNum)
{
inStudent.open("student.txt",ios:
:
in);
for(inti=0;i{
inStudent>>(student+i)->No;
inStudent>>(student+i)->Name;
inStudent>>(student+i)->Gender;
inStudent>>(student+i)->Score[0];
inStudent>>(student+i)->Score[1];
inStudent>>(student+i)->Score[2];
inStudent>>(student+i)->Score[3];
}
inStudent.close();
}
else
{
outStudent.open("Student.txt",ios:
:
out);
outStudent.close();
}
}
voidAdd()
{
charno[9];
cout<<"No=";
cin>>no;
inti=CheckNo(no);
if(i>=0)
cout<<"No.repeated,inputagain"<else
{
strcpy(student[CurNum].No,no);
cout<<"Name=";
cin>>(student+CurNum)->Name;
cout<<"Gender=";
cin>>(student+CurNum)->Gender;
GetData(student+CurNum);
PrintTitle();
Display(student+CurNum);
CurNum++;
}
}
voidSortNo()
{
Studenttemp;
intflag;
for(inti=0;i{
flag=1;
for(intj=0;j{
if(strcmp(student[j+1].No,student[j].No)<0)
{
flag=0;
temp=student[j+1];student[j+1]=student[j];student[j]=temp;
}
}
if(flag)break;
}
Display();
}
voidPrintTitle()
{
cout<:
left);
cout<}
voidDisplay()
{
if(CurNum)
{
PrintTitle();
for(inti=0;iDisplay(student+i);
}
else
cout<<"Thelistempty!
"<}
voidDisplay(Student*stu)
{
cout<:
left);
cout<No;
cout<Name;
cout<Gender;
cout<:
left);
cout<Score[0];
cout<Score[1];
cout<Score[2];
cout<Score[3]<}
voidSave()
{
ofstreamoutCount,outStudent;
outCount.open("count.txt",ios:
:
out);
outCount<outCount.close();
outStudent.open("student.txt",ios:
:
out);
for(inti=0;i{
outStudent<<(student+i)->No<<"";
outStudent<<(student+i)->Name<<"";
outStudent<<(student+i)->Gender<<"";
outStudent<<(student+i)->Score[0]<<"";
outStudent<<(student+i)->Score[1]<<"";
outStudent<<(student+i)->Score[2]<<"";
outStudent<<(student+i)->Score[3]<<"";
outStudent<}
outStudent.close();
}
intCheckNo(char*no)
{
for(inti=0;iif(strcmp(student[i].No,no)==0)
returni;
return-1;
}
voidGetData(Student*stu)
{
for(inti=0;i<3;i++)
{
cout<<"Score"<
cin>>stu->Score[i];
}
stu->Score[3]=stu->Score[0]+stu->Score[1]+stu->Score[2];
}
voidSortScore()
{
Studenttemp;
inti,j,max;
for(i=0;i{max=i;
for(j=i;jif(student[max].Score[3]max=j;
if(max!
=i){
temp=student[max];
student[max]=student[i];
student[i]=temp;
}
}
Display();
}
voidUpdate()
{
charno[9];charc;
cout<<"inputno:
";
cin>>no;
inti=CheckNo(no);
if(i<0)
cout<<"Thenumberdosenotexist!
\n";
else{
cout<<"UpdateScore[0]?
(y/n)\n";
cin>>c;
if(c=='y'||c=='Y')
{
cout<<"InputScore[0]:
";
cin>>student[i].Score[0];
}
cout<<"UpdateScore[1]?
(y/n)\n";
cin>>c;
if(c=='y'||c=='Y')
{
cout<<"InputScore[1]:
";
cin>>student[i].Score[1];
}
cout<<"UpdateScore[2]?
(y/n)\n";
cin>>c;
if(c=='y'||c=='Y')
{
cout<<"InputScore[2]:
";
cin>>student[i].Score[2];
}
student->Score[3]=student->Score[0]+student->Score[1]+student->Score[2];
}
PrintTitle();
Display(student+i);
}
voidDelete()
{
charno[9];charc;
cout<<"Inputno:
";
cin>>no;
inti=CheckNo(no);
if(i<0)
cout<<"Thenumberdosenotexist!
(y/n)\n";
else
{
cout<<"Areyousure?
(y/n)\n";
cin>>c;
if(c=='y'||c=='Y')
{
for(intj=i+1;jstudent[j-1]=student[j];
CurNum--;
}
}
Display();
}
voidQuery()
{
charno[9];
cout<<"inputno:
";
cin>>no;
inti=CheckNo(no);
if(i<0)
cout<<"Thenunberdosenotexist!
\n";
else
{
PrintTitle();
Display(student+i);
}
}
//主函数文件
//main.cpp
#include
#include
#include
#include
#include"Student.h"
usingnamespacestd;
intEnterChoice();//输入选项
voidInit();//数据文件初始化
voidAdd();//增加一个学生
voidDisplay();//显示全部学生
voidDisplayOne(Student*);//显示全部学生
voidSortNo();//按学号排序(从小到大)
voidSave();//保存数据
intCheckNo(char*);//输入学号
voidPrintTitle();//显示表头
voidGetData(Student*);//读取学生成绩数据
voidUpdate();//修改学生成绩
voidDelete();//删除一个学生
voidQuery();//查询学生数据
voidSortScore();
enumChoices{ADD=1,UPDATE,DELETE,QUERY,DISPLAY,SORTNO,SORTSCORE,END};
constintMaxNum=100;
intCurNum;
Studentstudent[MaxNum];
voidmain()
{
Init();
intchoice;
while((choice=EnterChoice())!
=END)
{
switch(choice){
caseADD:
Add();
break;
caseUPDATE:
Update();
break;
caseDELETE:
Delete();
break;
caseQUERY:
Query();
break;
caseDISPLAY:
Display();
break;
caseSORTNO:
SortNo();
break;
caseSORTSCORE:
SortScore();
break;
default:
cerr<<"Incorrectchoice\n";}
}
Save();
}
程序运行结果图示:
图1程序运行后的菜单显示
图2“1:
addstudent”界面
图3“2:
updatestudent”界面
图4“3:
:
deletestudent”界面
图5“4:
querystudent”界面
图6“5:
displaystudent”界面
图7“6:
sortstudentbyNo”界面
图8“7:
Sortstudentbyscore”界面