1、 上 海 电 力 学 院 课程设计报告 面向对象程序设计 (2023/2023学年第一学期) 课题名称 课程设计选题管理系统设计 院 (系) 电子与信息工程学院 专 业 通信工程 学 号 20232234 姓 名 储昊 时 间 2023年1月19日至1月23日 地 点 虚拟仿真实验室(南4教312) 指导老师 骆政屹
2、目 录 一、设计目的与任务……………………………………………………………………….2 1、本课程设计的目的……………………………………………………………………….2 2、本课程设计的任务……………………………………………………………………….2 二、设计方案…………………………………………………………………………………..3 1、总体设计……………………………………………………………………………………….3 2、系统设计……………………………………………………………………………………….3 3、系统实现……………………………………………………………………………………….5 4
3、系统测试………………………………………………………………………………………16 三.心得体会…………………………………………………………………………………….20 一、设计目的与任务 1、本课程设计的目的 1)课程设计是实践教学环节。设立课程设计的目的是加强学生对本课程及相关课程知识的理解,培养学生综合运用理论知识分析和解决实际问题的方法与能力。有助于提高学生的创新能力和创新意识。搞好课程设计教学工作,对实现专业培养目的,提高学生全面素质有重要作用。 2)通过课程设计更进一步理解 C++的基础知识。 3)训练用系统的观点及软件开发的一般规范进行软件开发,并在此过程中培养严谨
4、的科学态度和良好的工作作风。初步掌握软件开发过程中的问题分析、系统设计、程序编码、调试、测试等方面的基本方法和技能。 4) 纯熟掌握 C++知识在程序中的应用,了解书本知识在解决实际问题中的用途。 2、本课程设计的任务 (1)问题描述 课程设计题目涉及:编号、名称、关键词、实现技术、人员数(由几个人来完毕)等信息。 学生信息涉及:学号、姓名、性别、年龄、班级、专业等信息。 (2)功能规定 ① 添加功能:程序可以添加学生的记录和课程设计题目记录,提供选择界面供用户选择所要添加的类别。添加记录时,规定学号和编号要唯一。假如添加了反复记录,则提醒数据添加反复并取消添加。 ② 查询功能
5、可根据学号、姓名、编号、名称等信息对已添加的学生和课程设计题目进行查询,假如未找到,给出相应的提醒信息,假如找到,则显示相应的记录信息。 ③ 显示功能:可显示当前系统中所有学生的信息和课程设计题目信息,每条记录占据一行。 ④ 编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。 ⑤ 删除功能:重要实现对已添加的学生和课程设计题目记录进行删除。假如当前系统中没有相应的记录,则提醒“记录为空!”并返回操作。 ⑥ 记录功能:能根据多种参数进行记录。能按课程设计题目名称记录出学生选择该题目的人员的信息。 ⑦ 保存功能:可将当前系统中各类记录存入文献中,存入方式任意。 ⑧
6、 读取功能:可将保存在文献中的信息读入到当前系统中,供用户进行使用。 二、 设计方案 1、总体设计 我们设计一个程序对学生课程设计选题信息进行保存,对学生的选题信息进行可执行多种操作,该程序涉及以下功能模块:1)学生信息添加模块:可以输入学生基本信息并保存到文献中。2)查询模块:显示所有符合规定的课程设计信息。3)编辑模块:可对学生信息进行修改。4)删除模块:可删除相应的学生信息。5)记录模块:能根据多种参数进行记录。6)查看模块:显示所有课程设计选题的信息。7)退出系统。为了完善系统,我们还添加了一个登录界面。 2、系统设计 1)类设计 定义一个学生类Student,类中涉
7、及学号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(),按题目名称查询函数vo
8、id 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(),修
9、改学生信息;void del(),删除学生信息,根据输入的学生学号通过调用函数实现;void total(),记录学生信息(根据学生所选课程名称进行记录);void display(),显示函数用来显示所有学生信息;int main()主函数,显示主菜单,调用各个函数实现所有功能。 3)系统流程图 课程设计学生选课系统设计结构图:进入功能界面后,可以进行多项功能选择,如添加、查询、显示、修改、删除、记录,将数据写入文献以及从文献读取数据等;而查询功能又可以分为按学号、姓名、题目编号、题目名称等方式进行查询。如下图所示。 主菜单 退出系统 显示所有记录 记录所有记录 删除学生
10、信息 修改学生信息 查询记录信息 添加新的记录 按学号查询 按姓名查询 按编号查询 按名称查询 4)界面设计 主界面是“欢迎使用课程设计选课系统”,下面是所要使用的功能: 1. 添加新的纪录 2. 查询记录信息 3. 修改学生信息 4. 删除学生信息 5. 记录所有记录 6. 显示所有记录 0. 退出系统 其中,查询记录又可以弹出一个界面分别有以下几个功能: 1. 根据学号查询 2. 根据姓名查询 3. 根据编号查询 4. 根据题目名称查询 每实现一个功能,重新弹出主界面,进行下一个的功能选择。 3、系统实现 1)类实现
11、 class Student { public: int stuid; //学号 char stuname[10]; //姓名 char sex[2]; //性别 int age; //年龄 char clas[10]; //班级 char specialt
12、y[10]; //专业 int couid; //题目编号 char couname[10]; //题目名称 char keyword[20]; //关键词 char technology[30]; //实现技术 }stu[50]; //定义对象 class Guanli { private: Student stu[50]; public: void
13、 add(); //添加学生信息 void search(); //查询信息 void searchsid(); //按学号查询信息 void searchsname(); //按名字查询信息 void searchcid(); //按题目编号查询信息 void searchcname(); //按题目名称查询信息 void alter(); //修改信息 void del();
14、 //删除信息 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);
15、
if(!myfile)
{
cout<<"该文献不能打开!"< 16、 "< 17、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< 18、t< 19、 cout< 20、n>>stu[i].couname;
cout< 21、
cout<<"** (2)根据姓名查询 **"< 22、case 3:
g.searchcid();
break;
case 4:
g.searchcname();
break;
default:
cout<<"输入错误,请重新输入!"< 23、
while((stu[i].stuid-s)!=0&&i 24、 cout<<"年龄: "< 25、dl;
}
}
void Guanli::searchsname()
{
int n=read();
char a[10];
cout<<"请输入需要查找学生的姓名:"< 26、]. stuname< 27、"< 28、 cout<<"******************************"< 29、l;
cout<<"题目编号: "< 30、i=0;i 31、as<< endl;
cout<<"专业: "< 32、t i=0;
cout< 33、< 34、]. stuid ;
cout< 35、 cout< 36、 37、 38、cpy(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); 39、
strcpy(stu[j].technology,stu[j+1].technology);
}
cout<<"提醒:已成功删除!"< 40、<<"班级:"< 41、int n=read();
char c[10];
cout<<"请输入需要查找的题目名称:"< 42、年龄:"< 43、ut<<"没有此条记录!"< 44、'<<"班级"<<
stu[i].clas<<'\n'<<"专业"< 45、添加新的记录********\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 46、 请输入您的选择:";
cin>>choice;
Guanli g;
if(choice=='0')
{
cout<<"\n\t\t 谢谢您使用本系统!\n\n"< 47、'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(" 48、pause");
main();
}
else
{
cout<<"\t 输入错误,请重新输入您的选择:";
main();
}
return 0;
}
4、系统测试
1)添加功能
添加学生信息界面如下图所示:
2)查询功能
查询学生信息的界面如下图所示:
①根据学生学号进行查询:
②根据学生姓名进行查询:
③根据题目编号进行查询:
④根据题目名称进行查询:
3)修改功能
修改学生的相关信息,界面如下图所示:
4)删除功能
删除指定学生的信息,界面如下图所示:
5 49、记录功能
根据题目名称记录学生的信息,界面如下图所示:
6)显示功能
显示所有学生的信息,界面如下图所示:
7)退出系统
退出使用系统,界面如下图所示:
三、心得体会
本课程设计中,我终于成功地实现了一个学生课程设计选题系统的程序,一个一开始看来很难完毕的任务。在做这个课程设计之前,我对课程设计都有一种笼统的恐怕与抗拒,但在通过查阅资料,有了大约的纹路,一步步开展我们自己的课程设计时,我们发现看上去的困难并不那么无法攻略,只要有耐心,细致往下做,悉心请教同学与老师,我们可以完毕看似无从下手的设计。
在课程设计之前对 C++程序的结识仅停留在看的阶段, 而对编 50、程实现的结识很模糊, 只知道大约的意思, 在课程设计期间才知道离独立编程尚有很远的距离。 通过这次课程设计,一点点解决所碰到的问题,我们学到了很多在课堂和书本上学不到的知识。并且,我们对面向对象编程、类、数组,指针等一系列概念也都有了更进一步的结识,也初步意识到所学知识在实际应用中的作用。
由于本人水平有限,在做课程设计是参考了很多资料,并在一些书籍中找到了解决问题的方法,在查阅书籍的同时进行学习,通过多次的修改与调试,最后交出了一份自己比较满意的答卷。
通过这次课设,让我进一步掌握了C++程序设计语言,更好的理解了面向对象的程序设计思想。我相信这会对以后的学习有帮助作用。在以后的学习中应






