《学生学籍管理系统c++课程设计报告书》由会员分享,可在线阅读,更多相关《学生学籍管理系统c++课程设计报告书(16页珍藏版)》请在金锄头文库上搜索。
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#include#
4、includeusing 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 *next;/指针int number;/学号char name40;/int dom_number;/宿舍号dou
5、ble mark; /综合成绩int credit; /实得学分;class Student:virtual public Basicpublic:int input(ifstream &its)/输入流itsnumber;if(number=-1)return 0;elseitsnamesexdom_numberphone_number;return 1; void input()/输入coutnumber;coutname;coutsex;coutdom_number;coutphone_number;void display(ofstream &its)/输出流 itsnumber na
6、me sex dom_number phone_numberendl;void display()/输出coutnumbersetw(10)namesetw(6)sexsetw(10)dom_numbersetw(13)phone_numbernumber;if(number=-1)return 0;else itschass_numberchass_namechass_markpeacetime_markexperiment_marktxt_mark;account();return 1;void input()/输入函数coutnumber;coutchass_number;coutcha
7、ss_name;coutchass_mark;coutpeacetime_mark;coutexperiment_mark;couttxt_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)case 10: credit=chass_ma
8、rk;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)/输出流函数itsnumber chass_number chass_name chass_mark peacetime_mark experiment_mark txt_markendl;void d
9、isplay()/输出函数coutnumbersetw(10)chass_numbersetw(11)chass_namesetw(5)chass_marksetw(7)peacetime_marksetw(10)experiment_marksetw(10)txt_marksetw(10)marksetw(10)creditendl;void display_1() cout课程编号:chass_number 课程名称:chass_name 综合成绩:mark 实得学分:creditendl;private:char chass_number30;/课程编号char chass_name30
10、;/课程名称int chass_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,打开相应的文件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是否打开文件cout错误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=head;int i;