学生社团管理程序C++课程设计Word格式.docx
《学生社团管理程序C++课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《学生社团管理程序C++课程设计Word格式.docx(32页珍藏版)》请在冰点文库上搜索。
1.设计思想:
学生社团管理程序(添加信息、修改信息、删除信息,查询信息,);
要完成这个题目,主要是建立解决输入的信息的存储,解决的方法是建立动态数组,用于存储信息。
解决了这个问题后就是如何建立联系了,解决的方法是创建一个文件档用来储存输入的信息。
2.功能要求
在学生社团管理系统中须实现以下功能:
(1)添加社员信息:
能够社员的信息,添加信息如下图;
(2)修改社员信息:
能对学生社团管理系统中存储的信息进行修改;
(3)删除社员信息:
可以删除学生社团管理系统中所有社员的信息;
(4)查询社员信息:
按照每个社员的会员号可以进行查询社员的情况;
(5)存储信息:
能够记录保存在设定的文件档中,以便使用;
(6)退出系统:
任务完成后,能够正常退出系统。
3.技术要求
(1)学生信息管理包括学生基本信息的录入、删除和修改等功能。
(2)信息以文件档的形式存储,存储位置,文件名,文件格式由设计者确定。
(3)以菜单方式实现功能选择控制。
三.学生社团管理程序的框图设计
1总体实现功能
主要的数据结构:
社员会员号、社员姓名,社员年龄,社员性别,社员专业,社员班级、社团名称。
以这些数据来存储学生的信息,能够了解学生社团的各项情况。
下图给出了学生社团管理程序的功能结构:
(1)添加信息模块
社员进入该模块,输入自己的相关信息,输入后,保存自己的信息,这样系统就存储了你的信息。
(2)修改信息模块
社员进入该模块,输入自己的社员会员号,在进入自己的信息区域,修改自己的相关信息,再保存,即可。
(3)删除信息模块
社员进入模块,可以删除社员的所有信息,进行查看。
(4)查询信息模块
社员进入该模块,可以查询自己的信息情况。
(5)退出系统
2、设计功能的实现和分析
(1)定义结构体
structMessage//构造学生信息结构体
{
stringID;
//社团会员号
stringname;
//社员姓名
stringsex;
//社员性别
stringage;
·
·
`//社员年龄
stringprofession;
//社员专业
stringgrade;
//社员班级
stringclub;
//社团名称
(2)学生信息类
classstudentmessage
public
charMenu();
//菜单
voidAdd();
//添加社员信息
voidChange();
//修改社员信息
voidDelate();
//删除社员信息
voidSearch();
//查询社员信息
voidWrite();
//写入文件
voidRead();
//从文件中读取
private:
vector<
Message>
mes;
staticinttimes;
};
(3)显示菜单函数
/////////////菜单////////////////////
charstudentmessage:
:
Menu()
cout<
<
endl;
"
学生社团管理系统---选项"
***********************************************"
1.添加社员信息"
2.修改社员信息"
3.删除社员信息"
4.查询社员信息"
5.退出程序"
charchoose;
cin>
>
choose;
returnchoose;
}
(4)函数的分析
1>
添加社员信息
//////////////录入////////////////////
voidstudentmessage:
Add()
Read();
//从文件档中读取已存的信息
Messagetemp;
//构建一个临时的temp
cout<
请依次输入新社员的信息"
<
社员会员号:
cin>
temp.ID;
社员姓名:
temp.name;
社员性别:
temp.sex;
社员年龄:
temp.age;
社员专业:
temp.profession;
社员班级:
temp.grade;
社团名称:
temp.club;
mes.push_back(temp);
//运用push_back把输入的新信息存储到文件档中
times++;
Write();
将原有文件档中的信息读取出来,然后将信息添加在其后,再一起存入文件档中。
〈2〉修改社员信息
Change()
stringsign;
//构建一个临时的sign
endl<
输入要修改的社员信息的会员号:
"
sign;
for(inti=0;
i<
mes.size();
i++)//利用for循环查找文件档中的已存入的会员号
{
if(mes[i].ID==sign)
你要修改的社员信息是:
endl<
mes[i].ID<
cout<
mes[i].name<
社员性别:
mes[i].sex<
社员年龄:
mes[i].age<
社员专业:
mes[i].profession<
社员班级:
mes[i].grade<
社团名称:
mes[i].club<
cout<
cout<
请依次输入新教材的信息"
cin>
mes[i].ID;
cin>
mes[i].name;
cin>
mes[i].sex;
mes[i].age;
mes[i].profession;
mes[i].grade;
mes[i].club;
Write();
break;
先将文件档中的信息读取出来,然输入自己需要修改的会员号,利用for循环查找文件档中是否存在该会员,如果不存在,则为空,跳出循环,结束程序,如果存在,先把信息显示出来,然后改写信息。
4>
查找社员信息
Search()
Read();
stringsign;
输入要查找的社员信息的会员号:
boolflog=false;
你要查找的教材信息是:
cout<
flog=true;
}
if(flog==false)cout<
noun"
先将文件档中的信息读取出来,然输入自己需要查找的会员号,利用for循环查找文件档中是否存在该会员,如果不存在,则为空,跳出循环,结束程序,如果存在,把该会员的信息显示出来。
5>
//////////////////写入//////////////////////
Write()
ofstreamos("
clubmessage.txt"
ios_base:
out);
i++)
os<
endl
<
os.close();
}
创建一个clubmessage.txt用于储存社员信息。
运用ofstreamos将信息储存起来。
6>
//////////////////读取////////////////
Read()
Messagetempstudent;
ifstreamis("
in);
while(!
is.eof()//当字符长度部位空时运行下例读取文件档中的信息
is>
tempstudent.age
>
tempstudent.club
tempstudent.grade
tempstudent.ID
tempstudent.name
tempstudent.profession
tempstudent.sex;
mes.push_back(tempstudent);
times++;
}
上面已经创建一个clubmessage.txt用于储存社员信息。
运用ifstreamos将信息读取出来。
7>
删除社员信息
Delate()
输入要删除的社员信息的会员号:
inti;
stringsignstr;
for(i=0;
你要删除的社员信息是:
性别:
年龄:
专业:
班级:
y/n?
signstr;
if(signstr=="
y"
||signstr=="
Y"
)mes.erase(&
mes[i]);
先将文件档中的信息读取出来,然输入自己需要删除的会员号,利用for循环查找文件档中是否存在该会员,如果不存在,则为空,跳出循环,结束程序,如果存在,确定删除按“y”,把该会员的信息删除。
8>
主函数
intmain()
studentmessagestudent;
while
(1)
switch(student.Menu())//运用switch产生循环操作。
{
case'
1'
student.Add();
break;
2'
student.Change();
3'
student.Delate();
4'
student.Search();
5'
exit(0);
default:
cout<
输入有误"
break;
return0;
四、用户手册
首先根据你在菜单中选择的类型进入,输入会员号,找到相对应的信息。
然后根据显示的提示依次进行输入。
用户利用该系统时可根据该利用手册进行运用。
五、调试及测试
出现问题:
在修改信息函数中,开始并不能将原有信息进行修改,只能覆盖掉第一个会员信息,而且并没有把修改之前的信息删除,显示时同时显示了修改前后的信息;
文件操作时不知道如何将输入的信息进行保存,怎样取出文件的信息,不能很好的运用文件操作;
题目提示的运用链表不会用,数组类模版不会用。
解决问题:
通过问同学,查书籍,上网查看,了解可以创建一个文件档来解决问题,能够很好的存储信息在文件档中,将信息取出,调用等;
文件的操作我利用一个函数编写保存信息的函数,每次输入一个客户的信息就进行保存。
数据用一个动态数组分配一定的内存存储服务信息在文件档中;
设计本程序了解到类和对象、动态数组、创建文档等知识的用途,学到了新的知识点,也看到了自己的不足,要学好自己的专业课程看来不是那样的简单,在学习阶段并没有写过这样大的程序,开始有些手忙脚乱的,所以说还是要多多看看这的程序,试着写写,提高自己的编程能力。
六、小结
这次基础强化训练的课程设计对于我们来说,有一定的难度。
因为他要求我们较完整的去实现一个比较可行的程序。
将其应用到实际的生活中去。
我被分配到的题目是售后服务管理系统的实现与设计。
这个题目相对来说贴近生活,比较容易理解。
但是设计一个较为完整的程序却不是这么简单的。
首先我分析了相关的题目内容,并由此而进行了相关资料和书籍的查询工作然后才开始正式进行设计。
一开始不知从何下手但后来分析了一下题目,并结合这学期所学的知识,再加上相关提示我决定用类和对象、对象指针和文件的内容来编写程序。
服务管理主要就是有一些操作来完成,这些操作包括:
添加社员信息,修改社员信息,删除社员信息,查询社员信息,等等。
用C++的知识来实现函数:
添加,查询,修改,删除。
最后编写退出系统的函数。
在具体编写程序时考虑只要编写前三个函数,后面的函数几乎差不多。
添加社员信息:
考虑到社员的信息较多,所以用类对其定义。
又考虑到信息量大,所以添加后要保存到文件中去。
信息查询:
用构建文件档来写。
修改信息:
把保存到文件中的内容写到文件档中去,把其读取出来,再进行修改,再保存。
同时通过这几天的程序及报告编写,我也发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还是比较脆弱。
尤其是编写大型的程序所要拥有的知识和技能比较缺乏。
程序编好了,还要经过调试和修改,这步也很关键,好的程序是经过了无数次的修改和调试才产生的。
我的程序基本上能够满足要求,但还有一些地方需要改进,在今后我应该在多看书的同时还要加强实践的练习。
才能进一步提高自己的编程能力。
最后,还要感谢我们实验室指导老师的细心指导、热心帮助。
路漫漫其修远兮,虽然本学期数据结构课程结束了,但仍觉得自己还有很多东西要学,我会在自己在以后的学习生活中不断努力、不断提高,争取更大的进步。
七、参考文献
[1]闵联营,何克右.《C++程序设计教程》.武汉理工大学出版社;
[2]严蔚敏,吴伟民.《数据结构(C语言版)》.清华大学出版社;
[3]张文祥,肖四友.《C++实验与案例分析》.科学出版社;
[4]谭浩强.《C++程序设计》.清华大学出版社;
[5]朱战立.《数据结构(C++语言描述)》(第二版本).高等教育出版社。
附录1
#include<
iostream>
#include<
stdlib.h>
fstream>
string>
vector>
usingnamespacestd;
structMessage
//社员年龄
//社员专业
public:
charMenu();
//菜单
voidWrite();
//写入文件
voidRead();
//从文件中读取
intstudentmessage:
times=0;
cin>