李治伟学生信息管理系统课程设计报告.docx
- 文档编号:23365713
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:34
- 大小:344.93KB
李治伟学生信息管理系统课程设计报告.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<<"请输入姓名! "<<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 李治伟 学生 信息管理 系统 课程设计 报告