C++课程报告书.docx
《C++课程报告书.docx》由会员分享,可在线阅读,更多相关《C++课程报告书.docx(37页珍藏版)》请在冰豆网上搜索。
C++课程报告书
一、课程设计任务书
C++课程设计任务书
系部计算机技术系班级软件30931学号3030093111姓名冯立
1、题目
学生成绩管理系统
2、目的要求:
1.通过本次课程设计,进一步掌握和巩固所学的数据结构、程序结构、流程控制语句、数组、函数、指针、结构体、链表等知识。
2.能综合运用所学知识,设计简易信息管理系统。
3.熟悉编写比较复杂程序的步骤。
3、內容:
1.课题选择
2.简单的系统与功能分析
根据选择的课题,进行系统需求与功能分析,画出功能模块图。
3.建立数据结构表
●建立真实的二维表,其中字段名不少于10个
●要建立一个测试的数据表,至少要有20个测试数据
4.编写代码(使用结构体数组或数据链表实现数据的录入、查询、修改、增加、删除、统计、输出),并上机调试。
5.编写课程设计说明书
6.准备课程设计答辩
4、进度安排:
序号
项目
学时数(天)
讲授
设计或其他
合计
1
选择课题,明确课程设计任务
0.2
0.2
2
系统功能分析,建立数据结构表
0.3
0.3
3
用结构体编写管理程序
0.2
1.3
1.5
4
用链表编写管理程序
0.5
1.5
2.0
5
课程设计说明书的编写
0.1
0.4
0.5
6
答辩、检查
0.5
0.5
5、课程设计答辩要求:
(1)现编写一段程序;
(2)教师提问学生回答。
6、评分标准:
序号
项目
成绩比例(%)
1
用结构体编写管理程序
10
2
用链表编写管理程序
20
3
课程设计说明书的完成情况
20
4
口头答辩(对知识点掌握程度、应变及口头表达等)
40
5
其他(纪律遵守、群体协作等)
10
开始日期:
2009年6月24日完成日期:
2009年6月30日
答辩日期:
2008年6月30日指导老师:
颜惠琴许敏
二、学生成绩管理系统设计
1、系统需求与功能分析
(1)需求分析
随着学校的规模不断扩大,学生数量急剧增加,学生成绩信息量庞大,人工抄写的话不但信息量大,而且容易出错,因此需要有学生成绩管理系统来提高管理工作的效率。
通过本系统可以随时增减学生,修改学生的成绩,进行快速查询和科学统计,从而实现学生成绩管理的自动化。
(2)功能分析
1)根据需求分析,确定该系统的功能有:
输入学生成绩:
包括班级、学号、姓名、各门课程的成绩。
(学号不允许重复)
修改学生成绩:
修改某一学生的相关信息。
删除学生成绩:
删除某一学生的相关信息。
插入学生成绩:
插入某一学生的相关信息。
查找学生:
输入学号查找某一学生的相关信息。
统计:
计算学生的平均成绩。
排序:
按学号或者某一门成绩或者名次对学生成绩排序
输出学生成绩:
输出所有学生的成绩信息。
2)该系统功能模块图如下:
(3)系统的数据结构表
序号
成员名(字段名)
数据类型
长度
字段含义
1
class0
char
30
班级(不用class)
2
num
int
学号
3
name
char
8
姓名
4
math
float
应用数学
5
jap
float
日语
6
elec
float
电工
7
cpp
float
C++程序设计
8
sport
float
大学体育
9
polity
float
思修
10
web
float
网页设计
11
ave
float
平均成绩
(4)系统测试数据表
学号
班级
姓名
C++
网页
日语
数学
体育
思修
电工
101
软件30931
陈坤坤
88
86
76
77
80
78
67
102
软件30931
陈涛
70
77
69
75
83
80
68
103
软件30931
程涛
73
75
70
73
79
79
68
104
软件30931
程虓
75
84
74
78
84
73
66
105
软件30931
丛巍
67
78
68
75
83
71
62
106
软件30931
丁乐
68
73
68
71
82
73
59
107
软件30931
丁黎
65
74
65
75
78
76
64
108
软件30931
杜钟
70
79
66
73
80
77
63
109
软件30931
樊益江
80
80
68
77
81
82
73
110
软件30931
方丽静
85
76
69
75
75
74
64
2、使用结构体数组编写程序
/*定义结构体*/
#include
#include
#include
#include
structstudent
{intnum;//学号
charclass0[30],name[8];//班级(不用class定义)、姓名
floatmath;//应用数学
floatcpp;//c++
floatsport;//大学体育
floatweb;//网页设计
floatelec;//电工
floatjap;//日语
floatpolity;//思修
floatave;//平均成绩
}stu[54];
/*结构体主界面登陆*/
#include
#include
#include
#include
voidInterfaces(void)
{cout<cout<<"╭⌒╭⌒╮╭⌒╮~╭⌒╮︶︶, ︶︶╭⌒╭⌒╮╭⌒╮~╭⌒╮︶︶, ︶︶"<cout<<",︶︶︶︶,""︶~~,""~︶︶ ,"",︶︶︶︶,""︶~~,""~︶︶ ,"""<cout<<"#〓§〓〓〓〓〓§〓〓〓〓〓§〓〓〓〓〓§〓〓〓〓〓§〓〓〓〓〓§〓#"<cout<<"↓ ↓ ↓ ↓↓↓"<cout<<"☆★☆ ☆★☆ ☆★☆ ☆★☆ ☆★☆ ☆★☆"<cout<<"☆ 欢 ☆ ☆ 迎 ☆ ☆ 登 ☆ ☆ 录 ☆☆ 界 ☆ ☆ 面 ☆ "<cout<<"☆★☆ ☆★☆ ☆★☆ ☆★☆ ☆★☆ ☆★☆ "<cout<<"↓ ↓ ↓ ↓↓↓"<cout<<"※ ※ ※ ※※ ※ "<cout<cout<<"********************************************************************************"<cout<<""<cout<<"学生成绩管理系统(Version2.0)"<cout<<”“<cout<<"CopyrightReserved"<cout<<"********************************************************************************"<cout<}
/*结构体主界面*/
#include
#include
#include
#include
voidInterface(void)
{cout<cout<<"请选择需要进行的操作,输入操作的代表数字(如:
1):
"<cout<cout<<"◤卐☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★卍◥"<cout<<"★1:
输入成绩★"<cout<<"☆〓§〓2:
查询成绩〓§〓☆"<cout<<"★↓3:
修改成绩↓★"<cout<<"☆☆★☆4:
删除成绩☆★☆☆"<cout<<"★☆ 欢 ☆5:
统计平均成绩☆ 迎 ☆★"<cout<<"☆☆★☆6:
平均成绩排序☆★☆☆"<cout<<"★↓7:
输出排名成绩↓★"<cout<<"☆※0:
退出管理系统※☆"<cout<<"◣Ж☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★Ж◢"<cout<}
#include
#include
#include
#include
#include"结构体node.h"
#include"结构体主界面.h"
#include"结构体主界面1.h"
voidInput(students[],int&n)//输入函数n为引用类型,返回给主调函数学生个数
{inti;
i=0;
charyn;//定义判断符
cout<<"是否继续输入学生相关初始信息?
(y/n):
";
cin>>yn;
while(yn=='y'||yn=='Y')
{cout<<"学号班级姓名C++网页日语数学体育思修电工"<>s[i].num>>s[i].class0>>s[i].name>>s[i].cpp>>s[i].web>>s[i].jap>>s[i].math>>s[i].sport>>s[i].polity>>s[i].elec;
i++;//学生人数累加
cout<<"是否继续输入学生相关初始信息?
(Y/N)";
cin>>yn;
}
n=i;
}
voidStatistic(students[],intn)//计算平均成绩
{inti;
for(i=0;is[i].ave=(s[i].cpp+s[i].web+s[i].jap+s[i].math+s[i].sport+s[i].polity+s[i].elec)/7;//计算七门课的平均分
cout<<"已完成学生成绩的统计!
!
!
"<}
voidModify(students[],intn)//修改函数
{inti,k;//k为要修改的学生学号
cout<<"输入要修改的学生学号:
";
cin>>k;//输入学生学号
for(i=0;i{if(k==s[i].num)//查找到该生
{cout<<"学号班级姓名C++网页日语数学体育思修电工"<>s[i].num>>s[i].class0>>s[i].name>>s[i].cpp>>s[i].web>>s[i].jap>>s[i].math>>s[i].sport>>s[i].polity>>s[i].elec;//修改信息
cout<<"已成功修改该学生的相关信息!
!
!
"<break;
}
}
if(k!
=s[i].num)
cout<<"输入的学生学号错误!
请重新输入!
!
!
"<}
voidDelete(students[],intn)//删除函数
{inti,j,k;//k为要删除的学生学号
cout<<"输入要删除的学生学号:
";
cin>>k;//输入要删除的学生学号
for(i=0;i{if(k==s[i].num)//查找到该学生信息
{for(j=i;js[j]=s[j+1];
cout<<"已成功删除该学生的相关信息!
!
!
";
break;
}
else
cout<<"输入的学生号错误!
请重新输入!
!
!
"<}
}
voidLookup(students[],intn)//查询函数
{inti,k;//k为要查询的学生学号
cout<<"请输入要查询的学生学号:
";
cin>>k;//输入学生学号
for(i=0;i{cout<<"学号班级姓名C++网页日语数学体育思修电工"<if(k==s[i].num)//查找学生信息
{cout<
break;
}
}
if(k!
=s[i].num)
cout<<"输入的学生学号错误!
请重新输入!
!
!
"<}
voidSort(students[],intn)//擂台法降序排序
{inti,j,k;
studenttemp;
charyn;//定义判断符
cout<<"是否已经完成平均值的计算?
Y/N"<cin>>yn;
if(yn!
='y'||yn!
='Y')//未完成平均值的计算
Statistic(stu,n);//求平均值
for(i=0;i{k=i;
for(j=i+1;jif(s[k].ave
k=j;
if(k>i)
{temp=s[k];s[k]=s[i];s[i]=temp;
}
}
cout<<"已完成学生成绩的排序!
!
!
"<}
voidOutput_Sort(students[],intn)//输出排序后学生的基本信息
{inti;
charyn;//定义判断符
cout<<"是否已经完成学生的平均成绩的排序?
Y/N"<cin>>yn;
if(yn!
='y'||yn!
='Y')//未完成学生的平均成绩的计算以及排序
Sort(stu,n);//排序
cout<<"统计、排序后的学生成绩如下面列表所示:
"<cout<<"学号姓名班级C++网页日语数学体育思修电工平均分"<for(i=0;i{cout<
cout<}
}
voidmain(void)
{Interfaces();//主界面登陆函数
charpass[10];//定义登录密码
intn=0;
charyn;//定义判断符
intxh;//xh为执行功能选择的序号
cout<<"是否继续登录?
Y/N"<cin>>yn;
cout<<"请输入登录密码:
";cin>>pass;
if(!
strcmp(pass,"1234"))
cout<<"登录成功!
!
!
\n";
else
{cout<<"密码不正确,退出!
";
exit(0);
}
/*由用户输入一个操作的代表数字,为0时操作结束*/
while(yn=='y'||yn=='Y')
{Interface();//主界面函数
cout<<"请选择你所需要进行的功能:
";
cin>>xh;//输入序号,选择功能模块
cout<{if(xh>8||xh<0)//非有效操作
{cout<<"操作选择错误!
请重新输入!
!
!
\n";
continue;
}
else
switch(xh)
{case1:
Input(stu,n);break;//输入
case2:
Lookup(stu,n);break;//查询
case3:
Modify(stu,n);break;//修改初始信息
case4:
Delete(stu,n),n--;break;//删除初始信息
case5:
Statistic(stu,n);break;//统计
case6:
Sort(stu,n);break;//排序
case7:
Output_Sort(stu,n);break;//输出统计、排序后的信息
case0:
exit(0);//循环出口
}
}
}
if(yn=='n'||yn=='N')
exit(0);//循环出口
}
3、使用链表编写程序
/*定义链表中结构体*/
#include
#include
#include
#include
structnode
{intnum;//学号
charclass0[30],name[8];//班级(不用class定义)、姓名
floatmath;//应用数学
floatcpp;//c++
floatsport;//大学体育
floatweb;//网页设计
floatelec;//电工
floatjap;//日语
floatpolity;//思修
floatave;//平均成绩
floatsum;//总成绩
node*next;
}stu[54];
/*链表主界面登陆*/
#include
#include
#include
#include
voidInterfaces(void)
{cout<cout<<"╭⌒╭⌒╮╭⌒╮~╭⌒╮︶︶, ︶︶╭⌒╭⌒╮╭⌒╮~╭⌒╮︶︶, ︶︶"<cout<<",︶︶︶︶,""︶~~,""~︶︶ ,"",︶︶︶︶,""︶~~,""~︶︶ ,"""<cout<<"#〓§〓〓〓〓〓§〓〓〓〓〓§〓〓〓〓〓§〓〓〓〓〓§〓〓〓〓〓§〓#"<cout<<"↓ ↓ ↓ ↓↓↓"<cout<<"☆★☆ ☆★☆ ☆★☆ ☆★☆ ☆★☆ ☆★☆"<cout<<"☆ 欢 ☆ ☆ 迎 ☆ ☆ 登 ☆ ☆ 录 ☆☆ 界 ☆ ☆ 面 ☆ "<cout<<"☆★☆ ☆★☆ ☆★☆ ☆★☆ ☆★☆ ☆★☆ "<cout<<"↓ ↓ ↓ ↓↓↓"<cout<<"※ ※ ※ ※※ ※ "<cout<cout<<"********************************************************************************"<cout<<""<cout<<"学生成绩管理系统(Version2.0)"<cout<<”“<cout<<"CopyrightReserved"<cout<<"********************************************************************************"<cout<}
/*链表主界面*/
#include
#include
#include
#include
voidInterface(void)
{cout<cout<<"请选择需要进行的操作,输入操作的代表数字(如:
1):
"<cout<cout<<"◤卐☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★卍◥"<cout<<"★1:
输入成绩★"<cout<<"☆〓§〓2:
查询成绩〓§〓☆"<cout<<"★↓3:
添加成绩↓★"<cout<<"☆☆★☆4:
修改成绩☆★☆☆"<cout<<"★☆ 欢 ☆5:
删除成绩☆ 迎 ☆★"<cout<<"☆☆★☆6:
统计平均成绩☆★☆☆"<cout<<"★↓7:
输出排名成绩↓★"<cout<<"☆※0:
退出管理系统※