




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、专业资料专业资料VC+课程设计-高校学籍管理系统源程序、课程设计题目:学籍管理系统 二、目的与要求:1、目的:(1)要求学生达到熟练掌握C+语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题2、基本要求:(1)要求利用面向对象的法以及 C+的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统的设计中,至少要用到面向对象的一种机制。3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。4、写出设计说明书三、设计法和基本原理:1、功能要求要求完成以下功能:1)
2、能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。2)能够将指定的信息从文件中删除。3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。4)可以统计全部学生的总成绩,及其在班上的排名。5)能够统计各科的平均成绩及及格率。6)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。7)如果检索不到相应的信息应提示用户。2、问题的解决案:根据系统功能要求,可以将问题解决分为以下步骤:a)写出需求分析(做什么)b)分析系统中的各个实体之间的关系及其属性和行为;c)根据问题描述,设计系统的类层次;d)完成类层次中各个类的描述(包括属性和法);e)完成类中各个成员函数的定义;
3、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
4、(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;/成绩(动态数组)flo
5、at 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)(fn
6、um;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+)coutsetwCOURSE二coursename;coutsetw(10) 总分endl;void Output()(coutsetw(10)num; /输出学生一般信息coutsetw(20)name;coutsetw(5)sex;coutsetw(10)c
7、name;for(int i=0; iCOURSE:coursenum; i+) /输出学生各科成绩,总分(coutsetwgrade;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+) /输出学生各科成绩,总分fsetwgrade;fsetw(10)sumnext;delete p;P=SL; void Set();/课程设置(增,删,改,存)void Add
8、();/增加学生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();/输入学生信
9、息查找学生结点(返回1-找到,0-未找到.结点指针由pl返回,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)cou
10、tnext=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;d
11、ocoutch;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;elsep=p-next;if(flag=1) /如果找到,显示此同学信息p-OutputT();p-Output();else /否则给出未找到提出cout指定的学生没有找到!n; /输出所有学生信息void C
12、OLLEGE: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;写入文件 p=p-next;f.close();coutnext; while(p) SL-next=p-next;delete p;p=SL-next;/装入学生数据void COLLEGEad()Clear();ifstream f
13、(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;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;
14、 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)
15、strcpy(s1.num,s2.num); /学号strcpy(,); / 姓名s1.sex=s2.sex; 性别strcpy(ame,ame); / 班级for(int i=0; inext;while(pl)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;p
16、1=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);/显示主菜单,接受选择,并分支调用大学类的相应功能的成员函数 don高校学籍管理系统忌n;cout1 一增加学生 n”;cout2 删除学生 n”;cout3 一修改学生 n;cout4 一查询学生 n;cout5 输出学生信息n;cout6 综合统计(课程平土成绩,课程合格率)n”;cout7 一总分排序 n”;cout8
17、学号排序 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:
18、 c.Load(); break;while(ch!=Q);3、2数据文件1、course.dat :3C+英语高数2、student.dat86101chenkaijunM M860177599623286102zhaoweiF M860155857721786103wubinM M860185879226486104shijunM M860158908523386105wangzhuguoM M86016670862223、3运行结果参考高校学籍管理系统1 增加学生2删除学生3修改学生4查询学生5输出学生信息6-综合统计(课程平均成绩,课程合格率7总分排序8学号排序S-数据存盘L 数据装入
19、Q退出 请选择(1-8,SLQ)高校学籍管理系统1 增加学生2删除学生3修改学生4查询学生 5输出学生信息6-综合统计(课程平均成绩,课程合格率7总分排序8-学号排序S-数据存盘L 数据装入Q退出请选择(1-8,SLQ):5*输出学生信息*学号 姓名性别班级 C+ 英语高数总分 TOC o 1-5 h z 86101 chenkaijunM M860177599623286102 zhaoweiF M860155857721786103 wubinM M860185879226486104 shijunM M860158908523386105 wangzhuguoM M86016670862
20、22高校学籍管理系统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*输出学生信息*输出学生信息*学号 姓名86103 wubin86104 shijun86101 chenkaijun86105 wangzhuguo86102 zhaowei性别班级 C+M M8601
21、85M M860158M M860177M M8601F M860155英语高数总分879226490852335996232670862228577217高校学籍管理系统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;d
22、ocoutch;while(ch!=1&ch!=2);int flag=0; / 未找到0,找到1if(ch=1) / 按学号查coutNo;while(p)if(strcmp(p-num,No)=0)flag=1; break;elsep=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
23、 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();ifstr
24、eam 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; /各科平均成绩/n=合格float *pass=new floatCOURSE:coursenum; /n=合格率int n=0; / 学生人数for(int i=0; i
25、next; 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
26、 &s2)strcpy(s1.num,s2.num); /学号strcpy(,); / 姓名s1.sex=s2.sex; 性别strcpy(ame,ame); / 班级for(int i=0; inext;while(pl)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,
27、*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);/显示主菜单,接受选择,并分支调用大学类的相应功能的成员函数 don高校学籍管理系统忌n;cout1 一增加学生 n”;cout2 删除学生 n”;cout3 一修改学生 n;cout4 一查询学生 n;cout5 输出学生信息n;cout6 综合统计(课程平土成绩,课程合格率)n”;cout7 一总分排序 n”;c
28、out8 学号排序 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 :86101chenkaijunM M860177599623286102zhaoweiF M860155857721786103wubinM M860185879226486104shijun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生态脆弱区保护与恢复策略考核试卷
- 盐湖区水资源分配与供给保障考核试卷
- 无线电频率共用与协调考核试卷
- 苗木保密协议样本
- 潜水装备在海洋渔业资源的可持续利用考核试卷
- 纺织机械性能优化策略考核试卷
- 染料在新能源电池材料中的应用考核试卷
- 稀土金属矿床开采过程中的环境保护法规执行考核试卷
- 安全教育预防火灾
- 小学生教育故事:诚信与成长的启迪
- 脑电图判读异常脑电图
- 人体所需的七大营养素(卓越)
- 《小学生预防溺水安全教育班会》课件
- 传统园林技艺智慧树知到期末考试答案2024年
- 直播中的礼仪与形象塑造
- 2024年八年级数学下册期中检测卷【含答案】
- 老年人中医健康知识讲座总结
- 海南声茂羊和禽类半自动屠宰场项目环评报告
- 跳绳市场调研报告
- 《民法典》合同编通则及司法解释培训课件
- 交通事故法律处理与索赔案例分析与实践指导
评论
0/150
提交评论