学生管理系统报告C++文档格式.docx
《学生管理系统报告C++文档格式.docx》由会员分享,可在线阅读,更多相关《学生管理系统报告C++文档格式.docx(45页珍藏版)》请在冰豆网上搜索。
![学生管理系统报告C++文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/27/ff884ad1-eace-40a7-b4e2-4d93f7fdc987/ff884ad1-eace-40a7-b4e2-4d93f7fdc9871.gif)
三、课程设计工作量
四、课程设计工作计划
2011年6月13日,指导教师讲课,学生根据题目准备资料;
2011年6月14日、15日、16日,总体方案设计;
完成程序模块并通过独立编译;
2011年6月17日~2011年6月24日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;
同时撰写报告。
2011年6月24日,验收;
提交课程设计报告。
指导教师签章:
教研室主任签章
面向对象程学设计课程设计指导教师评语与成绩
指导教师评语:
课程设计表现成绩:
课程设计验收成绩:
课程设计报告成绩:
课程设计总成绩:
指导教师签章
2011年6月27日
第1章需求分析
1.1性能需求
程序开发环境:
MicrosoftVisualC++6.0
1.2功能需求
我们组研究的是适用于高校的学生成绩管理系统。
该系统实现的功能:
1.录入信息
2.删除信息
3.修改信息
4.插入信息
5.信息显示
6.清空信息
7.信息查询
8.退出系统
创建结构体:
Stu
结构体成员:
Num学号
Name名字
Sex性别
Class班级
English英语
Math数学
CC++
创建类:
Student学生类
Teacher教师类
成员函数:
Save存储信息
Add录入信息
Display显示信息
Mana管理类
Mima密码
外加其他界面函数;
程序涉及到的知道点:
①类②构造函数③指针④switch语句⑤while语句⑦动态内存分配⑥if语句·
·
第2章概要设计
2.1功能模块设计
学生管理系统
图1模块设计图
一个方便学校使用的学生管理系统,这个系统的功能比较完善。
使用类内函数和主函数中的switch语句实现多分支选择结构,进而实现该系统的各项功能。
该系统能实现8项功能。
设计本次实验所用到的知识点有:
类、指针、数组,构造函数,for语句,switch语句、if语句、while()语句等。
2.2类的分析与设计
1.结构体Stu创建一个学生信息结构;
2.类Student:
主要功能是给每一个学生添加信息,用于结构体的数据项赋值;
3.类Teacher:
通过继承Student类类实现,外加用于各个动作功能的具体实现
1)添加信息Add()函数
2)修改信息Modi()函数
3)删除信息Delete()函数
3)清空信息Clear()函数
4)输入信息In()函数
5)储存信息Save()函数
6)显示信息Display()函数
4.类Mana:
内有Mima数据成员,用于教师的登录验证。
*注意:
学生只有信息查询和查看功能
第3章详细设计
3.1信息录入功能模块设计
3.1.1详细功能描述
该部分用来添加学生相关信息
3.1.2设计思想:
在主菜单中选定该项,然后系统会要求用户录入信息。
在所有信息录入完毕之后,系统自动将信息保存至文件,以便以后调用。
3.1.3程序流程图:
图2信息录入流程
3.1.4主要代码:
voidTeach:
:
Add()
{
intn;
inti,j;
charN;
StuA_Xinxi[100];
while(N!
='
n'
&
&
N!
N'
)
{
N='
t'
;
ifstreamf1("
f:
//Xinxi.txt"
);
cout<
<
"
请输入添加信息:
endl;
for(n=0;
!
f1.eof();
n++)
f1.read((char*)&
A_Xinxi[n],sizeof(Stu));
请输入学号:
"
cin>
>
A_Xinxi[n-1].Num;
请输入姓名:
A_Xinxi[n-1].Name;
请输入性别:
cin>
A_Xinxi[n-1].Sex;
请输入成绩:
A_Xinxi[n-1].Class;
请输入年龄:
A_Xinxi[n-1].English;
请输入民族:
A_Xinxi[n-1].Math;
请输入家庭地址:
A_Xinxi[n-1].C;
for(i=0;
i<
n-1;
i++)
for(j=0;
j<
n-1-i;
j++)
if(A_Xinxi[j].Num>
A_Xinxi[j+1].Num)
{
A_Xinxi[99]=A_Xinxi[j];
A_Xinxi[j]=A_Xinxi[j+1];
A_Xinxi[j+1]=A_Xinxi[99];
}
ofstreamf2("
ios:
trunc);
=n-1;
f2.write((char*)&
A_Xinxi[i],sizeof(Stu));
f2.close();
是否继续添加?
y\\n"
cin>
N;
}
}
3.2信息查询功能模块设计
3.2.1详细功能描述
该部分是用来查找已经输入过的学生信息。
3.2.2设计思想:
查找的方法分为两种:
①通过学号查找②通过姓名查找。
如果输入的不是以上的关键字的话,屏幕上就会出现“无此信息”这几个字,提醒用户输入出现了错误,可重新输入。
该部分通过if语句和switch语句实现其功能。
3.2.3程序流程图:
图3信息查询流程
3.2.4主要代码:
Sear()
ints_Num;
intselect;
charName[10];
intx;
search_Menu();
while(select!
=3)
{
请输入选择:
select;
if(select==1)
{
cout<
cin>
s_Num;
ifstreamf1("
for(x=0;
s_Num!
=Xinxi.Num&
x++)
{
f1.seekg(x*sizeof(Stu),ios:
beg);
f1.read((char*)&
Xinxi,sizeof(Xinxi));
if(f1.eof())
cout<
无此信息"
}
if(s_Num==Xinxi.Num)
Save();
f1.close();
}
elseif(select==2)
cin>
Name;
*Name!
=*Xinxi.Name&
x<
50&
if(*Name==*Xinxi.Name)
elseif(select==3)
break;
elsecout<
错误!
请正确输入(1~3)"
3.3信息修改功能模块设计
3.3.1详细功能描述:
该部分是用来修改已录入的学生的数据信息。
3.3.2设计思想:
修改的方法分为两种:
①通过学号修改②通过姓名修改。
如果输入的不是以上的关键字的话,屏幕上就会出现“无此信息”这几个字
该部分通过if语句、switch语句和while语句实现其功能。
3.3.3程序流程图:
图4信息修改流程图
3.3.4主要代码:
Modi()
intr_select=0;
charName[10]={7,8,9};
intL=0;
Replace_Menu();
while(r_select!
=3)
r_select;
N=0;
while(N!
r_select!
ifstreamf1("
if(r_select==1)
{
cout<
cin>
for(x=0;
{
f1.seekg(x*sizeof(Stu),ios:
f1.read((char*)&
if(f1.eof())
{
cout<
L=1;
}
}
if(s_Num==Xinxi.Num)
Save();
}
if(r_select==2)
cin>
if(*Name==*Xinxi.Name)
if(r_select>
3)cout<
请正确输入"
f1.close();
if(!
L&
(r_select==1||r_select==2))
set_Xinxi();
ofstreamf1("
out|ios:
in);
f1.seekp((x-1)*sizeof(Stu),ios:
f1.write((char*)&
get_Xinxi(),sizeof(get_Xinxi()));
f1.close();
L=0;
cout<
是否继续修改信息?
(Y\\N)"
cin>
if(r_select==3)break;
3.4信息清空功能模块设计
3.4.1详细功能描述:
该模块主要功能为清空所有输入信息。
3.4.2设计思想:
用TRUCK方式打开文件,自动将其中文件字节数归零,达到内容清空的目的。
3.4.3程序流程图:
图5清空流程
3.4.4主要代码:
Clear()
ofstreamf1("
f1.close();
cout<
清除完毕!
3.5信息删除功能模块设计
3.5.1详细功能描述:
该模块主要用来删除不用的学生相关信息。
3.5.2设计思想:
读文件,找到相关信息所在的文件指针,并记录所有信息。
然后写入将文件清空,并写入除了要删除信息外的所有信息。
3.5.3程序流程图:
图6删除信息流程
3.5.4主要代码:
Dele()
StuD_Xinxi[100];
intD_n;
intD_max;
Dele_Menu();
ifstreamf1("
读取信息中"
for(D_n=0;
D_n++)
f1.read((char*)&
D_Xinxi[D_n],sizeof(Stu));
D_max=D_n-2;
ofstreamf2("
ios:
trunc);
删除信息中"
D_n<
=D_max;
{
if(D_n==(x-1))
continue;
f2.write((char*)&
f2.close();
删除成功"
是否继续删除信息?
3.6信息插入功能模块设计
3.6.1详细功能描述:
该模块主要功能是按照学号的大小对信息进行插入。
3.6.2设计思想:
读出所有信息,然后接受要存入的信息,用冒泡法对学号进行排序,然后按顺序存入信息。
3.6.3程序流程图:
图7信息插入流程
3.6.4主要代码:
3.7信息显示功能模块设计
3.7.1详细功能描述:
该模块的主要功能是按学号显示所有录入了的学生的信息。
3.7.2设计思想:
打开文件,读出所有信息,将信息按学号排序,然后显示信息。
3.7.3程序流程图:
图8显示信息流程
3.7.4主要代码:
Display()
ifstreamf1("
for(n=0;
f1.read((char*)&
for(i=0;
for(j=0;
n-1-i