C语言课程设计火车票系统源代码

时间:2019-05-14 03:36:04下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言课程设计火车票系统源代码》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言课程设计火车票系统源代码》。

第一篇:C语言课程设计火车票系统源代码

#include #include #include //火车票结构体类型// typedef struct Node {int num;

//编号// char name[20];

//起点和终点// char time[5];

//出发时间// int price;

//车票价格// int amount;

//剩余数量// struct Node *next;}Node;//创建链表并输入数据// struct Node *creat(){ struct Node *head,*r,*s;

int i=0;

char choice;

head=(struct Node *)malloc(sizeof(struct Node));head->next=NULL;r=head;do {

s=(struct Node *)malloc(sizeof(struct Node));s->next=NULL;printf(“请输入第%d种火车票的信息:n”,++i);printf(“请输入火车的编号:”);

scanf(“%d”,&s->num);

printf(“起点和终点:”);scanf(“%s”,s->name);printf(“出发时间:”);scanf(“%s”,s->time);printf(“车票价格:”);scanf(“%d”,&s->price);printf(“剩余数量:”);scanf(“%d”,&s->amount);

r->next=s;

r=s;

printf(“Continue?(Y/N)”);scanf(“%s”,&choice);}while(choice=='Y'||choice=='y');

r->next=NULL;return(head);} //将单链表中的信息保存到文件1.txt中// void save(struct Node *h){

struct Node *s;FILE *fp;

char filename[10]=“1.txt”;

fp=fopen(“1.txt”,“wt”);if(fp==NULL){

printf(“n写文件出错,按任意键退出!”);getchar();exit(1);}

for(s=h->next;s!=NULL;s=s->next)

fprintf(fp,“%d %s %s %d %d n”,s->num,s->name,s->time,s->price,s->amount);

getchar();fclose(fp);} // 从文件1.txt中读取信息并存入单链表中// struct Node *read(){ struct Node *head,*r,*s;FILE *fp;char filename[10]=“zl.txt”;fp=fopen(“1.txt”,“rt”);if(fp==NULL){

printf(“读文件错误,按任意键退出!”);getchar();exit(1);} head=(struct Node *)malloc(sizeof(struct Node));head->next=NULL;r=head;while(!feof(fp)){

s=(struct Node *)malloc(sizeof(struct Node));fscanf(fp,“%d %s %s %d %d”,&s->num,s->name,s->time,&s->price,&s->amount);

r->next=s;r=s;

} r->next=NULL;fclose(fp);

return head;} //将链表中的数据输出// void print(struct Node *h){

struct Node *s;

printf(“n火车票信息如下:n”);

printf(“~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n”);printf(“编号

起点和终点

出发时间

车票价格

剩余票数:n”);

for(s=h->next;s->next!=NULL;s=s->next){ printf(“ %d

%10s

%5s %10d %6dn”,s->num,s->name,s->time,s->price,s->amount);} } //链表查询// struct Node * find(struct Node *h){ int i,j;char s[20];printf(“tt

查询方法有以下几种:n”);printf(“tt

1.火车票编号n”);printf(“tt

2.起点和终点n”);printf(“tt

3.出发时间n”);printf(“tt

4.车票价格n”);printf(“tt

5.剩余票数n”);printf(“请输入您要查询的方法的序号:”);scanf(“%d”,&i);switch(i){ case 1:printf(“请输入你要查询火车票的编号:”);scanf(“%d”,&j);

while(h->next!=NULL)

{

h=h->next;

if(h->num==j)return h;

}

return NULL;break;case 2:printf(“请输入您要查询火车票的起点和终点:”);scanf(“%s”,s);while(h->next!=NULL){

h=h->next;if(strcmp(h->name,s)==0)

return h;

} return NULL;break;case 3:printf(“请输入您要查询火车票的时间:”);

scanf(“%s”,s);

while(h->next!=NULL)

{

h=h->next;

if(strcmp(h->time,s)==0)

return h;

}

return NULL;

break;case 4:printf(“请输入你要查询火车票的价格 :”);scanf(“%d”,&j);

while(h->next!=NULL)

{

h=h->next;

if(h->price==j)

return h;

}

return NULL;

break;case 5:printf(“请输入你要查询火车票的剩余票数:”);scanf(“%d”,&j);

while(h->next!=NULL)

{

h=h->next;

if(h->amount==j)

return h;

} return NULL;

break;} } //修改信息// change(struct Node *h,int k){ int j;struct Node *p;p=find(h);printf(“------------n”);printf(“t

您要修改哪一项?n”);printf(“t

1.火车编号n”);printf(“t

2.起点和终点n”);printf(“t

3.出发时间n”);printf(“t

4.车票价格n”);

printf(“t

5.剩余票数n”);printf(“t

0.退出系统n”);

printf(“------------n”);printf(“请输入您要修改项的编号:”);scanf(“%d”,&j);switch(j)

{ case 1:

printf(“修改后的火车编号:”);

scanf(“%d”,&p->num);

break;

case 2:

printf(“修改后的起点和终点:”);

scanf(“%s”,p->name);

break;

case 3:

printf(“修改后的出发时间:”);

scanf(“%s”,p->time);

break;

case 4:

printf(“修改后的车票价格:”);

scanf(“%d”,&p->price);

break;

case 5:

printf(“修改后的剩余票数:”);

scanf(“%d”,&p->amount);

break;

case 0:break;} } //删除信息// delete(struct Node *h){ struct Node *p;

int j;

printf(“请输入您要删除的火车票的编号:”);scanf(“%d”,&j);p=h->next;

if(p==NULL)

return 0;while(p!=NULL){ if(p->num==j){

h->next=p->next;

free(p);

return 1;} h=p;p=p->next;

} return 0;} //添加信息// void append(){

struct Node *p;

FILE *fp;

fp=fopen(“1.txt”,“at+”);

if(fp==NULL)

{

printf(“写文件出错,按任意键返回.n”);getchar();exit(1);

}

printf(“请输入要添加的火车票的信息:火车编号,起点和终点,出发时间,车票价格,剩余票数:n”);scanf(“%d%s%s%d%d”,&p->num,p->name,p->time,&p->price,&p->amount);fprintf(fp,“%d %s %s %d %dn”,p->num,p->name,p->time,p->price,p->amount);getchar();fclose(fp);} //数据的统计// void count(struct Node *h){ struct Node *s;s=h;int i,j,k,n=0;printf(“*****************************************************************************n”);

printf(“tt

请选择您要统计项目的序号:n”);

printf(“tt

1.车票价格n”);

printf(“tt

2.剩余票数n”);printf(“tt

0.退出界面n”);

scanf(“%d”,&i);switch(i)

{

case 1:

printf(“请输入您要统计车票的价格的标准:”);

scanf(“%d”,&j);

printf(“tt

请选择低于或高于标准:n”);

printf(“tt

1.价格低于%d的个数n”,j);

printf(“tt

2.价格高于%d的个数n”,j);

scanf(“%d”,&k);

if(k==1)

{

for(s=h->next;s->next!=NULL;s=s->next)

if(s->price

n++;

printf(“车票价格低于%d的个数有%d个.n”,j,n);

}

else

{

for(s=h->next;s->next!=NULL;s=s->next)

if(s->price>j)

n++;

printf(“车票价格低于%d的个数有%d个.n”,j,n);

}

break;

case 2:

printf(“请输入您要统计剩余票数的数量:”);

scanf(“%d”,&j);

printf(“tt

请选择低于或高于所输票数:n”);

printf(“tt

1.票数低于%d的个数n”,j);

printf(“tt

2.票数高于%d的个数n”,j);

scanf(“%d”,&k);

if(k==1)

{

for(s=h->next;s->next!=NULL;s=s->next)

if(s->amount

n++;

printf(“剩余票数低于%d的个数有%d个.n”,j,n);

}

else

{

for(s=h->next;s->next!=NULL;s=s->next)

if(s->amount>j)

n++;

printf(“剩余票数高于%d的个数有%d个.n”,j,n);

}

break;

case 0:break;

} } //保存用户和密码到文件2.txt中// void save_user(){

char file[10]=“2.txt”;FILE *fp;char name[20];char pwd[10];fp=fopen(“2.txt”,“at+”);if(fp==NULL){ printf(“n写文件出错,按任意键退出.n”);

getchar();exit(1);} printf(“请输入用户名:”);

scanf(“%s”,name);printf(“请输入密码:”);

scanf(“%s”,pwd);

fprintf(fp,“%s %sn”,name,pwd);

getchar();

fclose(fp);

printf(“用户注册成功!n”);} //检验用户和密码是否匹配// int check(char *name,char *pwd){ char name1[20];char pwd1[10];FILE *fp;char file[10]=“2.txt”;if((fp=fopen(“2.txt”,“rt”))==NULL){

printf(“读文件出错,按任意键退出!n”);

getchar();

exit(1);}

while(!feof(fp)){

fscanf(fp,“%s %s”,name1,pwd1);

if(strcmp(name1,name)==0&&strcmp(pwd1,pwd)==0)

return 1;} return 0;} //数据排序// void sort(struct Node *h){ struct Node *s,*p,*m,*n;int t,t1,t2,t3;char s1[20];char s2[10];

printf(“车票价格由小到大排序如下:n”);for(s=h->next;s->next!=NULL;s=s->next)for(p=s->next;p->next!=NULL;p=p->next)

if(s->price>p->price)

{

t1=s->num;s->num=p->num;p->num=t1;

t2=s->price;s->price=p->price;p->price=t2;

t3=s->amount;s->amount=p->amount;p->amount=t3;

strcpy(s1,s->name);strcpy(s->name,p->name);strcpy(p->name,s1);

strcpy(s2,s->time);strcpy(s->time,p->time);strcpy(p->time,s2);

}

print(h);printf(“nn剩余车票数量由多到少排序如下:n”);for(s=h->next;s->next!=NULL;s=s->next)

for(p=s->next;p->next!=NULL;p=p->next)

if(s->amount

amount)

{

t1=s->num;s->num=p->num;p->num=t1;

t2=s->price;s->price=p->price;p->price=t2;

t3=s->amount;s->amount=p->amount;p->amount=t3;

strcpy(s1,s->name);strcpy(s->name,p->name);strcpy(p->name,s1);

strcpy(s2,s->time);strcpy(s->time,p->time);strcpy(p->time,s2);

} print(h);} void main(){ struct Node *head,*p;int i,j,k;head=(struct Node *)malloc(sizeof(struct Node));head->next=NULL;char name[20];char pwd[10];printf(“n***************欢迎进入火车票管理系统******************n”);printf(“tt 1.用户登录n”);printf(“tt 2.用户注册n”);printf(“tt 0.退出系统 n”);printf(“请输入所选序号:”);scanf(“%d”,&k);

switch(k){ case 1: printf(“请输入用户名:”);

scanf(“%s”,name);

printf(“请输入密码:”);

scanf(“%s”,pwd);

if(check(name,pwd))

{

printf(“密码正确.n”);

do

{

printf(“nntt*********************欢迎进入火车票管理系统***********************n”);

printf(“tt

1.录入火车票信息tt

2.添加火车票信息n”);

printf(“tt

3.修改火车票信息tt

4.删除火车票信息n”);

printf(“tt

5.打印火车票信息tt

6.查询火车票信息n”);

printf(“tt

7.统计火车票信息tt

8.火车票销售排行n”);

printf(“tt

0.退出系统n”);

printf(“请输入您要进入菜单的序号(0-8):”);

scanf(“%d”,&i);

switch(i)

{

case 1:

printf(“请录入火车票信息nn”);

head=creat();

save(head);

head=read();

break;

case 2:

append();

break;

case 3:

printf(“请输入您要修改的火车票的编号:”);

scanf(“%d”,&j);

change(head,j);

save(head);

break;

case 4:

head=read();

if(delete(head))

{

printf(“已正确删除!n”);

save(head);

}

else

printf(“要删除的结点不存在!n”);

break;

case 5:

head=read();

print(head);

break;

case 6:

printf(“请输入您要查询火车票的编号(以0结束):”);

scanf(“%d”,&j);

{

p=find(head);

printf(“编号

起点和终点

出发时间

车票价格

剩余票数:n”);

printf(“%d

%10s

%5s %10d %6dn”,p->num,p->name,p->time,p->price,p->amount);

printf(“请继续输入序号(以0结束):”);

scanf(“%d”,&j);

}

break;

case 7: head=read();count(head);break;

case 8: sort(head);break;

case 0: printf(“************************用!*****************************n”);break;

}

}while(i!=0);

}

else

printf(“密码错误或用户名不存在.n”);

break;case 2:save_user();break;case 0:break;}

使

第二篇:C语言课程设计——飞机订票系统源代码

#include //标准输入、输出头文件 #include //包含字符串函数处理头文件 #include

//包含access函数的头文件 #define N 9999

//定义最多的航班数

#define PRINT “%dtt%stt%stt星期%stt%dn ”,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count

//宏定义输出格式

struct air

//定义结构体数组 { int num;

//定义航班号

char start[20];//航班起始站

char over[20];//终点站

char time[10];//飞行时间

int count;

//机票数量 }s[N];

int i,m=0;

//定义全局变量 char ii[10];

void add();//函数声明增加航班信息函数 void print();

//显示航班信息 void search();//查找航班信息 void dingpiao();//订票业务 void tuipiao();//退票 void read();//读取文件

void save();//保存文件 void output();//输出格式 void paixu();//航班排序 void chushihua();//系统初始化 void build();//建立数据文件 void paixu1();//按航班号从小到大排序 void paixu2();//从大到小

void main()//主函数 { int j;

chushihua();//系统初始化判断是否存在原始数据文件

printf(“

欢迎使用飞机订票系统n”);//打印出系统主界面

do {

printf(“================================== ”);

printf(“1.增加航班信息n”

“t2.浏览航班信息n”

“tt3.查找航班信息(按航班号)tt╮(╯_╰)╭n”

“ttt4.航班排序(按航班号)n”

“tttt5.订票业务n”

“to(︶︿︶)ottt6.退票业务n”

“tttttt0.退出n”);printf(“================================== ”);

printf(“请在0-6中选择以回车键结束: ”);scanf(“%d”,&j);switch(j){

case 1: add();//调用增加航班函数

break;

case 2:print();//调用显示模块

break;

case 3:search();//调用查找模块

break;

case 4:paixu();//调用排序函数

break;

case 5:dingpiao();//调用订票模块

break;

case 6:tuipiao();//调用退票模块

break;

case 0:

//退出系统

save();

printf(“谢谢使用,再见!”);

break;} }while(j!=0);//判断是否调用其他函数

}

void chushihua()//定义系统初始化函数 { if(access(“hangban.dat”,0)){

build();} else

read();} void build()//定义建立数据文件函数 { FILE *fp;//定义文件指针

if((fp=fopen(“hangban.dat”,“wb”))==NULL)//打开文件并判定是否出错

{

printf(“创建文件失败!”);//打印出错提示

getchar();

return;} printf(“请依次输入航班信息(以回车键结束):n”);

//打印提示信息

printf(“------------n”);for(i=0;i

printf(“请输入航班号: ”);

scanf(“%d”,&s[i].num);//输入航班号

printf(“请输入起始站: ”);

scanf(“%s”,s[i].start);//输入起始站

printf(“请输入终点站: ”);

scanf(“%s”,s[i].over);//输入终点站

printf(“请输入时间(星期几): ”);

scanf(“%s”,s[i].time);//输入时间

printf(“请输入机票数: ”);

scanf(“%d”,&s[i].count);//输入机票数

fwrite(&s[i],sizeof(struct air),1,fp);

m++;

printf(“添加完毕,是否继续添加?请键入y或n以回车键结束:”);

scanf(“%s”,ii);

if(strcmp(ii,“y”)!=0)

//判断是否继续添加航班信息

{

fclose(fp);

//关闭文件

return;

} } }

void read()

//定义读取文件函数 { FILE *fp;if((fp=fopen(“hangban.dat”,“r”))==NULL){

printf(“创建文件失败!”);

getchar();

return;} i=0;while(!feof(fp)){

fread(&s[i],sizeof(struct air),1,fp);//逐块读取数据

i++;

m++;//计算存在航班数

} m--;fclose(fp);}

void save()//定义保存函数 { FILE *fp;if((fp=fopen(“hangban.dat”,“wb”))==NULL)

{

printf(“创建文件失败!”);

getchar();

return;} for(i=0;i

//逐块保存数据

fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);}

void add()//定义增加航班信息函数 { do{

printf(“请依次输入您要增加的航班信息(以回车键结束): n”);

//打印提示信息

printf(“------------n”);

printf(“请输入航班号: ”);

scanf(“%d”,&s[m].num);//读取航班号

printf(“请输入起始站: ”);

scanf(“%s”,s[m].start);//读取起始站

printf(“请输入终点站: ”);

scanf(“%s”,s[m].over);//读取终点站

printf(“请输入时间: ”);

scanf(“%s”,s[m].time);//读取时间

printf(“请输入机票数: ”);

scanf(“%d”,&s[m].count);//读取机票数

m++;

printf(“添加完毕,是否继续添加?请键入y或n以回车键结束:”);

scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判断是否继续添加 }

void output()//定义输出格式函数 { printf(“航班号tt起始站tt终点站tt时间tt机票数n”);//信息标题

for(i=0;i

printf(PRINT);//打印出信息

}

void print()//定义显示航班信息函数 { printf(“n目前我们有如下航班:n”);output();

//调用输出格式函数

printf(“n请按回车键返回上层菜单 ”);getchar();getchar();}

void search()//定义查询函数 { int n;

do {

printf(“n请输入航班号: ”);

scanf(“%d”,&n);//输入查询的航班号

for(i=0;i

{

if(s[i].num==n)//按航班号判定输出条件

{

printf(“n您所查找的航班信息为:n ”);

printf(“航班号tt起始站tt终点站tt时间tt机票数 nn”);

printf(PRINT);//显示信息

printf(“n查询完毕,按回车键继续”);

getchar();

getchar();

return;

} } printf(“n对不起,没有您需要的信息!n ”);printf(“是否重新查找?请键入y或n以回车键结束 ”);scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判定是否重新查找 }

void dingpiao()//定义订票业务函数 { int n;char a[10]=“y”;do {

search();//调用查询模块

if(!strcmp(ii,“n”))

{

printf(“对不起!没有找到您所需要的航班,所以不能订票。n”);//未查找到所需航班

printf(“n请按回车键返回上层菜单 ”);

getchar();

getchar();

strcpy(ii,“n”);

break;

}

do

{

printf(“请输入您要订的机票数(以回车键结束): ”);

scanf(“%d”,&n);//输入所订机票数

if(n<=0)

//判定机票数是否出错

{

printf(“输入错误!至少需订1张机票。n”);

}

else if(s[i].count==0)//判定机票是否售完

{

printf(“对不起,你所选择的航班的机票已售完!n”);

break;

}

else if(s[i].count!=0&&s[i].count>=n)//判定机票数是否大于等于订票数

{

s[i].count=s[i].count-n;

printf(“订票成功!”);

break;

}

else if(s[i].count

{

printf(“对不起,你所选择的航班只剩 %d张机票n”, s[i].count);

printf(“是否需要重新输入机票数?请输入y或n以回车键结束: ”);//判定是否重新输入订票数

scanf(“%s”,a);

}

}while(!strcmp(a,“y”));

printf(“是否需要订其他航班的机票?请输入y或n以回车键结束: ”);

scanf(“%s”,a);}while(!strcmp(a,“y”));//判定是否继续订票 }

void tuipiao()//定义退票函数 { int n;char a[10];do {

search();//调用查询函数

if(!strcmp(ii,“n”))

{

printf(“对不起!没有找到您所需要的航班,所以不能退票。n”);

printf(“n请按回车键返回上层菜单 ”);

getchar();

getchar();

strcpy(ii,“n”);

break;

}

printf(“请输入您要退的机票数目: ”);

scanf(“%d”,&n);//输入所退票数

if(n<=0)

//判定票数是否有效

printf(“输入错误!至少需退1张机票。”);

else

{

s[i].count=s[i].count+n;

printf(“退票成功!”);

}

printf(“是否继续? 请键入y或n以回车键结束: ”);//判定是否继续退票

scanf(“%s”,a);}while(!strcmp(a,“y”));//判定并跳出循环

}

void paixu()//定义排序函数 { int n;

printf(“n******************************************************************************** ”);

printf(“1.按航班号从小到大排序n”

“t2.按航班号从大到小排序n”);printf(“******************************************************************************** ”);

printf(“请在1-2中选择以回车键结束: ”);scanf(“%d”,&n);//输入排序方式

switch(n){

case 1:paixu1();//调用从小到大排序函数

break;

case 2:paixu2();//调用从大到小排序函数

break;} printf(“排序后的航班信息为:n”);output();

//显示排序后航班信息

printf(“n请按回车键返回上层菜单 ”);

getchar();

getchar();}

void paixu1()//定义从小到大排序函数 { int k,j;struct air t;for(i=0;i

{

k=i;

for(j=i+1;j

if(s[k].num>s[j].num)

k=j;

if(i!=k)

{

t=s[k];

s[k]=s[i];

s[i]=t;

} } }

void paixu2()//定义从大到小排序函数 {

} int k,j;struct air t;for(i=0;i

if(s[k].num

k=j;if(i!=k){

t=s[k];

s[k]=s[i];

s[i]=t;} }

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

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

设计时间: 2012 年 9 月 日  2012 年 9月_ 14 日

实验题目:学籍管理系统一、实验目的

综合应用所学的C语言程序设计知识,自行设计并实现一个较为完整的小型管理信息系统。通过系统分析、系统设计、编程实现,写实验报告等环节,初步掌握软件系统的设计方法和步骤,提高灵活运用程序语言进行软件开发的技能,提高程序设计水平和分析问题、解决问题的能力。

二、实验内容

1):熟悉C语言的开发环境,按照给定的上机步骤练习完成;

2):熟悉C程序的编辑,编译,链接和运行的过程。3):编译一个应用系统程序,形成一个软件系统。

三.实验要求

1.1、分析系统功能

(1)用户进入主菜单后,就会在看到,菜单选项中添加有系统的各项功能,进入的

应的选项就可进行相应的操作.其主要功能有:

1、录入学生信息

2、删除学生信息

3、查询学生信息

4、学生信息排序

5、改学生信息

6、保存退出系统

(2)用户选择所需操作的选项,进入相应的操作界面,在这里用户就可开始进行操作。

四、使用说明

学生学籍管理系统是针对学生信息的管理,主要功能是添加学生信息、删除学生信息、查询学生信息、学生信息排序、修改学生信息、保存信息。

1,用户打开程序,进入主界面,输入学生信息如图

2,按回车进入主菜单,列出各项功能如图

输入1,是查询整个班级的学生的信息,如图

输入2,是查询个别学生的信息,如查询第一学生的信息,如图

输入3,是删除个别学生的信息,如删除第一个学生,如图

输入4,是插入某些学生的信息,如插入第三个,如图

输入5,是修改某个同学的信息,如删除第一个,如图

三、心得体会

两周的课程过起来其实也是很快的。这是我第一次做课程设计,起初还没做的时候觉得很快自己就将得编一个较大的程序,将会很有意思。带着最初的好奇心,新鲜感就这样开始了第一天的编程,结果是大失所望。做课程设计并不是自己想象中的那样有意思,而是很枯燥,很乏味的。也没想象中的那样简单,并不是像我们平时上C语言课时,每次编的那些小程序,没那么简单。我们现在要做的就是将我们平时学的,做的那些小程序都合理的凑到一块儿来。而把这些小程序都加到一块儿来,并不是随意的将它们放到一个程序中就完事的,而是必须得合理,且得顾及到各个方面。

正是由于编程的纷繁复杂,且结构的严谨,因此编程的过程中到处是困难和问题。它考验的不仅是我们的平时用功程度,以及我们对所学知识的熟练掌握程度、应用的灵活程度,它还考验我们的毅力。在刚开始的几天时,由于前一阵忙于各科的考试,C语言已经好久没碰了,所学的知识都有点遗忘了,在编写时处处碰壁,一直会停顿翻书,编得自己都开始心烦意乱了,实在是编不下去了,于是索性就停了三天去看书,先把书给吃透。并在后期的程序调试中也碰到不少的问题,好多问题自己反复检查了几遍都没查出,但在老师的帮助下还是一下就查出了。并不是这些问题多难,而是不够心细。因此做课程设计、编程时,它还考验并锻炼我们的心细程度。

经过这次的课程设计的实践,我受益颇多,不仅是对我掌握知识、灵活运用知识的一次考验和锻炼,也是对我生活态度的一次锻炼,让我学会心细和拥有毅力,更具信心和恒心,碰到困难不再退缩,而是坚强面对。

四,程序编码

/*做一个学生的学籍管理系统,有输入,查询,删除,增加,修改等功能*/ #include /*程序需要的头文件*/ #include

#include #include #include #define SIZE 4

/*声明数组的大小,可以任意改动*/ int board[50][50];/*声明一个表格的数组*/ int cur_x, cur_y;/*定义坐标*/

void init();/*声明一个初始化界面的函数*/ void clear();/*清除界面的函数*/

void draw_board();/*声明一个函数画表格*/ struct student{/*创建一个学生的结构体*/

char stuNo[8];

/*学生的学号*/

char name[10];/*学生的姓名*/

char sex[2];/*学生的性别*/

char score[4];

/*学生的分数*/

char address[10];/*学生的地址*/ };void init()/*初始化函数*/ {

int gdriver, gmode, i, j;

gdriver = DETECT;/*图形界面的驱动声明*/

registerbgidriver(EGAVGA_driver);

initgraph(&gdriver, &gmode, “");

for(i = 0;i < 10;i ++)

for(j = 0;j < 10;j++)/*声明坐标的间距*/

board[i][j] = 0;

cur_x = 1;

cur_y = 1;}

void destroy()/*关闭图形驱动器*/ {

closegraph();}

void draw_board(int n)/*画表格的函数*/ {

int i, j;

for(i = 20;i <=5*160+80;i += 90)/*划横线的循环*/

{

line(i, 20, i,(n+1)*60+20);

}

for(i = 20;i <=(n+1)*60+30;i += 60)/*划纵线的循环*/

{

line(20, i, 5*110+10, i);

} }

void main(){

struct student stu[SIZE],stu_temp;/*声明结构体变量*/

FILE *fp;

/*声明文件型的指针*/

int i,j,n,m,h;

int c=1;/*c为循环次数*/

h=0;

fp=fopen(”c:list.txt“,”wb+“);/*打开写入文件*/

init();/*调用函数*/

draw_board(SIZE);

if(fp==NULL)/*验证文件是否为空*/

{

printf(”cannot open this filen“);

exit(0);

}

printf(”input all %d students's data.n“,SIZE);/*画输入学生信息的表*/

gotoxy(17,4);

printf(”stuNo“);

gotoxy(29,4);

printf(”name“);

gotoxy(41,4);

printf(”sex“);

gotoxy(52,4);

printf(”score“);

gotoxy(63,4);

printf(”address“);

for(i=0;i

{

gotoxy(7,4*(i+2));

printf(”%d“,i);

gotoxy(17,4*(i+2));

scanf(”%s“,&stu[i].stuNo);

gotoxy(29,4*(i+2));

scanf(”%s“,&stu[i].name);

gotoxy(41,4*(i+2));

scanf(”%s“,&stu[i].sex);

gotoxy(52,4*(i+2));

scanf(”%s“,&stu[i].score);

gotoxy(63,4*(i+2));

scanf(”%s“,&stu[i].address);

}

for(i=0;i

if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)

{

printf(”file write error!“);

exit(0);

}

rewind(fp);

clrscr();

for(c=1;c<100;c++)/*创建一个图形界面*/

{

textbackground(0);

textcolor(1);

gotoxy(29,7);

printf(”read->1“);

gotoxy(29,9);

printf(”find->2“);

gotoxy(29,11);

printf(”delete->3“);

gotoxy(29,13);

printf(”insert->4“);

gotoxy(29,15);

printf(”modify->5“);

gotoxy(29,17);

printf(”plese enter j= “);

scanf(”%d“,&j);

clrscr();

if(j==1)/*当输入为1时,显示整个班级

{的学生信息*/

draw_board(SIZE);

gotoxy(17,4);

printf(”stuNo“);

gotoxy(29,4);

printf(”name“);

gotoxy(41,4);

printf(”sex“);

gotoxy(52,4);

printf(”score“);

gotoxy(63,4);

printf(”address“);

for(i=0;i

{

fread(&stu_temp,sizeof(struct student),1,fp);出每个学生的信息*/

gotoxy(7,4*(i+2));

printf(”%d“,i);

gotoxy(17,4*(i+2));

printf(”%s“,stu[i].stuNo);

gotoxy(29,4*(i+2));

printf(”%s“,stu[i].name);

gotoxy(41,4*(i+2));

printf(”%s“,stu[i].sex);

gotoxy(52,4*(i+2));

printf(”%s“,stu[i].score);

gotoxy(63,4*(i+2));

printf(”%s“,stu[i].address);

}

fclose(fp);

/*关闭文件*/

getch();/*留在当前界面*/

clrscr();/*清屏*/

}

if(j==2)/*当输入为2时,查找某个学生的 {信息*/

rewind(fp);/*移动指针到最前*/

printf(”look up the nth(n<4)student,plese enter n= :n“);/*输入要查找的学生

scanf(”%d“,&i);位置*/

clrscr();

draw_board(1);/*画表格*/

gotoxy(17,4);

printf(”stuNo“);

gotoxy(29,4);

printf(”name“);

gotoxy(41,4);

printf(”sex“);

gotoxy(52,4);

printf(”score“);

gotoxy(63,4);

printf(”address“);

fseek(fp,(i-1)*sizeof(struct student),0);/*打开文件查找,读出信

fread(&stu_temp,sizeof(struct student),1,fp);息*/

gotoxy(7,8);

printf(”%d“,i);

gotoxy(17,8);

printf(”%s“,stu[i].stuNo);

gotoxy(29,8);

printf(”%s“,stu[i].name);

gotoxy(41,8);

printf(”%s“,stu[i].sex);

gotoxy(52,8);

printf(”%s“,stu[i].score);

gotoxy(63,8);

printf(”%s“,stu[i].address);

}

fclose(fp);

getch();

clrscr();

if(j==3)/*当输入为3,删除某个学生的信息*/

{

h=h-1;/*表格少画一格*/

printf(”you want delete nth student,plese enter n= “);

scanf(”%d“,&n);

draw_board(SIZE+h);/*调用函数画表格*/

gotoxy(17,4);

printf(”stuNo“);

gotoxy(29,4);

printf(”name“);

gotoxy(41,4);

printf(”sex“);

gotoxy(52,4);

printf(”score“);

gotoxy(63,4);

printf(”address“);

for(m=n;m

{

strcpy(stu[m].stuNo,stu[m+1].stuNo);

strcpy(stu[m].name,stu[m+1].name);

strcpy(stu[m].sex,stu[m+1].sex);

strcpy(stu[m].score,stu[m+1].score);

strcpy(stu[m].address,stu[m+1].address);

}

for(i=0;i

{

fread(&stu_temp,sizeof(struct student),1,fp);个表格*/

gotoxy(7,4*(i+2));

printf(”%d“,i);

gotoxy(17,4*(i+2));

printf(”%s“,stu[i].stuNo);

gotoxy(29,4*(i+2));

printf(”%s“,stu[i].name);

gotoxy(41,4*(i+2));

printf(”%s“,stu[i].sex);

gotoxy(52,4*(i+2));

printf(”%s“,stu[i].score);

gotoxy(63,4*(i+2));

printf(”%s“,stu[i].address);

}

fclose(fp);

getch();

clrscr();

} if(j==4)/*当输入为4时,增加一个学生

{信息*/

h=h+1;

printf(”you want insert nth student,plese enter n= “);

scanf(”%d“,&n);

for(m=n;m

{息*/

strcpy(stu[m+1].stuNo,stu[m].stuNo);

strcpy(stu[m+1].name,stu[m].name);

strcpy(stu[m+1].sex,stu[m].sex);

strcpy(stu[m+1].score,stu[m].score);

strcpy(stu[m+1].address,stu[m].address);

}

draw_board(1);/*调用函数画表格*/

gotoxy(7,4*2);

printf(”%d“,n);

gotoxy(17,4);

printf(”stuNo“);

gotoxy(29,4);

printf(”name“);

gotoxy(41,4);

printf(”sex“);

gotoxy(52,4);

printf(”score“);

gotoxy(63,4);

printf(”address“);

gotoxy(17,8);/*输入一个新学生的 scanf(”%s“,&stu[n].stuNo);信息*/

gotoxy(29,8);

scanf(”%s“,&stu[n].name);

gotoxy(41,8);

scanf(”%s“,&stu[n].sex);

gotoxy(52,8);

scanf(”%s“,&stu[n].score);

gotoxy(63,8);

scanf(”%s“,&stu[n].address);

gotoxy(7,8);

printf(”%d“,i);

gotoxy(17,8);

printf(”%s“,stu[n].stuNo);

gotoxy(29,8);

printf(”%s“,stu[n].name);

gotoxy(41,8);

printf(”%s“,stu[n].sex);

gotoxy(52,8);

printf(”%s“,stu[n].score);

gotoxy(63,8);

printf(”%s“,stu[n].address);

clrscr();

draw_board(SIZE+h);

gotoxy(17,4);

printf(”stuNo“);

gotoxy(29,4);

printf(”name“);

gotoxy(41,4);

printf(”sex“);

gotoxy(52,4);

printf(”score“);

gotoxy(63,4);

printf(”address“);

for(i=0;i

{

fread(&stu_temp,sizeof(struct student),1,fp);表格*/

gotoxy(7,4*(i+2));

printf(”%d“,i);

gotoxy(17,4*(i+2));

printf(”%s“,stu[i].stuNo);

gotoxy(29,4*(i+2));

printf(”%s“,stu[i].name);

gotoxy(41,4*(i+2));

printf(”%s“,stu[i].sex);

gotoxy(52,4*(i+2));

printf(”%s“,stu[i].score);

gotoxy(63,4*(i+2));

printf(”%s“,stu[i].address);

}

fclose(fp);

getch();

clrscr();

}

if(j==5)/*当输入为5,修改某个学生

{信息*/

printf(”you want to modify nth student information,plese enter n= “);

scanf(”%d“,&n);

/*输入修改的学生的位置*/

draw_board(1);

draw_board(1);

gotoxy(7,4*2);

printf(”%d“,n);

gotoxy(17,4);

printf(”stuNo“);

gotoxy(29,4);

printf(”name“);

gotoxy(41,4);

printf(”sex“);

gotoxy(52,4);

printf(”score“);

gotoxy(63,4);

printf(”address“);

gotoxy(17,8);

/*输入新的学生信息*/

scanf(”%s“,&stu[n].stuNo);

gotoxy(29,8);

scanf(”%s“,&stu[n].name);

gotoxy(41,8);

scanf(”%s“,&stu[n].sex);

gotoxy(52,8);

scanf(”%s“,&stu[n].score);

gotoxy(63,8);

scanf(”%s“,&stu[n].address);

gotoxy(7,8);

clrscr();

draw_board(SIZE);

gotoxy(17,4);

printf(”stuNo“);

gotoxy(29,4);

printf(”name“);

gotoxy(41,4);

printf(”sex“);

gotoxy(52,4);

printf(”score“);

gotoxy(63,4);

printf(”address“);

for(i=0;i

{

fread(&stu_temp,sizeof(struct student),1,fp);

gotoxy(7,4*(i+2));

printf(”%d“,i);

gotoxy(17,4*(i+2));

printf(”%s“,stu[i].stuNo);

gotoxy(29,4*(i+2));

printf(”%s“,stu[i].name);

gotoxy(41,4*(i+2));

printf(”%s“,stu[i].sex);

gotoxy(52,4*(i+2));

printf(”%s“,stu[i].score);

gotoxy(63,4*(i+2));

printf(”%s",stu[i].address);

}

fclose(fp);/*关闭文件*/

getch();/*保留在这个界面上*/

clrscr();/*清屏*/

}

}

}

第四篇:图书管理系统(含源代码)c语言_数据结构课程设计报告

数据结构大作业 121279044 伍杨

数据结构大作业 图书管理系统

工程管理 121279044 伍杨

目录一、二、三、题目要求...................................................................2 总体设计...................................................................2 编码实现...................................................................3 1)定义图书结构体.......................................................3 2)登记操作...............................................................4 3)查看操作...............................................................8 4)删除操作.............................................................11 5)Main函数...........................................................20四、五、六、调试与测试..............................................................26 五心得体会..............................................................28 用户手册.................................................................28

数据结构大作业 121279044 伍杨

一、题目要求

1)目的要求

本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。2)题目要求

实现图书管理信息系统的设计。要求实现图书添加、显示全部图书、查询、借阅和归还。主要考查利用文件的操作!

二、总体设计

数据结构大作业 121279044 伍杨

三、编码实现

1)定义图书结构体

struct book{

char bookname[20];

//书名

int NO;

//书编号

char type[20];

//类型

int date;

//到书日期 };struct person{

char name[10];

//姓名

char classes[20];

//班级

int number;

//学号

char telephone[12];

//联系电话

int NO;

//书编号

char bookname[20];

//书名

int borrowdate;

//借书日期

int returndate;

//还书日期

数据结构大作业 121279044 伍杨

2)登记操作

void new_book(){ FILE *fp;struct book b;//登记新书

int i,j;

printf(“请朱老师输入此次收到的书本总数:”);if((fp=fopen(“shuku.txt”,“a”))==NULL){ printf(“File open error!n”);exit(0);}

scanf(“%d”,&i);

for(j=0;j

printf(“请朱老师输入书名:”);scanf(“%s”,b.bookname);fprintf(fp,“%s”,b.bookname);printf(“请朱老师输入书编号:”);scanf(“%d”,&b.NO);fprintf(fp,“

%d”,b.NO);printf(“请朱老师输入类型:”);scanf(“%s”,b.type);

数据结构大作业 121279044 伍杨

}

} fprintf(fp,“

%s”,b.type);printf(“请朱老师输入到书日期:”);scanf(“%d”,&b.date);fprintf(fp,“

%d”,b.date);if(fclose(fp)){

} printf(“Can not close the file!n”);exit(0);void new_person()

{

FILE *fp;struct person p;char choice;

//登记借书

if((fp=fopen(“jieshujilu.txt”,“a”))==NULL){ printf(“File open error!n”);exit(0);}

数据结构大作业 121279044 伍杨

printf(“请朱老师输入借书人姓名:”);scanf(“%s”,p.name);fprintf(fp,“%s”,p.name);printf(“请朱老师输入借书人班级:”);scanf(“%s”,p.classes);fprintf(fp,“

%s”,p.classes);printf(“请朱老师输入借书人学号:”);scanf(“%d”,&p.number);fprintf(fp,“

%d”,p.number);printf(“请朱老师输入借书人联系电话:”);scanf(“%s”,p.telephone);fprintf(fp,“

%s”,p.telephone);printf(“请朱老师输入书编号:”);scanf(“%d”,&p.NO);fprintf(fp,“

%d”,p.NO);printf(“请朱老师输入书名:”);scanf(“%s”,p.bookname);fprintf(fp,“

%s”,p.bookname);printf(“请朱老师输入借书日期:”);scanf(“%d”,&p.borrowdate);fprintf(fp,“

%d”,p.borrowdate);

数据结构大作业 121279044 伍杨

printf(“请朱老师输入还书日期:”);scanf(“%d”,&p.returndate);fprintf(fp,“

%d”,p.returndate);printf(“nt您想继续吗?(y/n)”);scanf(“ %c”,&choice);if(choice=='Y'||choice=='y'){

} system(“cls”);new_person();if(fclose(fp)){

} printf(“Can not close the file!n”);exit(0);}实现程序对文件的读取 void Read(){

int i=0;int j=0;ifstream in(“Libra.txt”,ios::out);in>>i;

数据结构大作业 121279044 伍杨

nt;

} all=i;if(i>0&&i<=Max){

in>>data[j].id>>data[j].name>>data[j].type>>data[j].status>>data[j].coufor(j=1;j<=i;j++){ } } in.close();

3)查看操作

v void see_book(){

FILE *fp;long NO;char bookname[20];char type[20];long date;//查看书库记录

数据结构大作业 121279044 伍杨

} if((fp=fopen(“shuku.txt”,“r”))==NULL){

} printf(“File open error!n”);exit(0);while(!feof(fp)){ fscanf(fp,“%s%ld%s%ld”,bookname,&NO,type,&date);printf(“%-10s %-10ld %-10s %ldn”,bookname,NO,type,date);};if(fclose(fp)){

} printf(“Can not close the file!n”);exit(0);void see_person(){ //查看所有借书记录

数据结构大作业 121279044 伍杨

FILE *fp;char name[10];

char classes[20];

int number;char telephone[20];

int NO;

char bookname[20];

int borrowdate;

int returndate;

fscanf(fp,“%s %s %ld %s %ld %s %ld %ld”,name,classes,&number,telephonwhile(!feof(fp)){ if((fp=fopen(“jieshujilu.txt”,“r”))==NULL){

} printf(“File open error!n”);exit(0);e,&NO,bookname,&borrowdate,&returndate);printf(“%-5s %-5s %ld %-5s %ld %-5s %ld %ldn”,name,classes,number,telephone,NO,bookname,borrowdate,returndate);

数据结构大作业 121279044 伍杨

} };if(fclose(fp)){

} printf(“Can not close the file!n”);exit(0);

4)删除操作

void delete_books()

{

int number;void deletebooks();

printf(“请输入您要删除的书编号:”);scanf(“%d”,&number);FILE *fp;struct book b;

//删除旧书

数据结构大作业 121279044 伍杨

if((fp=fopen(“shuku.txt”,“r”))==NULL){

} printf(“不能打开此文件!n”);exit(0);while(!feof(fp)){ fscanf(fp,“%s %d %s %d”,b.bookname,&b.NO,b.type,&b.date);

} if(b.NO==number){

} printf(“nnt***************图书信息*******************n”);printf(“nt图书书名:%25s”,b.bookname);printf(“nt----------”);printf(“nt图书编号:%25d”,b.NO);printf(“nt----------”);printf(“nt图书类型:%23s”,b.type);printf(“nt----------”);printf(“nt到书日期:%25d”,b.date);printf(“nt----------”);

deletebooks();

数据结构大作业 121279044 伍杨

}

void deletebooks(){

while(!feof(fp)){ fscanf(fp,“%s %d %s %d”,b.bookname,&b.NO,b.type,&b.date);if((fp=fopen(“shuku.txt”,“r”))==NULL){

} if((fp1=fopen(“tempshuku.txt”,“w”))==NULL){

//建立一个临时文件

} printf(“不能打开此文件!n”);exit(0);printf(“不能打开此文件!n”);exit(0);printf(“nn确认删除?请再次输入书编号:”);scanf(“%d”,&number);FILE *fp,*fp1,*fp2,*fp3;int number;struct book b;

数据结构大作业 121279044 伍杨

} if(b.NO==number)continue;else

fprintf(fp1,“%s %d %s %d”,b.bookname,b.NO,b.type,b.date);fclose(fp);fclose(fp1);if((fp2=fopen(“tempshuku.txt”,“r”))==NULL){

} if((fp3=fopen(“shuku.txt”,“w”))==NULL){

//清空书库

} while(!feof(fp2)){

//将临时文件的内容写人源文件

} fscanf(fp2,“%s %d %s %d”,b.bookname,&b.NO,b.type,&b.date);fprintf(fp3,“%s %d %s %d”,b.bookname,b.NO,b.type,b.date);printf(“不能打开此文件!n”);exit(0);printf(“不能打开此文件!n”);exit(0);

数据结构大作业 121279044 伍杨

}

void delete_returnbook(){

if((fp=fopen(“jieshujilu.txt”,“r”))==NULL){

} printf(“不能打开此文件!n”);exit(0);printf(“n请输入所还书本的书编号:”);scanf(“%d”,&numbers);FILE *fp;int numbers;struct person p;void deletereturnbook();char choice;printf(“n

删除成功!n”);fclose(fp2);fclose(fp3);

//删除借书记录

数据结构大作业 121279044 伍杨

while(!feof(fp)){

fscanf(fp,“%s %s %ld %s %ld %s %ld %ld”,p.name,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);

if(p.NO==numbers){

printf(“nt***************图书信息*******************n”);printf(“nt借书人姓名:%20s”,p.name);printf(“nt----------”);printf(“nt借书人班级:%20s”,p.classes);printf(“nt----------”);printf(“nt借书人学号:%20d”,p.number);printf(“nt----------”);printf(“nt借书人联系电话:%20s”,p.telephone);printf(“nt----------”);printf(“nt图书编号:%24d”,p.NO);printf(“nt----------”);printf(“nt图书名称:%23s”,p.bookname);printf(“nt----------”);printf(“nt借书日期:%25d”,p.borrowdate);printf(“nt----------”);printf(“nt还书日期:%25d”,p.returndate);

数据结构大作业 121279044 伍杨

}

}

} printf(“nt----------”);

deletereturnbook();

printf(“nt您想继续吗?(y/n)”);scanf(“ %c”,&choice);if(choice=='Y'||choice=='y'){

} system(“cls”);delete_returnbook();fclose(fp);void deletereturnbook(){ FILE *fp,*fp1,*fp2,*fp3;struct person p;

int numbers;printf(“nn确认删除?请再次输入书编号:”);

数据结构大作业 121279044 伍杨

scanf(“%d”,&numbers);if((fp=fopen(“jieshujilu.txt”,“r”))==NULL){

} if((fp1=fopen(“tempbook.txt”,“w”))==NULL){

} printf(“不能打开此文件!n”);exit(0);printf(“不能打开此文件!n”);exit(0);while(!feof(fp)){ fscanf(fp,“%s %s %d %s %d %s %d %d”,p.name,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);

if(p.NO==numbers)continue;else

fprintf(fp1,“%s %s %d %s %d %s %d %d”,p.name,p.classes,p.number,p.telephone,p.NO,p.bookname,p.borrowdat

数据结构大作业 121279044 伍杨

e,p.returndate);

fscanf(fp2,“%s %s %d %s %d %s %d %d”,p.name,p.classes,while(!feof(fp2)){

//将临时文件写人源文件 if((fp2=fopen(“tempbook.txt”,“r”))==NULL){

} if((fp3=fopen(“jieshujilu.txt”,“w”))==NULL){

} printf(“不能打开此文件!n”);exit(0);printf(“不能打开此文件!n”);exit(0);fclose(fp);fclose(fp1);} &p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);

fprintf(fp3,“%s %s %d %s %d %s %d %d”,p.name,p.数据结构大作业 121279044 伍杨

classes,p.number,p.telephone,p.NO,p.bookname,p.borrowdate,p.returndate);

} printf(“n

删除成功!n”);fclose(fp2);fclose(fp3);} 5)Main函数

int main(void){

do{ printf(“nnn

图书馆管理系统na”);printf(“ *******************************************************n”);int choice;char choice2;struct book;struct person;

数据结构大作业 121279044 伍杨

printf(“ ***朱老师您好吖********功能选项: 登记******请按1,******n”);printf(“ ******************************* 查看/查询*请按2 ******n”);printf(“ ******************************* 删除***** 请按3 ******n”);printf(“ ******************************* 退出***** 请按0 ******n”);printf(“ *******************************************************nnn”);printf(“

请选择功能:”);scanf(“%d”,&choice);switch(choice){ case 1:

printf(“

登记选项:新书登记请按1,借书登记请按2,返回请按3n”);printf(“请选择:”);scanf(“%d”,&choice);switch(choice){ case 1:

system(“cls”);

//清屏 printf(“新书资料登记:nn”);new_book();

//新书登记 printf(“登记完毕!n”);printf(“n”);scanf(“ %c”,&choice2);system(“cls”);break;

数据结构大作业 121279044 伍杨

case 2:

system(“cls”);printf(“借书资料登记:nn”);new_person();

//借书登记 printf(“n press anykey ”);scanf(“ %c”,&choice2);system(“cls”);break;case 3:

} break;system(“cls”);break;

case 2: printf(“

查看/查询选项:书库查看请按1,总借书记录查看请按2,到期记录查询请按3,返回请按4n”);

printf(“请选择:”);scanf(“%d”,&choice);switch(choice){ case 1:

system(“cls”);printf(“欢迎朱老师进入书库!nn”);

数据结构大作业 121279044 伍杨

printf(“书名

书编号

类型

到书日期n”);printf(“-----------n”);see_book();

//书库显示 printf(“n press anykey ”);scanf(“ %c”,&choice2);system(“cls”);break;case 2:

system(“cls”);printf(“欢迎朱老师进入借书记录!nn”);printf(“姓名

班级 学号 联系电话 书编号 书名

借书日期 到书日期n”);

printf(“-------------------------n”);see_person();

//借书记录显示

printf(“n press anykey ”);scanf(“ %c”,&choice2);system(“cls”);break;case 3:

system(“cls”);search_person();

//显示符合记录 printf(“n press anykey ”);

数据结构大作业 121279044 伍杨

scanf(“ %c”,&choice2);system(“cls”);break;case 4:

} break;system(“cls”);break;case 3: printf(“

删除选项:旧书删除请按1,借书记录删除请按2,返回请按3n”);

printf(“请选择:”);scanf(“%d”,&choice);switch(choice){ case 1:

system(“cls”);delete_books();

//删除ing printf(“n press anykey ”);scanf(“ %c”,&choice2);system(“cls”);break;case 2:

数据结构大作业 121279044 伍杨

}

system(“cls”);delete_returnbook();

//删除ing printf(“n press anykey ”);scanf(“ %c”,&choice2);system(“cls”);break;case 3:

} break;system(“cls”);break;case 0:

} system(“cls”);}while(choice!= 0);return 0;

数据结构大作业 121279044 伍杨

四、调试与测试

主菜单

登记

数据结构大作业 121279044 伍杨

查看

删除

生成的文件内信息

数据结构大作业 121279044 伍杨五、五心得体会

经过这次大作业,我觉得代码的编写,最主要的的是编程思想,语言其实不是太重要,思路最重要!

六、用户手册

程序执行文件为 lib sys.exe,打开执行文件后按提示操作即可

第五篇: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语言课程设计火车票系统源代码word格式文档
下载C语言课程设计火车票系统源代码.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


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

相关范文推荐

    航空售票系统+C++课程设计源代码

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

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

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

    c语言课程设计-文件加密解密(含源代码)

    C 语 言 课 程 设 计 实 验 报 告 实验名称:文件加密解密 院系:软件学院 学号: 年9月3日—9月17日 日期:2012 一:设计题目 1:设计图形用户界面。 2:对文件进行加密并对加密文件进......

    C语言课程设计 职工信息管理系统 单链表实现程序源代码

    //C语言课程设计 职工信息管理系统—单链表实现 #include "stdio.h" #include "stdlib.h" #include "string.h" int saveflag=0; /*是否需要存盘的标志变量*/ struct empl......

    课程设计火车票售票系统的需求分析

    二.需求分析 经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。在这些函数当中,添加车次数据函数、售票函数、查询总额函数的实现严......

    人事管理系统源代码

    #include #include #include #define N 100 struct member_info { char xm[7]; char xb[3]; char sr[15]; char whcd[13]; char zc[17]; char sfzh[19]; char lxdh[12];......

    C语言机票订票管理系统源代码

    #include //标准输入、输出头文件 #include //包含字符串函数处理头文件 #include //包含access函数的头文件 #include #include #include #include #define N 9999 //定......

    c语言实现机票管理系统源代码

    /*1、用户和管理员及航班信息请以英文字母或数字输入*/ /*2、管理员账户为:boss,密码为:123。保存在txt文件中,需要修改请于程序中修改*/ /*3、部分文件读写为二进制读写,所以打......