69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h> /*引用库函数*/
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
typedef struct /*定义结构体数组*/
{
char num[10]; /*编号*/
char name[20]; /*书名*/
int how; /*订购册数*/
}Jiaocai;
Jiaocai jc[80];/*结构体数组变量*/
int caidan()/*菜单函数*/
{
char c;
do
{
system("cls"); /*运行前清屏*/
printf("教材管理系统\n"); /*菜单选择*/
printf("1--教材信息录入\n");
printf("2--教材信息查询\n");
printf("3--补订教材\n");
printf("4--退订教材\n");
printf("5--教材信息更新\n");
printf("6--结束程序\n");
printf("你要做什么(1-6):");
c = getchar(); /*读入选择*/
}
while (c < '0' || c > '6');
return(c -'0'); /*返回选择*/
}
int Input(Jiaocai a[], int n) /*输入若干条记录*/
{
int i = 0;
char sign = 0x0, x[10]; /*x[10]为清除多余的数据所用*/
while (sign != 'n' && sign != 'N') /*判断*/
{
printf("student's num:"); /*交互输入*/
scanf("%s", a[n+i].num);
printf("student's name:");
scanf("%s", a[n+i].name);
printf("student's how:");
scanf("%d", &a[n+i].how);
gets(x); /*清除多余的输入*/
printf("tany more records?(Y/N)");
scanf("%c", &sign); /*输入判断*/
i++;
}
return(n + i);
}
void Display(Jiaocai a[], int n) /*显示所有记录*/
{
int i;
printf("-----------------------------------\n"); /*格式头*/
printf("教材编号 书名 订购\n");
printf("-----------------------------------\n");
for (i = 1;i < n + 1;i++) /*循环输入*/
{
printf("%-16s%-15s%d\n", a[i-1].num, a[i-1].name, a[i-1].how);
}
system("pause");
}
int Delete_a_record(Jiaocai a[], int n) /*按姓名查找,退订的教材*/
{
char s[20];
int i = 0, j;
printf("退订的教材名:"); /*交互式问寻*/
scanf("%s", s);
while (strcmp(a[i].name, s) != 0 && i < n) i++; /*查找判断*/
if (i == n)
{
printf("操作失败,原因:教材名不对\n"); /*返回失败信息*/
return(n);
}
for (j = i;j < n - 1;j++) /*删除操作*/
{
strcpy(a[j].num, a[j+1].num);
strcpy(a[j].name, a[j+1].name);
a[j].how = a[j+1].how;
}
printf("退订成功\n"); /*返回成功信息*/
return(n -1);
}
int Insert_a_record(Jiaocai a[], int n) /*插入一条记录*/
{
char x[10]; /*清除多余输入所用*/
printf("student's num:"); /*交互输入*/
scanf("%s", a[n].num);
printf("student's name:");
scanf("%s", a[n].name);
printf("student's how:");
scanf("%d", &a[n].how);
gets(x); /*清除多余的输入*/
n++;
printf("添加成功\n"); /*返回成功信息*/
return(n);
}
void WritetoText(Jiaocai a[], int n) /*将所有记录写入文件*/
{
int i = 0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("保存的文件名\n"); /*输入文件名*/
scanf("%s", filename);
if ((fp = fopen(filename, "w")) == NULL) /*打开文件*/
{
printf("无法打开文件\n");
system("pause");
return;
}
fprintf(fp, "%d\n", n); /*循环写入数据*/
while (i < n)
{
fprintf(fp, "%-16s%-15s%d\n", a[i].num, a[i].name, a[i].how);
i++;
}
fclose(fp); /*关闭文件*/
printf("保存完毕\n"); /*返回成功信息*/
}
void main() /*主函数*/
{
int n = 0;
for (;;) /*最大循环*/
{
switch (caidan()) /*选择判断*/
{
case 1:
printf("教材信息录入\n"); /*输入若干条记录*/
n = Input(jc, n);
break;
case 2:
printf("查看所有订购记录\n"); /*显示所有记录*/
Display(jc, n);
break;
case 3:
printf("教材补丁\n");
n = Insert_a_record(jc, n); /*插入一条记录*/
system("pause");
break;
case 4:
printf("退订\n");
n = Delete_a_record(jc, n); /*按姓名查找,删除一条记录*/
system("pause");
break;
case 5:
printf("写入数据到硬盘\n");
WritetoText(jc, n); /*循环写入数据*/
system("pause");
break;
case 6:
printf("结束\n"); /*结束程序*/
system("pause");
exit(6);
}
}
}