C++课程设计学生选课管理系统说明书.docx

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

C++课程设计学生选课管理系统说明书.docx

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

C++课程设计学生选课管理系统说明书.docx

C++课程设计学生选课管理系统说明书

数学与计算机学院

课程设计说明书

课程名称:

面向对象程序设计-课程设计

课程代码:

8401650

题目:

学生选课管理系统

年级/专业/班:

2009级信科1班

学生姓名:

**************************

学  号:

***************

开始时间:

2010年05月23日

完成时间:

2010年06月20日

课程设计成绩:

学习态度及平时成绩(30)

技术水平与实际能力(20)

创新(5)

说明书撰写质量(45)

总分(100)

指导教师签名:

年月日

摘要

随着计算机的普及,各高校均采用计算机进行学生选课。

而对学生选课相关信息的管理由学生选课管理系统实现。

经过分析其学生选课端和系统管理端的各项功能,利用面向对象的C++编程实现了学生选课管理系统。

该系统选课端具有学生选课、退选课程、查看已选课程、打印选课信息等功能,而管理端具有对学生、教师、备选课程等信息的管理,主要包括增加,删除,查看等功能。

关键词:

学生选课管理系统计算机面向对象C++

1引言

1.1问题的提出

我国高校都实行了学分制,其核心就是允许学生自由选课,自主权交给学生。

如果选课能够通过计算机实现,那么就可以节约很多的人力、物力。

因此,为学生选课提供一个好的系统不仅方便学校对学生选课的管理,也方便学生自由选课。

所以,针对此问题有必要做一个学生选课管理系统软件。

1.2任务与分析

学生选课管理系统实现对学生选课相关信息的管理,能处理学生、教师、课程信息的管理及选课操作。

1.每个学生包括有学号、姓名、总学分等内容;

2.每个教师包括工作证号、姓名、职称等信息;

3.课程包括课程号、课程名、任课教师、学分等信息;

4.能提供若干门课,由学生进行选择,打印出学生选课情况。

本课题主要的目的是通过面向对象的C++编程,实现学生选课管理系统对学生选课相关信息的管理,能处理学生、教师、课程信息的管理及选课操作。

其中每个学生包括有学号、姓名、已选课程和总学分;每个教师包括工作证号、姓名、职称等信息;课程包括课程号、课程名、任课教师、学分等信息;最终要实现能通过管理端提供若干门课,供学生进行选择,退选,并打印出学生选课情况。

在功能实现的基础上,还要设计出良好的界面。

2程序的主要功能

2.1添加功能

这是系统管理端的一个功能,主要是对学生、课程和教师的增加。

其中,学生包括学号、姓名;课程包括课程号、课程名、任课教师和学分;教师包括教师证号、教师姓名、职称。

2.2删除功能

这是系统管理端的一个功能,主要是对学生、课程、教师分别按学号、课程号、教师证号进行删除。

2.3查看功能

在系统管理端,可以分别显示所有学生、课程、教师的信息以供查看。

在学生选课端,则可以查看学生的已选课程。

2.4选课功能

这是学生选课端的一个功能,学生通过输入课程号选课,并在选课同时可以查看课程及任课教师的信息。

2.5退选功能

这是学生选课端的一个功能,学生通过输入课程号退选课程。

2.6打印功能

这是学生选课端的一个功能,学生可以打印出选课的所有信息,包括学号,姓名,已选课程和已选课程的总学分等信息。

3程序运行平台

VC++6.0。

具体操作如下:

打开VC++6.0,新建一个空工程,添加相应的源文件,再编译,链接,执行。

4总体设计

图4.1系统总体框架图

5程序类的说明

∙subject类的声明

classsubject//课程信息类

{Course*head;//头指针

Course*p;//当前指针

public:

subject(){head=p=NULL;};

voidAdd();//增加课程

voidDelete();//删除课程

intSearch(charnu[]);//根据课程号查找课程

voidReadFile();//从文件中读取课程信息

voidWriteFile();//向文件写入课程信息

voidDisplay();//在屏幕中输出全部课程信息

friendXS;

friendJS;

friendvoidxuanke(XSP,charnu[],charna[]);

};

∙JS类的声明

classJS//教师信息类

{Teacher*head;//头指针

Teacher*p;//当前指针

public:

JS(){head=p=NULL;};

voidAdd();//增加教师

voidDelete();//删除教师

voidSearch(charna[]);//通过教师姓名查找任课教师

intSearch1(charnu[]);//通过教师号查找教师

voidReadFile();//从文件中读取教师信息

voidWriteFile();//向文件写入教师信息

voidDisplay();//在屏幕中输出全部教师信息

friendXS;

};

∙stu类的声明

classstu//学生信息类

{Student*head;//头指针

Student*p;//当前指针

public:

stu(){head=p=NULL;};

voidAdd();//增加学生

voidDelete();//删除学生

intSearch(charnu[],charna[]);//按学生学号和姓名查找

intSearch(charnu[]);//按学生学号查找

voidReadFile();//将所有学生的信息写入文件

voidWriteFile();//从文件读出学生信息

voidDisplay();//显示所有学生

friendXS;

};

∙XS类的声明

classXS//学生类

{charnum[10];//学号

charname[20];//姓名

Course*head;//已选课程头指针

Course*p;//已选课程当前指针

floattcredit;//已选课程总学分

public:

XS(){head=p=NULL;tcredit=0;};

voidset(charnu[],charna[])

{strcpy(num,nu);strcpy(name,na);};

voidAddcourse(charnu[]);//学生选课

intSearch(charnu[]);//按课程号查找以选课程

voidDeletecourse(charnu[]);//退选

voidShowcourse();//显示已选课程

floatget_tcredit();//获取已选课程总学分

voidReadFilecourse();//读取已选课程

voidWriteFilecourse();//将已选课程写入文件

friendvoidtuixuan(XSP,charnu[],charna[]);

};

6模块分析

6.1选课端登录验证模块

在主菜单选择1时,便进入选课端登录验证,该模块会提示用户输入学号(nu[10])和姓名(na[20]),当输入完成后,调用intstu:

:

Search(nu,na);,当返回值为0,则输出提示信息“对不起,学号或姓名输入错误!

按任意键返回..”,然后返回主菜单;当返回值为1,则登录学生选课系统。

关键代码如下:

P0:

intb1,b2,b0=menu();

stup1;subjectp2;JSp3;XSp;

if(b0==1)

{system("cls");

p1.ReadFile();

charnu[10],na[20];

cout<<"\n\n\t\t请输入您的学号:

";cin>>nu;

cout<<"\n\n\t\t请输入您的姓名:

";cin>>na;

if(p1.Search(nu,na)==0)

{cout<<"\n\n\t\t对不起,学号或姓名输入错误!

按任意键返回..";

getchar();getchar();gotoP0;}

else

{P1:

b1=menu1();

6.2学生选课端选课模块

在学生选课系统中选择1,进入选课模块。

此时调用voidxuanke(XSP,charnu[],charna[]);函数,此函数首先调用subject:

:

ReadFile();subject:

:

Display();将所有的课程输出来,并提示“请输入要选择的课程号:

”,然后输入课程号(kh[10]),此时会提示“是否查看任课教师信息(y/n):

”,输入y,将输出任课教师信息,如果没有此教师信息,输出“没有此任课教师的信息!

”,当输入n,则不输出教师信息。

此时调用XS:

:

Addcourse(kh);选课,再输出“是否继续选课(y/n):

”如输入y,重复以上选课操作,当输入n,则调用XS:

:

WriteFilecourse();保存已选课程。

关键代码如下:

voidxuanke(XSP,charnu[],charna[])//选课功能函数

{system("cls");

JSJ;

J.ReadFile();

subjectsub;

sub.ReadFile();

sub.Display();

P.set(nu,na);

P.ReadFilecourse();

Loop1:

cout<<"请输入要选择的课程号:

";

charkh[10];

cin>>kh;

cout<<"是否查看任课教师信息(y/n):

";

charY_N;

Loop3:

cin>>Y_N;

if(Y_N=='Y'||Y_N=='y')

{chart[20];

Course*kc=sub.head;

while(kc!

=NULL)

{if(strcmp(kc->um,kh)==0)break;

kc=kc->next;

}

if(kc!

=NULL)

{strcpy(t,kc->kecheng.cteacher);

J.Search(t);

}

else

cout<<"没有此任课教师的信息!

"<

}

else

if(Y_N!

='N'&&Y_N!

='n')

{cout<<"输入不正确,请重新输入:

";gotoLoop3;}

P.Addcourse(kh);

getchar();

cout<<"\n\t是否继续选课(y/n):

";

Loop2:

cin>>Y_N;

if(Y_N=='Y'||Y_N=='y')gotoLoop1;

else

if(Y_N=='N'||Y_N=='n')P.WriteFilecourse();

else

{cout<<"输入不正确,请重新输入:

";gotoLoop2;}

getchar();

cout<<"按任意键继续....";

getchar();

}

6.3学生选课端退选课程模块

在学生选课系统中选择2,进入退选课程模块,由voidtuixuan(XSP,charnu[],charna[]);函数完成。

首先调用XS:

:

ReadFilecourse();和XS:

:

Showcourse();输出已选课程,然后提示“请输入要退选的课程号:

”,此时可输入课程号(kh[10]),在调用XS:

:

Deletecourse(kh);XS:

:

WriteFilecourse();退选课程并保存。

此后会提示“是否继续退选课程(y/n):

”输入y,重复退课操作,输入n,则退出此模块。

关键代码如下:

voidtuixuan(XSP,charnu[],charna[])//退选课程功能函数

{system("cls");

P.set(nu,na);

P.ReadFilecourse();

Loop3:

if(P.head!

=NULL)

{system("cls");

P.Showcourse();

cout<<"请输入要退选的课程号:

";

charkh[10];

cin>>kh;

P.Deletecourse(kh);

P.WriteFilecourse();

getchar();

cout<<"是否继续退选课程(y/n):

";

charY_N;

Loop4:

cin>>Y_N;

if(Y_N=='Y'||Y_N=='y')gotoLoop3;

else

if(Y_N!

='N'&&Y_N!

='n')

{cout<<"输入不正确,请重新输入:

";gotoLoop4;}

}

elsecout<<"\n\n\t\t没有已选课程,不能退选!

"<

getchar();

cout<<"按任意键继续....";

getchar();

}

6.4学生选课端查看已选课程模块

在学生选课系统中选择3,进入查看已选课程模块,由函数voidlookyixuan(XSP,charnu[],charna[]);实现。

通过调用XS:

:

ReadFilecourse();XS:

:

Showcourse();显示已选课程。

关键代码如下:

voidlookyixuan(XSP,charnu[],charna[])//查看学生已选课程函数

{system("cls");

P.set(nu,na);

P.ReadFilecourse();

P.Showcourse();

getchar();

cout<<"按任意键继续....";

getchar();

}

6.5学生选课端打印模块

在学生选课系统中选择4,进入打印模块,由函数voiddayin(XSP,charnu[],charna[]);实现。

先输出学生的信息,再调用XS:

:

Showcourse();输出已选课程,最后调用P.get_tcredit();输出总学分。

关键代码如下:

voiddayin(XSP,charnu[],charna[])//打印学生选课情况函数

{system("cls");

P.set(nu,na);

P.ReadFilecourse();

system("cls");

cout<<"学号:

"<

"<

cout<<"已选课程:

"<

P.Showcourse();

cout<<"已选课程总学分:

"<

getchar();

getchar();

cout<<"按任意键继续....";

getchar();

}

6.6管理员密码验证模块

在主菜单中选择2,进入管理员密码验证。

通过函数voidpassword();实现。

首先提示输入管理员密码,再由用户输入密码,正确则进入选课系统管理端,错误则提示重新输入。

如果错误输入超过3次,就强制退出。

关键代码如下:

voidpassword()//密码检查功能函数

{intk=0,i;

charA[]="000000",B[10],a;

system("cls");

for(i=0;i<6;i++)

cout<

printf("\t\t\t请输入管理员密码:

");

while(k<=2)

{i=0;

while

(1)

{a=getch();

if(a==13)break;

B[i]=a;

i++;

printf("*");

}

B[i]='\0';

if(strcmp(A,B)==0)return;

else

{k++;

if(k<3)

cout<<"\n\n\t\t\t密码错误!

请重新输入:

";

}

if(k>=3)

{cout<<"\n\n\t\t\t输入错误密码超过三次!

请按任意键退出..";

getch();

tuichu();

}}}

6.7管理端添加模块

该模块是对学生,课程,教师的增加操作。

由于三者功能相同,故通过函数模板templatevoidADD(TP);实现。

首先询问增加多少个(学生,课程,教师),再输入个数。

然后对每一个对象的详细信息进行输入。

如果已经存在该信息,则提示不能重复添加。

输入完成后保存到文件中。

关键代码如下:

template//增加功能函数模板

voidADD(TP)

{system("cls");

P.ReadFile();

intN,i;

cout<<"请问您需要增加几个:

";

cin>>N;

for(i=0;i

{cout<<"第"<

"<

P.Add();

cout<

P.WriteFile();

getchar();

cout<<"按任意键继续....";

getchar();

}

6.8管理端查看模块

该模块是对学生,课程,教师的查看操作。

由于三者功能相同,故通过函数模板templatevoidLOOK(TP);实现。

调用各自的Display();函数,将所有信息输出。

关键代码如下:

template//查看功能函数模板

voidLOOK(TP)

{system("cls");

P.ReadFile();

P.Display();

getchar();

cout<<"按任意键继续....";

getchar();

}

6.9管理端删除模块

该模块是对学生,课程,教师的删除操作。

由于三者功能相同,故通过函数模板templatevoidDELETE(TP);实现。

首先输出(学生,课程,教师)所有信息,再调用各自的Delete();函数将对象删除。

最后将删除后的信息保存到文件中。

关键代码如下:

template//删除功能函数模板

voidDELETE(TP)

{system("cls");

P.ReadFile();

P.Display();

P.Delete();

P.WriteFile();

getchar();

cout<<"按任意键继续....";

getchar();

}

7系统测试

首先进入VC++6.0,打开工程“选课管理系统.dsw”,进入源程序运行。

运行程序后出现主菜单界面,如图7.1。

图7.1主菜单

输入“2”,进入管理员密码验证(管理员密码:

“000000”)。

当输入错误密码三次,如图7.2所示,输入正确密码就进入“选课管理系统”菜单界面,如图7.3所示。

图7.2错误密码验证

图7.3选课系统管理端菜单

输入“1”,进入增加学生界面。

再输入“4”,增加4个学生。

再根据提示输入学生相关信息,到第4个时输入第1个学生的学号,第4个学生将不能被添加,如图7.4。

图7.4增加学生

按任意键后,回到管理端菜单,输入“2”,查看所有学生信息,如图7.5所示。

图7.5查看所有学生

按任意键后,回到管理端菜单,输入“3”,进入删除学生界面,输入要删除的学生学号“*****”,完成对学生“zhangxiong”的删除,如图7.6。

当输入的学号没有时,如图7.7所示。

再查看学生,确认删除操作成功,如图7.8。

图7.6删除学生

图7.7删除的学生不存在

图7.8查看删除后的所有学生

按任意键返回选课管理菜单,输入“4”,进入增加课程界面。

再输入“4”,增加4门课程。

再根据提示输入课程相关信息,到第4个时输入第1个课程的课程号,第4个课程将不能被添加,如图7.9所示。

图7.9增加课程

按任意键返回管理端菜单,输入“5”,查看所有课程信息,如图7.10所示。

图7.10查看课程

按任意键回到管理端菜单,输入“6”,进入删除课程界面,输入要删除的课程号“10002”,此时没有此课程,如图7.11。

当输入的课程号“20002”时,如图7.12所示。

再查看课程,确认删除操作成功,如图7.13。

图7.11删除的课程不存在

图7.12删除课程

图7.13查看删除后的所有课程

按任意键返回选课管理菜单,输入“7”,进入增加教师界面。

再输入“4”,增加4名教师。

再根据提示输入教师相关信息,到第4个时输入第2个教师的教师号,第4个教师将不能被添加,如图7.14所示。

图7.14增加教师

按任意键返回管理端菜单,输入“8”,查看所有教师信息,如图7.15所示。

图7.15查看教师

按任意键回到管理端菜单,输入“9”,进入删除教师界面,输入要删除的教师证号“10000”,此时没有此教师,如图7.16。

当输入的课程号“30002”时,如图7.17所示。

再查看教师,确认删除操作成功,如图7.18。

图7.16删除的教师不存在

图7.17删除教师

图7.18查看删除后的所有教师

按任意键回到管理端菜单(可以在此再增加一些课程,教师等,以供选课时有更多的选择),输入“0”,返回主菜单,再输入“1”,进入学生选课系统登录界面,输入的学号和姓名不存在或不匹配,则如图7.19;输入的学号和姓名存在且匹配,则进入选课端菜单,如图7.20。

图7.19学生选课系统错误登录

图7.20学生选课系统菜单

在选课系统菜单中输入“1”,进入选课。

分别输入“20001”、“20002”、“20003”、“123456”测试选课。

如图7.21。

图7.21学生选课

按任意键返回选课系统菜单,输入“3”,查看已选课程,如图7.22。

图7.22查看已选课程

按任意键返回选课系统菜单,输入“4”,打印选课信息,如图7.23。

图7.23打印选课信息

按任意键返回选课系统菜单,输入“2”,进入退选课程界面。

输入“54321”,没有此课程,如图7.24,再输入“y”,然后输入“20002”,删除课程“Chinese”,如图7.25所示。

再输入“n”,返回选课系统菜单,输入“3”,查看退选课程后的已选课程,确认是否被删除,如图7.26。

图7.24退选的课程不存在

图7.25退选课程

图7.26退选课程后查看已选课程

按任意键返回,输入“0”,返回主菜单,再输入“0”,退出系统,如图7.27。

图7.27退出系统

通过上述测试,本系统实现了对学生、教师、课程的管理功能和学生自主选课、退选和打印选课信息等功能,能避免询问时对“y”和“n”的输入错误,从界面(下拉菜单)方面来说,也方便实用。

所以,此系统功能全部实现,符合要求。

 

8结论

刚拿到课程设计任务书时,我看了一下题目及要求,感觉这个课程设计很简单。

但是,到我开始做时,才发觉我学的知识太少,对链表,指针的应用显得特别的

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

当前位置:首页 > 表格模板 > 书信模板

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

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