资源描述
课程设计选题管理系统报告
(优质文档,可直接使用,可编辑,欢迎下载)
上海电力学院
课程设计报告
面向对象程序设计
(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,其成员函数包括向文件输入函数void write(int n);从文件读取函数,int read();添加学生信息函数void add(),查询信息函数void search (),按学号查询函数void searchsid(),按姓名查询函数void searchsname(),按题目编号查询函数void searchcid(),按题目名称查询函数void searchcname();修改信息函数void alter() ;删除信息函数void del();统计信息函数void total();显示函数void display()以及一个数据成员Student stu[50]。
2)函数设计
void write(int n),向文件中写入数据,打开文本文档,并将数据输入到文本文档中;int read(),向文件中写入数据从文件中读数据,打开文本文档,并将文本文档中的数据输出;void add(),添加学生信息;void search()查询信息(可根据学生的学号、姓名、所选课程编号、课程名称进行信息查询);void alter(),修改学生信息;void del(),删除学生信息,根据输入的学生学号通过调用函数实现;void total(),统计学生信息(根据学生所选课程名称进行统计);void display(),显示函数用来显示所有学生信息;int main()主函数,显示主菜单,调用各个函数实现所有功能。
3)系统流程图
课程设计学生选课系统设计结构图:进入功能界面后,可以进行多项功能选择,如添加、查询、显示、修改、删除、统计,将数据写入文件以及从文件读取数据等;而查询功能又可以分为按学号、姓名、题目编号、题目名称等方式进行查询.如下图所示。
主菜单
退出系统
显示所有记录
统计所有记录
删除学生信息
修改学生信息
查询记录信息
添加新的记录
按学号查询
按姓名查询
按编号查询
按名称查询
4)界面设计
主界面是“欢迎使用课程设计选课系统”,下面是所要使用的功能:
1.添加新的纪录
2.查询记录信息
3.修改学生信息
4.删除学生信息
5.统计所有记录
6。显示所有记录
0.退出系统
其中,查询记录又可以弹出一个界面分别有以下几个功能:
1。根据学号查询
2.根据姓名查询
3。根据编号查询
4。根据题目名称查询
每实现一个功能,重新弹出主界面,进行下一个的功能选择。
3、系统实现
1)类实现
class Student
{
public:
int stuid; //学号
char stuname[10]; //姓名
char sex[2]; //性别
int age; //年龄
char clas[10]; //班级
char specialty[10]; //专业
int couid; //题目编号
char couname[10]; //题目名称
char keyword[20]; //关键词
char technology[30]; //实现技术
}stu[50]; //定义对象
class Guanli
{
private:
Student stu[50];
public:
void add(); //添加学生信息
void search(); //查询信息
void searchsid(); //按学号查询信息
void searchsname(); //按名字查询信息
void searchcid(); //按题目编号查询信息
void searchcname(); //按题目名称查询信息
void alter(); //修改信息
void del(); //删除信息
void total(); //统计信息
void display(); //显示信息
void write(int n); //向文件中写入数据
int read(); //从文件中读数据
};
2)函数实现
void Guanli::write(int n)
{
fstream myfile;
myfile。open(”student.txt",ios::out|ios::binary);
if(!myfile)
{
cout〈〈"该文件不能打开!"〈<endl;
abort();
}
int count=n;
myfile<<count<<endl〈〈endl;
for(int i=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<<" ”〈〈endl;
}
myfile。close();
}
int Guanli::read()
{
fstream myfile;
myfile。open("student.txt",ios::in|ios::binary);
if(!myfile)
{
cout<<”该文件不能打开!”<〈endl;
abort();
}
int count;
myfile.seekg(0);
myfile>〉count;
for(int i=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<<endl;
}
myfile.close();
return count;
}
void Guanli::add()
{
int n=read();
int i=0;
char sign;
cout〈<endl〈<”请输入增加的学生的相关信息: ”<<endl;
while(sign!='N')
{
loop:
cout〈<”学号:";
cin〉〉stu[i]。stuid;
cout <〈 endl;
int c=0;
while(c〈i)
{
c++;
if(stu[i].stuid==stu[i—c].stuid)
{
cout<〈"你输入的学号已经存在!请重新输入”<〈endl;
goto loop;
}
}
cout〈<"姓名:";
cin〉〉stu[i].stuname;
cout<<endl;
cout〈<"性别:”;
cin〉〉stu[i].sex;
cout<〈endl;
cout<〈”年龄:”;
cin>〉stu[i].age;
cout〈<endl;
cout〈<"班级:”;
cin>>stu[i].clas;
cout<<endl;
cout〈〈”专业:";
cin>>stu[i]。specialty;
cout〈<endl;
cout〈<”题目编号:”;
cin〉>stu[i].couid;
cout〈〈endl;
cout<〈”题目名称:”;
cin〉>stu[i].couname;
cout<<endl;
cout<<"关键词:”;
cin〉〉stu[i].keyword;
cout〈<endl;
cout<<"实现技术:”;
cin>〉stu[i]。technology;
cout〈〈endl;
cout<<"提示:是否继续写入学生信息?(Y/N)";
cin〉>sign; //输入判断
i++;
}
write(i);
}
void Guanli::search()
{
int n=read();
cout<〈”** (1)根据学号查询 **"<〈endl;
cout<〈”** (2)根据姓名查询 **"<〈endl;
cout<〈"** (3)根据编号查询 **”<〈endl;
cout<<”** (4)根据名称查询 **”〈<endl;
cout<〈endl;
int c;
Guanli g;
cout<〈”请输入选择:”;
cin〉>c;
switch(c)
{
case 1:
g.searchsid();
break;
case 2:
g.searchsname();
break;
case 3:
g.searchcid();
break;
case 4:
g。searchcname();
break;
default:
cout〈〈”输入错误,请重新输入!”〈<endl;
}
g.write(n);
}
void Guanli::searchsid()
{
int n=read();
int s;
int i=0;
cout<<endl〈〈”查找学生信息:"<<endl;
cout<<"请输入需要查找学生的学号:”〈〈endl;
cin〉〉s;
while((stu[i].stuid—s)!=0&&i<n) i++; //查找判断
if(i==n)
{
cout〈<"提示:对不起,无法找到该学生的信息!”<〈endl;
}
else
{
cout〈<”******************************"<<endl;
cout〈<"学号: "〈<stu[i].stuid<〈endl;
cout〈<"姓名: ”<<stu[i]. stuname<<endl;
cout〈<”性别: ”<<stu[i]。sex〈〈endl ;
cout〈〈”年龄: ”<〈stu[i]. age〈〈endl;
cout<〈"班级: ”<<stu[i].clas<〈 endl;
cout〈<"专业: ”<〈stu[i]。 specialty〈〈endl;
cout<〈”题目编号: ”<〈stu[i]。couid〈〈endl;
cout<<”题目名称: ”〈〈stu[i]。couname<〈endl;
cout〈〈”关键词: ”<〈stu[i]。keyword〈〈endl;
cout〈<"实现技术: ”<〈stu[i].technology<<endl;
}
}
void Guanli::searchsname()
{
int n=read();
char a[10];
cout〈<”请输入需要查找学生的姓名:"〈〈endl;
cin〉〉a;
for(int i=0;i<n;i++)
if(strcmp(stu[i].stuname,a)==0)
{
cout〈<”******************************”〈<endl;
cout〈〈"学号: ”<〈stu[i]。stuid<〈endl;
cout〈<"姓名: "<〈stu[i]. stuname〈〈endl;
cout<<"性别: "<<stu[i].sex〈<endl ;
cout<<"年龄: "<<stu[i]。 age<<endl ;
cout<〈"班级: "<〈stu[i]。clas<<endl;
cout<〈”专业: "〈<stu[i]. specialty〈〈endl;
cout<<"题目编号: "〈〈stu[i]。couid<〈endl;
cout<<"题目名称: ”〈〈stu[i].couname〈〈endl;
cout〈<"关键词: "<〈stu[i].keyword〈<endl;
cout〈〈”实现技术: "〈<stu[i]。technology〈<endl;
}
}
void Guanli::searchcid()
{
int n=read();
int b;
int i=0;
cout<〈"请输入需要查找的题目编号:”<<endl;
cin>>b;
while((stu[i].couid—b)!=0&&i〈n) i++; //查找判断
if(i==n)
{
cout〈<”提示:对不起,无法找到该信息!"<〈endl;
}
else
{
cout〈<”******************************"<〈endl;
cout〈〈”学号: ”<<stu[i]。stuid〈〈endl;
cout<〈”姓名: "<〈stu[i]。 stuname〈〈endl;
cout<〈”性别: ”<<stu[i].sex<〈endl ;
cout〈<”年龄: ”<<stu[i]。 age<<endl ;
cout〈〈"班级: "〈〈stu[i].clas<〈 endl;
cout〈〈”专业: "<〈stu[i]。 specialty<<endl;
cout<<”题目编号: "<〈stu[i].couid〈<endl;
cout<<"题目名称: "〈〈stu[i].couname〈<endl;
cout<<"关键词: ”<〈stu[i].keyword<〈endl;
cout<<”实现技术: "〈<stu[i].technology<<endl;
}
}
void Guanli::searchcname()
{
int n=read();
char c[10];
cout<<"请输入需要查找的题目名称:"<〈endl;
cin〉>c;
for(int i=0;i〈n;i++)
if(strcmp(stu[i]。couname,c)==0)
{
cout〈〈"******************************"〈<endl;
cout<<"学号: "<〈stu[i].stuid〈<endl;
cout<〈”姓名: "<〈stu[i]. stuname<<endl;
cout<〈"性别: ”<<stu[i].sex<<endl ;
cout〈<”年龄: ”〈〈stu[i]。 age<〈endl ;
cout<〈”班级: "<<stu[i]。clas〈< endl;
cout〈〈"专业: "<<stu[i]. specialty<<endl;
cout<〈"题目编号: "〈〈stu[i].couid<<endl;
cout<〈”题目名称: ”<<stu[i]。couname〈〈endl;
cout〈<”关键词: "<〈stu[i]。keyword<<endl;
cout<〈”实现技术: "〈〈stu[i]。technology〈〈endl;
}
}
void Guanli::alter()
{
int n=read();
int s;
int i=0;
cout<〈endl<<"修改学生信息:”〈〈endl;
cout〈<"请输入需要修改学生的学号:”<〈endl;
cin>>s;
while((stu[i]。stuid-s)!=0&&i<n) i++; //查找判断
if(i==n)
{
cout〈〈”提示:对不起,无该学生的信息!!!”〈<endl; //输入失败信息
}
else
{
cout<<”该学生的信息:”〈〈endl;
cout<<"学号”〈〈stu[i]。stuid〈<’\n'<〈"姓名”〈〈stu[i].stuname〈〈'\n’<<”性别"<<stu[i].sex<〈’\n’〈〈”年龄"〈<stu[i].age<〈'\n’〈<”班级”〈〈
stu[i].clas〈<’\n'〈<"专业"<<stu[i]。specialty<<'\n'<〈”题目编号”<〈stu[i]。couid〈<’\n’〈<"题目名称"<<stu[i].couname<<’\n’
〈<"关键词"<〈stu[i].keyword〈<'\n’〈〈”实现技术”〈<stu[i].technology〈〈’\n'〈〈endl;
cout〈〈"请重新输入该学生的信息"〈〈endl;
cout<<"学号:”;
cin〉>stu[i]。 stuid ;
cout<〈endl;
cout〈〈"姓名:”;
cin>>stu[i]。 stuname;
cout<<endl;
cout<<"性别:";
cin>>stu[i]。sex;
cout〈<endl;
cout〈<"年龄:";
cin>>stu[i]。age;
cout〈<endl;
cout<<”班级:";
cin>〉stu[i]。clas ;
cout〈〈endl;
cout<<"专业:”;
cin>〉stu[i]. specialty;
cout〈<endl;
cout<<"题目编号:";
cin>〉stu[i].couid;
cout〈<endl;
cout〈〈”题目名称:";
cin>〉stu[i]。couname;
cout〈〈endl;
cout<<"关键词:”;
cin〉>stu[i]。keyword;
cout<〈endl;
cout〈〈"实现技术:”;
cin>〉stu[i]。technology;
cout〈<endl;
char c;
cout〈〈"是否保存数据?(y/n)”〈<endl;
cin〉〉c;
if(c='y’)
cout<<"修改成功!"<〈endl;
write(n);
}
}
void Guanli::del()
{
int n=read();
int s;
int i=0,j;
cout〈<endl〈〈"删除学生信息:”〈〈endl;
cout<〈"请输入需要删除学生的学号:"<<endl;
cin〉〉s;
while((stu[i].stuid—s)!=0&&i〈n) i++; //查找判断
if(i==n)
{
cout<<”提示:记录为空!!!"<〈endl; //返回失败信息
}
else
{
for(j=i;j<n—1;j++) //删除操作
{
stu[j]。stuid=stu[j+1]。stuid;
strcpy(stu[j]。stuname,stu[j+1]。stuname);
strcpy(stu[j].sex,stu[j+1]。sex);
stu[j]。age=stu[j+1]。age;
strcpy(stu[j]。clas,stu[j+1]。clas);
strcpy(stu[j]。specialty,stu[j+1]。specialty);
stu[j].couid=stu[j+1].couid;
strcpy(stu[j].couname,stu[j+1]。couname);
strcpy(stu[j].keyword,stu[j+1]。keyword);
strcpy(stu[j]。technology,stu[j+1]。technology);
}
cout〈〈”提示:已成功删除!”〈〈endl; //返回成功信息
}
cout<〈"你要删除的信息如下:"〈〈endl;
cout<〈”姓名:”<〈stu[i]。stuname〈〈endl;
cout<<"学号:"〈〈stu[i]。stuid<〈endl;
cout〈<”性别:”〈<stu[i].sex<<endl;
cout<〈”年龄:"<〈stu[i].age〈〈endl;
cout〈<"班级:”〈〈stu[i].clas〈<endl;
cout〈〈”专业:”〈<stu[i].specialty<<endl;
cout〈〈"题目编号:”<<stu[i].couid<<endl;
cout<<”题目名称:"<<stu[i].couname〈<endl;
cout〈〈"关键词:”<<stu[i].keyword〈〈endl;
cout<<”实现技术:”〈〈stu[i].technology〈〈endl;
write(n-1);
}
void Guanli::total()
{
{
int n=read();
char c[10];
cout<〈"请输入需要查找的题目名称:”<〈endl;
cin〉>c;
for(int i=0;i〈n;i++)
if(strcmp(stu[i]。couname,c)==0)
{
cout〈<”你要统计的信息如下:"<〈endl;
cout〈〈"姓名:”〈<stu[i]。stuname〈〈endl;
cout<<”学号:"<<stu[i]。stuid<<endl;
cout〈<”性别:"〈<stu[i].sex〈<endl;
cout〈〈”年龄:”〈<stu[i]。age〈<endl;
cout<<”班级:"<<stu[i].clas<<endl;
cout<〈"专业:”〈<stu[i].specialty〈<endl;
cout〈〈"题目编号:”<<stu[i].couid〈<endl;
cout〈〈"题目名称:"〈<stu[i]。couname<〈endl;
cout<<”关键词:"<<stu[i].keyword<<endl;
cout〈<”实现技术:”〈〈stu[i].technology<<endl;
}
else
{
cout<<”没有此条记录!"<<endl;
}
}
}
void Guanli::display()
{
int n=read();
cout〈〈endl〈<”显示全部学生信息:"〈<endl;
if(!stu)
cout〈〈”没有记录"〈〈endl;
else
{
for(int i=0;i〈n;i++) //循环输入
cout〈<”学号”〈<stu[i].stuid〈〈’\n’〈〈”姓名”<〈stu[i]。stuname〈<'\n’<〈”性别”〈〈stu[i].sex<<'\n’〈〈”年龄"<〈stu[i].age〈〈’\n'<〈"班级"<〈
stu[i].clas〈〈’\n’<<"专业”〈<stu[i]。specialty<〈'\n'〈〈"题目编号”〈〈stu[i].couid〈<'\n'〈〈”题目名称”〈<stu[i]。couname<<’\n’〈〈
”关键词”〈<stu[i].keyword<<’\n’<<”实现技术”<<stu[i]。technology<<’\n'〈〈endl;
}
}
3)主函数实现
int main()
{
char choice;
cout<<”\n\n\t **欢迎使用课程设计选题管理系统**\n\n";
cout<〈”\t 1.********添加新的记录********\n";
cout〈〈"\t 2.********查询记录信息********\n";
cout〈〈"\t 3.********修改学生信息********\n”;
cout〈<”\t 4。********删除学生信息********\n";
cout〈〈"\t 5.********统计所有记录********\n";
cout〈〈”\t 6。********显示所有记录********\n";
cout〈〈”\t 0.******** 退出系统 ********\n”;
cout<<”\t 请输入您的选择:";
cin>〉choice;
Guanli g;
if(choice=='0')
{
cout<<"\n\t\t 谢谢您使用本系统!\n\n"<<endl;
exit(0);
}
else if(choice=='1’)
{
g.add();
system(”pause”);
main();
}
else if(choice==’2')
{
g。search();
system("pause");
main();
}
else if(choice=='3')
{
g。alter();
system(”pause”);
main();
}
else if(choice==’4’)
{
g。del();
system(”pause”);
main();
}
else if(choice==’5’)
{
g.total();
system(”pause");
main();
}
else if(choice==’6’)
{
g。display();
system(”pause”);
main();
}
else
{
cout<<”\t 输入错误,请重新输入您的选择:";
main();
}
return 0;
}
4、系统测试
1)添加功能
添加学生信息界面如下图所示:
2)查询功能
查询学生信息的界面如下图所示:
①根据学生学号进行查询:
②根据学生姓名进行查询:
③根据题目编号进行查询:
④根据题目名称进行查询:
3)修改功能
修改学生的相关信息,界面如下图所示:
4)删除功能
删除指定学生的信息,界面如下图所示:
5)统计功能
根据题目名称统计学生的信息,界面如下图所示:
6)显示功能
显示全部学生的信息,界面如下图所示:
7)退出系统
退出使用系统,界面如下图所示:
三、心得体会
本课程设计中,我终于成功地实现了一个学生课程设计选题系统的程序,一个一开始看来很难完成的任务。在做这个课程设计之前,我对课程设计都有一种笼统的恐怕与抗拒,但在通过查阅资料,有了大概的纹路,一步步开展我们自己的课程设计时,我们发现看上去的困难并不那么无法攻略,只要有耐心,细致往下做,悉心请教同学与老师,我们能够完成看似无从下手的设计.
在课程设计之前对 C++程序的认识仅停留在看的阶段,而对编程实现的认识很模糊,只知道大概的意思,在课程设计期间才知道离独立编程还有很远的距离.通过这次课程设计,一点点解决所碰到的问题,我们学到了很多在课堂和书本上学不到的知识。而且,我们对面向对象编程、类、数组,指针等一系列概念也都有了更进一步的认识,也初步意识到所学知识在实际应用中的作用。
因为本人水平有限,在做课程设计是参考了很多资料,并在一些书籍中找到了解决问题的方法,在查阅书籍的同时进行学习,经过多次的修改与调试,最后交出了一份自己比较满意的答卷。
通过这次课设,让我进一步掌握了C++程序设计语言,更好的理解了面向对象的程序设计思想。我相信这会对以后的学习有帮助作用。在以后的学习中应当继续努力。
超市会员管理系统
1.课程设计目的
通过课程设计加深对数据库基础理论和基础知识的理解,掌握运用数据库管理系统,实现数据管理的基本思路和方法,培养分析问题、解决问题的能力。
2.系统功能设计
2。1功能模块图
功能模块图如图1。
会员姓名
会员性别
购物情况
回收旧卡
结卡日期
补办新卡
购卡日期
挂失卡
发行新卡
解挂卡
更改卡信息
报表预览
报表打印
优惠规则
成为会员条件
超市会员管理系统
会员基本信息
会员卡管理
会员报表管理
会员政策管理
图1系统功能模块设计图
2。2功能说明
该超市会员管理系统旨在为超市的会员管理工作提供一个比较系统的会员管理平台,它帮助超市存储及管理会员的基本信息、管理会员卡、管理会员报表及会员政策,完全可以取代之前复杂的手工记录
展开阅读全文