C++学生选修课程系统设计Word格式文档下载.docx
《C++学生选修课程系统设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++学生选修课程系统设计Word格式文档下载.docx(51页珍藏版)》请在冰点文库上搜索。
![C++学生选修课程系统设计Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/c71725d9-eab2-4d79-9905-ee58290d4c67/c71725d9-eab2-4d79-9905-ee58290d4c671.gif)
读取功能:
可将保存在文件中的信息读入到当前系统中,供用户进行使用。
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//建立一个学生类,保存学生信息
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
3
zxf
int
总学分
4
cnt
选课总数
5
name
课程名称
6
课程编号
7
cha
char
课程性质
8
Time
课程总学时
9
time1
授课总学时
10
time2
实验(上机)总学时
11
xf
课程学分
12
kkxq
开课学期
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请输入姓名:
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;
\\password.txt"
r"
111\n"
}
fscanf(fp,"
%s"
password);
password2=password;
当密码验证正确后,调用save()函数,开始添加课程信息,首先我们先创建个文件,在电脑的D盘创建个subject.txt文件,用于存储课程信息。
当添加课程信息前,首先打开subject.txt文件。
\\subject.txt"
w"
随后向文件中输入课程信息,输入完后关闭subject.txt文件
for(inti=0;
i<
v.size();
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);
这就是基本的信息添加模块,在D盘创建文件,将学生信息与密码信息,课程信息存入D盘所创建的信息中,方便以后信息的使用而且数据不易丢失。
3.5课程查询模块设计
图4-2课程查询模块图
课程查询模块,一共有两个查询方法,一个是通过学分的方式来查询课程chaxun1()函数,一个是通过课程性质查询课程chaxun2()函数。
1.首先是通过学分的方式来查询课程chaxun1(),通过输入一个学分key,通过判断v[i].xf==key;
来查找到是第i个数据,然后输出课程信息
intkey;
cin>
key;
for(inti=0;
{
if(cnt&
&
cnt%10==0)
{
cout<
endl<
\t========================================================"
endl;
\t按任意键查看下一页"
getch();
system("
cls"
endl;
\t********************************************************"
\t**********************课程信息*******************"
\t课程"
"
课程"
课程"
总"
<
授课"
实验或"
学分"
开课"
\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);
charkey[20];
学"
if(!
strcmp(v[i].cha,key))
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("
<
i<
i++)
if(i&
i%10==0)
\t请输入所选课程编号:
gets(str);
if(strcmp(str,"
))tq1(str);
printf("
v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq);
if(strcmp(str,"
2.将所选的课程信息保存到学生信息中,方便下次登录直接查看之前选的课程信息。
z.size();
%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);
3.学生选完课后,系统会计算学生选课的总学分,如果没达到60分给予提醒,如果不选返回选课主菜单。
if(z[F].zxf<
60)
\t\t你所选课程的总学分少于60,是否继续选课!
[Y/N]"
stringx;
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学分的情况下,提醒你继续选课,这样更便捷,实际些。
以前总一位