版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成绩课程设计报告题目学籍信息管理系统课程名称面向对象程序设计课程设计院部名称软件工程专业软件工程班级13软件工程1班学生姓名学号课程设计地点A203课程设计学时20学时指导教师李尤丰金陵科技学院教务处制一、课程设计的目的和要求目的:该课程设计的目的采用面向对象的程序设计语言,开发实现一个应用程序,主要目的是使学生更好的掌握面向对象程序设计语言及其开发工具,掌握如何使用面向对象的程序设计语言设计一个小的软件系统。通过该课程设计培养学生分析和解决实际问题的能力,培养学生综合应用基本概念,基本原理,和技术方法的能力,真正做到学以致用,使课本上抽象的理论,方法与具体的实践应用相结合。要求:1.课程设计任务完成选定的题目的开发工作,并接受程序运行检查。要求提交报告一份。2.在本课程设计过程中要求学生:(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;(3)按时到计算中心上机,并接受教师的检查;(4)认真撰写课程设计报告。.系统需求分析本系统功能主要针对一个班级新生入学、中途学生转入转出学校以及学生考试成绩的录入查询等等进行有效的管理。这些学生的各项信息,帮主学校和老师及时准确地掌握学生的情况。
基本功能:
(1)学生信息添加:添加学生的基本信息,包括学号、姓名、性别、出生日期、政治面貌、家庭住址等;(2)学生信息查询:选择(1)根据学生的姓名查找,调用strcmp()函数,找出后从文件中输出学生的信息;选择(2)根据学号进行查找,调用指针,查找出后将信息从文件中输出;(3)学生信息修改:该模块分为两步,调用strcmp()函数按照学生姓名进行查找,查找是否存在该学生,若不存在则输出“该学生不存在,请重新输入”,若存在则调用该学生信息,重新输入对原信息进行覆盖;(4)学生信息删除:调用指针链表根据学生的学号进行数据的删除;(5)学生信息显示:显示出所有录入的学生的信息;(6)学生信息保存:将学生信息写入文件;(7)学生信息读取:从文件中读取学生的信息;三、总体设计框架结构:学籍信息管理系统学籍信息管理系统预处理模块主函数模块显示模块函数功能实现执行菜单功能显示信息数据添加查询修改删除读取保存文件包括:结构体定义;类定义;全局变量定义学籍管理系统应便于对学籍进行分类和管理,提高工作效率,便于操作,此软件由于只是一个初级产品,只要能构建一个结构,达到一些帮助查询、索引等基本功能和要求即可。整体设计了一个学生类,在学生类中完成各项操作。详细设计修改学生数据模块:voidstudent::change(date*head){ charname[9];charc; do { boolflag2=0; date*stu=head; cout<<"请输入您要修改的学生的姓名:"; cin>>name; do { if(strcmp(name,stu->name)==0)//使用字符串比较学生姓名 { flag2=1;//标记,表示找到对应学生 cout<<"请输入新的出生年、月、日:"; cin>>stu->year>>stu->month>>stu->day; cout<<"请输入新的政治面貌:"; cin>>stu->zhengzhi; cout<<"请输入新的家庭住址:"; cin>>stu->adress; cout<<"学号姓名性别出生年月日政治面貌家庭住址"<<endl; cout<<"==============================================================================="<<endl; cout<<setw(7)<<stu->num; cout<<setw(12)<<stu->name; cout<<setw(9)<<stu->sex; cout<<setw(12)<<stu->year<<setw(1)<<stu->month<<setw(1)<<stu->day; cout<<setw(13)<<stu->zhengzhi; cout<<setw(14)<<stu->adress; cout<<endl; cout<<"数据修改成功!\n"; break; } stu=stu->next; }while(stu!=NULL); if(flag2==0)//找不到输入学生时的输出 { cout<<"对不起!您要修改的学生不存在!请检查重新输入!!!!!!!"<<endl; } cout<<"是否继续修改?(y/n)"; cin>>c; if(c!='y'&&c!='n')//规范输入 { cout<<"指令错误!请重新输入<y/n>!!!!!!!"; cin>>c; } }while(c=='y');} 此处调用strcmp()通过字符串的比较来找出对应的学生,直接在原来的数据上进行覆盖修改,在if(c!='y'&&c!='n')中进行输入完成时后是否进行输入的字符的规范输入。五、测试、调试过程软件测试运行图:初始界面:添加学生信息:查询学生信息:根据姓名查询根据学号查询:修改学生数据:学生数据删除:学生数据显示:学生数据保存:学生数据读取:结论与体会知道课题后我们选择了使用链表,它可以实现无序的在内存中存放,只要有一个头结点,就可以对整个链表进行相关的操作,在调式时遇到了很多问题,最多的是有些程序看起来很简单但是要把所有的连接在一起就有很多问题出现了,结果我发现链表的建立、查找、删除、插入以及修改还有指针这一块知识还得好好的加强,当我在编写学生成绩管理系统时,出现了许多问题,我到处查找资料同时也向老师和同学请教,经过一个星期的努力我总算实现了基本功能。我现在体会到程序的调试是相当的重要的。在使用指针时要特别注意用过后的指针不使用就要删除,以防出错。链表的尾部要指向NULL,这点是很重要的。我们所做的设计“学生学籍管理信息系统”是集聚了全组每一位设计成员的心思。在我们的成果里,可以看到我们每一位设计者所做出的努力。在系统的设计过程中,我们也遇到了一些困难和迷惑。但是在我们全组设计成员的齐心协力与不同组同学之间的互相的帮助下,我们克服了一个又一个的问题,保证了设计作业的顺利进行。通过完成本次C++程序设计的任务,使我熟练和掌握了所学的有关c++中的一些主要知识点和应用点,如类的定义,类的实现,对象的定义,类的继承等等。可以所学有所学,所有所用,不至于自己所学知识由于没有经历可用过程,而放弃对它的兴趣。我们遇到的问题这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。这些问题,并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。更使我加强了灵活应用理论知识的能力。
当然,此次任务的完成,也体现出同学之间的团结精神。所遇种种难以解决的问题,大家都会把它当作共同遇到的问题,在一起共同探讨,共同发挥自己所学和所知,投入式的互相帮助和解决困难。七、参考文献 [1]谭浩强编,《C++面向对象程序设计》,清华大学出版社,2005年7月出版[2]韩滨
魏海萍,《C++类库使用手册》,电子工业出版社,2007年7月出版[3]文件的输入输出(百度百科/view/1786145.htm?fr=aladdin)附录:源程序#include<iostream.h>#include<string.h>#include<fstream.h>#include<iomanip.h>doubleamount=0;structdate{ charname[9]; charsex[3]; charzhengzhi[5]; charadress[20]; doublenum; doubleyear; doublemonth; doubleday; date*next;};classstudent{public: dated; voidadd(date*head); voidchange(date*head); voiddel(date*head); voidsearch1(date*head); voidsearch2(date*head); voidload(date*head); voidmenu(); voidshow(date*head); voidsave(date*head); voidchushihua(date*head);};/////////////////////////////////*主函数*////////////////////////////////////////intmain(){ students; charx; boolflag2=0;date*head=newdate;//初始化学生数据 head->next=NULL; cout<<"★欢迎使用学籍信息管理系统★\n"; s.menu();//显示菜单do{ do { cin>>x; if((x>='0'&&x<='8'))flag2=1; else { cout<<"指令错误!!!!!!!!!!"<<endl; cout<<"请选择相应的数字进行操作:"; } }while(flag2==0); switch(x) { case'0':cout<<"******************************现在进行学生信息添加******************************\n"; s.add(head); cout<<"输入的学生信息为:\n"; s.show(head); cout<<"********************************************************************************\n"; s.menu();break;//添加结束后返回菜单 case'1': { charz; cout<<"******************************现在进行学生信息查询******************************\n"; cout<<"请选择查询方式:"; cout<<"(0).姓名查询;(1).学号查询:"; cin>>z; while(z!='0'&&z!='1') { cout<<"指令错误<请选择(0)或者(1)!>!!!!!!!"<<endl;cout<<"请选择查询方式:(0).姓名查询;(1).学号查询:";cin>>z; } switch(z) { case'0':s.search1(head);break;//按姓名查询 case'1':s.search2(head);break;//按学号查询 } cout<<"********************************************************************************\n"; s.menu();break; } case'2':cout<<"*********************************学生信息修改******************************\n"; s.change(head); cout<<"********************************************************************************\n"; s.menu();break; case'3':cout<<"*********************************学生信息删除******************************\n"; s.del(head); s.show(head); cout<<"********************************************************************************\n"; s.menu();break; case'4':cout<<"*********************************显示学生信息******************************\n"; s.show(head); cout<<"********************************************************************************\n"; s.menu();break; case'5':cout<<"*********************************读取学生信息******************************\n"; s.load(head); cout<<"********************************************************************************\n"; s.menu();break; case'6':cout<<"*********************************保存学生信息******************************\n"; s.save(head); cout<<"********************************************************************************\n"; s.menu();break; case'7':cout<<"********************************************************************************\n"; cout<<"已退出学籍信息管理系统,欢迎您再次使用!\n"; cout<<"********************************************************************************\n"<<endl;return0; }}while(flag2==1);}/////////////////////////////////*显示菜单*////////////////////////////////////////voidstudent::menu(){ cout<<"**************************************************\n";cout<<"*菜单*\n";cout<<"*^^^^^^^^^^*\n";cout<<"*请选择:*\n";cout<<"*[0]-添加;[1]-查询;[2]-修改;*\n";cout<<"*[3]-删除;[4]-显示;[5]-读取;*\n";cout<<"*[6]-保存;[7]-退出;*\n";cout<<"**************************************************\n";cout<<"请选择相应的数字进行操作:";}////////////////////////////////*初始化学生数据*///////////////////////////////////////voidstudent::chushihua(date*head){ intj=0;charc; cout<<"注意:初始化操作将删除<save.txt>文件中的所有信息!!!!!!\n";cout<<"是否继续操作?(y/n):";cin>>c; if(c='y') { ofstreama; a.open("save.txt",ios::out); cout<<"成功清除<save.txt>的信息\n"; } }/////////////////////////////////*显示学生数据*////////////////////////////////////////voidstudent::show(date*head){ date*stu=head; cout<<"学号姓名性别出生年月日政治面貌家庭住址"<<endl; cout<<"==========================================================================="<<endl; while(stu->next!=NULL) { stu=stu->next; cout<<setw(7)<<stu->num; cout<<setw(12)<<stu->name; cout<<setw(9)<<stu->sex; cout<<setw(12)<<stu->year<<setw(3)<<stu->month<<setw(3)<<stu->day; cout<<setw(13)<<stu->zhengzhi; cout<<setw(16)<<stu->adress; cout<<endl; }}/////////////////////////////////*保存学生数据*////////////////////////////////////////voidstudent::save(date*head){ ofstreamcout1("save.txt"); date*stu=head->next; cout1<<amount+15<<endl; while(stu!=NULL) { cout1<<""<<stu->num<<""<<stu->name<<""<<stu->sex<<""<<stu->year<<"" <<stu->month<<""<<stu->day<<""<<stu->zhengzhi<<""<<stu->adress<<endl; stu=stu->next; } cout<<"成功将学生数据保存到<save.txt>中!"; cout1.close();}/////////////////////////////////*添加学生数据*////////////////////////////////////////voidstudent::add(date*head){ charc;date*p=head; do { date*stu=newdate; cout<<"学号:";stu->num=amount+16;cout<<stu->num<<endl; cout<<"请输入姓名:"<<setw(5);cin>>stu->name; cout<<"请输入性别:"<<setw(5);cin>>stu->sex; cout<<"请输入出生年、月、日:"<<setw(2); cin>>stu->year>>stu->month>>stu->day; cout<<"请输入政治面貌:"<<setw(2); cin>>stu->zhengzhi; cout<<"请输入家庭住址:"<<setw(2); cin>>stu->adress; stu->next=p->next; p->next=stu; amount++; cout<<"数据添加成功,是否继续添加?(y/n)"; cin>>c; p=p->next; while(c!='y'&&c!='n') { cout<<"指令错误<请输入y/n!>!!!!!!"<<endl;cout<<"数据添加成功,是否继续添加?(y/n)"; cin>>c; } }while(c=='y'); cout<<"输入了"<<amount<<"个学生的信息."<<endl;}/////////////////////////////////*使用姓名查询学生数据*////////////////////////////////////////voidstudent::search1(date*head)//按姓名查找{ charc; charname[9]; do { date*stu=head->next; intflag=0; cout<<"请输入你要查询的学生姓名:"; cin>>name; do { if(stu!=NULL&&strcmp(name,stu->name)==0) { flag=1; cout<<"您要查询的学生是:"<<stu->name<<endl; cout<<"学号姓名性别出生年月日政治面貌家庭住址"<<endl; cout<<"================================================================================"<<endl; cout<<setw(7)<<stu->num; cout<<setw(12)<<stu->name; cout<<setw(9)<<stu->sex; cout<<setw(12)<<stu->year<<setw(3)<<stu->month<<setw(3)<<stu->day; cout<<setw(13)<<stu->zhengzhi; cout<<setw(16)<<stu->adress; cout<<endl; } stu=stu->next; }while(stu!=NULL); if(flag==0) cout<<"对不起!您要查询的学生不存在!!!!!!!"<<endl; cout<<"是否继续查询吗?(y/n)";cin>>c; while(c!='y'&&c!='n') { cout<<"指令错误<请输入y/n!>!!!!!!!"<<endl; cout<<"是否继续查询吗?(y/n)";cin>>c; } }while(c=='y');}/////////////////////////////////*用学号查询学生数据*////////////////////////////////////////voidstudent::search2(date*head)//学号查询{ charc;doubleno; do { date*stu=head->next; intflag=0; cout<<"请输入你要查询的学生学号:"; cin>>no; do { if(stu!=NULL&&no==stu->num) { flag=1; cout<<"您要查询的学生是:"<<stu->name<<endl; cout<<"学号姓名性别出生年月日政治面貌家庭住址"<<endl; cout<<"================================================================================="<<endl; cout<<setw(7)<<stu->num; cout<<setw(12)<<stu->name; cout<<setw(9)<<stu->sex; cout<<setw(12)<<stu->year<<setw(3)<<stu->month<<setw(3)<<stu->day; cout<<setw(13)<<stu->zhengzhi; cout<<setw(16)<<stu->adress; cout<<endl; } stu=stu->next; }while(stu!=NULL); if(flag==0) cout<<"对不起!您要查询的学生不存在!!!!!!!"<<endl; cout<<"是否继续查询?(y/n)"; cin>>c; while(c!='y'&&c!='n') { cout<<"指令错误<请输入y/n!>!!!!!!!"<<endl;cout<<"是否继续查询?(y/n)"<<endl; cin>>c; } }while(c=='y');}/////////////////////////////////*修改学生数据*////////////////////////////////////////voidstudent::change(date*head){ charname[9];charc; do { boolflag2=0; date*stu=head; cout<<"请输入您要修改的学生的姓名:"; cin>>name; do { if(strcmp(name,stu->name)==0) { flag2=1; cout<<"请输入新的出生年、月、日:"; cin>>stu->year>>stu->month>>stu->day; cout<<"请输入新的政治面貌:"; cin>>stu->zhengzhi; cout<<"请输入新的家庭住址:"; cin>>stu->adress; cout<<"学号姓名性别出生年月日政治面貌家庭住址"<<endl; cout<<"==============================================================================="<<endl; cout<<setw(7)<<stu->num; cout<<setw(12)<<stu->name; cout<<setw(9)<<stu->sex; cout<<setw(1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年树木搬运服务详细协议
- 独立董事年度聘用协议2024样式
- 城市道路建设沥青材料运输专项协议
- 2024简易私人借款协议范本2
- 2024年专业起重机安装协议样本
- 2024年家居装修工程施工协议范本
- 2024年海外借款协议模板及条款详解
- 低空经济市场需求分析
- 车辆指标租赁与新能源汽车协议
- 安全条款明晰的2024年场地租赁协议
- 租地种香蕉合同
- 旧市场提升改造方案
- 统编版 七年级上册(2024修订) 第四单元 13 纪念白求恩 课件
- 外汇兑换居间劳务协议
- 少儿趣味编程Scratch综合实战《小车巡线》教学设计
- 国开(甘肃)2024年春《地域文化(专)》形考任务1-4终考答案
- 放射性口腔粘膜炎的发病机制及危险因素
- 加油站特殊作业安全管理制度(完整版)
- 质量风险抵押金管理办法
- 村纪检监督小组工作职责
- 《宏观经济学乘数论》PPT课件.ppt
评论
0/150
提交评论