C++课程设计报告学生成绩管理系统.docx

上传人:b****8 文档编号:29211671 上传时间:2023-07-21 格式:DOCX 页数:30 大小:601.66KB
下载 相关 举报
C++课程设计报告学生成绩管理系统.docx_第1页
第1页 / 共30页
C++课程设计报告学生成绩管理系统.docx_第2页
第2页 / 共30页
C++课程设计报告学生成绩管理系统.docx_第3页
第3页 / 共30页
C++课程设计报告学生成绩管理系统.docx_第4页
第4页 / 共30页
C++课程设计报告学生成绩管理系统.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

C++课程设计报告学生成绩管理系统.docx

《C++课程设计报告学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告学生成绩管理系统.docx(30页珍藏版)》请在冰豆网上搜索。

C++课程设计报告学生成绩管理系统.docx

C++课程设计报告学生成绩管理系统

学生成绩管理系统

说明:

该课程设计包含两个部分,一个为纯dos系统下的控制台程序,用C++编写;另一个为有界面的MFC项目。

 

纯dos系统下的控制台程序

1、设计要求...........................................3

2、设计分析...........................................3

3、调试说明...........................................4

4、源代码.............................................8

5、实验总结..........................................21

有界面的MFC项目

1、设计内容...........................................22

2、设计说明..........................................22

3、设计步骤..........................................22

4、运行演示..........................................27

5、实验总结..........................................29

 

纯dos系统下的控制台程序

1、设计要求

现有学生成绩信息,内容如下:

姓名    学号  语文  数学  英语    

张明明  01    67    78      82

李成友  02    78    91      88

张辉灿  03    68    82      56

王露    04    56    45      77

陈东明  05    67    38      47

请用C/C++编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:

功能要求:

(1)    信息维护:

要求:

学生信息数据要以文件的形式保存,能实现学生信息数据的维护。

此模块包括子模块有:

增加学生信息、删除学生信息、修改学生信息

(2)    信息查询:

要求:

查询时可实现按姓名查询、按学号查询

(3)    成绩统计:

要求:

A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。

(4)    排序:

能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)

其它要求:

(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读

(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)

(3)学生可自动增加新功能模块(视情况可另外加分)

(4)写出课程设计报告,具体要求见相关说明文档

2、设计分析

(1)需求分析:

该程序要能实现对学生成绩信息的增加、删除、修改,实现对学生按姓名查询,按学号查询显示,对任意一个课程名和分数段的学生人数进行输出并统计人数,最好还要根据用户的需求对学生成绩排序。

(2)系统性能要求:

 

a.系统安全、可靠; 

b.功能齐全; 

c.操作方便、界面友好; 

d.易于维护和扩充。

(3)系统功能模块:

学生成绩管理系统包括:

增加、删除、修改、显示、信息查询、成绩统计、排序几个部分构成。

(4)模块框架图

 

 

 

 

3、调试说明

运行程序后,现出来一个简洁的主界面。

若没有学生信息,显示“这是一个新系统,无学生信息,请先输入。

”若已存在学生信息,显示“读取学生信息成功!

一秒钟后,自动切入主菜单界面。

首先选择1,增加学生信息。

录入学生信息后选择4,显示学生信息。

选择2,删除学生信息,输入要删除的学生姓名,这里我输入的是王露,显示剩下几位同学的信息。

选择3,修改学生信息,输入要修改的学生姓名,然后输入新的学生信息,这里我修改的是张明明,显示修改后的学生信息。

将张明明和王露的信息重新输入。

输入5,信息查询,出来选择界面,“1、按学生姓名查找”、“2、按学生学号查找”,输入1,运行结果如下:

输入2,运行结果如下:

输入6,排序,显示选择界面,用户可根据需求选择科目和升降序,这里我是按语文成绩降序排序。

输入7,成绩统计,用户自行输入要统计的科目和分数段进行统计。

这里我统计的是英语成绩在60—90的学生。

4、源程序代码

#include

#include

#include

#include<>

#include<>

#include<>

usingnamespacestd;

#defineHEADER1"-----------------------------学生成绩----------------------------\n"

#defineHEADER2"|姓名|学号|数学|语文|英语|总分|\n"

#defineHEADER3"|----------|----------|----------|----------|----------|----------|\n"

classStudent....";

getch();

}

voidStudentMassage:

:

AddItem()....";

getch();

}

voidStudentMassage:

:

Find()....";

getch();

}

else

{

cout<<"\t\t没有找到该姓名的学生!

"<

cout<<"请输入任意字符,继续......";

getch();

}

}break;

case2:

....";

getch();

}

else

{

cout<<"\n\t\t没有找到该学号的学生!

"<

cout<<"请输入任意字符,继续......";

getch();

}

}break;

}

}

voidStudentMassage:

:

ModifyItem().....";

getch();

}

}

voidStudentMassage:

:

RemoveItem()....";

getch();

}

}

intStudentMassage:

:

ListCount().....";

getch();

};break;

case2:

{

cout<<"\n\t\t请输入分数段的起始分数和终止分数:

";

cin>>m;

cin>>n;

for(p=Head;p!

=End;p=p->next)

if(p->chinese>=m&&p->chinese<=n)

{

count++;

if(count==1)

cout<

p->show();

}

cout<<"\n\t\t语文成绩在"<

\n"<

cout<<"输入任意字符,继续.......";

getch();

};break;

case3:

{

cout<<"\n\t\t请输入分数段的起始分数和终止分数:

";

cin>>m;

cin>>n;

for(p=Head;p!

=End;p=p->next)

if(p->english>=m&&p->english<=n)

{

count++;

if(count==1)

cout<

p->show();

}

cout<<"\n\t\t英语成绩在"<

\n"<

cout<<"输入任意字符,继续.......";

getch();

};break;

}

}

voidStudentMassage:

:

Swap(Student*p1,Student*p2)//交p1,p2学生信息

{

Student*temp=newStudent;

strcpy(temp->name,p1->name);

strcpy(temp->id,p1->id);

temp->math=p1->math;

temp->chinese=p1->chinese;

temp->english=p1->english;

temp->sum=p1->sum;

strcpy(p1->name,p2->name);

strcpy(p1->id,p2->id);

p1->math=p2->math;

p1->chinese=p2->chinese;

p1->english=p2->english;

p1->sum=p2->sum;

strcpy(p2->name,temp->name);

strcpy(p2->id,temp->id);

p2->math=temp->math;

p2->chinese=temp->chinese;

p2->english=temp->english;

p2->sum=temp->sum;

}

voidStudentMassage:

:

Sort()//排序

{

Student*p=NULL,*p1=NULL,*k=NULL;

intn=StudentMassage:

:

ListCount(),x,y;

if(n<2)

{

cout<<"数据较少,无法排序!

"<

return;

}

cout<<"\n\t\t**************************************\n";

cout<<"\t\t\t1、按数学成绩排序"<

cout<<"\t\t\t2、按语文成绩排序"<

cout<<"\t\t\t3、按英语成绩排序"<

cout<<"\t\t\t4、按总分排序";

cout<<"\n\t\t**************************************\n\n\t请选择:

";

cin>>x;

switch(x)

{

case1:

{

cout<<"\n\t\t**************************************\n";

cout<<"\t\t\t1、按降序排序\n\t\t\t2、按升序排序";

cout<<"\n\t\t**************************************\n\n\t请选择:

";

cin>>y;

if(y==1)

{

for(p=Head->next;p!

=End;p=p->next)

for(k=p->next;k!

=End;k=k->next)

{

if(p->mathmath)

StudentMassage:

:

Swap(p,k);

}

cout<<"\n\t\t排序完成!

"<

StudentMassage:

:

Display();

getch();

}

else

{

for(p=Head->next;p!

=End;p=p->next)

for(k=p->next;k!

=End;k=k->next)

{

if(p->math>k->math)

StudentMassage:

:

Swap(p,k);

}

cout<<"\n\t\t排序完成!

"<

StudentMassage:

:

Display();

getch();

}

};break;

case2:

{

cout<<"\n\t\t**************************************\n";

cout<<"\t\t\t1、按降序排序\n\t\t\t2、按升序排序";

cout<<"\n\t\t**************************************\n\n\t请选择:

";

cin>>y;

if(y==1)

{

for(p=Head->next;p!

=End;p=p->next)

for(k=p->next;k!

=End;k=k->next)

{

if(p->chinesechinese)

StudentMassage:

:

Swap(p,k);

}

cout<<"\n\t\t排序完成!

"<

StudentMassage:

:

Display();

getch();

}

else

{

for(p=Head->next;p!

=End;p=p->next)

for(k=p->next;k!

=End;k=k->next)

{

if(p->chinese>k->chinese)

StudentMassage:

:

Swap(p,k);

}

cout<<"\n\t\t排序完成!

"<

StudentMassage:

:

Display();

getch();

}

};break;

case3:

{

cout<<"\n\t\t**************************************\n";

cout<<"\t\t\t1、按降序排序\n\t\t\t2、按升序排序";

cout<<"\n\t\t**************************************\n\n\t请选择:

";

cin>>y;

if(y==1)

{

for(p=Head->next;p!

=End;p=p->next)

for(k=p->next;k!

=End;k=k->next)

{

if(p->englishenglish)

StudentMassage:

:

Swap(p,k);

}

cout<<"\n\t\t排序完成!

"<

StudentMassage:

:

Display();

getch();

}

else

{

for(p=Head->next;p!

=End;p=p->next)

for(k=p->next;k!

=End;k=k->next)

{

if(p->english>k->english)

StudentMassage:

:

Swap(p,k);

}

cout<<"\n\t\t排序完成!

"<

StudentMassage:

:

Display();

getch();

}

};break;

case4:

{

cout<<"\n\t\t**************************************\n";

cout<<"\t\t\t1、按降序排序\n\t\t\t2、按升序排序";

cout<<"\n\t\t**************************************\n\n\t请选择:

";

cin>>y;

if(y==1)

{

for(p=Head->next;p!

=End;p=p->next)

for(k=p->next;k!

=End;k=k->next)

{

if(p->sumsum)

StudentMassage:

:

Swap(p,k);

}

cout<<"\n\t\t排序完成!

"<

StudentMassage:

:

Display();

getch();

}

else

{

for(p=Head->next;p!

=End;p=p->next)

for(k=p->next;k!

=End;k=k->next)

{

if(p->sum>k->sum)

StudentMassage:

:

Swap(p,k);

}

cout<<"\n\t\t排序完成!

"<

StudentMassage:

:

Display();

getch();

}

};break;

}

}

voidStudentMassage:

:

save()//存入文件

{

("");

for(Student*p=Head->next;p!

=End;p=p->next)

out<name<<"\t"<id<<"\t"<math<<"\t"<chinese<<"\t"<english<<"\t"<sum<<'\n';

();

}

voidmain()

{

intx;

boolquit=false;

cout<<"\n\n\n\n\n\n\n\n";

cout<<"\t\t********************************************"<

cout<<"\t\t欢迎使用学生成绩管理系统!

"<

cout<<"\t\t********************************************"<

StudentMassageGrade;

Sleep(1000);

while(!

quit)

{

system("cls");

();

cin>>x;

switch(x)

{

case0:

quit=true;break;

case1:

();break;

case2:

();break;

case3:

();break;

case4:

();break;

case5:

();break;

case6:

();break;

case7:

();break;

}

}

}

5、实验总结

通过编写这个纯dos系统下的控制台程序,加深了我对如何用C++编写一个简单的应用程序的理解。

首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。

程序实现上,设计了简单的菜单界面,将各个功能集中出来按照程序编写原则,便于查询。

 

 

有界面的MFC项目

1、设计内容

以学生成绩管理系统为例,通过对简单应用软件系统的设计,编制、调试,实现简单的增加、删除、排序等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。

 

2、设计说明

(1)包含的功能有:

查看、增加、删除、排序、筛选等功能。

 

(2)通过access创建数据库并通过OD方式访问数据库。

 

(3)编辑界面上的不同按钮,创建消息映射,以完成相关的各种操作。

3、设计步骤

(1)创建数据库:

 打开access,并创建一个新表“学生成绩管理表”,输入相关内容,选择类型,完成后保存。

(2)添加ODBC数据源

打开“ODBC数据源管理器” 添加

继续

(3)在MFC中创建相关按键并设置好属性及ID

为每个编辑框控件绑定数据源字段:

选定一个编辑框控件,右键 | 建立类向导 | 成员变量标签 |class name列表下选CmySet(数据库的结果集)。

 先将Member中不好记的值通过“Delete Variable”删除,再“Add Vairiables”添加,改为自己好记的的名字。

将编辑框(在CmyView视图类中)与上述变量绑定:

Add Variable…

现在为功能键的实现进行操作  

增加新的对话框(窗体)及创建类成员

在查询或过滤记录时,需要一个对话框,用于添加信息,增加对话框的方法:

  VC主菜单,“插入”|“资源”|“对话框(Dialog)类型”| 放一个“分组框控件”| 在分组框内按图设置编辑框和按钮:

建立类向导,分配好成员变量并绑定好

为其中的“确定”按钮添加代码:

voidCDlgADD:

:

OnOK()

{

//TODO:

Addextravalidationhere

UpdateData();

if(m_id==0||m_name==""||m_chinese==0||m_math==0||m_english==0||m_sum==0)

{

MessageBox("请完整输入数据");

return;

}

CDialog:

:

OnOK();

}

同理,添加查询条件

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1