学生成绩管理系统设计及使用说明文档格式.docx

上传人:b****5 文档编号:20189078 上传时间:2023-01-17 格式:DOCX 页数:48 大小:661.40KB
下载 相关 举报
学生成绩管理系统设计及使用说明文档格式.docx_第1页
第1页 / 共48页
学生成绩管理系统设计及使用说明文档格式.docx_第2页
第2页 / 共48页
学生成绩管理系统设计及使用说明文档格式.docx_第3页
第3页 / 共48页
学生成绩管理系统设计及使用说明文档格式.docx_第4页
第4页 / 共48页
学生成绩管理系统设计及使用说明文档格式.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统设计及使用说明文档格式.docx

《学生成绩管理系统设计及使用说明文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统设计及使用说明文档格式.docx(48页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统设计及使用说明文档格式.docx

按学生姓名查找:

按学生学号查找:

修改学生成绩:

删除学生成绩:

然后对管理员、教师、学生共有功能(排序学生成绩、查看各科以及总分平均成进行调试:

查看平均成绩:

最后对扩展功能(管理员安排必修课程、学生选择选修课程)进行调试:

在没有任何必修课程安排情况下管理员显示:

学生显示:

在没有安排必修课程的情况下,学生无法选择选修课程(因为选修要选在必修课的空白处):

管理员可对周一至周五的课程进行安排:

课程安排成功之后自动保存在本地磁盘,学生、教师、管理员均可,即使关闭程序,再次打开也可以查看

必修课程安排好之后,学生可以根据空白课程处选择自己的选修课程,发生时间冲突会自动提醒重新选择时间

五、反思总结

1.程序仍然不是十分简洁,虽然采用了函数调用、类定义等方法,但是由于运用不是很熟练,一些地方还是出现了重复,如输出安排课表的函数;

2.对链表的运用不是非常熟悉,虽然在保存学生成绩以及排序成绩的函数中采用了链表的形式,但是对于选课保存函数,由于难以单独调用链表中某一数据,采用了数组的形式;

3.一些细节没有完善。

考虑到程序的简洁性,一些地方没有设计输入错误的提示。

不过必要的地方还是有的,比如说选课函数,如果选择的课程不存在会提示重新选择。

六、程序附录

#include<

iostream>

fstream>

string.h>

#include<

conio.h>

//用getch();

usingnamespacestd;

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

classStudent{

public:

charname[20];

charId[20];

intCnum;

//C课程得分

intMnum;

//数学课程得分

intEnum;

//英语课程得分

intsum;

//总分

Student*Next;

voidInput(){

cout<

<

"

\t\t请输入学生的姓名:

;

cin>

>

name;

\t\t请输入学生的学号:

Id;

\t\t请输入C课程的成绩:

Cnum;

\t\t请输入数学课程的成绩:

Mnum;

\t\t请输入英语课程的成绩:

Enum;

sum=Cnum+Mnum+Enum;

}

voidReadFile(istream&

in){

in>

name>

Id>

Cnum>

Mnum>

Enum>

sum;

voidShow1(){

姓名:

name<

endl<

学号:

Id<

C++:

Cnum<

数学:

Mnum<

英语"

Enum<

总成绩:

sum<

endl;

voidShow2(){

}

voidShow3(){

voidShow4(){

voidShow5(){

英语:

};

//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

classStudentmassage:

publicStudent{

Studentmassage();

~Studentmassage();

voidShowMenu1();

voidShowMenu2();

voidShowMenu3();

voidFind();

voidSave();

voidModifyItem();

voidRemoveItem();

voidSwap(Student*,Student*);

voidSort();

voidUnpass();

intListCount();

voidAverage();

voidGuanlikecheng1();

voidGuanlikecheng2();

voidxianshikecheng();

voidxuanzekecheng();

voidDisplay(){

for(Student*p=Head->

Next;

p!

=End;

p=p->

Next)

p->

Show1();

cout<

输入任意字符!

继续……"

getch();

voidAddItem(){

End->

Input();

Next=newStudent;

End=End->

添加成功!

getch();

private:

Student*Head,*End;

ifstreamin;

ofstreamout;

Student*FindItem(char*name){

for(Student*p=Head;

p->

Next!

Next)//匹配成功则返回上一个指针,不成功就返回空

if(!

strcmp(p->

Next->

name,name))

returnp;

returnNULL;

Student*FindID(char*Id){

for(Student*p=Head;

if(!

Id,Id))returnp;

returnNULL;

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

Studentmassage:

:

Studentmassage(){

Head=newStudent;

Head->

End=Head->

in.open("

chengji.txt"

);

if(!

in)

这是一个新系统,您是首次登陆,无任何学生信息。

else

{

while(!

in.eof())

End->

ReadFile(in);

if(End->

name[0]=='

\0'

)break;

End=End->

in.close();

cout<

\t\t已经从chengji.txt中读取到学生信息!

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

~Studentmassage(){

Save();

for(Student*temp;

Head->

){

temp=Head->

Head->

Next=Head->

deletetemp;

deleteHead,End;

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌学生菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

voidStudentmassage:

ShowMenu1(){

〓〓〓〓〓〓〓〓〓〓☆学生成绩管理系统(学生用)☆〓〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓★★★★★★★★★★★★★★★★★〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆1.显示学生成绩☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆2.排序学生成绩☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆3.查找学生成绩☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆4.查看平均成绩☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆5.查看学期课程☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆6.选择选修课程☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆0.安全退出系统☆★〓〓〓〓〓〓〓〓〓"

\n\t\t\n\t\t请选择:

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌教师菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

ShowMenu2(){

〓〓〓〓〓〓〓〓〓〓☆学生成绩管理系统(教师用)☆〓〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆1.增加学生成绩☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆2.显示学生成绩☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆3.排序学生成绩☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆4.查找学生成绩☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆5.删除学生成绩☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆6.修改学生信息☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆7.查看平均成绩☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆8.显示课程安排☆★〓〓〓〓〓〓〓〓〓"

注意:

务必通过菜单选择“0”关闭系统,否则不能保存学生成绩到chengji.txt"

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌管理员菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

ShowMenu3(){

〓〓〓〓〓〓〓〓〓〓☆学生成绩管理系统(管理员用)☆〓〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆8.管理课程安排☆★〓〓〓〓〓〓〓〓〓"

〓〓〓〓〓〓〓〓〓★☆9.显示课程安排☆★〓〓〓〓〓〓〓〓〓"

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

Find(){

charname[20],Id[10];

intx;

Student*p=NULL;

\n\t\t*********************************\n"

\t\t※1.按学生的姓名查找\n\t\t※2.按学生学号查找"

\n\t\t*********************************\n请选择:

cin>

x;

switch(x){

case1:

{

\t\t请输入要查找的学生的姓名:

if(p=FindItem(name)){

}

else{

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

'

\n'

break;

case2:

\t\t请输入要查找的学生的学号:

if(p=FindID(Id)){

\t\t没有找到该学号的学生!

}

}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查看平均成绩﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

Average()

intA;

请选择需要查看的平均成绩"

1.C++平均成绩\n2.数学平均成绩\n3.英语平均成绩\n4.总分平均成绩"

A;

switch(A){

Student*p=NULL;

intn=Studentmassage:

ListCount();

doubleS=0;

for(p=Head->

Next){

S=S+p->

;

C++全班平均成绩是:

"

S/n<

break;

Student*p=NULL;

数学全班平均成绩是:

case3:

英语全班平均成绩是:

break;

case4:

总分全班平均成绩是:

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

intStudentmassage:

ListCount()//统计当前链表的记录总数,返回一个整数

Head)

return0;

intn=0;

for(Student*p=Head->

Next){n++;

returnn;

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

Swap(Student*p1,Student*p2)//交换两个combox变量的数据域

Student*temp=newStudent;

strcpy(temp->

name,p1->

name);

Id,p1->

Id);

temp->

Cnum=p1->

Mnum=p1->

Enum=p1->

sum=p1->

strcpy(p1->

name,p2->

Id,p2->

p1->

Cnum=p2->

Mnum=p2->

Enum=p2->

sum=p2->

strcpy(p2->

name,temp->

Id,temp->

p2->

Cnum=temp->

Mnum=temp->

Enum=temp->

sum=temp->

Sort()//对当前链表进行成绩排序

请选择需要排序的成绩\n1.C++成绩\n2.数学成绩\n3.英语成绩\n4.总成绩"

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

if(n<

2)

return;

for(p=Head->

for(k=p->

k!

k=k->

Next){

if(p->

sum>

k->

sum){

Studentmassage:

Swap(p,k);

cout<

按总成绩排序完成!

for(p=Head->

Show2();

=End

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

当前位置:首页 > 高中教育 > 小学教育

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

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