c++课程设计:教务管理系统源代码

时间:2019-05-12 20:39:23下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《c++课程设计:教务管理系统源代码》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《c++课程设计:教务管理系统源代码》。

第一篇:c++课程设计:教务管理系统源代码

#include #include using namespace std;class Person { public: Person(string n):name(n){} virtual void show(){} ~Person(){} protected:

string name;};class Student:public Person { public:

Student(string n,int num,string ss):Person(n),number(num),address(add),str1(ss){}

virtual void show();

void input_stu();

void display_stu();

void display_qu();

~Student(){} protected:

string str1;

int number;

string address;};void Student::show(){ cout<<“向老师提出的问题是:”;cin>>str1;}

void Student::display_qu(){ cout<

void Student::input_stu(){ cin>>Student::name;cin>>Student::number;cin>>Student::address;} void Student::display_stu(){

add,string cout<<“姓名:”<

Teacher(string n,string sub,string sdf):Person(n),subject(sub),str2(sdf){}

virtual void show();

void input_t();

void display_t();

void display_an();

~Teacher(){} protected:

string subject;

string str2;};void Teacher::display_an(){ cout<

void Teacher::show(){ cout<<“我的回答是:”;cin>>str2;} void Teacher::input_t(){ cin>>Teacher::name;cin>>Teacher::subject;} void Teacher::display_t(){ cout<<“姓名:”<

Admin(string n,int tel,string ssfs):Person(n),telphone(tel),str3(ssfs){}

virtual void show();

void input_ad();

void display_ad();

void display_gg();

~Admin(){} protected:

int telphone;

string str3;};void Admin::display_gg(){ cout<<“公告:”;cout<

void Admin::show(){

cout<<“公告是:”;cin>>str3;} void Admin::input_ad(){ cin>>Admin::name;cin>>Admin::telphone;} void Admin::display_ad(){ cout<<“姓名是:”<

int main(){ int z,h,m;z=0;h=0;m=0;

Student stu(“guochun”,20150311,“qlu”,“sdss”);

Teacher tea(“cuiyu”,“math”,“dsdf”);

Admin ad(“steve jobs”,178641,“sdfs”);

while(1)

{

int x;

cout<<“*******************”<

cout<<“1.学生”<

cout<<“2.教师”<

cout<<“3.管理员”<

cout<<“*******************”<

cout<<“选择你的身份”<

cin>>x;

if(x<=0||x>3)

cout<<“输入错误!”<

else

{

switch(x)

{

case 1:

cout<<“请选择你要干什么”<>y;if(y<=0||y>3)cout<<“发生错误!”;else { switch(y){

case 1:stu.display_stu();break;

case 2:stu.input_stu();

} cout<<“修改后的个人信息为:”<

{

stu.Student::show();

z=1;} break;

}

break;

case 2:

cout<<“请选择你要干什么”<

cout<<“学生有问题提问”<

ad.display_gg();} cout<<“___________________”<>q;if(q<=0||q>3)

cout<<“发生错误!”;else {

switch(q)

{

case 1:tea.display_t();break;

case 2:tea.input_t();

cout<<“修改后的个人信息为:”<

tea.display_t();break;

case 3:

{

if(z==1)

{

cout<<“学生的问题是:”;

stu.display_qu();

tea.Teacher::show();

h=1;

}

}

break;

}

}

break;

case 3:

cout<<“请选择你要干什么”<

cout<<“___________________”<

cout<<“1.显示个人信息”<>l;if(l<=0||l>3)

cout<<“发生错误!”;

else

{

switch(l)

{

case 1:ad.display_ad();break;

case 2:ad.input_ad();

cout<<“修改后的个人信息为:”<

ad.display_ad();break;

case 3:

{

ad.Admin::show();

m=1;

}

break;

}

}

break;

}

}

}

return 0;}

第二篇:C++课程设计(教务管理系统)

#include using namespace std;#include #include #include #include #include #include“01.h” class University;

void menu(University uni);//菜单函数声明

class Student//学生类 { public: string name;int age;string sex;int number;string major;

public: void disp_stu();

friend void file_in(University &uni);

friend void file_out(University uni);};void Student::disp_stu(){

}

class Institute//学院类 { public: string name;cout<<“学生姓名:”< head;//封装学生信息

public: void add_stu();

//添加学生

bool delete_stu(int i);

// 删除学生

bool modefy_stu(int i);

//修改学生信息

void disp_ins_1();

// 显示本院学生信息

friend void file_in(University &uni);

friend void file_out(University uni);};void Institute::add_stu(){

} Student *p=new Student;cout<<“学生名字:”;cin>>(*p).name;cout<<“学生年龄:”;cin>>(*p).age;cout<<“学生性别:”;cin>>(*p).sex;cout<<“学生学号:”;cin>>(*p).number;cout<<“学生专业:”;cin>>(*p).major;head.Add(p);//在链表末尾增加一个节点

bool Institute::delete_stu(int i){

} head.Remove(i);//删除链表指定位置节点 return true;bool Institute::modefy_stu(int i){

Student *p=new Student;cout<<“学生名字:”;cin>>(*p).name;cout<<“学生年龄:”;cin>>(*p).age;cout<<“学生性别:”;cin>>(*p).sex;cout<<“学生学号:”;cin>>(*p).number;cout<<“学生专业:”;cin>>(*p).major;head.Remove(i);//删除链表指定位置节点 head.Insert(i,p);//在链表指定位置插入一个新节点

return true;} void Institute::disp_ins_1(){

}

class University//学校类 { public: string name;int age;string addr;List head;//封装学院信息 public:

void design_stu();//学生信息设置 int i;Node *q;q=head.pHead;//q指向学生节点双向链表头指针

cout<<“学院名字:”<

} cout<<“-------”<pData->disp_stu();q=q->pNext;

void add_ins();

//添加学院

bool delete_ins(int n);

// 删除学院

void design_cqut();

//设置学校信息 bool modefy_cqut();

//修改学校信息 void disp_cqut();

//显示学校信息 void design_ins();

//学院信息设置 bool modefy_ins(int n);

//修改学院 void disp_ins();

//显示学院信息

void search_menu();void search_name(string n);//姓名

void search(string n);//性别//函数重载

void search(int n);//学号

bool search_age(int n);//年龄

friend void file_in(University &uni);};friend void file_out(University uni);

void University::design_stu(){

int i,m,j;int n;cout<<“

★★★★★★学生信息设置★★★★★★

”<>i;system(“cls”);//清屏 switch(i){ case 1:

{

disp_ins();

cout<

cout<<“输入学生所在学院序号:”<

cin>>m;system(“cls”);//清屏

head.pCurrent=head.pHead;//当前指针指向双向链表头指针

for(j=1;j

{

}

} head.pCurrent=head.pCurrent->pNext;//当前指针指后移

cout<<“输入要添加的学生信息:”;head.pCurrent->pData->add_stu();cout<<“按任意键返回上一级菜单:”<

disp_ins();

cout<

cout<<“输入学生所在学院序号:”<

cin>>m;system(“cls”);//清屏

head.pCurrent=head.pHead;//当前指针指向双向链表头指针

for(j=1;j

{

head.pCurrent=head.pCurrent->pNext;//当前指针指后移

} } head.pCurrent->pData->disp_ins_1();cout<>n;head.pCurrent->pData->delete_stu(n);cout<<“按任意键返回上一级菜单:”<

{

disp_ins();

cout<

cout<<“输入学生所在学院序号:”<

cin>>m;system(“cls”);//清屏

head.pCurrent=head.pHead;//当前指针指向双向链表头指针

for(j=1;j

{

}

}

head.pCurrent=head.pCurrent->pNext;//当前指针指后移

head.pCurrent->pData->disp_ins_1();cout<

} cin>>n;head.pCurrent->pData->modefy_stu(n);cout<<“按任意键返回上一级菜单:”<

void University::add_ins(){

}

bool University::delete_ins(int n){

}

bool University::modefy_ins(int n){

Institute *p=new Institute;cout<<“学院名字:”;cin>>(*p).name;head.Remove(n);//删除链表指定位置节点 head.Insert(n,p);//在指定位置插入节点信息 return true;head.Remove(n);//删除链表指定位置节点 return true;Institute *p=new Institute;cout<<“学院名字:”;cin>>(*p).name;head.Add(p);//在链表末尾增加一个节点

}

void University::disp_ins(){

int i;Node *q;q=head.pHead;//q指向学院节点双向链表头指针

for(i=1;i<=head.size;i++){

cout<pData->name<pData->head.size<

}

void University::design_ins(){

int i;int j;cout<<“

★★★★★★学院信息设置★★★★★★

”<pNext;

cout<>i;system(“cls”);//清屏 switch(i){ case 1:

{

} disp_ins();cout<<“按任意键返回上一级菜单:”<

disp_ins();

add_ins();

cout<<“按任意键返回上一级菜单:”<

getch();system(“cls”);//清屏 design_ins();

break;} case 3: {

} disp_ins();cout<<“输入删除学院序号:”;cin>>j;delete_ins(j);cout<<“按任意键返回上一级菜单:”<

disp_ins();cout<<“输入修改学院序号:”;cin>>j;modefy_ins(j);cout<<“按任意键返回上一级菜单:”<

} case 5:menu(*this);break;} }

bool University::modefy_cqut(){ cout<<“学校名字:”;cin>>name;cout<<“创建年代:”;cin>>age;cout<<“学校地址:”;cin>>addr;return true;}

void University::design_cqut(){ int i;

University uni;cout<<“

★★★★★★学校信息设置★★★★★★ cout<>i;system(”cls“);//清屏

switch(i){

case 1:

{

disp_cqut();

cout<<”按任意键返回上一级菜单:“<

getch();system(”cls“);//清屏

design_cqut();

break;

}

case 2:

{

modefy_cqut();

cout<<”按任意键返回上一级菜单:“<

getch();system(”cls“);//清屏

design_cqut();break;”<

}

} } case 3:menu(uni);break;

void University::disp_cqut(){

cout<<“学校有关信息为:”<

}

void University::search_name(string n){

int i,j,m=0;head.pCurrent=head.pHead;//当前指针指向学院节点头指针 for(i=0;ipData->head.pCurrent=head.pCurrent->pData->head.pHead;//当前指cout<<“学校名字:”<

for(j=0;jpData->head.size;j++)

{

if(n==head.pCurrent->pData->head.pCurrent->pData->name)

{

} head.pCurrent->pData->head.pCurrent->pData->disp_stu();m++;head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;//学生当前指针后移

}

bool University::search_age(int n){

int i,j,m=0;head.pCurrent=head.pHead;for(i=0;ipNext;//学院当前指针后移

} cout<<“有”<

}

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead;for(j=0;jpData->head.size;j++){ if(n==(head.pCurrent->pData->head.pCurrent->pData->age)){

} head.pCurrent->pData->head.pCurrent->pData->disp_stu();m++;head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;} head.pCurrent=head.pCurrent->pNext;} cout<<“有”<

void University::search(string n){

} int i,j,m=0;head.pCurrent=head.pHead;for(i=0;ipData->head.pCurrent=head.pCurrent->pData->head.pHead;

for(j=0;jpData->head.size;j++){

if(n==head.pCurrent->pData->head.pCurrent->pData->sex){ head.pCurrent->pData->head.pCurrent->pData->disp_stu();} m++;

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;

} cout<<“有”<pNext;void University::search(int n){

int i,j,m=0;head.pCurrent=head.pHead;for(i=0;i

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead;

for(j=0;jpData->head.size;j++)

{

if(n==head.pCurrent->pData->head.pCurrent->pData->number)

{

head.pCurrent->pData->head.pCurrent->pData->disp_stu();

m++;

}

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;

}

head.pCurrent=head.pCurrent->pNext;} cout<<“有”<

/****************************************信息查询菜***********************************************/

void University::search_menu(){ int i;cout<<“

★★★★★信息查询显示★★★★★”<>i;system(“cls”);//清屏

switch(i){ case 1: {

disp_ins();

cout<<“按任意键返回上一级菜单:”<design_ins();break;} case 2:

{

} head.pCurrent=head.pHead;//当前指针指向学院节点头指针 for(i=0;i

} head.pCurrent->pData->disp_ins_1();head.pCurrent=head.pCurrent->pNext;cout<<“按任意键返回上一级菜单:”<search_menu();break;case 3: {

} int j;disp_ins();cout<<“请输入学生所在学院序号:”;cin>>i;system(“cls”);//清屏 head.pCurrent=head.pHead;for(j=1;jpNext;head.pCurrent->pData->disp_ins_1();cout<<“按任意键返回上一级菜单:”<search_menu();break;

case 4:

{

string n;cout<<“输入要查询的姓名:”;cin>>n;system(“cls”);//清屏 search_name(n);

} cout<<“按任意键返回上一级菜单:”<search_menu();break;case 5:

{

} int n1;cout<<“输入要查询的年龄:”;cin>>n1;search_age(n1);cout<<“按任意键返回上一级菜单:”<search_menu();break;

system(“cls”);//清屏

case 6: {

} string n;cout<<“输入要查询的性别:”;cin>>n;system(“cls”);//清屏 search(n);cout<<“按任意键返回上一级菜单:”<search_menu();break;case 7: {

} int n;cout<<“输入要查询的学号:”;cin>>n;system(“cls”);//清屏 search(n);cout<<“按任意键返回上一级菜单:”<search_menu();break;case 8: {

menu(*this);

}

} } break;/**********************************************************************/ {

int i,j;ifstream inf(“cqutData.txt”,ios::in);inf>>uni.name;inf>>uni.age;inf>>uni.addr;inf>>uni.head.size;//学院个数 for(i=0;i>p->name;

导出文件数据void file_in(University &uni)

Node *m=new Node;//建立学院信息节点 m->pData=p;//把输入的学院信息节点赋给建立的学院信息节点 m->pNext=0;if(i==0)uni.head.pHead=m;//把节点m赋给学院信息节点

else uni.head.pEnd->pNext=m;//把节点m赋给下一个学院信息节点 m->pPrev=uni.head.pEnd;//节点m指向学院信息的尾节点

uni.head.pCurrent=uni.head.pEnd=m;//学院信息的尾节点始终指向m节点 inf>>uni.head.pCurrent->pData->head.size;//学生个数 for(j=0;jpData->head.size;j++){

Student *q=new Student;inf>>q->name;inf>>q->age;inf>>q->sex;inf>>q->number;inf>>q->major;

Node *n=new Node;n->pData=q;n->pNext=0;if(j==0)uni.head.pCurrent->pData->head.pHead=n;else uni.head.pCurrent->pData->head.pEnd->pNext=n;

n->pPrev=uni.head.pCurrent->pData->head.pEnd;

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pEnd=n;//学生信息的尾节点始终指向n节点

} } }

/************************************************************************************/ void file_out(University uni){

ofstream ouf(“cqutData.txt”,ios::out);int i,j;ouf<

导入文件数据ouf<

uni.head.pCurrent=uni.head.pHead;//当前指针指向学院节点头指针 for(i=0;i

ouf<pData->name<

ouf<pData->head.size<

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pHead;//当前指针指向学生节点头指针

for(j=0;jpData->head.size;j++){

ouf<pData->head.pCurrent->pData->name<pData->head.pCurrent->pData->age<pData->head.pCurrent->pData->sex<pData->head.pCurrent->pData->number<pData->head.pCurrent->pData->major<

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pCurrent->pNext;//学生当前指针后移

}

} } uni.head.pCurrent=uni.head.pCurrent->pNext;//学院当前指针后移

/************************退出系统菜单****************************/

void exit(University uni){

} int i;cout<<“是否保存修改内容:”<>i;system(“cls”);//清屏 switch(i){ case 1:

{

} file_out(uni);exit(0);break;case 2:{exit(0);break;} case 3:

{ menu(uni);break;} case 4:

{

file_out(uni);

}

} menu(uni);break;

/***************************************************************************************/ void menu(University uni){

system(“cls”);/*清屏*/ int i;cout<

主菜单 cout<<“★★★★★★★★★★★★★主菜单★★★★★★★★★★★★★”<

cout<

cout<

cout<>i;system(“cls”);//清屏

}

int main(){ University u;

} file_in(u);menu(u);return 0;switch(i){

case 1:uni.design_cqut();break;case 2:uni.design_ins();break;case 3:uni.design_stu();break;

case 4:uni.search_menu();break;

case 5:exit(uni);break;}

第三篇:C++课程设计 教职工信息管理系统源代码

教职工信息管理系统源码

#include #include #include #include

#define maxsize 100 fstream iofile;//文件指针

class Time //时间类 {

public:

int year;

int month;

int day;};

class Telem //个人信息 {

public:

char name[20];

char sex[10];

Time birthtime;//组合Time类

char num[20];

char wage[20];

Time worktime;

int year;

char department[20];

friend istream& operator>>(istream& input,Telem& T);

friend ostream& operator<<(ostream& output,Telem& T);

friend int operator-(Time & t1,Time & t2);};

class People:virtual public Telem //雇员类 {

public:

People();

virtual void AddF()=0;//添加

virtual void Addall()=0;

virtual void Add()=0;

virtual void Display();//输出数组的内容

virtual void Displaypart(char p[]);

virtual void Findname(char n[]);

virtual void Findyear(int);

virtual void Del(char n[])=0;

virtual void Del(int);protected:

Telem data[maxsize];

Time now;

int length;};

class Teacher:virtual public People //派生虚基类 {

public:

virtual void AddF();

virtual void Addall();

virtual void Add();

virtual void Display();

virtual void Del(int i);

virtual void Del(char n[]);};

class worker:virtual public People //派生虚基类 {

public:

virtual void AddF();

virtual void Addall();

virtual void Add();

virtual void Display();

virtual void Del(int i);

virtual void Del(char n[]);};

People::People()//系统自动生成的构造函数 {

length=0;

now.year=2010;

now.month=7;

now.day=6;}

void People::Display()//引用 {

int i;

for(i=0;i

cout<

void People::Displaypart(char p[])//引用数组

{

int i,c;

for(i=0;i

if(strcmp(data[i].wage,p)==0)

{

cout<<“输出选择姓名1 性别2 编号3 工资4 出生日期5 工作时间6 年龄7 系别8 退出选择9”<

while(cin>>c)

{

switch(c)

{

case 1: cout<<“姓名:”<

case 2: cout<<“性别:”<

case 3: cout<<“编号:”<

case 4: cout<<“工资:”<

case 5: cout<<“出生日期:”<

case 6: cout<<“工作时间:”<

case 7: cout<<“年龄:”<

case 8: cout<<“系别:”<

case 9: goto loop;

default:cout<<“操作错误......”<

}

}

loop:;

} }

void People::Findname(char n[])//引用 {

int i;

for(i=0;i

if(strcmp(data[i].name,n)==0)//对象引用

cout<

void People::Findyear(int y){

int i;

for(i=0;i

if(data[i].year==y)

cout<

void People::Del(int i){

int j;

if(i<1||i>length)

cout<<“不存在第”<

for(j=i;j

data[j-1]=data[j];

length--;}

void worker::AddF(){

int flag=0;

iofile.open(“worker_information.txt”,ios::in|ios::binary);//文件的打开与关闭

while(iofile.seekg(ios::cur))

{

iofile.seekg(length*sizeof(data[length]),ios::beg);

iofile.read((char*)&data[length],sizeof(data[length]));//文件的随机访问

length++;

if(length==maxsize)

{

flag=1;

goto loop;

}

}

People::Del(length);

cout<<“添加人员信息成功......”<

loop:

if(1==flag)

cout<<“人员信息储存空间已满......”<

iofile.close();}

void worker::Addall(){

char ans;

int flag=0;

iofile.open(“worker_information.txt”,ios::out|ios::binary);

do

{

cin>>data[length];

data[length].year=now-data[length].birthtime;

iofile.write((char*)&data[length],sizeof(data[length]));

cout<<“添加人员信息成功......”<

length++;

if(length==maxsize)

{

flag=1;

goto loop;

}

cout<<“contine(Y|N)?”;

cin>>ans;

}while('y'==ans||'Y'==ans);loop:

if(1==flag)

cout<<“人员信息储存空间已满......”<

iofile.close();}

void worker::Add(){

int flag=0;

iofile.open(“worker_information.txt”,ios::app|ios::out|ios::binary);

if(length==maxsize)

{

flag=1;

goto loop;

}

cin>>data[length];

data[length].year=now-data[length].birthtime;

iofile.write((char*)&data[length],sizeof(data[length]));

cout<<“添加人员信息成功......”<

length++;

loop:

if(1==flag)

cout<<“人员信息储存空间已满......”<

iofile.close();}

void worker::Display(){

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆工人信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”<

if(0==length)

cout<<“无......”<

int i;

for(i=0;i

cout<

int i,j,k;

for(i=0;i

if(strcmp(data[i].name,n)==0){

k=i+1;break;}

if(k<1)

cout<<“不存在姓名”<

for(j=k;j

data[j-1]=data[j];

length--;

cout<<“删除人员信息成功......”<

void worker::Del(int i){

int j;

if(i<1||i>length)

cout<<“不存在第”<

for(j=i;j

data[j-1]=data[j];

length--;

cout<<“删除成功......”<

}

void Teacher::AddF(){

int flag=0;

iofile.open(“Teacher_information.txt”,ios::in|ios::binary);

while(iofile.seekg(sizeof(data[length]),ios::cur))

{

if(iofile.seekg(length*sizeof(data[length]),ios::beg))

iofile.read((char*)&data[length],sizeof(data[length]));

else

break;

length++;

if(length==maxsize)

{

flag=1;

goto loop;

}

}

People::Del(length);

cout<<“添加人员信息成功......”<

if(1==flag)

cout<<“人员信息储存空间已满......”<

iofile.close();}

void Teacher::Addall(){

char ans;

int flag=0;

iofile.open(“Teacher_information.txt”,ios::in|ios::out|ios::binary);

do

{

cin>>data[length];

data[length].year=now-data[length].birthtime;

iofile.write((char*)&data[length],sizeof(data[length]));

cout<<“添加人员信息成功......”<

length++;

if(length==maxsize)

{

flag=1;

goto loop;

}

cout<<“contine(Y|N)?”;

cin>>ans;

}while('y'==ans||'Y'==ans);loop:

if(1==flag)

cout<<“人员信息储存空间已满......”<

iofile.close();}

void Teacher::Add(){

int flag=0;

iofile.open(“Teacher_information.txt”,ios::app|ios::out|ios::binary);

if(length==maxsize)

{

flag=1;

goto loop;

}

cin>>data[length];

data[length].year=now-data[length].birthtime;

iofile.write((char*)&data[length],sizeof(data[length]));

cout<<“添加人员信息成功......”<

length++;loop:

if(1==flag)

cout<<“人员信息储存空间已满......”<

iofile.close();}

void Teacher::Display(){

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆教师信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”<

if(0==length)

cout<<“无......”<

int i;

for(i=0;i

cout<

void Teacher::Del(char n[]){

int i,j,k;

for(i=0;i

if(strcmp(data[i].name,n)==0)

{

k=i+1;break;

}

if(k<1)cout<<“不存在姓名”<

for(j=k;j

data[j-1]=data[j];

length--;

cout<<“删除人员信息成功......”<

void Teacher::Del(int i){

int j;

if(i<1||i>length)

cout<<“不存在第”<

for(j=i;j

data[j-1]=data[j];

length--;

cout<<“删除成功......”<

istream& operator>>(istream& input,Telem& T){

int y,m,d;

cout<<“请输入姓名(以*结尾):”<

input.getline(T.name,20,'*');

cout<<“请输入性别(以*结尾 男或女):”<

input.getline(T.sex,10,'*');

cout<<“编号(以*结尾):”<

input.getline(T.num,20,'*');

cout<<“工资(以*结尾):”<

input.getline(T.wage,20,'*');

cout<<“请输入出生日期:”<

input>>y>>m>>d;

T.birthtime.year=(y>=1900&&y<=2100)?y:1900;

T.birthtime.month=(m>=1&&m<=12)?m:1;

T.birthtime.day=(d>=1&&d<=31)?d:1;

cout<<“请输入系别(以*结尾):”<

input.getline(T.department,20,'*');

cout<<“参加工作时间:”<

input>>y>>m>>d;

T.worktime.year=(y>=1900&&y<=2100)?y:1900;

T.worktime.month=(m>=1&&m<=12)?m:1;

T.worktime.day=(d>=1&&d<=31)?d:1;

return input;}

ostream& operator<<(ostream& output,Telem& T){

cout<<“姓名:”;

output<

cout<<“性别:”;

output<

cout<<“编号:”;

output<

cout<<“工资:”;

output<

cout<<“出生日期:”;

output<

cout<<“系别:”;

output<

cout<<“参加工作时间:”;

output<

cout<<“年龄:”;

output<

return output;}

int operator-(Time & t1,Time & t2){

return t1.year-t2.year;}

void Showmenu(){

cout<

cout<<“

欢 迎 进 入 教 职 工 信 息 管 理 系 统”<

cout<<“

2010 年7月7日发布”<<“

版权所有: swa”<

cout<<“

★ ☆ ★ ☆ ★ ☆ ★ ☆ ★人员信息管理系统★ ☆ ★ ☆ ★ ☆ ★ ☆ ★”<

cout<<“

1-从键盘录入全部人员记录

☆ ”<

cout<<“

☆ 2-增加一位人员记录

★”<

cout<<“

3-显示全部人员记录

☆”<

cout<<“

☆ 4-按系别输出人员信息(可选)★ ”<

cout<<“

5-按姓名或年龄检索所有信息☆ ”<

cout<<“

☆ 6-显示菜单目录

★ ”<

cout<<“

7-结束程序运行

☆ ”<

cout<<“

★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”<

int main(){

Teacher tea;

worker stu;

People *pt=&tea;

People *ps=&stu;

int c=0,k=0,l=0,i=0;

char nam[20],part[20];Showmenu();

for(;;)

{

cout<<“请根据菜单执行相应操作: ”;

cin>>c;

switch(c)

{

case 1:

{

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★录入全部人员记录 ★ ☆ ★ ☆ ★ ☆ ★”<

cout<<“ ★ ☆ ★ ☆ ★从键盘输入教师信息 ☆ ★ ☆ ★ ☆”<

pt->Addall();

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆从键盘输入工人信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”<

ps->Addall();

break;

}

case 2:

{

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆从键盘增加一位人员记录 ★ ☆ ★ ☆ ★ ☆ ★ ☆”<

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆教师操作请按1 工人操作请按2 ★ ☆ ★ ☆ ★ ☆ ★ ☆”<

cin>>k;

if(1==k)

pt->Add();

else if(2==k)

ps->Add();

else

cout<<“操作错误...”<

break;

}

case 3:

{

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆显示全部人员记录 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”<

pt->Display();

ps->Display();

break;

}

case 4:

{

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆按部门输出人员信息(可选)★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”<

cout<<“ ★ ☆ ★ ☆ ★ ☆教师操作请按1 工人操作请按2 ★ ☆ ★ ☆ ★ ☆”<

cin>>k;

if(1==k)

{

cout<<“请输入要输出人员的系别(以*结尾):”<

pt->Displaypart(part);

}

else if(2==k)

{

cout<<“请输入要输出人员的系别(以*结尾):”<

ps->Displaypart(part);

}

else

cout<<“操作错误......”<

break;

}

case 5:

{

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★按姓名或年龄检索所有信息 ★ ☆ ★ ☆ ★ ☆ ★”<

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★按姓名查找1 按年龄查找2 ★ ☆ ★ ☆ ★ ☆ ★”<

cin>>k;

if(1==k)

{

cout<<“按姓名查找1 按年龄查找2”<>l;

if(1==l)

{

cout<<“请输入要查找人员的姓名(以*结尾):”<

pt->Findname(nam);

}

else if(2==l)

{

cout<<“请输入要查找人的年龄:”<>i;

pt->Findyear(i);

}

else

cout<<“操作错误......”<

}

else if(2==k)

{

cout<<“按姓名查找1 按年龄查找2”<>l;

if(1==l)

{

cout<<“请输入要查找人员的姓名(以*结尾):”<

ps->Findname(nam);

}

else if(2==l)

{

cout<<“请输入要查找人的年龄:”<>i;

ps->Findyear(i);

}

else

cout<<“操作错误......”<

}

else

cout<<“操作错误......”<

break;

}

case 6:

{

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆显示菜单目录 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”<

Showmenu();

break;

}

case 7:

{

cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆结束程序运行 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”<

exit(0);

}

default:cout<<“操作错误......”<

}

}

return 0;}

第四篇:航空售票系统+C++课程设计源代码

#include #include #define M 5//每种飞机票的总数目 #define N 3//飞机票的总数目 class Plane {private: char name[40];//终点站名

int number;//航班号

int Number;//飞机号

int week;//星期几飞行

int day;//日期

int left;//余票额

int n;//与数组flag一起确定客户订票状态 public:

int flag[20];//订票状态数组,-1为预订票,1为已定票,0为初始化状态

Plane()//构造函数

{

name[0]='';

number=0;

Number=0;

week=0;

day=0;

left=M;

n=0;//数组从0开始计数

for(int i=0;i<20;i++)

flag[i]=0;} void init()//初始化每种飞机票

{

cout<<“请输入终点站名:”;

cin>>name;

cout<<“请输入航班号:”;

cin>>number;

cout<<“请输入飞机号:”;

cin>>Number;

cout<<“请输入星期几飞行:”;

cin>>week;

cout<<“请输入航班的日期:”;

cin>>day;} ~Plane(){};//析构函数 char *getname(){return name;}//获得终点站名

int getnumber(){return number;}//获得航班号

int getNumber(){return Number;}//获得飞机号

int getweek(){return week;}//获得星期几飞行

int getday(){return day;}//获得日期

int getleft(){return left;}//获得余票额

int getn(){return n;}//获得旅客数目

void inleft(int n){left=left+n;}//余票额增加函数

void deleft(int n){left=left-n;}//余票额减少函数

void inn(){n++;}//旅客数目增加函数 };Plane pl[N];int showmenu();//菜单函数 void start();//初始化函数 void query();//查询函数 void make();//订票函数 void back();//退票函数 int main(){ cout<<“这是民航售票处的计算机系统程序”<

int choice;

choice=showmenu();

switch(choice)

{

case 1:query();break;

case 2:make();break;

case 3:back();break;

case 0:return 0;

default:cout<<“你敲错了!n”;

} } return 0;} int showmenu(){ int ch;cout<>ch;return ch;} void start(){ for(int i=0;i

pl[i].init();

cout<>name;for(i=0;i<=N;i++)

if(strcmp(name,pl[i].getname())==0)

{

num++;

cout<<“航班号:”<

cout<<“飞机号:”<

cout<<“星期:”<

cout<<“航班日期:”<

cout<<“余票额:”<

break;

}

if(num==0)

cout<<“没有此航班”<>number;cout<<“请输入订票数额:”;cin>>n;for(int i=0;i

if(number==pl[i].getnumber())

{

num++;

if(n<=pl[i].getleft())

{

cout<<“此航班有票”<

pl[i].deleft(n);

pl[i].inn();

pl[i].flag[pl[i].getn()]=1;

for(i=0;i

{

cout<<“座位号”;

cin>>sitnumber;

}

}

else

{

cout<<“余票额少于订票额,请重新输入订票数额,”<<“订票数额应该少于或等于”<

cin>>nu;

if(nu<=pl[i].getleft())

{

cout<<“此航班有票”<

pl[i].deleft(nu);

pl[i].inn();

pl[i].flag[pl[i].getn()]=1;

for(i=0;i

{

cout<<“座位号”;

cin>>sitnumber;

}

}

else

{

cout<<“是否需要预约”<

cout<<“是(1)

否(2)”<

cin>>ch;

switch(ch)

{

case 1:pl[i].inn();pl[i].flag[pl[i].getn()]=-1;break;

case 2:break;

default:cout<<“你敲错了!”<

}

}

}

}

if(num==0)

cout<<“没有此航班”<

cout<<“请输入日期:”;cin>>day;cout<<“请输入航班:”;cin>>number;for(int i=0;i

if((day==pl[i].getday())&&(number==pl[i].getnumber()))//日期与航班是否满足

{

num++;//日期与航班满足

cout<<“输入退票数目”;

cin>>n;

cout<<“退票成功”<

pl[i].inleft(n);//该种飞机票增加,即已退票

for(int j=0;j<=pl[i].getn();j++)//顺序查询客户订票状态

{

if(pl[i].flag[j]==-1)//客户是否为预定状态

{

cout<<“有预约订票,请输入订票数额:”;

cin>>nu;

if(nu<=pl[i].getleft())//余票额是否满足要求

{

cout<<“此航班有票”<

pl[i].flag[j]=1;

cout<<“订票成功”<

pl[i].deleft(nu);

for(int k=0;k

{

}

cout<<“座位号”<<“ ”;

cin>>sitnumber;

}

cout<<“余票额为”<

}

}

else

cout<<“没有预约订票!”<<“余票额为”<

第五篇:C++课程设计(简单图书管理系统)

课 程 设 计

课程名称

C++课程设计 题目名称

图书管理系统

2016 年月 29 日

目录

一.设计内容与要求...............................................................................................................2 二.设计思路:.......................................................................................................................4 三.关键模块实现及主要代码...............................................................................................4 四.实验结果及分析.............................................................................................................13

五、心得体会.........................................................................................................................16

六、参考文献.........................................................................................................................17

一.设计内容与要求

(1)、设计一个图书管理系统,能够实现用户信息管理,图书信息的 录入、查询、删除等功能。

(2)、实现用户管理,系统具有用户注册功能。管理员的账号和密码由系统指定,登录后可进行修改。一般用户注册后才能登录使用系统。管理员具有录入、查询、删除图书信息及一般用户的功能。一般用户只有图书查询功能。

(3)、登录功能,只有注册了的用户才能进入系统,没有注册的则有提示信息出现。

(4)、图书管理功能,管理员能够录入、查询、删除图书信息。(5)、图书查询功能,管理员及一般用户能够通过图书的基本信息,如图书作者、书名、出版社、出版日期等等,进行查询。

提示:上述为基本功能,可参考实际的系统进行扩展。

二.设计思路:

为了实现用户信息以及图书信息的管理,建立一个用户CUser类与图书信息CBoodata类,其中CUser类应该包含用户账号以及密码,CBookdata类应该包含图书作者,书名,出版社,出版日期。同时应该建立两个dat文件,一个为存储用户信息,一个用来储存图书信息。程序主要分为4个页面:(1)登录页面,由Cdialog类派生出CMyprojectDlg类,用来处理账号注册与用户登录。

(2)图书查询页面。由Cdialog类派生出CSearch类。包含读取所有图书数据响应函数,以及根据作者姓名或者书名来查询图书响应函数。

(3)管理员图书管理页面。由Cdialog类派生出CBookdata类。包含读取所有图书响应函数,添加图书响应函数,修改图书响应函数,删除图书响应函数。(4)用户信息管理页面,由Cdialog类派生出CUserdata类。包含读取所有用户信息响应函数,删除用户响应函数、添加用户响应函数、修改用户信息响应函数。

因为本人能力有限,而且自己是根据老师给的教程以及结合书本内容来完成课程设计,于是我第一想到的就是应数组来存储信息,而不是用链表,所以,对于文件数据的删除与修改,难免会过于乏力。

三.关键模块实现及主要代码

(1)自己建立的类 1.用户类: class CUser { public: int num;char password[20];};

2.图书信息类:

class Book

//图书类 { public:

char author[10];

//设置作者姓名

char bname[20];

//设置图书书名

char pub_name[20];

//设置出版社名称

int pub_date;

//设置出版年月 };

(2)登录页面,由Cdialog类派生出CMyprojectDlg类,用来处理账号注册与用户登录。1.用户注册处理响应函数:

void CMyprojectDlg::OnButton3()

//用户注册 { // TODO: Add your control notification handler code here

////////////////////////////////////////////////////////////////////////////////////// //以下代码主要还是把这条记录写入文件,注意写入的格式:文件的前四个字节是保持用户记录数,//后面依次保持用户记录注意,写用户的每个信息的顺序要与读取时的顺序一致。

UpdateData(TRUE);CUser user;int n_user=0;

//用户的个数,管理员默认为第一个。自己输入为账号:1111,密码:0000。

int size=0;

fstream file(“user.dat”,ios::in|ios::out);// 建立一个文件类,关于其用法,请baidu。

file.seekg(ios::beg);

//将文件指针指向文件头。

file.read((char*)&n_user,sizeof(n_user));

//读取用户数。

n_user+=1;file.seekp(ios::beg);file.write((char*)&n_user,sizeof(n_user));//写学生记录个数

user.num=m_num;

//之前定义user.password为string,导致密码匹配时有错误。。。

memcpy(user.password,m_password.GetBuffer(m_password.GetLength()),m_password.GetLength());// 把类CString对象的内容赋值到字符数组中

user.password[m_password.GetLength()]='';//在数组末尾加结束符号

//在文件末尾,把新的记录写入。

file.seekp(4+(n_user-1)*sizeof(CUser),ios::beg);

//这里出错

file.write((char*)&user.num,sizeof(user.num));file.write((char*)&user.password,sizeof(user.password));

file.close();

///////////////////////////////////////////////////////////////////////////////////////// //用消息框提示

CString str;str.Format(“成功注册,成为第 %d 个注册用户,请按确定返回重新登录.”,n_user-1);

///因为第一个为管理员,不算为用户人数。

AfxMessageBox(str);

} 2.用户登录处理响应函数。其中包含判断是管理员,还是普通用户。void CMyprojectDlg::OnButton2()

//用户登录 { // TODO: Add your control notification handler code here

UpdateData(TRUE);

CUser m_user[100];int i;int size;int n_user=0;//文件中用户的个数

////////////////////////////////////////////////////////////////////////////////////////// //读取文件中的用户记录,注意读取顺序与写入的顺序要一致,文件最开始的4个字节是表示记录个数。

//根据记录个数,依次读取用户记录 放在成员变量m_st数组中(已在类体中声明了)

CFile file;

file.Open(“user.dat”,CFile::modeReadWrite);size=GetFileSize((void*)file.m_hFile,NULL);//读取文件大小,size==0表示是空文件

if(size>0){

file.SeekToBegin();

file.Read(&n_user,sizeof(n_user));}

if(n_user>0 && n_user<99)//实验中限定为0~100个用户记录

{

for(i=0;i

{

//请注意与写入数据的顺序要保持一样,否则会读错数据。

file.Read(&(m_user[i].num),sizeof(m_user[i].num));

file.Read(&(m_user[i].password),sizeof(m_user[i].password));

} } file.Close();///////////////////////////////////////////////// if(m_num==1111&&m_password==“0000”)

//管理员进入管理员页面

{

CAdministrators administrators;

administrators.DoModal();}

CString str_password;for(i=0;i

//普通用户,进入图书查询页面

{

str_password=m_user[i].password;

if(m_user[i].num==m_num)

{

if(str_password==m_password)

{

CSearch search;

search.DoModal();

}

else

{

CString str;

str.Format(“密码或者账号错误,请重新输入!”);

AfxMessageBox(str);

}

} } }

(3)图书查询页面。包含读取所有图书数据,以及根据作者姓名或者书名来查询图书。1.读取所有图书响应函数。

void CSearch::OnButton5()

//显示出所有图书 { // TODO: Add your control notification handler code here int i;int size;int n_book=0;//文件book的本数

////////////////////////////////////////////////////////////////////////////////////////// //读取文件中的书本记录,注意读取顺序与写入的顺序要一致,文件最开始的4个字节是表示记录个数。

//根据记录个数,依次读取书籍记录 放在成员变量m_user_book数组中(已在类体中声明了)

CFile file;

file.Open(“book.dat”,CFile::modeReadWrite);size=GetFileSize((void*)file.m_hFile,NULL);//读取文件大小,size==0表示是空文件

if(size>0){

file.SeekToBegin();

file.Read(&n_book,sizeof(n_book));}

if(n_book>0 && n_book<99)//实验中限定为0~100个书本记录

{

m_num_book=n_book;

for(i=0;i

{

//请注意与写入数据的顺序要保持一样,否则会读错数据。

file.Read(&(m_user_book[i].author),sizeof(m_user_book[i].author));

file.Read(&(m_user_book[i].bname),sizeof(m_user_book[i].bname));

file.Read(&(m_user_book[i].pub_name),sizeof(m_user_book[i].pub_name));

file.Read(&(m_user_book[i].pub_date),sizeof(m_user_book[i].pub_date));

} } file.Close();///////////////////////////////////////////////// //在列表控件中显示所有条记录

//插入每列的表头;

m_list.InsertColumn(0,“作者”,LVCFMT_LEFT,100,1);

m_list.InsertColumn(1,“书名”,LVCFMT_LEFT,100,1);m_list.InsertColumn(2,“出版社”,LVCFMT_LEFT,100,1);m_list.InsertColumn(3,“出版日期”,LVCFMT_LEFT,100,1);//每一行插入一条书本记录

for(i=0;i

CString str;

str=m_user_book[i].author;

m_list.InsertItem(i,str);//InsertItem向CListCtr控件申请一行用来存放数据,同时写入一行的头名称(即编号为0列的数据)

str=m_user_book[i].bname;

m_list.SetItemText(i,1,str);//设置第i行第1列的的数据为书名

str=m_user_book[i].pub_name;

m_list.SetItemText(i,2,str);//设置第i行第2列的的数据为出版社

str.Format(“%d”,m_user_book[i].pub_date);

///整型变为字符串,便于在控件显示

m_list.SetItemText(i,3,str);//设置第i行第3列的的数据为出版日期

} }

2.图书查询响应函数。

void CSearch::OnButton4()

//查询图书 { // TODO: Add your control notification handler code here

UpdateData(TRUE);m_list.DeleteAllItems();int num=0;//表示查找结果的个数

int i;

for(i=0;i

{

CString str;

int ret1=0,ret2=0;

str=m_user_book[i].author;

ret1=str.Find(m_author,0);//ret1>=0, 表示str中包含了m_author的字段

str=m_user_book[i].bname;

ret2=str.Find(m_bname,0);//ret2>=0, 表示str中包含了m_bname的字段

if(ret1>=0)

//按作者查询

{

str=m_user_book[i].author;

m_list.InsertItem(num,str);//InsertItem向CListCtr控件申请一行用来存放数据,同时写入一行的头名称(即编号为0列的数据)

str=m_user_book[i].bname;

m_list.SetItemText(num,1,str);//设置第i行第1列的的数据为书名

str=m_user_book[i].pub_name;

m_list.SetItemText(num,2,str);//设置第i行第2列的的数据为出版社

str.Format(“%d”,m_user_book[i].pub_date);

///整型变为字符串,便于在控件显示

m_list.SetItemText(num,3,str);//设置第i行第3列的的数据为出版日期

num+=1;//结果+1;

}

} }

(4)管理员图书管理页面。包含读取所有图书,添加图书,修改图书,删除图书的功能。1.读取所有图书功能实现与(3)的实现一样。2.添加图书响应函数。

void CBookdata::OnButton7()

//添加图书 { UpdateData(TRUE);Book book;int n_book=0;

//书本的个数

int size=0;

fstream file(“book.dat”,ios::in|ios::out);// 建立一个文件类,关于其用法,请baidu。

file.seekg(ios::beg);

//将文件指针指向文件头。

file.read((char*)&n_book,sizeof(n_book));

//读取书籍数。

////////////////////////////////////////////////////////////////////////////////////// //以下代码主要还是把这条记录写入文件,注意写入的格式:文件的前四个字节是保持书本记录数,//后面依次保持书本记录注意,写学生的每个信息的顺序要与读取时的顺序一致。

n_book+=1;file.seekp(ios::beg);file.write((char*)&n_book,sizeof(n_book));//写学生记录个数

memcpy(book.author,m_add_author.GetBuffer(m_add_author.GetLength()),m_add_author.GetLength());// 把类CString对象的内容赋值到字符数组中 book.author[m_add_author.GetLength()]='';//在数组末尾加结束符号

memcpy(book.bname,m_add_bname.GetBuffer(m_add_bname.GetLength()),m_add_bname.GetLength());// 把类CString对象的内容赋值到字符数组中

book.bname[m_add_bname.GetLength()]='';//在数组末尾加结束符号

memcpy(book.pub_name,m_add_pub_name.GetBuffer(m_add_pub_name.GetLength()),m_add_pub_name.GetLength());// 把类CString对象的内容赋值到字符数组中

book.pub_name[m_add_pub_name.GetLength()]='';//在数组末尾加结束符号

book.pub_date=m_add_pub_date;

//在文件末尾,把新的记录写入。

file.seekp(4+(n_book-1)*54,ios::beg);

file.write((char*)&book.author,sizeof(book.author));file.write((char*)&book.bname,sizeof(book.bname));file.write((char*)&book.pub_name,sizeof(book.pub_name));file.write((char*)&book.pub_date,sizeof(book.pub_date));

file.close();///////////////////////////////////////////////////////////////////////////////////////// //用消息框提示

CString str;str.Format(“文件中已有 %d 本书籍记录.”,n_book);AfxMessageBox(str);}

3.修改图书响应函数。

void CBookdata::OnButton5()

//修改图书,,必须先读取图书才能修改图书。{ // TODO: Add your control notification handler code here UpdateData(TRUE);m_list.DeleteAllItems();m_list.InsertColumn(0,“作者”,LVCFMT_LEFT,100,1);

m_list.InsertColumn(1,“书名”,LVCFMT_LEFT,100,1);m_list.InsertColumn(2,“出版社”,LVCFMT_LEFT,100,1);m_list.InsertColumn(3,“出版日期”,LVCFMT_LEFT,100,1);

CString str_author,str_bname,str_pub_name,str;

//将book类的字符串数组赋值为字符串变量,方便比较。

CFile file;// 建立一个文件类,关于其用法,请baidu。

file.Open(“book.dat”,CFile::modeReadWrite);//打开文件

file.SeekToBegin();

file.Write(&m_num_book,sizeof(m_num_book));//写书本记录本数

for(int i=0;i

{

str_author=m_book[i].author;

str_bname=m_book[i].bname;

str_pub_name=m_book[i].pub_name;

if(str_author==m_author||str_bname==m_bname||str_pub_name==m_pub_name||m_book[i].pub_date==m_pub_date)

{

memcpy(m_book[i].author,m_modify_author.GetBuffer(m_modify_author.GetLength()),m_modify_author.GetLength());// 把类CString对象的内容赋值到字符数组中

m_book[i].author[m_modify_author.GetLength()]='';//在数组末尾加结束符号

memcpy(m_book[i].bname,m_modify_bname.GetBuffer(m_modify_bname.GetLength()),m_modify_bname.GetLength());// 把类CString对象的内容赋值到字符数组中

m_book[i].bname[m_modify_bname.GetLength()]='';//在数组末尾加结束符号

memcpy(m_book[i].pub_name,m_modify_pub_name.GetBuffer(m_modify_pub_name.GetLength()),m_modify_pub_name.GetLength());// 把类CString对象的内容赋值到字符数组中

m_book[i].pub_name[m_modify_pub_name.GetLength()]='';//在数组末尾加结束符号

m_book[i].pub_date=m_modify_pub_date;

}

////////////////////////////////////////////////////////////////////////////////////// //以下代码主要还是把这条记录写入文件,注意写入的格式:文件的前四个字节是保持学生记录数,//后面依次保持学生记录注意,写学生的每个信息的顺序要与读取时的顺序一致。

file.Write(&m_book[i].author,sizeof(m_book[i].author));

file.Write(&m_book[i].bname,sizeof(m_book[i].bname));

file.Write(&m_book[i].pub_name,sizeof(m_book[i].pub_name));

file.Write(&m_book[i].pub_date,sizeof(m_book[i].pub_date));

///////////////////////////////////////////////////////////////////////////////////////// //在列表控件中显示所有条记录

str=m_book[i].author;

m_list.InsertItem(i,str);//InsertItem向CListCtr控件申请一行用来存放数据,同时写入一行的头名称(即编号为0列的数据)

str=m_book[i].bname;

m_list.SetItemText(i,1,str);//设置第i行第1列的的数据为书名

str=m_book[i].pub_name;

m_list.SetItemText(i,2,str);//设置第i行第2列的的数据为出版社

str.Format(“%d”,m_book[i].pub_date);

///整型变为字符串,便于在控件显示

m_list.SetItemText(i,3,str);//设置第i行第3列的的数据为出版日期

}

file.Close();

//用消息框提示

str.Format(“成功修改书籍记录.”);AfxMessageBox(str);}

4.删除图书响应函数。

void CBookdata::OnButton6()

//删除图书,,读取了图书数据后才能删除图书 { // TODO: Add your control notification handler code here UpdateData(TRUE);m_list.DeleteAllItems();m_list.InsertColumn(0,“作者”,LVCFMT_LEFT,100,1);

m_list.InsertColumn(1,“书名”,LVCFMT_LEFT,100,1);m_list.InsertColumn(2,“出版社”,LVCFMT_LEFT,100,1);m_list.InsertColumn(3,“出版日期”,LVCFMT_LEFT,100,1);

CString str_author,str_bname,str_pub_name,str;

//将book类的字符串数组赋值为字符串变量,方便比较。

int n_book,n_flag=0;

// n_flag为删除标志,1为有元素删除了

CFile file;// 建立一个文件类,关于其用法,请baidu。

file.Open(“book.dat”,CFile::modeReadWrite);//新建一个文件并且打开文件

file.SeekToBegin();

file.Write(&m_num_book,sizeof(m_num_book));//写书本记录本数,先填入本来的书本数。

for(int i=0;i

{

str_author=m_book[i].author;

str_bname=m_book[i].bname;

str_pub_name=m_book[i].pub_name;

if(str_author==m_del_author||str_bname==m_del_bname||str_pub_name==m_del_pub_name||m_book[i].pub_date==m_del_pub_date)

{

n_flag=1;

//删除标志置1

i+=1;

//第i个元素为要删除元素,跳过

}

////////////////////////////////////////////////////////////////////////////////////// //以下代码主要还是把这条记录写入文件,注意写入的格式:文件的前四个字节是保持 学生记录数,//后面依次保持学生记录注意,写学生的每个信息的顺序要与读取时的顺序一致。

file.Write(&m_book[i].author,sizeof(m_book[i].author));

file.Write(&m_book[i].bname,sizeof(m_book[i].bname));

file.Write(&m_book[i].pub_name,sizeof(m_book[i].pub_name));

file.Write(&m_book[i].pub_date,sizeof(m_book[i].pub_date));

}

if(n_flag==1)

{

n_book=m_num_book-1;

//表示删除了一本书,则将文件的书本数减1。

file.SeekToBegin();

file.Write(&n_book,sizeof(n_book));//写书本记录本数,先填入本来的书本数。

//用消息框提示

str.Format(“成功删除书籍记录.”);

AfxMessageBox(str);

}

else

{

//用消息框提示

str.Format(“没有这一本书的记录,不能删除.”);

AfxMessageBox(str);

}

file.Close();}

(5)、用户信息管理页面,包含读取所有用户信息,删除、添加、修改用户信息。1.读取所有用户信息以(4)基本相同。

2.删除用户信息实现基本方法与(4)基本相同。3.添加用户信息实现基本方法与(4)基本相同。4.修改用户信息实现基本方法与(4)基本相同。

四.实验结果及分析

(1.)登录页面 成功注册

普通用户成功登录页面

查询结果

管理员登录页面

图书管理页面

成功添加图书。

用户信息管理页面

分析:基本功能是可以实现的,但是因为是用数组来存放图书信息与用户信息,所以对于数据大了之后处理能力不够方便以及效率不高。而且删除信息的时候只是删除该条数据的信息,数据后面的信息往上移动,所以最后面会有两条重复的信息,虽然文件开头储存信息数目已经减一,读取数据是按照文件开头储存的信息数目来读取信息,但是有时候读取会有乱码。我在程序中找不到那个隐藏的bug,五、心得体会

这次C++课程设计学到了很多,懂得了C++看起来虽然简单,可是要用这个计算机语言来实现一些有用的功能,怎么运用确实是一门挺高深的学问,我们学习计算机语言不能只是看书看概念,要多上机实验,这样才能对计算机语言有比较深的了解,才能够提高自己的编程以及调试找BUG的能力。现在来总结一下编程过程中遇到的一些值得注意的问题。

1.派生出一个类时,为编辑框增加变量名后,然后在类声明中自己增加类成员,如果再想在对话框中增加编辑框并且添上变量名会出现错误。(如下,在Csearch 类中自己添加下面箭头指向的代码后,会出现下图右的错误,解决方法是把箭头指向的代码放到//}}AFX_DATA后面,因为此语句为MFC对话框自行添加编辑变量的结束,如果我们将自己定义的变量也添加到此语句前,编译器不清楚是MFC自行添加的变量还是用户自行添加的变量。)2.遇到编译器没有出错,可是运行结果与自己想象的不一样,很可能是逻辑错误。如: 在用户注册时,我是将用户数据直接存到文件尾,这是不正确的,因为管理员页面有删除用户的功能,这个功能的原理是先读文件头的用户数(假定为10个),然后将用户的数据先读取出来,然后经过一个判断,再储存重新储存回文件,而文件中储存的用户数据大小是没有变化的,也就是说文件尾会有两份最后一个用户的数据(即如果删除的是第七个,文件中最后会有两份第十个用户的数据,文件头的记录用户数为9个),如果添加用户直接储存在文件尾则会储存在第11个用户的位置,可是以后读取的话只是读取到第10个。所以会出现读取错误,密码不匹配的问题。应该根据记录的用户数让文件指针指向最后一个用户数据后面。file.seekp(4+(n_user-1)*sizeof(CUser),ios::beg);

以上两个问题是困扰我比较久的,其他问题经过百度还有自己的调试,解决还算快,不值得重点说。

六、参考文献

1.C++面向对象程序设计(第二版)

谭浩强 编著 2.成绩管理系统MFC教程

3.CNDN论坛,关于文件操作的指针运算。

下载c++课程设计:教务管理系统源代码word格式文档
下载c++课程设计:教务管理系统源代码.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    c++超市管理系统课程设计报告

    c++超市管理系统课程设计报告第1章任务描述本次C++实践课题为“超市管理系统”。要求功能有A、添加商品信息,有商品编号、商品名、供应商代号、进货价、售出价、存货数等。进......

    C++大作业_职工信息管理系统源代码

    #include #include #include using namespace std; const N=5000; // 定义系统可录入的职工最大数值string Ename[N]; long Enum[N]; char Esex[N]; int Eage[N];......

    c语言课程设计-学籍管理系统(含源代码)

    课 程 设 计 课程设计名称: C语言程序设计 题 目:学籍管理系统 学 生 姓 名: 学生学号 : 学 院(系): 软件学院 专 业 班 级: 112021 指 导 教 师: 设计时间: 2012 年 9 月 日......

    通讯录管理系统的设计与实现c++源代码

    通讯录管理系统的设计与实现源代码 #include #include #include #include using namespace std; struct Student { string num;//学号 string name;//姓名 int age; char......

    C++课程设计学生成绩管理分析系统

    五、解决方案 C++程序设计实践教学环节任务书 1. 分析程序的功能要求,划分程序功能模块。 2. 画出系统流程图。 一、题目: 学生成绩管理分析系统 3. 代码的编写。定义类和各......

    数据库课程设计 计算机教务管理系统

    中北大学 数据库课程设计 说 明 书 学 院、系: 专业: 学 生 姓 名: 设 计 题 目: 李翰超 软件学院 软件工程 学 号: 1221010619 计算机等级考试教务管理系统 起 迄 日 期: 2014......

    数据库课程设计之教务管理系统

    源代码: CREATE DATABASE JWGL/*建立教务管理系统*/ ON (NAME = JWGL_Data, FILENAME = 'e:sql_dataJwgl_Data.mdf', SIZE = 20, MAXSIZE = 500, FILEGROWTH = 25%) LOG ON......

    C++课程设计电话簿管理

    C++课程设计 ————简单电话簿管理 报告内容: 一.程序功能简介 二.课程设计要求 三.课程设计说明 四.参考数据结构 五.具体功能及实现六.源程序及注释 七.感想与心得 学号:05093010......