课程设计选题管理系统报告完整.doc
《课程设计选题管理系统报告完整.doc》由会员分享,可在线阅读,更多相关《课程设计选题管理系统报告完整.doc(93页珍藏版)》请在冰点文库上搜索。
课程设计选题管理系统报告
(优质文档,可直接使用,可编辑,欢迎下载)
上海电力学院
课程设计报告
面向对象程序设计
(2021/2021学年第一学期)
课题名称课程设计选题管理系统设计
院(系)电子与信息工程学院
专业通信工程
学号20212234
姓名储昊
时间2021年1月19日至1月23日
地点虚拟仿真实验室(南4教312)
指导老师骆政屹
目录
一、设计目的与任务………………………………………………………………………。
2
1、本课程设计的目的……………………………………………………………………….2
2、本课程设计的任务……………………………………………………………………….2
二、设计方案…………………………………………………………………………………。
.3
1、总体设计……………………………………………………………………………………….3
2、系统设计………………………………………………………………………………………。
3
3、系统实现……………………………………………………………………………………….5
4、系统测试………………………………………………………………………………………16
三。
心得体会……………………………………………………………………………………。
20
一、设计目的与任务
1、本课程设计的目的
1)课程设计是实践教学环节。
设置课程设计的目的是加强学生对本课程及相关课程知识的理解,培养学生综合运用理论知识分析和解决实际问题的方法与能力.有助于提高学生的创新能力和创新意识。
搞好课程设计教学工作,对实现专业培养目标,提高学生全面素质有重要作用。
2)通过课程设计更进一步理解C++的基础知识。
3)训练用系统的观点及软件开发的一般规范进行软件开发,并在此过程中培养严谨的科学态度和良好的工作作风.初步掌握软件开发过程中的问题分析、系统设计、程序编码、调试、测试等方面的基本方法和技能。
4)熟练掌握C++知识在程序中的应用,了解书本知识在解决实际问题中的用途。
2、本课程设计的任务
(1)问题描述
课程设计题目包括:
编号、名称、关键词、实现技术、人员数(由几个人来完成)等信息.
学生信息包括:
学号、姓名、性别、年龄、班级、专业等信息。
(2)功能要求
①添加功能:
程序能够添加学生的记录和课程设计题目记录,提供选择界面供用户选择所要添加的类别。
添加记录时,要求学号和编号要唯一。
如果添加了重复记录,则提示数据添加重复并取消添加。
②查询功能:
可根据学号、姓名、编号、名称等信息对已添加的学生和课程设计题目进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息.
③显示功能:
可显示当前系统中所有学生的信息和课程设计题目信息,每条记录占据一行。
④编辑功能:
可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。
⑤删除功能:
主要实现对已添加的学生和课程设计题目记录进行删除。
如果当前系统中没有相应的记录,则提示“记录为空!
"并返回操作。
⑥统计功能:
能根据多种参数进行统计.能按课程设计题目名称统计出学生选择该题目的人员的信息。
⑦保存功能:
可将当前系统中各类记录存入文件中,存入方式任意。
⑧读取功能:
可将保存在文件中的信息读入到当前系统中,供用户进行使用。
二、设计方案
1、总体设计
我们设计一个程序对学生课程设计选题信息进行保存,对学生的选题信息进行可执行多种操作,该程序包括以下功能模块:
1)学生信息添加模块:
能够输入学生基本信息并保存到文件中。
2)查询模块:
显示所有符合要求的课程设计信息。
3)编辑模块:
可对学生信息进行修改.4)删除模块:
可删除相应的学生信息.5)统计模块:
能根据多种参数进行统计。
6)查看模块:
显示所有课程设计选题的信息。
7)退出系统。
为了完善系统,我们还添加了一个登录界面。
2、系统设计
1)类设计
定义一个学生类Student,类中包括学号stuid,姓名stuname,性别sex,年龄age,班级clas,专业specialty,及所选课程的课程编号couid,课程名称couname,关键词keyword,实现技术technology;
定义一个管理类Guanli,其成员函数包括向文件输入函数voidwrite(intn);从文件读取函数,intread();添加学生信息函数voidadd(),查询信息函数voidsearch(),按学号查询函数voidsearchsid(),按姓名查询函数voidsearchsname(),按题目编号查询函数voidsearchcid(),按题目名称查询函数voidsearchcname();修改信息函数voidalter();删除信息函数voiddel();统计信息函数voidtotal();显示函数voiddisplay()以及一个数据成员Studentstu[50]。
2)函数设计
voidwrite(intn),向文件中写入数据,打开文本文档,并将数据输入到文本文档中;intread(),向文件中写入数据从文件中读数据,打开文本文档,并将文本文档中的数据输出;voidadd(),添加学生信息;voidsearch()查询信息(可根据学生的学号、姓名、所选课程编号、课程名称进行信息查询);voidalter(),修改学生信息;voiddel(),删除学生信息,根据输入的学生学号通过调用函数实现;voidtotal(),统计学生信息(根据学生所选课程名称进行统计);voiddisplay(),显示函数用来显示所有学生信息;intmain()主函数,显示主菜单,调用各个函数实现所有功能。
3)系统流程图
课程设计学生选课系统设计结构图:
进入功能界面后,可以进行多项功能选择,如添加、查询、显示、修改、删除、统计,将数据写入文件以及从文件读取数据等;而查询功能又可以分为按学号、姓名、题目编号、题目名称等方式进行查询.如下图所示。
主菜单
退出系统
显示所有记录
统计所有记录
删除学生信息
修改学生信息
查询记录信息
添加新的记录
按学号查询
按姓名查询
按编号查询
按名称查询
4)界面设计
主界面是“欢迎使用课程设计选课系统”,下面是所要使用的功能:
1.添加新的纪录
2.查询记录信息
3.修改学生信息
4.删除学生信息
5.统计所有记录
6。
显示所有记录
0.退出系统
其中,查询记录又可以弹出一个界面分别有以下几个功能:
1。
根据学号查询
2.根据姓名查询
3。
根据编号查询
4。
根据题目名称查询
每实现一个功能,重新弹出主界面,进行下一个的功能选择。
3、系统实现
1)类实现
classStudent
{
public:
intstuid;//学号
charstuname[10];//姓名
charsex[2];//性别
intage;//年龄
charclas[10];//班级
charspecialty[10];//专业
intcouid;//题目编号
charcouname[10];//题目名称
charkeyword[20];//关键词
chartechnology[30];//实现技术
}stu[50];//定义对象
classGuanli
{
private:
Studentstu[50];
public:
voidadd();//添加学生信息
voidsearch();//查询信息
voidsearchsid();//按学号查询信息
voidsearchsname();//按名字查询信息
voidsearchcid();//按题目编号查询信息
voidsearchcname();//按题目名称查询信息
voidalter();//修改信息
voiddel();//删除信息
voidtotal();//统计信息
voiddisplay();//显示信息
voidwrite(intn);//向文件中写入数据
intread();//从文件中读数据
};
2)函数实现
voidGuanli:
:
write(intn)
{
fstreammyfile;
myfile。
open(”student.txt",ios:
:
out|ios:
:
binary);
if(!
myfile)
{
cout〈〈"该文件不能打开!
"〈 abort();
}
intcount=n;
myfile< for(inti=0;i〈=count;i++)
{
myfile<stuid<<””〈sex<<”"〈〈stu[i].age<<""〈〈stu[i].clas〈〈""〈〈stu[i]。
specialty〈<""<couname<〈””<〈stu[i]。
keyword〈<"”<〈stu[i].technology<<"”〈〈endl;
}
myfile。
close();
}
intGuanli:
:
read()
{
fstreammyfile;
myfile。
open("student.txt",ios:
:
in|ios:
:
binary);
if(!
myfile)
{
cout<<”该文件不能打开!
”<〈endl;
abort();
}
intcount;
myfile.seekg(0);
myfile>〉count;
for(inti=0;i<=count;i++)
{
myfile>〉stu[i]。
stuid〉〉stu[i]。
stuname〉〉stu[i]。
sex〉>stu[i].age>〉stu[i]。
clas>>stu[i]。
specialty>>stu[i].couid>>stu[i]。
couname>〉stu[i]。
keyword>>stu[i]。
technology;
cout< }
myfile.close();
returncount;
}
voidGuanli:
:
add()
{
intn=read();
inti=0;
charsign;
cout〈”< while(sign!
='N')
{
loop:
cout〈<”学号:
";
cin〉〉stu[i]。
stuid;
cout<〈endl;
intc=0;
while(c〈i)
{
c++;
if(stu[i].stuid==stu[i—c].stuid)
{
cout<〈"你输入的学号已经存在!
请重新输入”<〈endl;
gotoloop;
}
}
cout〈<"姓名:
";
cin〉〉stu[i].stuname;
cout<cout〈<"性别:
”;
cin〉〉stu[i].sex;
cout<〈endl;
cout<〈”年龄:
”;
cin>〉stu[i].age;
cout〈 cout〈<"班级:
”;
cin>>stu[i].clas;
cout<cout〈〈”专业:
";
cin>>stu[i]。
specialty;
cout〈 cout〈<”题目编号:
”;
cin〉>stu[i].couid;
cout〈〈endl;
cout<〈”题目名称:
”;
cin〉>stu[i].couname;
cout< cout<<"关键词:
”;
cin〉〉stu[i].keyword;
cout〈 cout<<"实现技术:
”;
cin>〉stu[i]。
technology;
cout〈〈endl;
cout<<"提示:
是否继续写入学生信息?
(Y/N)";
cin〉>sign;//输入判断
i++;
}
write(i);
}
voidGuanli:
:
search()
{
intn=read();
cout<〈”**
(1)根据学号查询**"<〈endl;
cout<〈”**
(2)根据姓名查询**"<〈endl;
cout<〈"**(3)根据编号查询**”<〈endl;
cout<<”**(4)根据名称查询**”〈 cout<〈endl;
intc;
Guanlig;
cout<〈”请输入选择:
”;
cin〉>c;
switch(c)
{
case1:
g.searchsid();
break;
case2:
g.searchsname();
break;
case3:
g.searchcid();
break;
case4:
g。
searchcname();
break;
default:
cout〈〈”输入错误,请重新输入!
”〈 }
g.write(n);
}
voidGuanli:
:
searchsid()
{
intn=read();
ints;
inti=0;
cout<"< cout<<"请输入需要查找学生的学号:
”〈〈endl;
cin〉〉s;
while((stu[i].stuid—s)!
=0&&i if(i==n)
{
cout〈<"提示:
对不起,无法找到该学生的信息!
”<〈endl;
}
else
{
cout〈<”******************************"< cout〈<"学号:
"〈cout〈<"姓名:
”<cout〈<”性别:
”<sex〈〈endl;
cout〈〈”年龄:
”<〈stu[i].age〈〈endl;
cout<〈"班级:
”<cout〈<"专业:
”<〈stu[i]。
specialty〈〈endl;
cout<〈”题目编号:
”<〈stu[i]。
couid〈〈endl;
cout<<”题目名称:
”〈〈stu[i]。
couname<〈endl;
cout〈〈”关键词:
”<〈stu[i]。
keyword〈〈endl;
cout〈<"实现技术:
”<〈stu[i].technology< }
}
voidGuanli:
:
searchsname()
{
intn=read();
chara[10];
cout〈<”请输入需要查找学生的姓名:
"〈〈endl;
cin〉〉a;
for(inti=0;i if(strcmp(stu[i].stuname,a)==0)
{
cout〈<”******************************”〈 cout〈〈"学号:
”<〈stu[i]。
stuid<〈endl;
cout〈<"姓名:
"<〈stu[i].stuname〈〈endl;
cout<<"性别:
"<cout<<"年龄:
"<age<cout<〈"班级:
"<〈stu[i]。
clas<cout<〈”专业:
"〈cout<<"题目编号:
"〈〈stu[i]。
couid<〈endl;
cout<<"题目名称:
”〈〈stu[i].couname〈〈endl;
cout〈<"关键词:
"<〈stu[i].keyword〈 cout〈〈”实现技术:
"〈technology〈 }
}
voidGuanli:
:
searchcid()
{
intn=read();
intb;
inti=0;
cout<〈"请输入需要查找的题目编号:
”< cin>>b;
while((stu[i].couid—b)!
=0&&i〈n)i++;//查找判断
if(i==n)
{
cout〈<”提示:
对不起,无法找到该信息!
"<〈endl;
}
else
{
cout〈<”******************************"<〈endl;
cout〈〈”学号:
”<stuid〈〈endl;
cout<〈”姓名:
"<〈stu[i]。
stuname〈〈endl;
cout<〈”性别:
”<cout〈<”年龄:
”<age<cout〈〈"班级:
"〈〈stu[i].clas<〈endl;
cout〈〈”专业:
"<〈stu[i]。
specialty<cout<<”题目编号:
"<〈stu[i].couid〈cout<<"题目名称:
"〈〈stu[i].couname〈 cout<<"关键词:
”<〈stu[i].keyword<〈endl;
cout<<”实现技术:
"〈 }
}
voidGuanli:
:
searchcname()
{
intn=read();
charc[10];
cout<<"请输入需要查找的题目名称:
"<〈endl;
cin〉>c;
for(inti=0;i〈n;i++)
if(strcmp(stu[i]。
couname,c)==0)
{
cout〈〈"******************************"〈 cout<<"学号:
"<〈stu[i].stuid〈cout<〈”姓名:
"<〈stu[i].stuname<cout<〈"性别:
”<cout〈<”年龄:
”〈〈stu[i]。
age<〈endl;
cout<〈”班级:
"<clas〈cout〈〈"专业:
"<cout<〈"题目编号:
"〈〈stu[i].couid<cout<〈”题目名称:
”<couname〈〈endl;
cout〈<”关键词:
"<〈stu[i]。
keyword< cout<〈”实现技术:
"〈〈stu[i]。
technology〈〈endl;
}
}
voidGuanli:
:
alter()
{
intn=read();
ints;
inti=0;
cout<〈endl<<"修改学生信息:
”〈〈endl;
cout〈<"请输入需要修改学生的学号:
”<〈endl;
cin>>s;
while((stu[i]。
stuid-s)!
=0&&i if(i==n)
{
cout〈〈”提示:
对不起,无该学生的信息!
!
!
”〈 }
else
{
cout<<”该学生的信息:
”〈〈endl;
cout<<"学号”〈〈stu[i]。
stuid〈<’\n'<〈"姓名”〈〈stu[i].stuname〈〈'\n’<<”性别"< stu[i].clas〈<’\n'〈<"专业"<specialty<<'\n'<〈”题目编号”<〈stu[i]。
couid〈<’\n’〈<"题目名称"< 〈<"关键词"<〈stu[i].keyword〈<'\n’〈〈”实现技术”〈 cout〈〈"请重新输入该学生的信息"〈〈endl;
cout<<"学号:
”;
cin〉>stu[i]。
stuid;
cout<〈endl;
cout〈〈"姓名:
”;
cin>>stu[i]。
stuname;
cout<cout<<"性别:
";
cin>>stu[i]。
sex;
cout〈cout〈<"年龄:
";
cin>>stu[i]。
age;
cout〈cout<<”班级:
";
cin>〉stu[i]。
clas;
cout〈〈endl;
cout<<"专业:
”;