学生选课管理系统报告.docx
《学生选课管理系统报告.docx》由会员分享,可在线阅读,更多相关《学生选课管理系统报告.docx(13页珍藏版)》请在冰豆网上搜索。
学生选课管理系统报告
辽宁石油化工大学
计算机与通信工程学院
课程设计说明书
课程名称:
面向对象程序设计1-课程设计
题目:
学生选课系统
年级/专业/班:
软件1001班
学生姓名:
王琳
学 号:
1011030127
指导教师:
石元博
开始时间:
2011年12月05日
完成时间:
2011年12月10日
课设成绩:
摘要3
引言3
1.任务与分析3
2.程序运行平台4
3.系统设计4
4.系统实现4
4.1课程类的声明4
4.2教师类的声明5
4.3学生类的声明6
4.4主要实现7
4.4.1选课端验证7
4.4.2选课端8
4.4.3退选课程10
4.4.4查看选课12
4.4.5密码验证12
4.4.6选课端添加14
4.4.7选课端删除14
4.4.8管理员查看15
5.结论15
摘要
随着计算机的普及,各高校均采用计算机进行学生选课。
而对学生选课相关信息的管理由学生选课管理系统实现。
经过分析其学生选课端和系统管理端的各项功能,利用面向对象的C++编程实现了学生选课管理系统。
该系统选课端具有学生选课、退选课程、查看已选课程、打印选课信息等功能,而管理端具有对学生、教师、备选课程等信息的管理,主要包括增加,删除,查看等功能。
引言
1.任务与分析
学生选课管理系统实现对学生选课相关信息的管理,能处理学生、教师、课程信息的管理及选课操作。
1.每个学生包括有学号、姓名、总学分等内容;
2.每个教师包括工作证号、姓名、职称等信息;
3.课程包括课程号、课程名、任课教师、学分等信息;
4.能提供若干门课,由学生进行选择,打印出学生选课情况。
本课题主要的目的是通过面向对象的C++编程,实现学生选课管理系统对学生选课相关信息的管理,能处理学生、教师、课程信息的管理及选课操作。
其中每个学生包括有学号、姓名、已选课程和总学分;每个教师包括工作证号、姓名、职称等信息;课程包括课程号、课程名、任课教师、学分等信息;最终要实现能通过管理端提供若干门课,供学生进行选择,退选,并打印出学生选课情况。
在功能实现的基础上,还要设计出良好的界面。
2.程序运行平台
VC++6.0。
具体操作如下:
打开VC++6.0,新建一个空工程,添加相应的源文件,再编译,链接,执行。
3.系统设计
学生选课管理系统:
(1)学生选课端{选择课程、退选课程、查看已选课程、返回主菜单、退出系统}
(2)系统管理端:
管理员验证:
{增加学生、查看所有学生、删除学生、增加课程、查看所有课程、删除课程、增加教师、查看所有教师、删除教师、返回主菜单、退出系统}
(3)退出系统
4.系统实现
4.1课程类的声明
classsubject//课程信息类
{Course*head;//头指针
Course*p;//当前指针
public:
subject(){head=p=NULL;};
voidAdd();//增加课程
voidDelete();//删除课程
intSearch(charnu[]);//根据课程号查找课程
voidReadFile();//从文件中读取课程信息
voidWriteFile();//向文件写入课程信息
voidDisplay();//在屏幕中输出全部课程信息
friendXS;
friendJS;
friendvoidxuanke(XSP,charnu[],charna[]);
};
4.2教师类的声明
classJS//教师信息类
{Teacher*head;//头指针
Teacher*p;//当前指针
public:
JS(){head=p=NULL;};
voidAdd();//增加教师
voidDelete();//删除教师
voidSearch(charna[]);//通过教师姓名查找任课教师
intSearch1(charnu[]);//通过教师号查找教师
voidReadFile();//从文件中读取教师信息
voidWriteFile();//向文件写入教师信息
voidDisplay();//在屏幕中输出全部教师信息
friendXS;
};
4.3学生类的声明
classstu//学生信息类
{Student*head;//头指针
Student*p;//当前指针
public:
stu(){head=p=NULL;};
voidAdd();//增加学生
voidDelete();//删除学生
intSearch(charnu[],charna[]);//按学生学号和姓名查找
intSearch(charnu[]);//按学生学号查找
voidReadFile();//将所有学生的信息写入文件
voidWriteFile();//从文件读出学生信息
voidDisplay();//显示所有学生
friendXS;
};
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[]);
};
4.4主要实现
4.4.1选课端验证
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();
4.4.2选课端
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();
}
4.4.3退选课程
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();
}
4.4.4查看选课
voidlookyixuan(XSP,charnu[],charna[])//查看学生已选课程函数
{system("cls");
P.set(nu,na);
P.ReadFilecourse();
P.Showcourse();
getchar();
cout<<"按任意键继续....";
getchar();
}
4.4.5密码验证
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();
}}}
4.4.6选课端添加
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();
}
4.4.7选课端删除
template//删除功能函数模板
voidDELETE(TP)
{system("cls");
P.ReadFile();
P.Display();
P.Delete();
P.WriteFile();
getchar();
cout<<"按任意键继续....";
getchar();
}
4.4.8管理员查看
template//查看功能函数模板
voidLOOK(TP)
{system("cls");
P.ReadFile();
P.Display();
getchar();
cout<<"按任意键继续....";
getchar();
}
5.结论
对于这次的课程设计任务,我感觉自己完成的不是太好。
在做报告的过程中,我发现我学的知识太少了,对链表,对指针的应用显得特别的生疏,频繁出错。
知道快完成时才发现好多功能无法实现,我有点灰心丧气,有时候想要放弃不写了。
可是这是我应该学习的,我不应该放弃。
后来,我经过几天的调试和请教,终于下定决心重新再来写一次。
通过网络和翻阅书籍,我又学到了很多东西,最终有了清晰地思路去完成“学生选课管理系统”的设计和编程。
经过多次的删改,终于实现了其基本功能,但是还不够完善,我又请教了几个同学,接受了她们的一些建议,对程序进行了完善。
可能由于现在知识能力的限制,程序还存在些许不足,有待改进的地方还很多,比如对程序运行时内存空间的清理做的不是很好。
通过本次的课程设计,让我体会到了自己做出一个软件后的乐趣,让我对C++充满了好奇心和无比的兴趣。
除此之外,这次的课程设计也增加了我学习计算机编程的信心。
在今后的学习中,我会更加努力地去学习,学习在C++课程设计里体现的知难而进,不耻下问,主动积极,持之以恒的态度,今后我的成绩也会越来越好。