当前位置:文档之家› 课程设计选题管理系统报告材料

课程设计选题管理系统报告材料

电力学院课程设计报告面向对象程序设计(2014/2015学年第一学期)课题名称课程设计选题管理系统设计院(系)电子与信息工程学院专业通信工程学号20132234姓名储昊时间2015年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].s pecialty>>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; //输入判断}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)退出系统退出使用系统,界面如下图所示:三、心得体会本课程设计中,我终于成功地实现了一个学生课程设计选题系统的程序,一个一开始看来很难完成的任务。

相关主题