C++学生选修课程系统设计.docx

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

C++学生选修课程系统设计.docx

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

C++学生选修课程系统设计.docx

C++学生选修课程系统设计

 

程序设计课程设计报告

学生选修课程系统设计

专业

计算机科学与技术

学生姓名

班级

学号

指导教师

完成日期

2019年1月4日

学生选修课程系统的设计

1课程设计目的及要求

高校中学生信息包括:

学号、姓名、性别、年龄、系别、班级、联系方式等信息。

课程信息包括:

课程代码、课程名称、课程性质、总学时、学分、开课学期、选修人数等信息。

学生可对课程信息进行查询,选修符合要求的课程。

根据课程信息和学生信息完成对课程的选修,需要专门的一个管理类来完成选修工作。

添加功能:

程序能够任意添加课程和学生记录,可提供选择界面供用户选择所要添加的类别,要求编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

查询功能:

可根据编号、姓名等信息对已添加的学生和课程记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

显示功能:

可显示当前系统中所有学生和课程的记录,每条记录占据一行。

编辑功能:

可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

删除功能:

主要实现对已添加的学生和课程记录进行删除。

如果当前系统中没有相应的记录,则提示“记录为空!

”并返回操作。

统计功能:

能根据多种参数进行统计。

能统计学生人数、课程的门数、选修某门课程的学生的相关信息。

保存功能:

可将当前系统中各类记录存入文件中,存入方式任意。

读取功能:

可将保存在文件中的信息读入到当前系统中,供用户进行使用。

2课题总体分析

2.1系统需求分析

我们设计一个程序对学生选课信息进行保存,对学生的选课信息进行可执行操作,如添加、删除、查询等等。

2.2系统功能描述

该程序包括以下功能模块:

学生信息添加模块:

能够输入学生基本信息并保存到文件中。

查看模块:

显示所有可选修课程的信息。

查询:

显示所有符合要求的课程信息。

选课:

显示学生已选课程信息和选课,删除已选课程信息。

退出系统。

为了完善系统,我们还添加了一个登录界面。

考虑到添加课程信息的功能只适合老师,因此我们设置了添加课程的权限设置(必须输入密码)。

我们建立了两个文件用来保存学生信息和课程信息。

(student.txt和subject.txt)

该系统功能说明:

系统以菜单方式工作;课程信息录入功能(课程信息用文件保存)--输入;课程信息浏览功能--输出;查询功能:

至少一种查询方式;按学分查询,按课程性质查询

2.3系统功能模块图

图2-1系统功能模块图

3课题详细设计

3.1系统类图

图3-1系统类图

3.2系统类的设计

建立两个类,一个课程类,一个学生类,分别用来保存课程信息和学生信息

classsubject//建立一个课程类,保存课程信息

{

public:

intnum;

charname[30];

charcha[20];

intTime,time1,time2,xf;

charkkxq[20];

}S;

classstudent//建立一个学生类,保存学生信息

{

public:

charnam[10];

charnum[15];

intzxf;

intcnt;

}Stu;

该程序包含的主要函数功能说明:

voidXuanKeMenu();//声明一个选课主菜单函数

intfind(intno);//找到想要的课程编号

voidSave();//保存已选的课程信息

voidDL();//声明一个登录界面的函数

voidMainMenu();//主菜单

voidoutput();//将课程信息输出到屏幕

voidLoad();//声明载入文件信息的函数

voidLoad2();//载入学生信息(文件此前已建立)

voidquit();//退出函数

voidadd();//添加课程函数

voidChaXun();//查询主菜单函数

voidchaxun1();//按学分方式查询

voidchaxun2();//按课程性质查询

voidxuanke();//选课函数:

执行选课功能

voidtq1();//声明提取信息的函数

voidtq2();//声明提取信息的函数

voidAddStuInfo();//声明添加学生信息的函数

voiddel();//删除已选课程信息

主要的数据结构表:

序号

成员名

数据类型

字段含义

1

nam

char

姓名

2

num

char

学号

3

zxf

int

总学分

4

cnt

int

选课总数

5

name

char

课程名称

6

num

int

课程编号

7

cha

char

课程性质

8

Time

int

课程总学时

9

time1

int

授课总学时

10

time2

int

实验(上机)总学时

11

xf

int

课程学分

12

kkxq

char

开课学期

3.4信息添加模块设计

图4-1信息添加功能模块图

信息添加模块中,分别有两种信息需要添加,即学生信息和课程信息,分别是AddStuInfo()函数和add()函数。

下面分别来解释与说明这两个函数功能,及其它的实现。

1.首先是学生信息添加AddStuInfo()函数,首先我们先创建个文件,在电脑的D盘创建个student.txt文件,用于存储学生信息。

当添加学生信息前,首先打开student.txt文件。

FILE*fp;

fp=fopen("d:

\\student.txt","a");

if(fp==NULL){

cout<<"OpenError!

\n";exit

(1);}

fseek(fp,0,2);

随后向文件中输入学生信息,输入完后关闭student.txt文件

cout<<"\t\t\t请输入学号:

";cin>>Stu.num;

cout<<"\t\t\t请输入姓名:

";cin>>Stu.nam;

St=Stu.zxf=0;

fprintf(fp,"%s%s%d%d\n",Stu.num,Stu.nam,St,Stu.zxf);

z.push_back(Stu);T.clear();TT.push_back(T);

fclose(fp);

2.然后是课程信息添加add()函数,添加课程信息前,先验证密码是否正确,则需要打开D盘的password.txt文件,判断输入的密码是否和文件中的密码一样,一样才可以继续添加课程信息。

stringpassword1,password2;

charpassword[20];int_cnt=0;

FILE*fp;

fp=fopen("d:

\\password.txt","r");

if(fp==NULL){

cout<<"OpenError!

111\n";}

fscanf(fp,"%s",password);password2=password;

fclose(fp);

当密码验证正确后,调用save()函数,开始添加课程信息,首先我们先创建个文件,在电脑的D盘创建个subject.txt文件,用于存储课程信息。

当添加课程信息前,首先打开subject.txt文件。

FILE*fp;

fp=fopen("d:

\\subject.txt","w");

if(fp==NULL){

cout<<"OpenError!

\n";exit

(1);}

随后向文件中输入课程信息,输入完后关闭subject.txt文件

for(inti=0;i

fprintf(fp,"%d%s%s%d%d%d%d%s\n",v[i].num,v[i].name,

v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq);

fclose(fp);

这就是基本的信息添加模块,在D盘创建文件,将学生信息与密码信息,课程信息存入D盘所创建的信息中,方便以后信息的使用而且数据不易丢失。

3.5课程查询模块设计

图4-2课程查询模块图

课程查询模块,一共有两个查询方法,一个是通过学分的方式来查询课程chaxun1()函数,一个是通过课程性质查询课程chaxun2()函数。

下面分别来解释与说明这两个函数功能,及其它的实现。

1.首先是通过学分的方式来查询课程chaxun1(),通过输入一个学分key,通过判断v[i].xf==key;来查找到是第i个数据,然后输出课程信息

intkey;

cin>>key;

for(inti=0;i

{

if(cnt&&cnt%10==0)

{

cout<

cout<<"\t按任意键查看下一页";getch();

system("cls");

cout<

cout<<"\t********************************************************"<

cout<<"\t**********************课程信息*******************"<

cout<<"\t********************************************************"<

cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总"

<<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"<

cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时"

<<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学期"<

}

if(v[i].xf==key)

{

cnt++;

printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq);

}

}

2.然后是通过课程性质的方式来查询课程chaxun2(),通过输入一个课程性质key[20],通过判断!

strcmp(v[i].cha,key);来查找到是第i个数据,然后输出课程信息

charkey[20];

cin>>key;

for(inti=0;i

{

if(cnt&&cnt%10==0)

{

cout<

cout<<"\t按任意键查看下一页";getch();

system("cls");

cout<

cout<<"\t********************************************************"<

cout<<"\t**********************课程信息*******************"<

cout<<"\t********************************************************"<

cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总"

<<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"<

cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时"

<<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学"<

}

if(!

strcmp(v[i].cha,key))

{

cnt++;

printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq);

}

}

这就是基本的课程信息查询模块,通过输入一个key值,判断课程的学分和性质是否和这个key值相等,如果相等输出这个课程信息。

4.3学生选课模块设计

图4-3学生选课模块

 

学生选课功能是这系统的核心功能,学生通过选课功能来进行对课程的最终选择,这个功能由选课函数xuanke()函数完成。

首先显示所有课程信息,然后通过输入课程编号来进行选课,选好后通过调用SaveStuInfo()函数将选择好的课保存到学生信息中。

1.进入选课功能显示所有课程,然后根据选择的课程编号进行选择自己所需要的课程。

charstr[100];

system("cls");

cout<

cout<<"\t********************************************************"<

cout<<"\t**********************课程信息*******************"<

cout<<"\t********************************************************"<

cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总"

<<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"<

cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时"

<<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学期"<

for(inti=0;i

{

if(i&&i%10==0)

{

cout<

cout<

";gets(str);

if(strcmp(str,""))tq1(str);

system("cls");

cout<

cout<<"\t********************************************************"<

cout<<"\t**********************课程信息*******************"<

cout<<"\t********************************************************"<

cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总"<<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"<

cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时"<<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学期"<

}

printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n",

v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq);

}

cout<

cout<

";gets(str);

if(strcmp(str,""))tq1(str);

2.将所选的课程信息保存到学生信息中,方便下次登录直接查看之前选的课程信息。

FILE*fp;

fp=fopen("d:

\\student.txt","w");

if(fp==NULL){

cout<<"OpenError!

\n";exit

(1);

}

for(inti=0;i

{

fprintf(fp,"%s%s%d%d",z[i].num,z[i].nam,z[i].cnt,z[i].zxf);

for(it=TT[i].begin();it!

=TT[i].end();it++)

fprintf(fp,"%d",*it);

fprintf(fp,"\n");

}

fclose(fp);

3.学生选完课后,系统会计算学生选课的总学分,如果没达到60分给予提醒,如果不选返回选课主菜单。

if(z[F].zxf<60)

{

cout<<"\t\t你所选课程的总学分少于60,是否继续选课!

[Y/N]";

stringx;cin>>x;

if(x[0]=='y'||x[0]=='Y')xuanke();

elseXuanKeMenu();

}

elseXuanKeMenu();

学生选课功能主要是让学生自主选课,并且当学生选课的总学分小于60分给学生提醒,让学生不会因最后学分不够而烦恼。

当课程选好好保存到学生信息D盘的student.txt文件中,保存好的文件不易丢失,并且可以重复使用。

5编码与测试

使用Microsoftvisualstudio2010软件编写代码,在调试测试过程中,软件的优越性体现的非常大,在一些变量声明时,声明后再下面使用的时候,经常会混淆,vs2010用红色波浪线提示的很明显,很容易发现问题。

在调试时,常常使用断点调试,让调试更加简便,更快找到错误地方及时改正。

有时候不会用的一些调试功能,常常可以通过网上XX搜索,可以很快学习到调试程序的方法,使我学到了很多。

在程序测试时,一项一项功能的添加和运用,使我更加有信心写下去,一开始无从下手的程序到最后全部完成,并且还课余时间加入任务书外的功能,不断测试稳定性,最后使这个程序最终成功

在调试和测试时也少不了同学老师的帮助,他们的帮助让我的设计更快完成。

首先添加学生信息有姓名,学号等信息,进入学生选课系统,如果在缓存文件中找不到此学号的学生,则需要添加学生信息,如下图5-1,只有当添加好学生信息,才可以进入选课系统的主菜单。

添加学生信息如下图5-2。

在主菜单中有查看课程信息,添加课程信息,查询课程信息和学生选课功能。

如下图5-3

图5-1学生信息

图5-2添加学生信息

 

图5-3主菜单

进入主菜单后,可以查看课程信息,添加课程信息,查询课程信息和学生选课四个功能,分别对应输入1,2,3,4,退出系统输入0

首先是查看课程信息,当输入1时,回车后,就可查询之前添加好的课程信息如图5-4

图5-4课程信息查看

然后是课程添加,当在主菜单中输入2,进入添加课程。

根据一般的操作中,添加课程信息都是管理员添加,学生自己无权添加课程,所以进入添加课程功能前需要输入密码,管理员输入密码如下图5-5。

图5-5管理员输入密码

当输入密码错误时,提示密码错误,并且无法进入添加课程功能。

如图3-6

图5-6添加课程密码错误

当密码输入正确,进入添加课程信息功能。

课程添加中,可以添加课程的编号,性质,课程学分等信息如图5-7。

如图5-7添加课程信息

第三个功能,课程信息的查询,在主菜单页面输入3,既可以跳转到课程信息查询功能中,如图5-8,课程信息的查询有两种方式,一种是根据学分查询还有一种是根据课程性质查询

图5-8课程信息查询

进入课程信息查询,输入1,进入根据课程的学分来查询相关课程,可以更加方便的筛选课程信息。

如图5-9

图5-9学分查询课程

进入课程信息查询,输入2,进入根据课程的学分来查询相关课程,可以更加方便的筛选课程信息。

如图5-10

图5-10课程性质查询课程

在主菜单中输入4,即可进入选课功能中,进入后,课看见这位学生已选的课程与已选课程的总学分如图5-11

图5-11学生已选课程

进入选课系统后,输入1,即可开始选课,学生可以根据课程编号选课。

如图5-12

图5-12学生选课

输入选择的课程编号后,即可将课程选入,并且在选好后,根据选择课程的学分,计算是否大于60分,如果少于60分提醒您继续选课,如图5-13

图5-13选课

在刚进入选课系统后,可以看到自己选的课,如果觉得选择的课不想选了,也可以删除已选课程,在选课功能中输入2,如图5-14

图5-14删除已选课程

6小结

通过本次的课程设计,让我明白C++程序设计这门课程原来还是有很大用处。

学会了文件的基本操作,文件流操作函数主要在头文件fstream中,输入流在头文件ifstream,输出流在头文件ofstream中,在定义文件操作流的对象时要加上这两个类。

先定义两个类,一个学生类,一个课程类,分别用来处理学生信息和课程信息。

以定义几个函数分别实现:

创建文件、复制文件、读取文件中的内容到显示器在主函数中调用创建函数,创建一个文件student.txt,一个文件subject.txt,将学生信息存入student.txt中,将课程信息存入subject.txt中,在使用前先fopen打开文件,然后fprintf写入信息到文件里,然后fclose关闭文件。

在这次课程设计中,我在任务之外添加了两个新功能。

在实际生活中,添加课程信息一般是管理员操作添加,所以一般都要通过密码验证,在我的这个课程设计中就添加了这个功能。

也是通过创建的文件,储存密码信息,在添加课程之前,需要提取文件信息后和输入值对比,验证通过方可添加课程信息。

在添加课程之后,我添加了一个选修总学分提示功能,在没有满60学分的情况下,提醒你继续选课,这样更便捷,实际些。

以前总一位

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

当前位置:首页 > 外语学习 > 英语学习

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

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