面向对象课程设计报告—学生学籍管理系统.doc

上传人:文库蛋蛋多 文档编号:2386173 上传时间:2023-02-17 格式:DOC 页数:18 大小:250KB
返回 下载 相关 举报
面向对象课程设计报告—学生学籍管理系统.doc_第1页
第1页 / 共18页
面向对象课程设计报告—学生学籍管理系统.doc_第2页
第2页 / 共18页
面向对象课程设计报告—学生学籍管理系统.doc_第3页
第3页 / 共18页
面向对象课程设计报告—学生学籍管理系统.doc_第4页
第4页 / 共18页
面向对象课程设计报告—学生学籍管理系统.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《面向对象课程设计报告—学生学籍管理系统.doc》由会员分享,可在线阅读,更多相关《面向对象课程设计报告—学生学籍管理系统.doc(18页珍藏版)》请在三一办公上搜索。

1、仲恺农业工程学院课程设计报告*课 程 面向对象课程设计姓 名 院 (系) 计算机科学与工程学院 专业年级 计算机科学与技术班学 号 指导教师 日 期 2010年8月30日-2010年9月12日仲恺农业工程学院教务处制目录课程设计目的1课程设计的内容1详细程序8课程设计总结17一、课程设计目的 1.通过C+课程设计,使学生能够将学到的面向对象的设计思想运用在具体的工作和学习 中,加深对类和对象的理解,要求学生对生活中许多具体的事物抽象出类,并掌握继承和派 生类、基类、虚函数和多态的概念。2、通过这次课程设计掌握C+语言程序设计的编程思想,为后续课程打下基础。3、培养我实际操作能力和实践能力,为以

2、后的工作打下坚实的基础。课程设计的要求 利用学到的编程知识和编程技巧,要求学生:1、对系统进行功能模块分析、控制模块分析正确2、系统设计要能完成题目所要求的功能。3、编程简练,可用,尽可能的使系统的功能更加完善和全面4、使用说明书、流程图要清楚。5、特别要求自己独立完成。二、课程设计的内容1、课程设计的题目及简介有新生来报到,要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地址、英语入学成绩。要求设计链表类来实现,并统计学生人数。文本界面为:1. 新增学生信息2. 删除学生信息3. 导入学生信息(已经保存于的文件信息)4. 学生信息搜索(按姓名)5. 学生信息统计(按专业或性别或年龄

3、-年龄要自动计算)6. 按英语成绩排序7. 学生信息保存8. 退出2、设计说明总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。也可根据自己对题目的理解增加新的功能模块。系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行(1)首先,看题目要求,每一条记录包括一个学生的姓名、性别、专业、出生日期、家庭住址、英语成绩。同时,应具备以下功能:1、输入功能:一次可以完成自定义学生人数的学生信息记录的输入。2、删除功能:对指定学生的信息进行删除。3、修改功能:对指定学生的信息进行修改。4、

4、查询功能:选择某种方式并输入该信息查询符合条件的学生信息。5、统计功能:对某几个专业的人数、男女性别学生信息进行统计。6、 排序功能:以英语课程的分数为依据对学生信息进行排序。7、 显示功能:将以上功能操作后的学生信息显示出来。8、 退出主菜单。3 程序流程图 各功能模块的实现流程图:1增加学生信息调用函数Node* Create()判断gg是否等于一如果是可创建链表输入相应的学生信息如果不是则需要运用Insert(p)函数插入结点增加学生信息的,并通过chundang(p)函数进行存档,具体流程如下图所示判断以前是否存储了学生信息是新增信息退出该功能,返回主菜单,继续选择流程图新增学生信息按

5、提示:输入学个的各种信息按格式显示输入的学生信息 2删除学生信息 调用函数Node* Delete(Node* head , int num) 删除学生的信息则必须对链表结点进行删除意味着将某个要删除结点前后的连续打断,去掉该结点,使前后指针变量重新连接,完成链表结点的删除任务 流程图输入要删除学生信息2退出该功能,返回主菜单,继续选择输入要删除信息的编号该生信息已删除,显示其他同学的信息输出所有学生的信息3导入学生信息打开存档文件ifstream Filein(out.txt);输出说存档的学生信息导入学生信息显示学生的信息退出该功能,返回主菜单,继续选择 4、学生信息的搜索 调用函数Nod

6、e* sousuo(Node* head , char na20) ,按学生的姓名进行搜索退出该功能,返回主菜单,继续选择 输出所以查询的学生信息按照提示输入学生的姓名进行搜索搜索学生信息 4流程图: 5信息的统计 调用函数Node* tongji(Node* head) 运用一个for循环,将输入的相应的学生信息用strcmp()函数与对应的数组进行比较,然后再进行统计输出统计的信息统计所设定的专业人数和男女性别的人数,计算学生的年龄并统计信息的统计:5退出该功能,返回主菜单,继续选择。 6、按英语成绩进行排序:调用函数Node* paixu(Node* head)完成排序功能它的主要思想的

7、:首先设置英语成绩的最大值100,最小值0(也可以使150或者其他)然后让输入的学生信息英语成绩一次比较进行比较,(如果有相等的就输出排名1 ,然后排名加1),否则最大值减1,然后再次进行比较( 如果等于99且上次没有等于100的,就输出排名1,然后排名加1,如果上次有等于100的排名为2),如果没有与99相等的.,则继续循环流程图:输出排序之后的学生信息对英语成绩进行排序退出该功能,返回主菜单,继续选择按学生信息进行排序5总功能模块图:2、输入要删除的学生的编号,删除学生信息。1输入学生的信息:姓名、性别、专业、出生日期、家庭地址、英语成绩 菜单1. 新增学生信息2. 删除学生信息3. 导入

8、学生信息4. 学生信息搜索5. 学生信息统计6. 按英语成绩排序7. 学生信息保存8. 退出5统计各种专业、男女、相应年龄的人数6按英语成绩降序排列,输出学生的姓名排名和英语成绩7保存学生信息:提示保存成功4、输入你要查找你学生姓名3、输出学生的编号、姓名、性别、专业、出生日期、家庭地址、英语成绩8、退出系统学生管理系统功能模块图各功能显示效果模块图:增加学生信息和导入学生信息保存学生信息统计电子、建筑、通信、三个专业的人的个数,按英语成绩进行排名并输出删除相应学生的信息四、详细程序#include #include #include#includeusing namespace std;in

9、t nn=0;struct Node int num;char name20;char xb20;char zy20;int nian,yue,ri;char dz20;int mark;Node *next ;/* Node* Create() /链表创建 cout请输入学生信息(输入0退出):num=1; head=NULL; n+; while (p1-num!=NULL) if (n=1) head=p1; else p2-next=p1; p2=p1; p1=new Node; int a; nn+; p1-num=nn; coutp1-name; a=(int)p1-name0-4

10、8; if (a=0)break; coutp1-xb; coutp1-zy; coutp1-nian; cinp1-yue; cinp1-ri; coutp1-dz; coutp1-mark; n+; p2-next=NULL; return head; /* /* void chundang(Node *head) /存档 Node *p=head; p=p-next; ofstream Fileout(out.txt);Fileout学生资料endl;Fileout-endl;while(p)Fileout - 编号:num 姓名:name 性别:xb 专业:zy 出生日期:nian/y

11、ue/ri/ 地址:dz 英语入学成绩:marknext; Fileout-num=nn; coutp0-name; coutp0-xb; coutp0-zy; coutp0-nian; cinp0-yue; cinp0-ri; coutp0-dz; coutp0-mark; if (head=NULL) head=p0; p0-next=NULL; return head; while (p1-numnum & p1-next) p2=p1; p1=p1-next; if (p1-num=p0-num) if (p1=head) head=p0; else p2-next=p0; p0-ne

12、xt=p1; else p1-next=p0; p0-next=NULL; return head; /* /* Node* Delete(Node* head , int num) /删除节点 if (head=NULL) cout不存在此编号num!=num & p1-next) p2=p1; p1=p1-next; if (p1-num=num) if (p1=head) head=p1-next; else p2-next=p1-next; else cout没找编号为 num的学生!next; /整顿编号 while (p1) kk+; p1-num=kk; p1=p1-next;

13、/* return head; /*/* Node* sousuo(Node* head , char na20) /搜索 Node *p1=head; while(p1!=NULL)if(!strcmp(p1-name,na)cout编号:num姓名:name 性别:xb 专业:zy 出生日期:nian/yue/ri/ 地址:dz 英语入学成绩:marknext; return 0; /*/* Node* tongji(Node* head) /统计 Node *p1=head;int a=0,b=0,c=0,d=0,e=0,i100,j100;char aa=网络工程, bb=计算机科学与

14、技术,cc=其他,nan=男,nv=女;for(int k=0;kzy,aa)a+;else if(!strcmp(p1-zy,bb)b+;else if(!strcmp(p1-zy,cc)c+;if(!strcmp(p1-xb,nan)d+;else if(!strcmp(p1-xb,nv)e+;for(int l=0;lnian=il)jl+;p1=p1-next;/-存档ofstream Fileout(统计.txt);Fileout统计信息endl;Fileout-endl;Fileouta专业的个数:aendlb专业的个数:bendlc专业的个数:cendl;Fileout男性个数:

15、dendl女性个数:eendl;for(int mm=0;mm100;mm+)if(jmm!=0)Fileout年龄imm的个数:jmmendl;Fileout-endl;Fileout.close(); /-cout统计信息endl;cout-endl;cout网络工程的个数:aendl计算机科学与技术的个数:bendl其他专业的个数:cendl; cout男性个数:dendl女性个数:eendl;for(int m=0;m100;m+)if(jm!=0)cout年龄im的个数:jmendl;cout-endl; return 0; /*/*Node* paixu(Node* head) /

16、英语成绩排序Node *p1=head;int rr=100;/成绩int ll=1;/排名ofstream Fileout(英语成绩排序.txt);Fileout英语成绩排序endl;Fileout-endl;Fileout排名 成绩 姓名endl;cout-endl;cout排名 成绩 姓名mark=rr)Fileoutll mark nameendl; coutll mark namenext ;rr-;Fileout-endl;Fileout.close(); cout-endl;return 0; /* main()int gg=1; int strcmp(const char *s

17、1,const char *s2);Node *p;/= cout* 学 生 信 息 管 理 系 统 * endl; cout* * endl; cout* 1.增加学生信息 *endl; cout* 2.删除学生信息 *endl; cout* 3.导入学生信息 *endl; cout* 4.学生信息搜索 *endl; cout* 5.学生信息统计 *endl; cout* 6.按英语成排序 *endl; cout* 7.学生信息保存 *endl;cout* 8.退出 *endl; cout 请输入您的选择(1-8):endl;while(1) /输出操作文本int line=0;char b

18、uf100;ifstream Filein(in.txt);while(Filein.getline(buf,100)+line;coutbufn;/-if(n=1) /新增学生信息if(gg) p=Create();/调用创建列表gg-;elseInsert(p);/新增学生信息nn+;chundang(p);/信息存档/-elseif(n=2) /删除学生信息int line=0;/导入学生信息char buf100;ifstream Filein(out.txt);while(Filein.getline(buf,100)+line;coutbufendl;Filein.close();

19、coutcc;Delete(p ,cc);chundang(p);/信息存档/-else if(n=3) /导入学生信息int line=0;char buf100;ifstream Filein(out.txt);while(Filein.getline(buf,100)+line;coutbufendl;Filein.close();/-else if(n=4) /学生信息搜索coutname;sousuo(p,name);/-else if(n=5) /学生信息统计tongji(p);/-else if(n=6) /英语入学成绩排序cout按英语成绩排序:endl;paixu(p);/-

20、else if(n=7) /学生信息保存char ch,ch1=n;ofstream file1(学生信息保存.txt,ios_base:app);/=清空文件学生信息保存.txt的内容 FILE * fp; fp = fopen(学生信息保存.txt,w);/=组合文件ifstream file2(out.txt);file1.write(char *) &ch1,sizeof(ch1);while(file2.get(ch)file1.put(ch);ifstream file3(统计.txt);file1.write(char *) &ch1,sizeof(ch1);while(file

21、3.get(ch)file1.put(ch);ifstream file4(英语成绩排序.txt);file1.write(char *) &ch1,sizeof(ch1);while(file4.get(ch)file1.put(ch);file1.close();file2.close();file3.close();file4.close(); cout保存成功!endl;/-else if(n=8)break; /退出操作/-else if(n=9) /输出学生信息保存int line1=0;char buf1100;ifstream Filein(学生信息保存.txt);while(

22、Filein.getline(buf1,100)+line1;coutbuf1endl;Filein.close();/-else cout错误选择!endl;continue;四 、课程设计总结通过这次课程设计,我更加深刻的知道了我们学的c+和我们的生活密切相连,所以更应该注意平时上课各种小知识点的积累。然后上机具体操作的情况又与笔试有很大的不同,因为通过键盘操作,更容易出错。所以我们平时在学习的时候,就应该做到边学边编,如果很久没有接触到c+的编译环境,就会出现不知道从何如手。另外,程序的变化太大拉,它需要我们拓展课外知识,所以仅靠在课堂上的时间学好它是不现实的。有很多小的技巧,以及编程思想需要我们自己去领悟,这要求我们要有很好的自学能力。比如说这次变成如果没有掌握好用2进制的方式输入文件的话,就很难编出能实现功能的程序编程最重要的是思路清晰,条理清楚,只有思路比较清楚的条件下,进展才比较顺利。并且,在编译过程中遇到的错误也要耐心去修改,并且记住这相应的错误代码,以便以后遇到相同的情况,知道怎么修正。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号