购物卡管理系统设计(报告源代码)――C语言.

时间:2019-05-14 12:41:06下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《购物卡管理系统设计(报告源代码)――C语言.》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《购物卡管理系统设计(报告源代码)――C语言.》。

第一篇:购物卡管理系统设计(报告源代码)――C语言.

购物卡管理系统 【题目要求】

设计购物卡管理系统,系统主要模块:(1 实现系统内制卡、发卡功能;(2 实现系统内账户及相关账户管理;(3 实现卡交易和合法性检查;(4 实现卡交易积分功能;(5 实现卡报表功能;(6 数据以文件形式存储。【提示】

制卡:指申请一张购物卡,但还没有使用。发卡:该购物卡已经启用。

实现卡交易:指从卡中消费掉一定的金额。

一、系统需求分析

根据题目要求, 由于数据要以文件形式存储, 所以应提供文件的输入、输出等操作;在程序中要实现银行卡的各项功能,应提供制卡、发卡、存 款、消费、查询账户相关信息、查询账户交易记录、查询全部信息、退出 程序等一系列操作;另外还应提供键盘式选择菜单实现功能选择。

二、系统总体设计

分析了整个系统之后,根据上面的系统需求分析,可以将这个系统的 设计分为如下七大模块:制卡、发卡、存款、消费、查询账户相关信息、查询账户交易记录、查询全部信息。

三、系统详细设计 1.主函数设计

主函数的设计比较简介,只包括一个菜单函数,主要实现菜单功能, 提供了菜单输入、模块选择、退出系统等模块的调用。其中各功能模块用 菜单方式选择。

【流程图】 1 N 2 【小结】

函数开头有“文件包含”的预处理命令,所谓“文件包含”处理是指 一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件 包含到本文件之中。C 语言提供了 #include命令用来实现“文件包含”的 操作。

在本程序中包含了一下头文件:“string.h”、“ctype.h”、“stdio.h” ,方便 调用库函数实现某些功能。

在程序设计中,只使用一些基本类型(或称简单类型的变量(如整 型、实型、字符型变量等和构造类型数据——数组,是远远不够的。有 时候需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组 合在一个整体中的数据是相互联系的。

在这个程序中,定义了一个结构体数组来存放购物卡用户的各种信 息,包括账户卡号、户主姓名、账户余额、账户状态、账户积分,结构体 如下:

struct user { int num;/*账户号码 */ char name[20];/*户主名称 */ float surplus;/*账户余额 */ char state[2];/*账户状态, y :已启用, n :未启用 */ int point;/*账户积分 */ }u[100];同时在各分函数中,定义了 int、float、char 等一系列变量类型,用来 实现函数功能。

在主函数前面,要加上对各功能函数的声明,声明的作用是把函数的 4 名字、函数的类型以及形参的类型、个数和顺序通知编译系统,以便在调 用该函数时系统按此进行对照检查,例如函数名是否正确,实参与形参的 类型和个数是否一致等。

主函数比较简单,但是函数的调用很多,所以,在程序的开头就加上 了各函数的声明,如下: void c_c(;/*制卡函数模块 */ void s_u(;/*发卡函数模块 */ void in_m(;/*存款函数模块 */

void out_m(;/*取款函数模块 */ void c_i(;/*查询账户相关信息函数模块 */ void c_r(;/*查询账户交易记录函数模块 */ void check(;/*查询全部信息函数模块 */ void menu(;/*主菜单函数模块 */ void back(;/*返回函数模块 */ void check_b(;/*给用户提示已有信息 */ 实现菜单选择功能,使用的是 switch 语句,根据用户输入的菜单选项 a ,调用不同的函数实现各种功能: switch(a { case 1:c_c(;break;/*制卡模块 */ case 2:s_u(;break;/*发卡模块 */ case 3:in_m(;break;/*存款模块 */ case 4:out_m(;break;/*取款模块 */ case 5:c_i(;break;/*查询账户相关信息模块 */ case 6:c_r(;break;/*查询交易记录模块 */ case 7:check(;break;/*查看所有信息模块 */ case 8:exit(0;break;/*退出模块 */ } 2.各功能模块设计

2.1 制卡模块 【流程图】

2.2 发卡模块 【流程图】

N

2.3 存款模块 【流程图】

2.4 消费模块

【流程图】 11 12

2.5 查询账户相关信息模块

【流程图】 13 N 14

2.7 查询全部信息模块 【流程图】 15 开始 打开存有数据的文本文件 将文件中的用户信息输入到 系统定义的结构体中 关闭文本文件 将全部用户的信 息输出到屏幕 结束 3.公共函数设计 返回模块,即在完成一项命令之后,可以选择返回主菜单或者是退出 程序。【流程图】 16 开始 输出菜单供 用户选择 输入菜单编号 判断编号是否 为“1” N Y 返回主菜单 结束 17

第二篇:C语言机票订票管理系统源代码

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

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

//定义最多的航班数 #define PRINT “%dtt%stt%stt星”,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,a,m=0;char ii[10];//定义结构体数组

//定义航班号 //航班起始站

//终点站

//飞行时间

//机票数量

期%stt%dn //定义全局变量

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();//从大到小 int head();//进入订票系统

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

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

system(“cls”);

head();//打印出系统主界面

system(“cls”);do {

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

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

“t2.浏览航班信息n”

“tt3.查找航班信息(按航班号)ttn”

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

“tttt5.订票业务n”

“ttttt6.退票业务n”

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

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

}

case 1: add();system(“cls”);

break;

//调用增加航班函数

case 2:print();system(“cls”);//调用显示模块

break;case 3:search();system(“cls”);//调用查找模块

break;case 4:paixu();system(“cls”);//调用排序函数

break;case 5:dingpiao();system(“cls”);break;

//调用订票模块

case 6:tuipiao();system(“cls”);//调用退票模块

break;

case 0:

//退出系统

save();system(“cls”);

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

printf(“nnnnnnnnnnnnn”);

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);printf(“请稍候,正在初始化”);for(a=0;a<3;a++){

printf(“.”);

Sleep(600);} printf(“n”);

//逐块读取数据

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);printf(“正在保存数据并退出”);for(a=0;a<3;a++)

} {

printf(“.”);

Sleep(600);} printf(“n”);printf(“n”);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”));//判断是否继续添加

printf(“正在保存,请稍候”);for(a=0;a<5;a++)

{

printf(“.”);

Sleep(600);

}

printf(“n”);}

void output()//定义输出格式函数 {

printf(“航班号tt起始站tt终点站tt时间tt机票数n”);//信息标题

for(i=0;i

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

void print()//定义显示航班信息函数 { printf(“正在加载,请稍候”);

for(a=0;a<5;a++)

{

printf(“.”);

Sleep(400);

}

printf(“n”);

system(“cls”);printf(“n目前我们有如下航班:nn”);output();

//调用输出格式函数

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

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

do {

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

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

printf(“正在查询”);

for(a=0;a<5;a++)

{

printf(“.”);

Sleep(400);

}

printf(“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,x;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);//输入所订机票数

printf(“请稍候,正在订票”);

for(x=0;x<3;x++)

{

printf(“.”);

Sleep(600);

}

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

scanf(“%s”,a);

}

printf(“请稍候,正在订票”);

for(x=0;x<3;x++)

{

printf(“.”);

Sleep(600);

}

printf(“n”);

} }while(!strcmp(a,“y”));printf(“是否需要订其他航班的机票?n请输入y或n以回车键结束: ”);scanf(“%s”,a);}while(!strcmp(a,“y”));//判定是否继续订票

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

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

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

{

printf(“对不起!没有找到您所需要的航班,所以不能退票。n”);printf(“n请按回车键返回上层菜单 ”);getchar();getchar();strcpy(ii,“n”);break;} printf(“请输入您要退的机票数目: ”);scanf(“%d”,&n);

//输入所退票数 printf(“请稍候,正在退票”);for(x=0;x<3;x++){

printf(“.”);

Sleep(600);} printf(“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();/*for(a=0;a<5;a++)

{

printf(“.”);

Sleep(400);

}

printf(“n”);*/ }

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;

} } printf(“正在排序,请稍后”);

for(a=0;a<5;a++)

{

printf(“.”);

Sleep(400);

}

printf(“n”);}

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

k=i;

for(j=i+1;j

if(s[k].num

k=j;

if(i!=k)

{

t=s[k];

s[k]=s[i];

s[i]=t;

} } printf(“正在排序,请稍后”);

for(a=0;a<5;a++){

printf(“.”);

Sleep(400);} printf(“n”);}

int head()

//进入订票系统

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

*n”);

printf(“*

欢迎使用机票订票管理系统

*n”);printf(“*

*n”);printf(“*

此处可以适当的加点文字

*n”);printf(“*

*n”);printf(“===================n”);printf(“请按回车键进入界面”);getchar();printf(“正在进入系统选项”);for(a=0;a<3;a++){ printf(“.”);Sleep(600);

} } printf(“n”);return 0;

第三篇:c语言实现机票管理系统源代码

/*

1、用户和管理员及航班信息请以英文字母或数字输入*/ /*

2、管理员账户为:boss,密码为:123。保存在txt文件中,需要修改请于程序中修改*/ /*

3、部分文件读写为二进制读写,所以打开文件时会看到乱码*/

#include #include #include #include #define N 1000

void zhujiemian();//主界面函数

void verify();//用户及管理员登录选择 void loginmanager();//管理员登录 void loginuser();//用户登录

void loginflightm();//管理员登录机票系统 void loginflightu();//用户登录机票系统 void creatfile();//创建用户信息模块

void saveuser();//用户信息保存模块程序

void input();//输入航班信息

void print();//输出航班信息

void save();//保存航班信息

void read();//读取航班信息

void paixu();// 对所有航班按航班号排序 void search();//查找航班信息

void dingpiao();//订票信息

struct users

//管理员/用户信息结构体,管理员可以修改航班信息 {

char Name[20];//管理员/用户姓名

char sexual[10];//用户性别

char ps[8];

// 用户密码

int age;

//用户年龄

long Number;

//用户身份证号码

int power;

//power为1是管理员登录,为0是用户登录 }user[N],up,mg;//up为键盘输入用户信息,user[N]为文件保存的用户信息,mg为管理员结构体

int n;//所有用户个数,初始化为0 struct air //航班信息结构体

{

int num;

//航班号

char start[20];//出发地

char over[20];//目的地

char time[10];//时间

int count;

//票数

int prize;

//票价 }s[N],fnew;int i;

int m=0;//所有航班个数 #define

PRINT “%-d%12s%12s%10s%12d%10dn”,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count,s[i].prize //定义输出格式

void main()//主函数 { zhujiemian();} void zhujiemian()//主界面函数 { int j;

printf(“#=====#n”);

printf(“#

欢迎进入机票管理系统

#n”);printf(“#

1、登录系统

#n”);printf(“#

2、新用户注册

#n”);printf(“#

0、退出

#n”);

printf(“#=====#n”);printf(“请在1-2中选择以回车键结束:nn”);

scanf(“%d”,&j);

switch(j)

{

case 1:verify();//进入机票系统

break;

case 2:creatfile();//进入用户注册系统

break;

case 0:;

break;

} }

void verify()//验证用户及管理员信息模块 { int j;system(“cls”);printf(“#=====#n”);printf(“#

1、管理员登录

#n”);printf(“#

2、用户登录

#n”);printf(“#

0、返回主界面

#n”);

printf(“#=====#n”);scanf(“%d”,&j);

switch(j)

{

case 1:loginmanager();//进入管理员登录界面

break;case 2:loginuser();//进入用户登录界面

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

zhujiemian();//进入主界面

break;

} }

/********管理员登录确定函数**********/ void loginmanager(){ FILE * fp=NULL;//定义文件指针

char DataFile[20]=“manager.txt”;//存储管理员信息的文件名

int i=0,j=1;

char relogin;

//是否重新登录

int success=0;

//登录成功的标志

printf(“n---管理员登录---n”);

fp=fopen(DataFile,“r”);if(fp==NULL)//如果当前文件不存在,初始化根用户名为boss,密码为123,权限为管理员

{

printf(“首次使用该系统!n”);

printf(“管理员账户为:boss 密码为:123n”);

fp=fopen(DataFile,“a”);//以追加方式打开文件

user[0].Number=0;

strcpy(user[0].Name,“boss”);

strcpy(user[0].sexual,“male”);

user[0].age=22;

user[0].power=1;

strcpy(user[0].ps,“123”);

fwrite(&user[0],sizeof(user),1,fp);

fclose(fp);

} else fclose(fp);again: printf(“请输入管理员姓名:”);

scanf(“%s”,up.Name);//输入用户名

up.Name[19]='';

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

fflush(stdin);

for(i=0;i<7;i++)//输入密码,以*在屏幕显示 { up.ps[i]=getch();

up.ps[i+1]='';//字符要以''结尾

if(up.ps[i]=='b')

{

i--;

up.ps[i]='';//清除前一个字符

i--;//接收前一个字符

printf(“b ”);

printf(“b”);

continue;

}

if(up.ps[i]=='r')

{

up.ps[i]='';

break;

}

printf(“*”);}

fp=fopen(DataFile,“rt”);

if(fp==NULL)// 打开文件失败时提示

{

printf(“n打开 %s 失败!按任意键结束程序n”,DataFile);

perror(“Open file fail”);

getchar();

return;

}

if((fp=fopen(“manager.txt”,“r”))==NULL)//打开文件,并判断是否出错

{

printf(“n出错,请检查文件是否存在,按任意键返回主菜单n”);//打印出错提示getchar();

} else

fread(&mg,sizeof(struct users),1,fp);//从文件中读取信息

fclose(fp);//关闭文件

if(strcmp(mg.Name,up.Name)==0&&strcmp(mg.ps,up.ps)==0)

{

success=1;

}

if(success==1)//登录成功

{

printf(“n登录成功,按任意键进入机票调整系统!n”);

getchar();

loginflightm();

}

else//未登录成功

{

fflush(stdin);//清除输入缓冲区中的字符

printf(“n用户名或密码错误!重新输入请按y,退出请按n:n”);

relogin=getchar();

if(relogin=='y'||relogin=='Y')

{

getchar();

goto again;

}

else

{

verify();

exit(0);

}

} }

/********用户登录函数**********/ void loginuser(){ FILE *fp=NULL,*fp1;//定义文件指针

char DataFile[20]=“yonghu.txt”;//存储管理员信息的文件名

int i=0,j=0;

char relogin;

//是否重新登录

int success=0;

//登录成功的标志

printf(“n---用户登录---n”);

fp=fopen(DataFile,“r”);

//读取文件中数据

if((fp1=fopen(“howmanyusers.txt”,“a”))==NULL)//读写方式打开文件,若文件不存在,则n=0

{

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

n=0;//getchar();

//continue;}

else {

fp1=fopen(“howmanyusers.txt”,“r”);

fscanf(fp1, “%d”,&n);//读取fp1中的用户个数

} fclose(fp1);

if((fp=fopen(“yonghu.txt”,“r”))==NULL)//打开文件,并判断是否出错

{

fp1=fopen(“howmanyusers.txt”,“w+”);//以写方式打开

fprintf(fp1,“%d”,0);//打开用户文件失败,则输入用户个数0到fp1 fclose(fp1);printf(“n目前没有用户信息,请按ENTER键返回主菜单先进行注册!n”);getchar();getchar();system(“cls”);zhujiemian();}

for(i=0;i

}

fclose(fp);//关闭文件

//输入数据与文件中用户比对 again: printf(“请输入用户姓名:”);

scanf(“%s”,up.Name);//输入用户名

up.Name[19]='';

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

fflush(stdin);

for(i=0;i<7;i++)//输入密码,以*在屏幕显示

{

up.ps[i]=getch();

up.ps[i+1]='';//字符要以''结尾

if(up.ps[i]=='b')

{

i--;

up.ps[i]='';//清除前一个字符

i--;//接收前一个字符

printf(“b ”);

printf(“b”);

continue;

}

if(up.ps[i]=='r')

{

up.ps[i]='';

break;

}

printf(“*”);}

for(i=0;i

{

if(strcmp(user[i].Name,up.Name)==0&&strcmp(user[i].ps,up.ps)==0)

{

success=1;

break;

}

}

if(success==1)//登录成功

{

printf(“n登录成功,按任意键进入机票调整系统!n”);

getchar();

loginflightu();

}

else //未登录成功

{

fflush(stdin);//清除输入缓冲区中的字符

printf(“n用户名或密码错误!重新输入请按y,退出请按n:n”);

relogin=getchar();

if(relogin=='y'||relogin=='Y')

{

getchar();

goto again;

}

else

{

verify();

exit(0);

}

}

} void saveuser(struct users[])//用户信息保存模块程序

{

FILE *fp,*fp1;//定义文件指针

if((fp=fopen(“yonghu.txt”,“a”))==NULL)//打开文件并判断是否出错

{

}

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

getchar();return;

if((fp1=fopen(“howmanyusers.txt”,“w+”))==NULL)//打开文件并判断是否出错

{

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

getchar();

return;}

for(i=0;i

{

printf(“向文件输入数据失败!nn”);} } fprintf(fp1,“%d”,n);//输入用户个数到fp1 fclose(fp);//关闭文件

fclose(fp1);//关闭文件

void creatfile()//增加用户信息模块 {

FILE *fp=NULL,*p=NULL,*fp1;

char DataFile[20]=“yonghu.txt”;//存储用户信息的文件名

//int a[100];

int i=0,k=1,count=0;

fp=fopen(DataFile,“r”);

system(“cls”);//清屏

if(fp==NULL)//如果当前文件不存在,提示打开文件失败

{

fp1=fopen(“howmanyusers.txt”,“w+”);//以写方式打开

fprintf(fp1,“%d”,0);//打开用户文件失败,则输入用户个数0到fp1

fclose(fp1);

printf(“n不存在%s,正在创建!n”,DataFile);

fp=fopen(DataFile,“a”);

creatfile();}

if((fp1=fopen(“howmanyusers.txt”,“a”))==NULL)//读写方式打开文件,若文件不存在,则n=0

{

n=0;}

else

{

fp1=fopen(“howmanyusers.txt”,“r”);

fscanf(fp1, “%d”,&n);//读取fp1中的用户个数

} fclose(fp1);for(i=0;i

fread(&user[i],sizeof(struct users),1,fp);//从文件中读取信息

}

fclose(fp);//关闭文件

//如果成功打开文件,则提示输入用户相关信息

printf(“请输入用户信息n”);

fflush(stdin);

while(k)

{

//printf(“n输入身份证号码注意身份证号码不能为0!n”);

printf(“请输入身份证号码:”);

scanf(“%ld”,&up.Number);

i=0;//再次初始化i为0

//判断身份证号是否存在while(i

{

if(user[i].Number==up.Number)

{

printf(“该身份证号码已被使用过!n请重新输入身份证号:”);

scanf(“%ld”,&up.Number);

i=0;

//continue;

}

else

i++;} //经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位

user[i].Number=up.Number;printf(“姓名:”);scanf(“%s”,&user[i].Name);user[i].Name[19]='';printf(“性别:”);scanf(“%s”,&user[i].sexual);printf(“用户密码:”);scanf(“%s”,&user[i].ps);printf(“年龄:”);scanf(“%d”,&user[i].age);

n++;//用户数目增加

printf(“是否继续注册?是:选1,否:选0;”);

scanf(“%d”,&k);} saveuser(user);//保存用户信息

fclose(fp);//在屏幕上显示文件内容

system(“cls”);printf(“数据已经成功保存到%s中n”,DataFile);getchar();

printf(“按任意键返回主界面!n”);

getchar();

system(“cls”);

zhujiemian();//返回主界面

}

void loginflightm()//管理员登录机票系统 { int j;do

{

system(“cls”);

printf(“ ★----------------您好,欢迎进入自动化飞机订票系统!---★n”);

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

printf(“ **---------------☆ 1.输入航班信息 ☆---------------------------**nn” “ **------------☆ 2.浏 览 航 班 信

息 ☆-----------------------**nn” “ **--------☆

3.查

-☆--------------------**nn” “ **-----------☆

4.对航班按航班票价排序---☆-----------------------**nn” “ **--------------☆

5.订 票 信 息-☆-------------------------**nn” “ **------------------☆

0.退出

-☆-----------------------------**nn” “ **-----------------------☆

☆---------------------------------**nn” “ **-------------------------☆----------------------------------**nn” “ **-----------------------☆ ☆----------------------------------**nn”);

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

printf(“请在0-5中选择以回车键结束:nn”);

scanf(“%d”,&j);

switch(j)

{

case 1:

input();//调用输入模块

break;case 2: system(“cls”);

print();//调用打印模块

break;

case 3:

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

break;

case 4:

paixu();//调用排序模块

break;

case 5:

dingpiao();//调用订票模块

break;

case 0:;

break;

}

}while(j!=0);//判断结束

printf(“按任意键返回主界面n”);system(“cls”);zhujiemian();}//登录函数结束

void loginflightu()//用户登录机票系统 { int j;do

{

system(“cls”);

printf(“ ★----------------您好,欢迎进入自动化飞机订票系统!---★n”);

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

printf(“ **------------☆ 1.浏 览 航 班 信

息 ☆-----------------------**nn” “ **--------☆

2.查

-☆--------------------**nn” “ **-----------☆

3.对航班按航班票价排序---☆-----------------------**nn” “ **--------------☆

4.订 票 信 息-☆-------------------------**nn” “ **------------------☆

0.退出

-☆-----------------------------**nn” “ **-----------------------☆

☆---------------------------------**nn” “ **-------------------------☆----------------------------------**nn” “ **-----------------------☆ ☆----------------------------------**nn”);

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

printf(“请在0-5中选择以回车键结束:nn”);

scanf(“%d”,&j);

switch(j)

{

case 1:

system(“cls”);

print();//调用打印模块

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

break;case 3: paixu();//调用排序模块

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

break;case 0:;

break;}

}while(j!=0);//判断结束

printf(“按任意键返回主界面n”);system(“cls”);zhujiemian();}//登录函数结束

void input()//输入航班信息模块,管理员操作

{ int i=0,k=1;read();printf(“请依次输入航班信息(航班号,起始站,终点站,起飞时间,机票数,票价):nn”);//打印提示信息

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

//fflush(stdin);

while(k)

{

}

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

scanf(“%d”,&fnew.num);//读取航班号

i=0;//再次初始化i为0 //判断航班是否已经存在while(i

if(s[i].num==fnew.num)

{

}

printf(“该航班已经存在!n请重新输入:”);

scanf(“%d”,&fnew.num);

i=0;

//continue;} else

i++;//经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位

s[i].num=fnew.num;printf(“请输入起始站:n”);

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

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

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

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

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

printf(“请输入余票数(机票数为0结束输入):n”,m);

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

printf(“请输入机票票价:n”,m);

scanf(“%d”,&s[i].prize);//读取机票票价

m++;//所有航班信息个数

// printf(“第%d个信息已经输完是否继续?按1-9任意数字继续,按0结束”,m);

//scanf(“%d”,&y);

printf(“是否继续添加航班?是:选1,否:选0;”);scanf(“%d”,&k);if(k==0)

{

} save();//将结构体信息存盘 system(“cls”);print();//输出输入的航班信息

break;void save()//航班信息保存模块程序

{

FILE *fp,*fp1;//定义文件指针

if((fp=fopen(“flight.txt”,“wb”))==NULL)//打开文件并判断是否出错

{

}

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

getchar();

return;}

if((fp1=fopen(“howmanyflights.txt”,“wb”))==NULL)//打开文件并判断是否出错

{

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

getchar();

return;}

for(i=0;i

if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错

printf(“向文件输入数据失败!nn”);fprintf(fp1,“%d”,m);fclose(fp);//关闭文件

fclose(fp1);//关闭文件

void read()//从文件读取航班信息模块

{

FILE *fp,*fp1;//定义文件指针

fp=fopen(“flight.txt”,“r”);

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

if(fp==NULL)//如果当前文件不存在,提示打开文件失败

{

fp1=fopen(“howmanyflights.txt”,“w+”);//以写方式打开

fprintf(fp1,“%d”,0);//打开用户文件失败,则输入用户个数0到fp1 fclose(fp1);

printf(“n不存在flight.txt,正在创建!n”);

fp=fopen(“flight.txt”,“a”);

printf(“创建完成!n”);

system(“cls”);

read();

//perror(“Open file fail”);

//getch();

}

if((fp1=fopen(“howmanyflights.txt”,“rb”))==NULL)//读写方式打开文件,若文件不存在,则m=0

{

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

m=0;}

else

{

fp1=fopen(“howmanyflights.txt”,“r”);

fscanf(fp1, “%d”,&m);//读取fp1中的用户个数

}

fclose(fp1);for(i=0;i

fread(&s[i],sizeof(struct air),1,fp);//从文件中读取信息

}

fclose(fp);//关闭文件

}

void print()//屏幕打印航班信息模块

{

read();//调用读取文件函数

if(m==0)

printf(“nn目前没有航班信息!n”);else {

printf(“航班信息如下:n”);

printf(“航班号

起始站

终点站

时间

for(i=0;i

{

printf(PRINT);//打印信息

}

} printf(”n请按任意键回车键结束返回主菜单“);

getchar();getchar();}

void paixu()//对所有航班按航班价格排序 { int j;struct pai {

int no;

char name1[20];

余票数

票价n”);

}

char name2[20];char time[20];int count;int prize;}p[1];//临时定义结构体,作为排序时的第三变量 read();//调用读取信息函数 for(j=0;j<(m-1);j++){ for(i=0;i<(m-(1+j));i++){ if(s[i].prize>s[i+1].prize)

//按价格升序排列,p[0]为中间变量 {

p[0].no=s[i].num;//替换航班号

strcpy(p[0].name1,s[i].start);//替换其始站

strcpy(p[0].name2,s[i].over);//替换终点站

strcpy(p[0].time,s[i].time);//替换时间

p[0].count=s[i].count;//替换机票数

p[0].prize=s[i].prize;//替换票价

s[i]=s[i+1];

s[i+1].num=p[0].no;//替换航班号

strcpy(s[i+1].start,p[0].name1);//替换其始站

strcpy(s[i+1].over,p[0].name2);//替换终点站

strcpy(s[i+1].time,p[0].time);//替换时间

s[i+1].count=p[0].count;//替换机票数

s[i+1].prize=p[0].prize;

} } } save();//调用保存函数 system(“cls”);printf(“排序后,”);print();void search()//按航班号查询模块

{

char ii[10];

int no,k;read();//调用读取函数

do

{

system(“cls”);

k=0;//每次查找都初始化k为0

printf(“请输入你要找的航班号:”);//打印查询方式菜单

scanf(“%d”,&no);//航班号

for(i=0;i

{

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

{

k=1;

system(“cls”);

printf(“n查找航班信息成功!n”);

printf(“航班号

起始站

终点站

时间

余票数 价n”);

printf(PRINT);//打印信息

break;

}

}

no=0;//将航班号重新赋值为0

if(k==0)

{

printf(“没有您需要的信息n”);

}

printf(“n是否继续查找?请键入yes或no以回车键结束n”);

scanf(“%s”,ii);

} while(strcmp(ii,“yes”)==0);//判断结束

}

void dingpiao()//订票模块

{

int n;

char a[10];search();//调用查询模块

do

{

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

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

if(n<0)

{

printf(“请输入有效的机票数!n”);//判断机票数是否出错break;

}

if(s[i].count!=0&&s[i].count>=n)//判断是否出错

{

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

save();//调用保存函数

printf(“订票成功!nn”);

}

} break;}

if(s[i].count

{

printf(“余票不足,请输入有效的机票数!n”);

getchar();}

printf(“是否继续订票? 请输入yes或no以回车键结束:n”);//判断是否继续订票

scanf(“%s”,a);

while(!strcmp(a,“yes”));//判断结束

getchar();printf(“按ENTER键返回用户主界面。”);getchar();

第四篇: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语言.word格式文档
下载购物卡管理系统设计(报告源代码)――C语言..doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


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

相关范文推荐

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

    #include #include #include //火车票结构体类型// typedef struct Node {int num; //编号// char name[20]; //起点和终点// char time[5]; //出发时间// int price; /......

    购物卡管理系统

    ********信息系统 需求分析报告 ****有限公司 二〇一一年十二月 1 目录 一、 1.1 1.2 二、 三、 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 项目概述 .............................

    C语言扫雷源代码

    C语言扫雷源代码.txt如果背叛是一种勇气,那么接受背叛则需要更大的勇气。爱情是块砖,婚姻是座山。砖不在多,有一块就灵;山不在高,守一生就行。 #include #include #include......

    c语言一朵花源代码

    /////////////////////////////////////////////////// // 程序名称:一束漂亮的花 // 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版 // 作者:yangw80 // 最后修改:2011-9-2......

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

    #include //标准输入、输出头文件 #include //包含字符串函数处理头文件 #include //包含access函数的头文件 #define N 9999 //定义最多的航班数 #define PRINT "%dtt......

    数据结构实验报告(报告+C语言源代码)

    目录 前言 ..................................................................................................................2 概要设计 ...............................

    C语言编程---火车订票系统源代码(小编整理)

    火车订票系统源码 #include #include #include #include intshoudsave=0 ; int count1=0,count2=0,mark=0,mark1=0 ; /*定义存储火车信息的结构体*/ struct train { c......

    c语言 电话簿管理系统

    #include "stdio.h" #include "string.h" #define N 20 struct mem { char name[20]; char tel[20]; char wu[20]; char dz[20]; }mem[N]; void sorttel(struct mem tel[])......