


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生学籍管理系统程序设计基础课程设计报告专 业:班 级:学 号:姓 名:指导教师: 二00八年六月二十六日C+课程设计学籍管理系统实验报告1、对C+设计的学生学籍管理系统总体说明它主要是完成对学生的基本信息和成绩进行录入、虽然程序简单,但可以作为老师的辅助软件对学生的基本信查询和基于对象和面向对象的程序设计。 删除功能。 实施起来简单快捷, 息和各科成绩进行管理。2、总体设计本程序的流程图如下:3、对学生学籍管理系统的介绍(1)具体功能:a) 数据录入功能:对进行数据录入 , 只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共 7 个数据 . 综合成绩、学分由程序根
2、据条件自动运算(2) 查询功能:分为学生基本情况查询和成绩查询两种:A:学生基本情况查询:A1 输入一个学号或姓名(可实现选择) ,查出此生的基本信息并显示输出。A2- 输入一个宿舍号码,可查询出本室所有的学生的基本信息并显 示输出。B :成绩查询:B1 :输入一个学号时,查询出此生的所有课程情况,格式如下:学 号: xx姓 名: xxxxx课程编号:xxx课程名称:xxxxx综合成绩:xxxx实得学分: xx课程编号:xxx课程名称:xxxxx综合成绩:xxxx实得学分: xx课程编号:xxx课程名称:xxxxx综合成绩:xxxx实得学分 : xx共修: xx 科,实得总学分为 : xxxb
3、) 删除功能:当在中删除一个学生时,自动地在中删除此人所有信息。c) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。(2)源程序说明:源程序清单及注释如下: #include<iostream> #include<fstream> #include<iomanip> using namespace std;class Basicpublic:virtual int input(ifstream &its)=0;virtual void input()=0;virtual void display(ofstream &its
4、)=0;virtual void display()=0;virtual void display_1()friend class College;protected:/ 把这些数放在这,方便调用Basic *next;/ 指针int number;/ 学号char name40;/姓名int dom_number;/ 宿舍号 double mark; / 综合成绩 int credit; /实得学分;class Student:virtual public Basicpublic:int input(ifstream &its)/输入流its>>number;if(num
5、ber=-1)return 0;elseits>>name>>sex>>dom_number>>phone_number;return 1;void input()/ 输入cout<<" 学号 :"cin>>number;cout<<" 姓名 :"cin>>name;cout<<" 性别 :"cin>>sex;cout<<" 宿舍号码 :"cin>>dom_number;c
6、out<<" 电话号码 :"cin>>phone_number;its<<number<<""<<phone_number<<endl;void display()/ 输出"<<name<<""<<sex<<""<<dom_number<<"cout<<number<<setw(10)<<name<<set
7、w(6)<<sex<<setw(10)<<dom_number<<setw(13)< <phone_number<<endl;private:char sex5;/性别char phone_number20;/电话号码;class Course:virtual public Basicpublic:int input(ifstream &its)/ 输入流函数its>>number;if(number=-1)return 0;elseits>>chass_number>>chas
8、s_name>>chass_mark>>peacetime_mark>>experiment_mark>>txt_mark;account();return 1;void input()/ 输入函数cout<<" 学号 =" cin>>number;cout<<" 课程编号 =" cin>>chass_number;cout<<" 课程名称 =" cin>>chass_name;cout<<"
9、学分 =" cin>>chass_mark;cout<<" 平时成绩 =" cin>>peacetime_mark; cout<<" 实验成绩 =" cin>>experiment_mark; cout<<" 卷面成绩 =" cin>>txt_mark;account();"<<int i;if(experiment_mark=-1)mark=peacetime_mark*+experiment_mark*+txt_ma
10、rk*;else mark=peacetime_mark=peacetime_mark*+txt_mark*;i=mark/10;switch(i)case 10: credit=chass_mark;break;case 9: credit=chass_mark;break;case 8: credit=chass_mark*;break;case 7: credit=chass_mark*;break;case 6: credit=chass_mark*;break;default:credit=0;break;void display(ofstream &its)/ 输出流函数i
11、ts<<number<<" "<<chass_number<<" "<<chass_name<<peacetime_mark<<" "<<experiment_mark<<" "<<txtvoid display()/ 输出函数"<<chass_mark<<"mark<<endl;cout<<number<<setw(
12、10)<<chass_number<<setw(11)<<chass_name<<setw(5)<<chassmark<<setw(7)<<peacetime_mark<<setw(10)<<experiment_mark<<setw(10)<<txt_mark<<setw(10)<<mark<<setw(10)<<credit<<endl;void display_1()cout<<&quo
13、t; 课程编号: "<<chass_number<<" "<<" 课程名称: "<<chass_name<<" "<<" 综合成绩: "<<mark<<" "<<" 实得学分 :"<<credit<<endl;private:char chass_number30;/ 课程编号char chass_name30;/ 课程名称 int c
14、hass_mark; / 学分 int peacetime_mark;/ 平时成绩 int experiment_mark;/ 实验成绩 int txt_mark; / 卷面成绩;class College/ 链表类public:College(int i)/构造函数建立初链, i=0 建立 Student 链表, i=1 建立 Course链表ji=0;Basic *p;int t;PL=i;if(PL=0)/根据 PL ,打开相应的文件("",ios:in);head=new Student;p=new Student;else("",ios:in)
15、;head=new Course;p=new Course;if(!f)/ 判断 f 是否打开文件cout<<" 错误 "<<endl;abort();t=head->input(f);head->next=p;p->next=NULL;for(;)/ 读入文件数据,并将数据插入链表中 if(i=0)p=new Student;else p=new Course;t=p->input(f);if(t=0)break;head=Build(p);();/ 关闭文件College()save();Basic *Build(Basi
16、c *p)/插入函数,将 p 有序的插入链表中Basic *p1=head,*p2=head;int i; for(i=0;p1->next!=NULL;i+)if(i=0&&p->number<p1->number)/ 处理头链p->next=p1;head=p;ji+;break;处理中间else if(p->number<p1->number)/p2->next=p;p->next=p1;ji+;break;else if(i=ji)/ 处理尾p2=p1;p1=p1->next;p2->next=p;
17、p->next=p1;ji+;break;p2=p1;p1=p1->next;return head;void display()/输出链表信息Basic *a=head;for(;a->next!=NULL;a=a->next)a->display();void find_number()/ 查找学号 (student)int i;Basic *h=head;cout<<" 请输入你想找的学号: "cin>>i;for(;h->next!=NULL;h=h->next)if(h->number=i)h
18、->display();break;void find_name()/ 查找姓名 (student)char i40;Basic *h=head;cout<<" 请输入你想找的姓名: "cin>>i;for(;h->next!=NULL;h=h->next)if(strcmp(h->name,i)=0)h->display();break;void find_dom_number()/ 查找宿舍号码 (student)int i;Basic *h=head;cout<<" 请输入你想找的宿舍号码:
19、"cin>>i;for(;h->next!=NULL;h=h->next)if(h->dom_number=i)h->display();Basic *get_head()return head;(Course)void find(Basic *a)/ 输入一个学号时,查询出此生的所有课程情况int i;Basic *h=head;cout<<" 请输入你想查的学号: "cin>>i;for(;a->next!=NULL;a=a->next)if(a->number=i)cout<
20、<" 学 号: "<<i<<" "cout<<" 姓 名: "<<a->name<<endl;break;for(;h->next!=NULL;h=h->next)if(h->number=i)h->display_1();void Delete(int j)/ 删除, j 表示学号Basic *p1=head,*p2=head;int i=0;for(;p1->next!=NULL;)if(i=0&&p1->n
21、umber=j)/ 处理头else if(p1->number=j)/ 处理尾p2->next=p1->next;p2=p1;p1=p1->next;i+;void delete_student(College &b)/当在中删除一个学生时,自动地在中删除此人所有信息 (student)int i;cout<<" 请输入你想删除的学生的学号: "cin>>i;Delete(i);(i);void taxis_mark()/ 综合成绩排序 (Course)Basic *a=head;Basic *m90,*t;int i
22、,j,k,b;cout<<" 升序 -1 降序 -2"<<endl;cin>>b;if(b=1)/ 升序for(i=0;a->next!=NULL;i+)mi=a;a=a->next;for(j=0;j<i;j+)for(k=j;k<i;k+)if(mj->mark>mk->mark)t=mj;mj=mk;mk=t;"<<endl;cout<<" 按综合成绩升序排序为for(j=0;j<i;j+)mj->display();else if(b
23、=2)/降序mi=a;a=a->next;for(j=0;j<i;j+)for(k=j;k<i;k+)if(mj->mark<mk->mark)t=mj;mj=mk;mk=t;"<<endl;cout<<" 按综合成绩降序排序为for(j=0;j<i;j+)mj->display();void taxis_credit()/ 学分排序 (Course)Basic *a=head;Basic *m90,*t;int i,j,k,b;cout<<" 升序 -1 降序 -2"&
24、lt;<endl;cin>>b;if(b=1)/ 升序for(i=0;a->next!=NULL;i+)mi=a;a=a->next;for(j=0;j<i;j+)for(k=j;k<i;k+)if(mj->credit>mk->credit)t=mj;mj=mk;mk=t;<<endl;cout<<" 按学分升序排序为for(j=0;j<i;j+)mj->display();else if(b=2)/ 降序for(i=0;a->next!=NULL;i+)mi=a;for(j=0;
25、j<i;j+)for(k=j;k<i;k+)if(mj->credit<mk->credit)t=mj;mj=mk;mk=t;cout<<" 按学分降序排序为 "<<endl;for(j=0;j<i;j+)mj->display();void save() /保存函数Basic *h=head;int i=-1;if(PL=0)("",ios:out);else if(PL=1)("",ios:out);for(;h->next!=NULL;h=h->nex
26、t)h->display(s);s<<i<<endl;private:ifstream f;ofstream s;Basic *head;/ 链表的头指针int ji;/ 计算插入的数int PL;/ 判断建立怎样的链表 ;int main()int i,k10;Course *c;*欢迎进入College a(0),b(1);cout<<"*<<endl;cout<<"*<<endl;*Hcout<<"*<<endl;cout<<"*H&l
27、t;<endl;to:cout<<"*<1>录入 <2> 查询 <3> 删除*H*<<endl;cout<<"*<4>排序 <5> 全部输出 <其他 > 结束*<<endl;cout<<"*<<endl;cout<<"*"<<endl;cout<<"cout<<"<<endl;*cin>>i;if(i=1)c=new Course;c->input();(c);goto to;else if(i=2)cout<<"1- 学生基本情况查询 2- 成绩查询 "<<endl;cin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025【国际服务贸易合同】国际服务贸易合同的标准
- 2025简易技术委托开发合同范本
- 2025茶叶委托加工合同范本
- 2025租赁合同解除协议模板
- 幼儿园蔬菜化妆舞会
- 二零二五房屋居间合同书范例
- 库房出租简单合同书范例二零二五年
- 房屋出租合同书水电费规定
- 二零二五养殖劳动聘用合同
- 授权经销合同书协议书范例二零二五年
- 销售部长助理岗位职责
- ISOTS 22163专题培训考试
- 六年级下册数学课件-第4单元 比例 整理和复习 人教版(共21张PPT)
- JJF(鲁) 142-2022 称重式雨量计校准规范
- Adobe-Illustrator-(Ai)基础教程
- 程序的运行结果PPT学习教案
- 圆柱钢模计算书
- 合成宝石特征x
- 查摆问题及整改措施
- 年度研发费用专项审计报告模板(共22页)
- 隧道工程隧道支护结构设计实用教案
评论
0/150
提交评论