合肥学院计算机科学与技术系课程设计报告2010~2011学年第二学期课程C++课程设计课程设计名称学生社团管理程序学生姓名章丹学号1004013033专业班级计科(1)班指导教师华姗姗2011 年6 月一、课程设计目的:将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。
通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《C++程序设计语言》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。
(6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序和修改程序。
二、需求分析:课程设计名称:学生社团管理程序设计内容:编写一个简单的学生社团管理程序,帮助管理学生社团信息。
要求具有学生信息管理和社团信息管理的功能。
其中学生信息管理包括学生基本信息的录入、删除和修改等功能。
社团信息管理包括社团信息的录入,查看,删除,修改等功能。
二算法设计1.设计思想:学生社团管理程序(添加信息、修改信息、删除信息,查询信息,);要完成这个题目,主要是建立解决输入的信息的存储,解决的方法是建立动态数组,用于存储信息。
解决了这个问题后就是如何建立联系了,解决的方法是创建一个文件档用来储存输入的信息。
2.功能要求在学生社团管理系统中须实现以下功能:(1)添加社员信息:能够社员的信息,添加信息如下图;(2)修改社员信息:能对学生社团管理系统中存储的信息进行修改;(3)删除社员信息:可以删除学生社团管理系统中所有社员的信息;(4)查询社员信息:按照每个社员的会员号可以进行查询社员的情况;(5)存储信息:能够记录保存在设定的文件档中,以便使用;(6)退出系统:任务完成后,能够正常退出系统。
3.技术要求(1)学生信息管理包括学生基本信息的录入、删除和修改等功能。
社团信息管理包括社团信息的录入,查看,删除,修改等功能。
(2)信息以文件档的形式存储,存储位置,文件名,文件格式由设计者确定。
(3)以菜单方式实现功能选择控制。
三.学生社团管理程序的框图设计1 总体实现功能主要的数据结构:社员会员号、社员姓名,社员年龄,社员性别,社员专业,社员班级、社团名称。
以这些数据来存储学生的信息,能够了解学生社团的各项情况。
下图给出了学生社团管理程序的功能结构:1、添加社员信息社员会员号2、修改社员信息社员姓名社员年龄社员选择社员性别3、删除社员信息社员专业4、查询社员信息社员班级5、退出系统社团名称(1)添加信息模块社员进入该模块,输入自己的相关信息,输入后,保存自己的信息,这样系统就存储了你的信息。
添加服务信息社员会员号社员姓名社员性别社员年龄社员专业社员班级社团名称存储信息(2)修改信息模块社员进入该模块,输入自己的社员会员号,在进入自己的信息区域,修改自己的相关信息,再保存,即可。
修改社员信息输入要修改的社员会员号(正确)社号社社社社社社员员员员员团员性姓年专班名会别名龄业级称员存储信息(3)删除信息模块社员进入模块,可以删除社员的所有信息,进行查看。
(4)查询信息模块社员进入该模块,可以查询自己的信息情况。
查询社员信息输入要查询的社员的会员号(正确)社员会员社员姓名社员年龄社员性别社员专业社员班级社团名称(5)退出系统2、设计功能的实现和分析(1)定义结构体struct Message // 构造学生信息结构体{string ID; // 社团会员号string name; // 社员姓名string sex; // 社员性别string age;·················` // 社员年龄string profession; // 社员专业string grade; // 社员班级string club; // 社团名称(2)学生信息类class studentmessage{publicchar Menu(); // 菜单void Add(); // 添加社员信息void Change(); // 修改社员信息void Delate(); // 删除社员信息void Search(); // 查询社员信息void Write(); // 写入文件void Read(); // 从文件中读取private:vector<Message> mes;static int times;};(3) 显示菜单函数///////////// 菜单////////////////////char studentmessage::Menu(){cout<<endl;cout<<endl;cout<<endl;cout<<" 学生社团管理系统---选项"<<endl;cout<<"***********************************************"<<endl;cout<<endl;cout<<" 1.添加社员信息"<<endl;cout<<" 2.修改社员信息"<<endl;cout<<" 3.删除社员信息"<<endl;cout<<" 4.查询社员信息"<<endl;cout<<" 5.退出程序"<<endl;char choose;cin>>choose;return choose;}(4) 函数的分析<1>添加社员信息////////////// 录入////////////////////void studentmessage::Add(){Read(); //从文件档中读取已存的信息Message temp; //构建一个临时的tempcout <<"请依次输入新社员的信息" <<endl;cout<<"社员会员号:"<<endl;cin >>temp.ID;cout<<"社员姓名:"<<endl;cin>>;cout<<"社员性别:"<<endl;cin>>temp.sex;cout<<"社员年龄:"<<endl;cin>>temp.age;cout<<"社员专业:"<<endl;cin>>temp.profession;cout<<"社员班级:"<<endl;cin>>temp.grade;cout<<"社团名称:"<<endl;cin>>temp.club;mes.push_back(temp); //运用push_back把输入的新信息存储到文件档中times++;Write(); }将原有文件档中的信息读取出来,然后将信息添加在其后,再一起存入文件档中。
〈2〉修改社员信息void studentmessage::Change(){{Read(); //从文件档中读取已存的信息string sign; //构建一个临时的signcout <<endl <<"输入要修改的社员信息的会员号: "<<endl;cin >>sign;for(int i=0;i<mes.size();i++) //利用for 循环查找文件档中的已存入的会员号{if (mes[i].ID==sign){cout <<endl <<"你要修改的社员信息是: " <<endl<<endl;cout<<"社员会员号:"<<mes[i].ID<<endl;cout<<"社员姓名:"<<mes[i].name<<endl;cout<<"社员性别:"<<mes[i].sex<<endl;cout<<"社员年龄:"<<mes[i].age<<endl; cout<<"社员专业:"<<mes[i].profession<<endl;cout<<"社员班级:"<<mes[i].grade<<endl;cout<<"社团名称:"<<mes[i].club<<endl;cout<<endl;cout<<endl;cout <<"请依次输入新教材的信息" <<endl;cout<<"社员会员号:"<<endl;cin>>mes[i].ID;cout<<"社员姓名:"<<endl;cin >>mes[i].name;cout<<"社员性别:"<<endl;cin>>mes[i].sex;cout<<"社员年龄:"<<endl;cin>>mes[i].age;cout<<"社员专业:"<<endl;cin>>mes[i].profession;cout<<"社员班级:"<<endl;cin>>mes[i].grade;cout<<"社团名称:"<<endl;cin>>mes[i].club;Write();break; }}先将文件档中的信息读取出来,然输入自己需要修改的会员号,利用for 循环查找文件档中是否存在该会员,如果不存在,则为空,跳出循环,结束程序,如果存在,先把信息显示出来,然后改写信息。