李治伟学生信息管理系统课程设计报告.docx
《李治伟学生信息管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《李治伟学生信息管理系统课程设计报告.docx(34页珍藏版)》请在冰豆网上搜索。
李治伟学生信息管理系统课程设计报告
《学生信息管理系统》
程序设计基础课程设计报告
专业:
计算机科学与技术系
班级:
一班
姓名:
李治伟
学号:
2011508013
指导教师:
郭理
完成日期:
2012-6-25
1.课程设计目的
1.1课程设计目的:
《C++程序设计》是计算机科学与技术专业的必修课。
自己做一个课程设计是学习完本书后进行的一次全面的综合性练习。
其目的在于加深对C++编程的理解,培养学生的实践能力,促进理论与实践的结合。
通过课程设计,让学生能够熟练运用C++进行面向对象编程,建立对象模型,降低软件的复杂性,改善软件的重用性和维护性,提高软件的生产效率,全面掌握面向对象编程技术。
1.2课程设计题目:
题目:
学生信息管理系统
1.3题目要求:
1.问题描述(功能要求):
学生信息包括:
学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生管理系统,使之能提供以下功能:
系统以菜单方式工作
学生信息录入功能(学生信息用文件保存)----输入
学生信息浏览功能----输出
查询,排序功能----算法
按学号查询
按姓名查询
(5)学生信息的删除与修改(可选项)
2.问题的解决方案:
根据系统功能要求,可以讲问题解决分为以下步骤:
分析系统中的各个实体之间的关系及其属性和行为;
根据问题描述,设计系统的类层次;
完成类层次中各个类的描述(包括属性和方法);
完成类中各个成员函数的定义;
完成系统的应用模块;
功能调用;
完成系统总结报告以及系统使用说明书。
其他要求:
只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
至少采用文本菜单界面(如果能采用图形菜单界面更好)
学生可自动增加新功能模块
2.总体设计
2.1总体组成框图:
图2-1物理模型图
2.2总体流程图:
图2-2总体流程图
3.详细设计
3.1数据结构设计
classstudent
{
public:
student();
voidset();//初始化信息,第一次对信息的录入
voidadd();//添加学生信息
voiddel();//删除某学生信息
voidchange();//修改某学生信息
voidsearch();//查询某学生信息
voiddisplay();//显示全部学生信息
booltest(longnum);
private:
staticintnum;
longxuehao;
intage;
stringtel;
stringname,sex,address,birthday,email;
};
3.2信息录入模块
3.1.1函数功能:
录用学生的基本信息。
使用磁盘存储数据,以便在后面的使用。
3.1.2函数入口:
Student对象的成员函数。
入口函数:
set();使用fstring头文件,向文件写入数据。
在录入数据的时候进行数据的查找,学生的学号是不相同的,对学号进行查找,若有相同的则提示错误,若是没有相同的则允许添加信息。
3.1.3函数流程图:
图3-1set()信息录入函数流程图
3.2显示学生信息模块
3.2.1函数功能:
显示所有学生的相关信息。
3.2.2函数介绍:
普通成员函数。
voiddisplay();逐行的读取文件中的数据,直到文件中的数据读取完全,将读出的数据显示到屏幕上。
3.2.3函数流程图:
图3-2display()信息展示流程图
3.3查找学生信息模块
3.3.1函数功能:
查找文件中的学生的所有信息中符合查找条件的数据,然后将差得的结构返回给用户。
3.3.2函数介绍:
普通成员函数
voidsearch();打开文件,如果文件打开错误,提示错误信息。
打开文件成功后,要求用户输入查找的条件,使用文件读取功能,将特定的数据取出用户输入的信息进行比对,若相同则返回该学生的基本信息。
该函数提供两种查询的条件,可以按照学号和姓名查找,对与不同的条件的查询其结果一定相同。
给用户提供更多的选择。
3.3.3函数流程图
图3-3search()查找函数流程图
3.4删除学生信息模块
3.4.1函数功能:
删除文件中该特定条件的信息。
对不需要的数据进行清除,降低数据的冗余度。
3.4.2函数介绍:
普通成员函数。
voiddel();对需要删除的数据,提供姓名的查找形式,在后面的提供更多的查找方式,但是方式都是相同的,只是查询的条件不相同而已。
3.4.3函数流程图:
图3-4del()删除函数流程图
3.5修改学生信息模块
3.5.1函数功能:
修改文件中的学生的相关信息。
对文件中有错误的信息提供修改的函数功能。
减低数据的错误率。
3.5.2函数介绍:
普通成员函数。
voidchange();调用查询的函数,使用不同的查询的方式进行数据的查询,将查询得到的结果返回给用户,用户决定是否修改该数据。
3.5.3函数流程图:
图3-5change()修改函数流程图
4、运行结果
4.1主界面
图4-1—程序主界面
4.2录入信息
图4-2—信息录入
4.3显示学生信息
图4-3—信息一览表
4.4查找学生信息
图4-4—学生信息查询
4.5删除学生信息
图4-5—删除“李治伟”前
图4-6—删除“李治伟”后
4.6修改学生信息
图4-7—修改学生“杨尚”信息前
图4-8—修改学生“杨尚”信息后
5、课程设计总结
通过这次的课程设计,让我充分的感觉到了要自己设计一个程序是多么的难,以及学习好c++是多么的重要。
从一遍一遍得修改到最后的定稿,使我在知识和能力上都得到了极大的提高,在这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。
看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。
虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。
以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长。
本次的课程设计对我们也是一个很好的实践的机会,锻炼了自己,提高了自己编程的能力,为今后的项目打好基础。
6、参考文献
1.《C++程序设计》作者:
谭浩强清华大学出版社
2.《VisualC++程序设计技巧与实例》作者:
许福舒志张威等出版社:
中国铁道出版社
3.《VisualC++全能速查宝典》作者:
刘锐宁,梁水,宋坤人民邮电出版社
4.《C++语言程序设计题典》作者:
李春葆,曾平,刘斌清华大学出版社
#include
#include
#include
#include
usingnamespacestd;
classstudent
{
public:
student();
voidset();//初始化信息,第一次对信息的录入
voidadd();//添加学生信息
voiddel();//删除某学生信息
voidchange();//修改某学生信息
voidsearch();//查询某学生信息
voiddisplay();//显示全部学生信息
booltest(longnum);
private:
staticintnum;
longxuehao;
intage;
stringtel;
stringname,sex,address,birthday,email;
};
student:
:
student(){}
voidstudent:
:
set()
{
inti;
longsetxuehao;
stringsetname;
intsetage;
stringsetsex;
stringsetbir;
stringsetaddress;
stringsettel;
stringsetemail;
ofstreamoutfile;
outfile.open("f1.txt",ios:
:
out|ios:
:
app);//----打开文件----
if(!
outfile)
{
cerr<<"openerror"<exit
(1);
}
//----依次录入相应个数的学生信息----
for(i=0;;i++)
{
cout<<"当姓名输入为'0'时,停止输入!
!
!
"<cout<<"请输入姓名:
"<cin>>setname;
if(setname=="0")break;
if(setname!
="0")
{
cout<<"请输入学号(2011508013):
"<cin>>setxuehao;
if(test(setxuehao))
{
name=setname;
outfile<if(1000000000<=setxuehao&&setxuehao<=9999999999)
{xuehao=setxuehao;
outfile<}
else
{cout<<"你输入的学号不符合要求"<cout<<"请重新输入!
!
!
"<cout<<"请输入学号(2011508013):
"<cin>>setxuehao;
outfile<}
cout<<"请输入年龄:
"<cin>>setage;
if(0<=setage)
{age=setage;
outfile<else
{
cout<<"你输入的年龄不符合要求"<cout<<"请重新输入!
!
!
"<cout<<"请输入年龄:
"<cin>>setage;
age=setage;
outfile<}
cout<<"请输入性别(男或女):
"<cin>>setsex;
sex=setsex;
outfile<cout<<"请输入生日(1992-10-4):
"<cin>>setbir;
birthday=setbir;
outfile<cout<<"请输入电话号码:
"<cin>>settel;
tel=settel;
outfile<cout<<"请输入家庭住址:
"<cin>>setaddress;
address=setaddress;
outfile<cout<<"请输入E-mail(840174956@):
"<cin>>setemail;
email=setemail;
outfile<}
}
cout<}
outfile.close();//----关闭文件----
}
voidstudent:
:
add()
{
stringaddname;
longaddxuehao;
intaddage;
stringaddsex;
stringaddbirthday;
stringaddaddress;
stringaddtel;
stringaddemail;
//----以追加的方式录入信息,直接将信息追加到以前文件的末尾----
ofstreamoutfile;
outfile.open("f1.txt",ios:
:
out|ios:
:
app);//----打开文件----
if(!
outfile)
{
cerr<<"openerror"<exit
(1);
}
//----依次输入相应的数据,并且追加到之前的文件中去----
cout<<"请输入您要添加的数据"<cout<<"请输入姓名:
"<cin>>addname;
cout<<"请输入学号(2011508013):
"<cin>>addxuehao;
if(test(addxuehao))
{
name=addname;
outfile<if(1000000000<=addxuehao&&addxuehao<=9999999999)
{xuehao=addxuehao;
outfile<}
else
{cout<<"你输入的学号不符合要求"<cout<<"请重新输入!
!
!
"<cout<<"请输入学号(2011508013):
"<cin>>addxuehao;
outfile<}
cout<<"请输入年龄:
"<cin>>addage;
if(0<=addage)
{age=addage;
outfile<else
{
cout<<"你输入的年龄不符合要求"<cout<<"请重新输入!
!
!
"<cout<<"请输入年龄:
"<cin>>addage;
age=addage;
outfile<}
cout<<"请输入性别(男或女):
"<cin>>addsex;
sex=addsex;
outfile<cout<<"请输入生日(1992-10-4):
"<cin>>addbirthday;
birthday=addbirthday;
outfile<cout<<"请输入电话号码:
"<cin>>addtel;
tel=addtel;
outfile<cout<<"请输入家庭住址:
"<cin>>addaddress;
address=addaddress;
outfile<cout<<"请输入E-mail(840174956@):
"<cin>>addemail;
email=addemail;
outfile<}
}
voidstudent:
:
del()
{
longXUEHAO;
boolflag=false;
cout<<"\n\t\t删除学生的学号:
";
cin>>XUEHAO;
ifstreamstoreFile("f1.txt");
if(!
storeFile)
{
ofstreamstoreFile1("f1.txt");//
storeFile1.close();
cout<!
!
!
"<system("pause");
return;
}
ofstreamtempFile("temp.txt");
while(storeFile>>name>>xuehao>>age>>sex>>birthday>>tel>>address>>email)
{
if(XUEHAO==xuehao)
flag=true;
else
{
tempFile<}
}
tempFile.close();
storeFile.close();
if(!
flag)
{
cout<!
!
"<system("pause");
return;
}
ofstreamstoreFile1("f1.txt");
ifstreamtempFile1("temp.txt");
storeFile1<cout<<"\t\t删除成功!
!
!
"<storeFile1.close();
tempFile1.close();
}
voidstudent:
:
change()
{
longXUEHAO;
boolflag=false;
cout<<"\n\t\t修改的学生学号:
";
cin>>XUEHAO;
ifstreamstoreFile("f1.txt");
if(!
storeFile)
{
ofstreamstoreFile1("f1.txt");//
storeFile1.close();
cout<!
!
!
"<system("pause");
system("cls");
return;
}
ofstreamtempFile("temp.txt");
while(storeFile>>name>>xuehao>>age>>sex>>birthday>>tel>>address>>email)
{
if(XUEHAO==xuehao)
{
flag=true;
cout<<"请输入姓名:
"<cin>>name;
if(name!
="0")
{
cout<<"请输入学号(2011508013):
"<cin>>xuehao;
cout<<"请输入年龄:
"<cin>>age;
cout<<"请输入性别(男或女):
"<cin>>sex;
cout<<"请输入生日(1992-10-4):
"<cin>>birthday;
cout<<"请输入电话:
"<cin>>tel;
cout<<"请输入地址:
"<cin>>address;
cout<<"请输入E-mail(840174956@):
"<cin>>email;
}
}
tempFile<}
tempFile.close();
storeFile.close();
if(!
flag)
{
cout<!
!
"<system("pause");
return;
}
ofstreamstoreFile1("f1.txt");
ifstreamtempFile1("temp.txt");
storeFile1<storeFile1.close();
tempFile1.close();
cout<<"已修改成功!
"<}
voidstudent:
:
search()
{
intw=0;
charch;
intn;//输入的学号
stringsearchname;
cout<<"a.按学号查找b.按姓名查找"<ifstreaminfile("f1.txt");
if(!
infile)
{
cerr<<"openerror"<exit
(1);
}
cout<<"请输入a或者b!
"<cin>>ch;
if(ch=='a')
{
cout<<"请输入学号!
"<cin>>n;
while(infile>>name>>xuehao>>age>>sex>>birthday>>tel>>address>>email)
{
if(xuehao==n)
{
w=1;
cout<<"姓名:
"<cout<<"学号:
"<cout<<"年龄:
"<cout<<"性别:
"<cout<<"生日:
"<cout<<"电话:
"<cout<<"地址:
"<
cout<<"E-mail:
"<}
}
if(w==0)
cout<<"无此人信息!
"<}
elseif(ch=='b')
{
cout<<"请输入姓名!
"<<