《程序设计语言(C++)》课程设计
学生学籍管理系统
一、设计目的
1、进一步掌握利用 C++进行类的定义和操作方法;
2、进一步掌握类的继承和派生方法;
3、进一步理解虚函数和多态;
4、综合利用上述知识,学习设计并编写面向对象的 C++简单应用程序;
5、培养学生团结协作的能力。
二、环境配置要求:
硬件配置:586 以上 PC 兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小
于 64MB,硬盘自由空间不少于 200MB。推荐配置为内存 128MB 或 256MB(或以上),
硬盘自由空间 500MB 以上。
操作系统:Windows2000/NT/Xp、Visual C++集成开发环境。
三、设计题目
题目: 学生学籍管理系统
(一)、系统的主要功能
1.添加
系统将提示用户输入新添加的职员的信息,插入在链表中。
2.删除
首先由用户输入要删除的学生的学号,然后调用删除函数,删除该名学生
的资料。
3.查找
首先由用户输入要查找的学生的学号,然后系统用查找函数查找,然后系
统就调用输出函数,输出所查找的学生资料。
4.修改
首先由用户输入要修改的学生的学号,然后系统用修改函数查找,显示该
名学生的资料,然后系统提示用户输入需要修改的项目和新的资料。
5.其他功能
在上述功能的基础上进行进一步完善。
(二)、系统总框架图
(三)、系统数据结构定义
class listNode{//这是数据节点!
public:
listNode(){}
listNode(Inform &);
listNode(listNode &);
listNode *create();//创建链表
listNode *insert(listNode *);//对链表进行插入操作;
listNode *del(listNode *,char *);//删除资料中含有 char*的节点;
void printlistNode(listNode *);//打印链表;
~listNode();
void search(char *,listNode *);//查找链表中含有 char*的学生;
listNode *modify(listNode *);//修改
private:
Inform data;
static int num;
主要提示的
菜单界面
开 始
界 面
查 找
资 料
修 改
资 料
删 除
资 料
输 出
资料
插 入
资 料
listNode *nextPtr;
};
****************************Inform.h**************************
class Inform{
friend ostream &operator<<(ostream &,Inform &);
friend istream &operator>>(istream &,Inform &);
public:
Inform();
Inform(Inform &);
int operator==(const Inform &);
int operator==(char *);
int operator!=(char *);
Inform &operator=(Inform &);
~Inform();
private:
char *number;
char *id;
char *name;
char *sex;
achieve ach;
char *phonenumber;
char *roomnumber;
};
************************achieve.h********************************************c
class achieve{
friend ostream &operator<<(ostream &output,achieve &);
friend istream &operator>>(istream &input,achieve &);
public:
achieve();
void countaverage(subject *);
int operator==(achieve &);
achieve &operator=(achieve &);
void instruction();
~achieve();
void setnum(int a);
int getnum();
subject *TT;
private:
int num;
float sum;
float average;
};
*******************************subject.h*************************************
class subject{
friend istream &operator>>(istream &,subject &);
friend ostream &operator<<(ostream &,const subject &);
public:
subject &operator=(const subject &);
char name[MAX1];
float achievement;
float xuefen;
};
学生学籍管理系统
//程序源代码
*****************************listNode.h**************************************
#ifndef listNode_h
#define listNode_h
#define LEN sizeof(listNode)
#include<iostream.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
#include<stdio.h>
#include"Inform.h"
#define MAX2 4
class listNode{
public:
listNode(){}
listNode(Inform &);
listNode(listNode &);
listNode *create();
listNode *insert(listNode *);//对链表进行插入操作;
listNode *del(listNode *,char *);//删除资料中含有 char*的节点;
void printlistNode(listNode *);//打印链表;
~listNode();
void search(char *,listNode *);//查找链表中含有 char*的学生;
listNode *modify(listNode *);
private:
Inform data;
static int num;
listNode *nextPtr;
};
#endif
*********************listNode.cpp*********************************
#include"listNode.h"
int listNode::num=0;
listNode::listNode(Inform &da)
{
data=da;
nextPtr=new listNode[LEN];
}
listNode::listNode(listNode ©) //拷贝构造函数。
{
data=copy.data;
nextPtr=new listNode[LEN];
assert(nextPtr!=0);
nextPtr=copy.nextPtr;
}
listNode *listNode::create() //从文件 f3.txt 中读入链表数据;
{
listNode *head=NULL;
listNode *p1,*p2;
p1=p2=new listNode[LEN];
char ch;
cout<<"\t 输入第一个学生的情况:"<<endl;
do
{
cin>>p1->data;
num=num+1;
if(num==1)
head=p1;
else
p2->nextPtr=p1;
p2=p1;
p1=new listNode[LEN];
cout<<"\t 要继续输入吗?(y/n): ";
cin>>ch;
}while(ch=='y');