学生选课系统C++.docx

上传人:b****1 文档编号:13860961 上传时间:2023-06-18 格式:DOCX 页数:23 大小:41.96KB
下载 相关 举报
学生选课系统C++.docx_第1页
第1页 / 共23页
学生选课系统C++.docx_第2页
第2页 / 共23页
学生选课系统C++.docx_第3页
第3页 / 共23页
学生选课系统C++.docx_第4页
第4页 / 共23页
学生选课系统C++.docx_第5页
第5页 / 共23页
学生选课系统C++.docx_第6页
第6页 / 共23页
学生选课系统C++.docx_第7页
第7页 / 共23页
学生选课系统C++.docx_第8页
第8页 / 共23页
学生选课系统C++.docx_第9页
第9页 / 共23页
学生选课系统C++.docx_第10页
第10页 / 共23页
学生选课系统C++.docx_第11页
第11页 / 共23页
学生选课系统C++.docx_第12页
第12页 / 共23页
学生选课系统C++.docx_第13页
第13页 / 共23页
学生选课系统C++.docx_第14页
第14页 / 共23页
学生选课系统C++.docx_第15页
第15页 / 共23页
学生选课系统C++.docx_第16页
第16页 / 共23页
学生选课系统C++.docx_第17页
第17页 / 共23页
学生选课系统C++.docx_第18页
第18页 / 共23页
学生选课系统C++.docx_第19页
第19页 / 共23页
学生选课系统C++.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生选课系统C++.docx

《学生选课系统C++.docx》由会员分享,可在线阅读,更多相关《学生选课系统C++.docx(23页珍藏版)》请在冰点文库上搜索。

学生选课系统C++.docx

学生选课系统C++

 

一、需求分析

选课在大学生活中是必不可少的,为了能让学生们更加便利的查看并选择各种课程,自然就需要一个网络结构,建立一个选课系统,这样可以方便管理学生和课程等内容。

二、程序的主要功能

1、添加功能:

添加课程以及学生的各类信息保存到一个文件中。

2、删除功能:

能够对一个学生或课程的信息按照编号进行删除。

3、浏览功能:

可以查看学生信息课程信息以及学生的选课信息。

4、选课功能:

学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。

5、修改功能:

用于修改错误的学生信息或者课程信息。

三、程序运行平台

Windows8.1操作系统

VC++6.0

四、系统总框架图

 

系统总框架图

五、程序类的说明

∙student类的声明

classstudent

{

public:

doublexuehao;

charname[100];

charmajor[100];

charcoursename[100];

∙course类的声明

classcourse

{

public:

doublecoursenum;

charcoursename[50];

charcoursetapy[50];

doublexuefen;

doublexueshi;

charcourseteacher[50];

六、模块分析

1.信息录入模块

按照提示输入所需数字,进入添加界面后添加课程以及学生的各类信息,最终保存到一个文件中,用以之后读取。

2.信息浏览模块

可以用来查看学生信息和课程信息以及学生的选课信息。

3.修改信息模块

用于修改错误的学生信息或者课程信息。

4.删除信息模块

能够对一个学生或课程的信息按照编号进行删除。

5.选择课程模块

学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。

七、比较有特色的函数

voidselectCoures()//选课函数

{

studentstu;//用于保存将要选课的那名同学的信息

intcountCoures=0;//用来统计该学生选了多少门课程

intcountStudent=0;//用来统计学生的个数

loop:

cout<

";

doublem_xuehao,m_coursenum;//利用学号和课程号分别找出哪位同学选了哪门课

cin>>m_xuehao;

ifstreamis("studentInfo.text",ios:

:

binary);

is.seekg(0,ios:

:

beg);

while(!

is.peek())

{

is.read((char*)(&stu),sizeof(stu));//从“studentInfo.text”文件中一次读取学生的信息

if(m_xuehao==stu.xuehao)

{

loob:

countStudent++;

cout<<"请输入学号为"<

";

cin>>m_coursenum;

ifstreaminCourse("courses.text",ios:

:

binary);//用于从"courses.text"文件中找出该同学想选择的课程信息

inCourse.seekg(0,ios:

:

beg);

while(!

inCourse.eof())

{//选课的核心代码

coursecus;//用于此同学将要选择的课程信息

inCourse.read((char*)(&cus),sizeof(cus));

if(m_coursenum==cus.coursenum)

{//若找到那门课程则选它

countCoures++;

strcpy(stu.coursename,cus.coursename);

ofstreamoutStu("selectCourseResult.text",ios:

:

binary|ios:

:

app);//现将选课的同学信息放入选课结果的文件中

outStu.write((char*)(&stu),sizeof(stu));

outStu.close();

cout<<"学号为"<

"<

}

if(countCoures>2)

{

cout<<"同学:

你选择的课程已经超过"<

"<

break;

}

}

if(countCoures==0)

{

cout<<"没有这门课程,还要继续选择其他课程吗y/n?

"<

charch;

cin>>ch;

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

gotoloob;

else

break;

}

inCourse.close();

}

}

if(countStudent==0)

{

cout<<"没有这个学生,是否重新输入y/n?

"<

charch;

cin>>ch;

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

gotoloop;

}

is.close();

menu();

}

八、存在的不足与对策

由于设计者水平有限及时间等方面的原因,该系统的功能比较简单,只能输入较少的课程以及学生信息。

些许不足请老师多多谅解。

今后会学习更多的编程技巧,不断的提高程序设计水平。

九、程序源代码

#include

#include

#include

#include

#include

#include

usingnamespacestd;

voidmenu()//主菜单

{

cout<

cout<<"学生选课系统"<

cout<<"1.信息录入"<

cout<<"2.信息浏览"<

cout<<"3.选择课程"<

cout<<"4.删除信息"<

cout<<"5.修改信息"<

cout<<"6.退出程序"<

}

classstudent

{

public:

doublexuehao;

charname[100];

charmajor[100];

charcoursename[100];

voidset()//学生信息录入

{

studentstu;

cout<

cout<<"请输入学生学号:

";

cin>>stu.xuehao;

cout<<"请输入学生姓名:

";

cin>>stu.name;

cout<<"请输入学生专业:

";

cin>>stu.major;

ofstreamout("studentInfo.text",ios:

:

app|ios:

:

binary);

out.write((char*)(&stu),sizeof(stu));

out.close();

menu();

}

voidcheckstudent()//查询学生信息

{

studentstu;

cout<<"学生学号\t学生姓名\t所学专业"<

ifstreamis("studentInfo.text",ios:

:

binary);

while(!

is.peek())

{

is.read((char*)(&stu),sizeof(stu));

cout<<""<

}

is.close();

menu();

}

voidcancleStudent()//删除学生信息

{

stringxueHaoNum,line,xuehao;

ifstreamfin("studentInfo.text.text");

fstreamoutfile("studentInfo.text.text",ios:

:

trunc|ios:

:

out);//打开一个文件进行写操作和使同名文件被删除

cout<

cout<<"请输入您要删除学生的学号:

";

cin>>xueHaoNum;

while(!

fin.eof())

{

getline(fin,line);

istringstreamstream(line);//串流输入

xueHaoNum=line.substr(0,line.find("",0));

if(xuehao!

=xueHaoNum)

outfile<

}

outfile.close();

fin.close();

fstreamf("studentInfo.text",ios:

:

trunc|ios:

:

out);//打开一个文件进行写操作和使同名文件被删除

ifstreamoutf("studentInfo.text");

f<

outf.close();

f.close();

cout<

menu();

}

voidchangestudent()//修改学生信息

{

studentstu;

intmark;

cout<

cout<<"请输入需要修改信息的学生学号";

doublexuehao;

cin>>xuehao;

ifstreamis("studentInfo.text",ios:

:

binary);

for(inti=0;!

is.eof();i++)

{

is.seekg(48*i);//对输入文件定位,第一个参数是偏移量,第二个参数是基地址

is.read((char*)(&stu),sizeof(stu));

if(stu.xuehao==xuehao)

{

cout<<"请输入要修改的学生姓名";

cin>>stu.name;

cout<<"请输入要修改的学生专业";

cin>>stu.major;

cout<<"修改完毕!

"<

mark=48*i;

menu();

break;

}

}

is.close();

if(stu.xuehao!

=xuehao)

{

cout<<"没有这个学生!

"<

menu();

}

else

{

ofstreamos("studentInfo.text",ios:

:

in|ios:

:

binary);

os.seekp(mark);

os.write((char*)(&stu),sizeof(stu));

os.close();

}

}

};

classcourse//课程类

{

public:

doublecoursenum;

charcoursename[50];

charcoursetapy[50];

doublexuefen;

doublexueshi;

charcourseteacher[50];

voidset()//课程信息录入

{

coursecus;

cout<<"请输入课程编码:

";

cin>>cus.coursenum;

cout<<"请输入课程名称:

";

cin>>cus.coursename;

cout<<"请输入课程类型:

";

cin>>cus.coursetapy;

cout<<"请输入课程学分:

";

cin>>cus.xuefen;

cout<<"请输入课程学时:

";

cin>>cus.xueshi;

cout<<"请输入主讲教师:

";

cin>>cus.courseteacher;

ofstreamos("courses.text",ios:

:

binary|ios:

:

app);

os.write((char*)(&cus),sizeof(cus));

os.close();

menu();

}

voidcheckcourse()//浏览课程信息

{

cout<

ifstreamis("courses.text",ios:

:

binary);

cout<<"课程编码课程名称课程类型课程学分课程学时主讲教师"<

coursecus;//临时保存课程信息

while(!

is.peek())//检测文件结束

{

is.read((char*)(&cus),sizeof(cus));

cout<<""<

}

is.close();

menu();

}

voidcanclecourse()//删除课程信息

{

stringcoursenum,line,course;

ifstreamfin("courses.text");

fstreamoutfile("courses.text",ios:

:

trunc|ios:

:

out);//打开一个文件进行写操作和使同名文件被删除

cout<

cout<<"请输入您要删除课程的编码:

";

cin>>coursenum;

while(!

fin.eof())

{

getline(fin,line);

istringstreamstream(line);//串流输入

coursenum=line.substr(0,line.find("",0));

if(course!

=coursenum)

outfile<

}

outfile.close();

fin.close();

fstreamf("courses.text",ios:

:

trunc|ios:

:

out);//打开一个文件进行写操作和使同名文件被删除

ifstreamoutf("courses.text");

f<

outf.close();

f.close();

cout<

menu();

}

voidchangecourse()//修改课程信息

{

coursecus;

intmark;

cout<

cout<<"请输入要修改课程信息的编码";

doublecoursenum;

cin>>coursenum;

ifstreamis("courses.text",ios:

:

binary);

for(inti=0;!

is.eof();i++)

{

is.seekg(28*i);//对输入文件定位,第一个参数是偏移量,第二个参数是基地址

is.read((char*)(&cus),sizeof(cus));

if(cus.coursenum==coursenum)

{

cout<<"请输入要修改的课程名称";

cin>>cus.coursename;

cout<<"请输入要修改的课程类型";

cin>>cus.coursetapy;

cout<<"请输入要修改的课程学分";

cin>>cus.xuefen;

cout<<"请输入要修改的课程学时";

cin>>cus.xueshi;

cout<<"请输入要修改的主讲教师";

cin>>cus.courseteacher;

cout<<"修改完毕!

"<

mark=28*i;

menu();

break;

}

}

is.close();

if(cus.coursenum!

=coursenum)

{

cout<<"没有这门课程!

"<

menu();

}

else

{

ofstreamos("courses.text",ios:

:

in|ios:

:

binary);

os.seekp(mark);

os.write((char*)(&cus),sizeof(cus));

os.close();

}

}

};

voidselectCoures()//选课函数

{

studentstu;

intcountCoures=0;

intcountStudent=0;

loop:

cout<

";

doublem_xuehao,m_coursenum;//利用学号和课程号分别找出哪位同学选了哪门课

cin>>m_xuehao;

ifstreamis("studentInfo.text",ios:

:

binary);

is.seekg(0,ios:

:

beg);

while(!

is.peek())

{

is.read((char*)(&stu),sizeof(stu));//从“studentInfo.text”文件中一次读取学生的信息

if(m_xuehao==stu.xuehao)

{

loob:

countStudent++;

cout<<"请输入学号为"<

";

cin>>m_coursenum;

ifstreaminCourse("courses.text",ios:

:

binary);//用于从"courses.text"文件中找出该同学想选择的课程信息

inCourse.seekg(0,ios:

:

beg);

while(!

inCourse.eof())//选课核心代码

{

coursecus;//用于此同学将要选择的课程信息

inCourse.read((char*)(&cus),sizeof(cus));

if(m_coursenum==cus.coursenum)

{

countCoures++;

strcpy(stu.coursename,cus.coursename);

ofstreamoutStu("selectCourseResult.text",ios:

:

binary|ios:

:

app);//现将选课的同学信息放入选课结果的文件中

outStu.write((char*)(&stu),sizeof(stu));

outStu.close();

cout<<"学号为"<

"<

}

if(countCoures>2)

{

cout<<"同学:

你选择的课程已经超过"<

"<

break;

}

}

if(countCoures==0)

{

cout<<"没有这门课程,还要继续选择其他课程吗y/n?

"<

charch;

cin>>ch;

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

gotoloob;

else

break;

}

inCourse.close();

}

}

if(countStudent==0)

{

cout<<"没有这个学生,是否重新输入y/n?

"<

charch;

cin>>ch;

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

gotoloop;

}

is.close();

menu();

}

voidscanResult()//查询选课结果

{

studentstu;//用于保存将要选课的那名同学的信息

cout<<"学生学号\t学生姓名\t所学专业\t选课名称"<

ifstreamis("selectCourseResult.text",ios:

:

binary);

for(inti=0;!

is.peek();i++)

{

is.read((char*)(&stu),sizeof(stu));

cout<

}

is.close();

menu();

}

voidset()//信息录入菜单

{

cout<

cout<<"﹌﹌﹌﹌﹌﹌1.录入学生信息﹌﹌﹌﹌﹌﹌"<

cout<<"﹌﹌﹌﹌﹌﹌2.录入课程信息﹌﹌﹌﹌﹌﹌"<

cout<<"﹌﹌﹌﹌﹌﹌3.返回前面菜单﹌﹌﹌﹌﹌﹌"<

studentstu;

coursecus;

intchoose;

cout<<"请输入选项序号:

";

cin>>choose;

switch(choose)

{

case1:

stu.set();break;

case2:

cus.set();break;

case3:

menu();break;

default:

cout<<"没有这个选项,请重新输入,谢谢!

"<

set();

break;

}

}

voidcheck()//查询信息

{

cout<

cout<<"﹌﹌﹌﹌﹌﹌1.查询学生信息﹌﹌﹌﹌﹌﹌"<

cout<<"﹌﹌﹌﹌﹌﹌2.查询课程信息﹌﹌﹌﹌﹌﹌"<

cout<<"﹌﹌﹌﹌﹌﹌3.查询学生选课结果信息﹌﹌﹌﹌﹌﹌"<

cout<<"﹌﹌﹌﹌﹌﹌4.返回主要菜单﹌﹌﹌﹌﹌﹌"<

cout<<"请输入选项序号";

intchoose;

cin>>choose;

studentstu;

coursecus;

switch(choose)

{

case1:

stu.checkstudent();break;

case2:

cus.checkcourse();break;

case3:

scanResult();break;

case4:

menu();break;

}

}

voidcancle()//删除信息

{

cout<

cout<<"﹌﹌﹌﹌﹌﹌1.删除学生信息﹌﹌﹌﹌﹌﹌"<

cout<<"﹌﹌﹌﹌﹌﹌2.删除课程信息﹌﹌﹌﹌﹌﹌"<

cout<<"﹌﹌﹌﹌﹌﹌3.返回主要菜单﹌﹌﹌﹌﹌﹌"<

cout<<"请输入选项序号";

stu

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2