《C++程序设计语言》课程设计报告(学生学籍管理系统).doc
《《C++程序设计语言》课程设计报告(学生学籍管理系统).doc》由会员分享,可在线阅读,更多相关《《C++程序设计语言》课程设计报告(学生学籍管理系统).doc(24页珍藏版)》请在沃文网上搜索。
1、目 录一、需求分析3二、程序的主要功能4三、程序运行平台5四、系统总框架图5五、程序类的说明6六、模块分析8七、比较有特色的函数9八、存在的不足与对策12九、程序源代码1324一、需求分析 学籍管理现状1、 目前国内大中专院校众多,在校的学生人数占据了社会人口很大一部分,是社会群体中的新生力量;2、 对学生学籍的管理是各大院校日常管理中不可忽视的一个重要环节;3、 随着计算机等高新科技的发展,对学籍的管理早已不能仅仅满足于纸质文件。因此,开发出一套计算机学生学籍管理系统显得很有必要。 本系统存在的价值1、 满足了各大院校对学籍管理的强烈要求;2、 力图用最少的代码完成最多的功能,代码简洁没有冗
2、余;3、 系统操作简便明了,根据提示即可进行简便常用的日常学籍管理;4、 占用资源少、需求大、简便易操作,多彩的可视化界面。综合以上众多优势,证明了本系统存在的价值。 选择C+的理由C+为了解决程序设计的复杂性,美国贝尔实验室于1980年开始研制一种“带类”的C,到1983年才正式命名为C+。C+语言吸收了C和Simula 67的精髓,具有C无可比拟的优越性。C+结构清晰、易于维护、已于拓展,同时又不失效率。(节选自C+简明教程(皮德常),电子工业出版社)综合以上优点,我们选定C+为本次系统的程序设计语言。二、程序的主要功能 显示全部学生信息显示全部学生的学生信息。包括学号、姓名、电话、住址、
3、绩点、奖惩信息、学生证预约记录等 查找指定信息通过输入学号,查找并输出指定学生的全部信息 开具学籍证明通过输入学号,开具该学生的学籍证明保存到Apply.txt文件中,并在屏幕上输出 学生证预约登记记录指定学生的学生证预约登记记录 奖惩信息录入记录指定学生的奖惩信息记录 按学号排序后输出按学号排序后输出到屏幕,并保存到PeoInfo.txt文件 按绩点高低排序输出按绩点高低排序后输出到屏幕,并保存到PeoInfo.txt文件 清除数据文件清除PeoInfo.txt文件中的全部信息 学生信息更新/修改通过学号更新/修改该学生的信息 作者&版权信息显示作者及课设的相关信息三、程序运行平台Micro
4、soft Visual C+ 6.0四、系统总框架图(图4-1)(图4-2)五、程序类的说明 Stu类的说明class Stu /父类,公用类protected:Info *person;fstream people; /创建二进制文件public:Stu();virtual Info *SearNum(char *)=0; /按学号查找学生信息,纯虚函数bool operator(const Info *); /比较成绩高低,重载运算符 friend void InputOne(Info *p1); /友元函数void creat(); /创建链表Stu(); Show类的说明class S
5、how:public Stu /Stu的子类,显示模块,抽象类public:void ShowOne(Info *); /显示指定的学生信息 void ShowAll(); /显示所有学生的信息Info *SearNum(char *);void ListNum(); /按学号排序输出 void ListMark(); /按绩点高低排序输出; Manage类的说明class Manage:public Show /Show的子类,管理模块,多重继承public:Info *SearNum(char *);void Apply(char *); /学籍证明void Book(char *); /
6、学生证预约void Change(char *); /信息更新/修改void GoodBad(char *); /奖惩情况录入 ; WrongIn类的说明class WrongIn /用于捕捉输入异常 ;六、模块分析 显示模块显示全部学生的学生信息。包括学号、姓名、电话、住址、绩点、奖惩信息、学生证预约记录等 查找模块通过输入学号,查找并输出指定学生的全部信息 管理模块1、开具学籍证明。通过输入学号,开具该学生的学籍证明保存到Apply.txt文件中,并在屏幕上输出;2、学生证预约登记。记录指定学生的学生证预约登记记录;3、奖惩信息录入。记录指定学生的奖惩信息记录;4、学生信息更新/修改。通过
7、学号更新/修改该学生的信息; 输出模块1、按学号排序后输出。按学号排序后输出到屏幕,并保存到PeoInfo.txt文件;2、按绩点高低排序输出。按绩点高低排序后输出到屏幕,并保存到PeoInfo.txt文件; 清除模块清除PeoInfo.txt文件中的全部信息 作者&版权信息模块显示作者及课设的相关信息七、比较有特色的函数 纯虚函数SearNumvirtual Info *SearNum(char *)=0; /按学号查找学生信息,纯虚函数 Creat函数void Student:creat() /创建链表Info *head;Info *p1,*p2;int n=0;char GoOn=Y;
8、p1=p2=new Info;InputOne(p1);people.write(char *)p1, sizeof(*p1); /二进制输出文件head=NULL;while(GoOn=Y|GoOn=y)n+;if(n=1) head=p1;else p2-next=p1;p2=p1; system(COLOR 1e);cout GoOn; cin.ignore();if(GoOn!=Y & GoOn!=y) /判断输入是否结束people.close(); break;p1=new Info;InputOne(p1); people.write(char *)p1, sizeof(*p1)
9、;p2-next=NULL;person=head;该函数通过指针和链表,动态存储学生信息,并保存到文件中 SearNum函数Info *Student:SearNum(char *a) /按学号查找学生信息system(COLOR 3d);Info *p;cout num,a)=0)ShowOne(p);return p;record=true;p=p-next;if(!record)cout 运算符重载函数bool Student:operator (const Info *right)if(person-mark right-mark)return true;else return fa
10、lse;该函数重载了运算符,便于直接比较两结构体所存储数据的绩点高低 ListNum函数void Student:ListNum() /按学号排序输出Info *p1,*p2,*temp,*now;int i=0;system(COLOR 3f);cout next;while(p2 & i+num,p1-num)0 & p1=person) /插入到头结点之前temp=p2;p2=temp-next; /在原链表中删除p2的信息person=temp;temp-next=p1; /p2插入到最前 if(strcmp(p2-num,p1-num)0)temp=p2;p2=temp-next;t
11、emp-next=p1;p1=temp;now=now-next;p1=now;p2=now-next;fstream listnum;listnum.open(PeoInfo.txt,ios:out | ios:binary); p1=person;while(p1)listnum.write(char *)p1, sizeof(*p1);p1=p1-next; listnum.close();ShowAll();运用链表和指针按学号大小排序全部学生信息八、存在的不足与对策 类对象中的信息存储问题描述:类对象中用数组存储所有学生的信息,显得较为复杂,不方便管理和操作。在数据的处理时造成一定的
12、麻烦。对策:类外部定义Info 结构体,在类内部用结构体+链表的方式存储学生的信息 文件写入的问题描述:用普通文件存储学生信息显得较为复杂,数据录入较为繁琐,不便于操作。对策:采用二进制文件的方式,整块录入结构体数据文件。方便、快捷。 链表排序问题描述:对链表的操作掌握的不够熟练,对创建好的链表进行排序时显得手足无措,不能善于利用指针。对策:参考相关书籍,请教老师等。 程序细节问题描述:由于首次进行比较大规模的程序设计,程序中的很多输入输出细节没有注意到,导致某些格式不统一。对策:小组成员轮流校对程序,发现问题并改进。九、程序源代码另附:1、程序单文件原始代码“学生学籍管理_单文件代码.cpp
13、”; 2、多文件组织后的“学生学籍管理_多文件组织”工程文件夹。/* 本程序应用了: 布尔类型 格式化输入输出 cin.getline() 引用作为函数参数函数重载 内存的动态分配二进制文件 结构体指针构造函数 析构函数静态数据成员 函数覆盖纯虚函数 抽象类 友元函数 运算符重载继承和多重继承 异常处理通过链表动态存储数据 多文件组织 等C+的特色功能*/#include using namespace std;#include#includestruct Info char num20; /学号char name8; /姓名char phone12; /电话char adres40; /住址
14、 float mark; /绩点 char other100; /奖惩信息char book; /学生证预约 Info *next;static int N; /记录信息的条数,静态变量class Stu /父类,公用类protected:Info *person;fstream people; /创建二进制文件public:Stu();virtual Info *SearNum(char *)=0; /按学号查找学生信息,纯虚函数bool operator(const Info *); /比较成绩高低,重载运算符 friend void InputOne(Info *p1); /友元函数vo
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+程序设计语言 C+ 程序设计语言 课程设计 报告 学生 学籍 管理 系统