高校学籍管理系统C程序的设计说明.doc_第1页
高校学籍管理系统C程序的设计说明.doc_第2页
高校学籍管理系统C程序的设计说明.doc_第3页
高校学籍管理系统C程序的设计说明.doc_第4页
高校学籍管理系统C程序的设计说明.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

. . . .VC+课程设计-高校学籍管理系统 源程序一、课程设计题目:学籍管理系统 二、目的与要求:1、目的: (1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求: (1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统的设计中,至少要用到面向对象的一种机制。3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。4、写出设计说明书 三、设计方法和基本原理:1、功能要求 要求完成以下功能:1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。2)能够将指定的信息从文件中删除。3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。4)可以统计全部学生的总成绩,及其在班上的排名。5)能够统计各科的平均成绩及及格率。6)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。7)如果检索不到相应的信息应提示用户。 2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤: a) 写出需求分析(做什么) b) 分析系统中的各个实体之间的关系及其属性和行为; c) 根据问题描述,设计系统的类层次; d) 完成类层次中各个类的描述(包括属性和方法); e) 完成类中各个成员函数的定义; f) 用户界面的设计 g) 分析系统功能模块(系统流程图) h) 代码编写 i) 功能调试; j) 完成系统总结报告以及系统使用说明书。源程序代码如下:code/*course.dat-课程列表(只读)student.dat-学生信息*/#include #include #include #include class COURSE/课程类private:static int coursenum; /课程数量static char (*coursename)20;/课程名称public:static void LoadCourse()/从文件COURSE.DAT装入课程信息 ifstream f(course.dat); fcoursenum; coursename=new charcoursenum20; for(int i=0;icoursename; f.close();friend class STUDENT;friend class COLLEGE;int COURSE:coursenum=0;char (*COURSE:coursename)20=0;class STUDENT /学生类private:char num20; /学号char name20;/姓名char sex; /性别char cname20; /班级float *grade; /成绩(动态数组)float sum; /各科总分STUDENT *next;public:STUDENT() grade=new floatCOURSE:coursenum; next=0;STUDENT() delete grade;void Input() sum=0; coutnum; /输入学生一般信息 coutname; coutsex;sex=toupper(sex); coutcname; for(int i=0;iCOURSE:coursenum;i+)/输入学生各科成绩 coutCOURSE:coursenamegrade; sum+=grade;/计算总分 void Input(ifstream &f) fnum; fname; fsex;sex=toupper(sex); fcname; for(int i=0;igrade; fsum;static void OutputT() coutsetw(10)学号setw(20)姓名setw(5)性别setw(10)班级; for(int i=0;iCOURSE:coursenum;i+) coutsetw(7)COURSE:coursename; coutsetw(10)总分endl;void Output() coutsetw(10)num;/输出学生一般信息 coutsetw(20)name; coutsetw(5)sex; coutsetw(10)cname; for(int i=0;iCOURSE:coursenum;i+)/输出学生各科成绩,总分 coutsetw(7)grade; coutsetw(10)sumendl;void Output(ofstream &f) fsetw(10)num;/输出学生一般信息 fsetw(20)name; fsetw(5)sex; fsetw(10)cname; for(int i=0;iCOURSE:coursenum;i+)/输出学生各科成绩,总分 fsetw(7)grade; fsetw(10)sumnext; delete p; p=SL; void Set(); /课程设置(增,删,改,存)void Add(); /增加学生void Delete(); /删除学生void Modify(); /修改学生void Query(); /查询学生信息(按姓名,学号)void Print(); /输出所有学生信息void Stat(); /统计课程平均成绩,课程合格率void SumSort(); /按总分排名(高-低)void NumSort(); /按学号排序(低-高)void Save(); /学生数据存盘void Load(); /装入学生数据;/增加学生void COLLEGE:Add() coutnext)p2=p2-next;p2-next=p; /链接学生结点p-Input(); /输入学生信息/查找学生结点(返回1-找到,0-未找到.结点指针由p1返回,p2为前看指针)int COLLEGE:Find(char *ID,STUDENT *p1,STUDENT *p2) *p1=SL-next;*p2=SL;while(*p1) if(strcmp(*p1)-num,ID)=0) break;/找到 else *p2=*p1;/继续查找 *p1=(*p1)-next; return *p1?1:0;/删除学生void COLLEGE:elete() coutn* 删除学生 *n;char No20;STUDENT *p1,*p2;coutNo;if(!Find(No,&p1,&p2) coutnext=p1-next;/连接 delete p1; cout正确删除!n;/修改学生void COLLEGE:Modify() coutn* 修改学生 *n;char No20;STUDENT *p1,*p2;coutNo;if(!Find(No,&p1,&p2) coutOutput();/输出原来的学生信息(做提示) p1-Input();/输入此学生信息(更新) cout修改完成!n;/*承上*/查询学生信息/按学号或姓名查找,如果找到显示该学生,如果未找到,也给出相应提示.void COLLEGE:uery()coutnext;char No20;char Name20;char ch;do coutch;while(ch!=1&ch!=2);int flag=0;/未找到0,找到1if(ch=1)/按学号查 coutNo; while(p) if(strcmp(p-num,No)=0) flag=1;break; else p=p-next;else/按姓名查 coutName; while(p) if(strcmp(p-name,Name)=0) flag=1;break; else p=p-next;if(flag=1)/如果找到,显示此同学信息 p-OutputT(); p-Output();else/否则给出未找到提出 cout指定的学生没有找到!n;/输出所有学生信息void COLLEGE:rint() coutnext;STUDENT:OutputT();/输出标题while(p)/循环输出各位学生信息 p-Output(); p=p-next;/学生数据存盘void COLLEGE:Save() ofstream f(student.dat);STUDENT *p=SL-next;while(p)/遍历学生链表 p-Output(f);/写入文件 p=p-next; f.close();coutnext;while(p) SL-next=p-next; delete p; p=SL-next;/装入学生数据void COLLEGEad() Clear();ifstream f(student.dat);STUDENT *p=SL;STUDENT *p2=new STUDENT;p2-Input(f); while(f) p-next=p2; p=p-next; p2=new STUDENT; p2-Input(f); delete p2;f.close();/统计课程平均成绩,课程合格率void COLLEGE:Stat() float *sum=new floatCOURSE:coursenum;/各科平均成绩float *pass=new floatCOURSE:coursenum;/各科合格人数,/n=合格率int n=0;/学生人数for(int i=0;inext;n=0; sum=pass=0; while(p)/遍历学生链表 n+; /人数 sum=sum+p-grade;/某科总分 if(p-grade=60)pass+; /某科合格人数 p=p-next; for(i=0;iCOURSE:coursenum;i+) coutsetprecision(4)setiosflags(ios:showpoint); coutCOURSE:coursename平均:sum/n,合格率:pass/n*100.%endl;delete sum;delete pass;void COLLEGE:ValueS2ToS1(STUDENT &s1,STUDENT &s2)strcpy(s1.num,s2.num); /学号strcpy(,);/姓名s1.sex=s2.sex; /性别strcpy(ame,ame); /班级for(int i=0;i低void COLLEGE:SumSort() STUDENT *p1,*p2;p1=SL-next;while(p1) p2=p1-next; while(p2) if(p2-sump1-sum) STUDENT t; ValueS2ToS1(t,*p1); ValueS2ToS1(*p1,*p2); ValueS2ToS1(*p2,t); p2=p2-next; p1=p1-next;void COLLEGE:NumSort()/按学号排序(低-高)STUDENT *p1,*p2;p1=SL-next;while(p1) p2=p1-next; while(p2) if(strcmp(p2-num,p1-num)next; p1=p1-next;void main()char ch;COLLEGE c;/定义大学对象cout.setf(ios:left);/显示主菜单,接受选择,并分支调用大学类的相应功能的成员函数do coutn 高校学籍管理系统 n; cout1增加学生n; cout2删除学生n; cout3修改学生n; cout4查询学生n; cout5输出学生信息n; cout6综合统计(课程平均成绩,课程合格率)n; cout7总分排序n; cout8学号排序n; coutS数据存盘n; coutL数据装入n; coutch;ch=toupper(ch); switch(ch) case 1:c.Add(); break; case 2:c.Delete();break; case 3:c.Modify();break; case 4:c.Query(); break; case 5:c.Print(); break; case 6:c.Stat();break; case 7:c.SumSort();break; case 8:c.NumSort();break; case S:c.Save();break; case L:c.Load();break; while(ch!=Q);3、2数据文件1、course.dat:3C+英语高数2、student.dat: 86101 chenkaijun M M8601 77 59 96 232 86102 zhaowei F M8601 55 85 77 217 86103 wubin M M8601 85 87 92 264 86104 shijun M M8601 58 90 85 233 86105 wangzhuguo M M8601 66 70 86 2223、3运行结果参考 高校学籍管理系统 1增加学生2删除学生3修改学生4查询学生5输出学生信息6综合统计(课程平均成绩,课程合格率7总分排序8学号排序S数据存盘L数据装入Q退出 请选择(1-8,SLQ) 高校学籍管理系统 1增加学生2删除学生3修改学生4查询学生5输出学生信息6综合统计(课程平均成绩,课程合格率7总分排序8学号排序S数据存盘L数据装入Q退出 请选择(1-8,SLQ):5* 输出学生信息 *学号 姓名 性别 班级 C+ 英语 高数 总分86101 chenkaijun M M8601 77 59 96 23286102 zhaowei F M8601 55 85 77 21786103 wubin M M8601 85 87 92 26486104 shijun M M8601 58 90 85 23386105 wangzhuguo M M8601 66 70 86 222 高校学籍管理系统 1增加学生2删除学生3修改学生4查询学生5输出学生信息6综合统计(课程平均成绩,课程合格率)7总分排序8学号排序S数据存盘L数据装入Q退出 请选择(1-8,SLQ):7 高校学籍管理系统 1增加学生2删除学生3修改学生4查询学生5输出学生信息6综合统计(课程平均成绩,课程合格率)7总分排序8学号排序S数据存盘L数据装入Q退出 请选择(1-8,SLQ):5* 输出学生信息 *学号 姓名 性别 班级 C+ 英语 高数 总分86103 wubin M M8601 85 87 92 26486104 shijun M M8601 58 90 85 23386101 chenkaijun M M8601 77 59 96 23286105 wangzhuguo M M8601 66 70 86 22286102 zhaowei F M8601 55 85 77 217 高校学籍管理系统 1增加学生2删除学生3修改学生4查询学生5输出学生信息6综合统计(课程平均成绩,课程合格率)7总分排序8学号排序S数据存盘L数据装入Q退出 请选择(1-8,SLQ):qPress any key to continun/查询学生信息/按学号或姓名查找,如果找到显示该学生,如果未找到,也给出相应提示.void COLLEGE:uery()coutnext;char No20;char Name20;char ch;do coutch;while(ch!=1&ch!=2);int flag=0;/未找到0,找到1if(ch=1)/按学号查 coutNo; while(p) if(strcmp(p-num,No)=0) flag=1;break; else p=p-next;else/按姓名查 coutName; while(p) if(strcmp(p-name,Name)=0) flag=1;break; else p=p-next;if(flag=1)/如果找到,显示此同学信息 p-OutputT(); p-Output();else/否则给出未找到提出 cout指定的学生没有找到!n;/输出所有学生信息void COLLEGE:rint() coutnext;STUDENT:OutputT();/输出标题while(p)/循环输出各位学生信息 p-Output(); p=p-next;/学生数据存盘void COLLEGE:Save() ofstream f(student.dat);STUDENT *p=SL-next;while(p)/遍历学生链表 p-Output(f);/写入文件 p=p-next; f.close();coutnext;while(p) SL-next=p-next; delete p; p=SL-next;/装入学生数据void COLLEGEad() Clear();ifstream f(student.dat);STUDENT *p=SL;STUDENT *p2=new STUDENT;p2-Input(f); while(f) p-next=p2; p=p-next; p2=new STUDENT; p2-Input(f); delete p2;f.close();/统计课程平均成绩,课程合格率void COLLEGE:Stat() float *sum=new floatCOURSE:coursenum;/各科平均成绩float *pass=new floatCOURSE:coursenum;/各科合格人数,/n=合格率int n=0;/学生人数for(int i=0;inext;n=0; sum=pass=0; while(p)/遍历学生链表 n+; /人数 sum=sum+p-grade;/某科总分 if(p-grade=60)pass+; /某科合格人数 p=p-next; for(i=0;iCOURSE:coursenum;i+) coutsetprecision(4)setiosflags(ios:showpoint); coutCOURSE:coursename平均:sum/n,合格率:pass/n*100.%endl;delete sum;delete pass;void COLLEGE:ValueS2ToS1(STUDENT &s1,STUDENT &s2)strcpy(s1.num,s2.num); /学号strcpy(,);/姓名s1.sex=s2.sex; /性别strcpy(ame,ame); /班级for(int i=0;i低void COLLEGE:SumSort() STUDENT *p1,*p2;p1=SL-next;while(p1) p2=p1-next; while(p2) if(p2-sump1-sum) STUDENT t; ValueS2ToS1(t,*p1); ValueS2ToS1(*p1,*p2); ValueS2ToS1(*p2,t); p2=p2-next; p1=p1-next;void COLLEGE:NumSort()/按学号排序(低-高)STUDENT *p1,*p2;p1=SL-next;while(p1) p2=p1-next; while(p2) if(strcmp(p2-num,p1-num)next; p1=p1-next;void main()char ch;COLLEGE c;/定义大学对象cout.setf(ios:left);/显示主菜单,接受选择,并分支调用大学类的相应功能的成员函数do coutn 高校学籍管理系统 n; cout1增加学生n; cout2删除学生n; cout3修改学生n; cout4查询学生n; cout5输出学生信息n; cout6综合统计(课程平均成绩,课程合格率)n; cout7总分排序n; cout8学号排序n; coutS数据存盘n; coutL数据装入n; coutch;ch=toupper(ch); switch(ch) case 1:c.Add(); break; case 2:c.Delete();break; case 3:c.Modify();break; case 4:c.Query(); break; case 5:c.Print(); break; case 6:c.Stat();break; case 7:c.SumSort();break; case 8:c.NumSort();break; case S:c.Save();break; case L:c.Load();break; while(ch!=Q);3、2数据文件1、course.dat:3C+英语高数2、student.dat: 86101 chenkaijun M M8601 77 59 96 232 86102 zhaowei F M8601 55 85 77 217 86103 wubin M M8601 85 87 92 264 86104 shijun M M8601 58 90 85 233 86105 wangzhuguo M M8601 66 70 86 2223、3运行结果参考 高校学籍管理系统 1增加学生2删除学生3修改学生4查询学生5输出学生信息6综合统计(课程平均成绩,课程合格率7总分排序8学号排序S数据存盘L数据装入Q退出 请选择(1-8,SLQ) 高校学籍管理系统 1增加学生2删除学生3修改学生4查询学生5输出学生信息6综合统计(课程平均成绩,课程合格率7总分排序8学号排序S数据存盘L数据装

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论