C课程设计——学籍管理系统实验报告_第1页
C课程设计——学籍管理系统实验报告_第2页
C课程设计——学籍管理系统实验报告_第3页
C课程设计——学籍管理系统实验报告_第4页
C课程设计——学籍管理系统实验报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、学生学籍管理系统程序设计基础课程设计报告专 业: 班 级: 学 号: 姓 名: 指导教师: 二OO八 年 六月二十六日C+课程设计学籍管理系统实验报告1、 对C+设计的学生学籍管理系统总体说明我这次做的课程设计是学生学籍管理系统,本程序采用C+程序语言编写,运用了基于对象和面向对象的程序设计。它主要是完成对学生的基本信息和成绩进行录入、查询和删除功能。实施起来简单快捷,虽然程序简单,但可以作为老师的辅助软件对学生的基本信息和各科成绩进行管理。2、 总体设计 本程序的流程图如下:Main()函 数界面根据提示操作录入(1);调用bulid函数(插入)查询(2);根据界面提示操作删除(3);调用d

2、elete函数(删除)排序(4);根据提示调用taxis_credit或taxis_mark全部输出(5);分别调用两个类的displaygoto to(返回menu)退出(其它)3、 对学生学籍管理系统的介绍()具体功能:a) 数据录入功能:对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算() 查询功能:分为学生基本情况查询和成绩查询两种:A:学生基本情况查询:A1-输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。A2-输入一个宿舍号码,可查询出本室所有的学生的基本信息并显

3、示输出。B:成绩查询:B1:输入一个学号时,查询出此生的所有课程情况,格式如下:学 号:xx 姓 名:xxxxx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 共修:xx科,实得总学分为: xxxb) 删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。c) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。()源程序说明:源程序清单及注释如下:#include<i

4、ostream>#include<fstream>#include<iomanip>using namespace std;class Basicpublic: virtual int input(ifstream &its)=0;virtual void input()=0;virtual void display(ofstream &its)=0;virtual void display()=0;virtual void display_1() friend class College;protected:/把这些数放在这,方便调用Basic

5、*next;/指针int number;/学号char name40;/姓名int dom_number;/宿舍号double mark; /综合成绩int credit; /实得学分;class Student:virtual public Basicpublic:int input(ifstream &its)/输入流its>>number;if(number=-1)return 0;elseits>>name>>sex>>dom_number>>phone_number;return 1; void input()/输入

6、cout<<"学号:"cin>>number;cout<<" 姓名:"cin>>name;cout<<"性别:"cin>>sex;cout<<"宿舍号码:"cin>>dom_number;cout<<"电话号码:"cin>>phone_number;void display(ofstream &its)/输出流 its<<number<<&quo

7、t; "<<name<<" "<<sex<<" "<<dom_number<<" "<<phone_number<<endl;void display()/输出cout<<number<<setw(10)<<name<<setw(6)<<sex<<setw(10)<<dom_number<<setw(13)<<phone_n

8、umber<<endl;private:char sex5;/性别char phone_number20;/电话号码;class Course:virtual public Basicpublic:int input(ifstream &its)/输入流函数its>>number;if(number=-1)return 0;else its>>chass_number>>chass_name>>chass_mark>>peacetime_mark>>experiment_mark>>txt_

9、mark;account();return 1;void input()/输入函数cout<<"学号="cin>>number;cout<<"课程编号="cin>>chass_number;cout<<"课程名称="cin>>chass_name;cout<<"学分="cin>>chass_mark;cout<<"平时成绩="cin>>peacetime_mark;cout&l

10、t;<"实验成绩="cin>>experiment_mark;cout<<"卷面成绩="cin>>txt_mark;account(); void account()/计算综合成绩和实得学分int i;if(experiment_mark=-1) mark=peacetime_mark*0.15+experiment_mark*0.15+txt_mark*0.7;else mark=peacetime_mark=peacetime_mark*0.3+txt_mark*0.7;i=mark/10;switch(i)

11、case 10: credit=chass_mark;break;case 9: credit=chass_mark;break;case 8: credit=chass_mark*0.8;break;case 7: credit=chass_mark*0.7;break;case 6: credit=chass_mark*0.6;break;default:credit=0;break;void display(ofstream &its)/输出流函数its<<number<<" "<<chass_number<<&

12、quot; "<<chass_name<<" "<<chass_mark<<" "<<peacetime_mark<<" "<<experiment_mark<<" "<<txt_mark<<endl;void display()/输出函数cout<<number<<setw(10)<<chass_number<<setw(11)<&

13、lt;chass_name<<setw(5)<<chass_mark<<setw(7)<<peacetime_mark<<setw(10)<<experiment_mark<<setw(10)<<txt_mark<<setw(10)<<mark<<setw(10)<<credit<<endl;void display_1() cout<<"课程编号:"<<chass_number<<&

14、quot; "<<"课程名称:"<<chass_name <<" "<<"综合成绩:"<<mark<<" "<<"实得学分:"<<credit<<endl;private:char chass_number30;/课程编号char chass_name30;/课程名称int chass_mark; /学分int peacetime_mark;/平时成绩int experiment

15、_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,打开相应的文件f.open("A.txt",ios:in); head=new Student;p=new Student;else f.open("B.txt",ios:in);head=new Course;p=new Course;if(!f)/判断f是否打开文

16、件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);f.close();/关闭文件College() save();Basic *Build(Basic *p)/插入函数,将p有序的插入链表中Basic *p1=head,*p2=hea

17、d;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;p->next=p1;ji+;break;p2=p1;p1=p1->next;ret

18、urn 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->display();break;void find_name()/查找姓名(student)c

19、har 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<<"请输入你想找的宿舍号码:"cin>>i;for(;h->next!=NULL;h=h->next)if(h-&

20、gt;dom_number=i)h->display(); Basic *get_head()return head; void find(Basic *a)/输入一个学号时,查询出此生的所有课程情况(Course)int i;Basic *h=head; cout<<"请输入你想查的学号:"cin>>i;for(;a->next!=NULL;a=a->next)if(a->number=i)cout<<"学 号:"<<i<<" "cout<&l

21、t;"姓 名:"<<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->number=j)/处理头head=p1->next;i=-1;/保证下次还可以删除头链else if(p1->numb

22、er=j)/处理尾p2->next=p1->next;p2=p1;p1=p1->next;i+; void delete_student(College &b)/当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息(student)int i;cout<<"请输入你想删除的学生的学号:"cin>>i;Delete(i);b.Delete(i); void taxis_mark()/综合成绩排序(Course)Basic *a=head;Basic *m90,*t;int i,j,k,b;cout<<

23、;"升序-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;cout<<"按综合成绩升序排序为"<<endl;for(j=0;j<i;j+)mj->display();else if(b=2)/降序 for(i=0;a->ne

24、xt!=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;cout<<"按综合成绩降序排序为"<<endl;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"&

25、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;cout<<"按学分升序排序为"<<endl;for(j=0;j<i;j+)mj->display();else if(b=2)/降序 for(i=0;a->next!=NULL;i+)mi=a;a=a-

26、>next;for(j=0;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) s.open("A.txt",ios:out); else if(PL=1) s.open("B.txt",i

27、os:out); for(;h->next!=NULL;h=h->next)h->display(s);s<<i<<endl;s.close();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<<" *学籍管理系统*

28、"<<endl;cout<<" * *"<<endl;cout<<" * *"<<endl; to:cout<<" * <1> 录入 <2> 查询 <3> 删除 *"<<endl;cout<<" * *"<<endl; cout<<" * <4> 排序 <5> 全部输出 <其他> 结束 *"<

29、;<endl;cout<<" * *"<<endl;cout<<" * *"<<endl;cout<<" *"<<endl;cin>>i;if(i=1)c=new Course;c->input();b.Build(c); goto to;else if(i=2) cout<<"1-学生基本情况查询 2-成绩查询"<<endl; cin>>k0; if(k0=1)cout<<"1-学号查询 2-姓名查询 3

温馨提示

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

评论

0/150

提交评论