作业Word下载.docx
- 文档编号:15924934
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:25
- 大小:29.97KB
作业Word下载.docx
《作业Word下载.docx》由会员分享,可在线阅读,更多相关《作业Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
(三)设计方法和基本原理
1.问题描述:
对一个有N个学生的班级,每个学生有M门课程。
该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
.2.功能要求:
1、本系统采用一个结构体数组,每个数据的结构应当包括:
学号、姓名、M门课程名称。
2、本系统显示这样的菜单:
请选择系统功能项:
a、成绩录入
b、成绩显示
c、成绩保存
d、成绩排序
e、成绩修改(要求先输入密码)
f、成绩统计
(1)显示每门课程成绩最高的学生的基本信息
(2)显示每门课程的平均成绩
(3)显示超过某门课程平均成绩的学生人数
g、退出系统
3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生成绩保存到文件中。
(三)算法提示:
1、数据结构:
结构体类型数组。
2、数据库结构:
下表构成该系统的基本数据库。
姓名
学号
课程名称1
课程名称2
char
Char
float
(四)测试数据:
学生人数N=10
课程门数M=4
课程名:
数学、语文、英语、政治
语言课程设计报告—班级成绩管理系统
1.概要分析:
班级成绩管理系统有13种功能。
把这13个功能做成13个子函数。
在主函当数中设计一个菜单对这13个子数进行管理。
来实现对整个系统的操作。
根据课题的要求。
每一个学生的包括姓名(char)、学号(char)、M门课程的成绩(float).再加上系统功能上的要求每一学生的信息还要总分和名次等。
所以自然的想到要用结构体来定义每一个学生的信息结构。
然后用链表把它们组成一个有序的整体。
用对链表的操作来实现对所有学生信息的统一管理(成绩显示、成绩排序、成绩修改等)。
最后为了以后按照处理后的顺序保存到文件中。
.各函数的功能:
概要设计:
程序的模块组成:
主函数:
intmain()
新建函数:
STUDENT*init()
输入函数:
STUDENT*create()
显示函数:
voidprint(STUDENT*head)
删除函数:
STUDENT*delete(STUDENT*head)
按名字寻找函数:
voidlookup(STUDENT*head)
保存函数:
voidsave(STUDENT*head)
按总分排序函数:
STUDENT*sort(STUDENT*head)
计算总分和均分函数:
voidcomputer(STUDENT*h)
修改函数:
STUDENT*Modify(STUDENT*head,STUDENT*new)
按学号排序函数:
STUDENT*index(STUDENT*h)
菜单函数:
intmenu_select()
各个函数的主要功能:
输入函数:
随时输入数据。
显示系统主菜单。
显示所有学生的信息。
寻找函数:
方便学生查找自己的成绩。
删除某学生的信息。
排序函数:
按总成绩排序。
按学号排序。
插入函数:
可以插入新的信息。
保存好学生成绩,以免丢失。
统计函数:
l显示每门课程成绩最高的学生的基本信息。
l显示每门课程的平均成绩。
l显示超过某门课程平均成绩的学生人数。
课题的功能模块的划分:
开始
菜单界面
功能选择
初始化函数
输入学生信息
删除学生信息
显示学生信息
查找学生信息
按成绩排序
保存到文件
从文件读数据
插入学生成绩
分类合计
退出系统
结束.
2.详细设计
整个系统除了主函数外,另外还有14个函数,实现八大功能:
输入功能、显示功能、查找功能、排序功能、插入功能、保存功能、读取功能。
各个函数的详细设计说明分别如下:
主函数main()
利用无限次循环for(;
;
)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
菜单选择函数intmenu_select()
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择。
等执行完每一个函数功能后,返回菜单。
代码设计:
初始化函数STUDENT*init()
这是一个无参函数,里面只有两个语句,它的作用是使链表初始化,使head的值为NULL和一个清屏语句。
比如:
没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!
输入记录函数STUDENT*create()这是一个无参函数,用来执行学生成绩记录的输入,当学生为@时停止输入,函数结束后,带回一个链表头的指针指向一下个学生的信息插在表头。
N-S流程图如下:
head=NULL无条件循环
指针p指向新开辟的单元
指针p是否为空
是否
输入学号p->
num
输出p->
num是否为@
内存是否
溢出输入姓名p->
name
停止for(i=0;
i<
3;
i++)
输入输入成绩
返回p->
sum=s;
菜单p->
average=(float)s/3;
显示记录函数voidprint(STUDENT*head)
这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。
算法:
先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。
然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。
重复执行此步聚直到p指针指向NULL为止。
p=head,使指向第一个结点
输出p所指向的结点
p指向一下个结点
当p指的不是表尾
(六)程序
#include"
stdio.h"
stdlib.h"
string.h"
windows.h"
#defineN50
voidme();
voidopen();
voidmenu();
voidwelcome();
voidzfpx(structstu*ps,intn);
voidcz(structstu*ps,intn);
voidxg(structstu*ps,intn);
voiddel(structstu*ps,intn);
voidscan(structstu*ps,intn);
voidxhpx(structstu*ps,intn);
voidprint(structstu*ps,intn);
floatsum(structstu*ps,intn,inti);
intnumber(structstu*ps,intn,charnu[]);
staticintmount=0;
structstu
{
charname[20];
charnum[20];
charsex[5];
intage;
floatscore[7];
floataver;
floatsum;
}temp;
voidmain()
welcome();
menu();
}
voidmenu()
system("
cls"
);
open();
me();
voidme()
staticstructstust[N];
FILE*fp;
intselect,n;
printf("
\n\t\t┏━━━━━━━━━━┓\n"
\t\t┣━━学生管理系统━━┫"
\n\t\t┗━━━━━━━━━━┛\n"
\n\t\t┏━━━━━━━━━━━━━━━━━━━━━━━━┓"
\n\t\t┃¤
¤
¤
┃"
\n\t\t┃¤
┏━━━━━━━━━━┓¤
┃"
┃┏━━━━━━━━┓┃¤
┃┃⒈成绩初始化┃┃¤
┃┃⒉学生成绩排序┃┃¤
┃┃⒊查找学生成绩┃┃¤
┃┃⒋显示学生数据┃┃¤
┃┃⒌修改成绩┃┃¤
┃┃⒍删除学生信息┃┃¤
┃┃⒎保存数据┃┃¤
┃┃⒏清屏┃┃¤
┃┗━━━━━━━━┛┃¤
┗━━━━━━━━━━┛¤
\n\t\t┗━━━━━━━━━━━━━━━━━━━━━━━━┛\n"
\n\t\t请选择1~8(按其他键退出):
"
scanf("
%d"
&
select);
if(select>
=1&
&
select<
=8)
{
switch(select)
case1:
scan(st,N);
break;
case2:
loop:
排序:
\n⑴.总分\n⑵.学号排序\n⑶.返回\n选择(0~3):
n);
switch(n)
zfpx(st,mount);
\n*⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙按总分排序如下⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙*\n"
print(st,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业