只改了LZ所说的问题,其它功能函数没看。
程序代码:
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #define max 20 int sum; typedef struct { int num; char name[20]; char kind[20]; char singer[20]; char save_time[20]; }SONG; /*歌曲信息*/ int read_file(SONG songs[]) { FILE *fp; int i; if((fp=fopen("D:\\songsguanli.txt","rb"))==NULL) { printf("\n\n*****库存文件不存在!请创建"); return(0); } else for(i=0;i<max;i++) songs[i].num=0; i=0; while(!feof(fp)) { fread(&songs[i],sizeof(SONG),1,fp); if(songs[i].num==0) break; else i++; } fclose(fp); return(i); } void save_file(SONG songs[], int sum) { FILE *fp; int i; if((fp=fopen("D:\\songsguanli.txt","wb"))==NULL) { printf("读文件错误!!\n"); getch(); return; } for(i=0;i<sum;i++) { if(fwrite(&songs[i],sizeof(SONG),1,fp)==1) printf("写文件错误!\n\n"); } fclose(fp); } /*输入模块 */ int input(SONG songs[]) { int i=0,choice; system("cls"); printf("\n\n 录入歌曲信息 (最多%d种)\n",max); printf(" ..........................................\n"); do { printf("\n (请歌曲号与其统一) 第%d首歌",i+1); printf("\n 歌曲号:"); scanf("%d",&songs[i].num); if(songs[i].num==0) break; printf("\n 歌曲名称:"); scanf("%s",&songs[i].name); printf("\n 歌曲类型:"); scanf("%s",&songs[i].kind); printf("\n 歌手名字:"); scanf("%s",&songs[i].singer); printf("\n 存储时间:"); scanf("%s",&songs[i].save_time); i++; printf(" \n 是否继续输入信息?(Y/others)"); choice=getch(); if(choice!='Y'&&choice!='y') { break; } }while(i<max); return (i) ; } int apend(SONG songs[],int sum) { int choice; system("cls"); do { printf(" 第%d首歌曲",sum+1); printf("\n 歌曲号:"); scanf("%d",&songs[sum].num); printf("\n 歌曲名称:"); scanf("%s",&songs[sum].name); printf("\n 歌曲类型:"); scanf("%s",&songs[sum].kind); printf("\n 歌手名字:"); scanf("%s",&songs[sum].singer); printf("\n 存储时间:"); scanf("%s",&songs[sum].save_time); sum++; printf(" \n 是否继续输入信息?(Y/others)"); choice=getch(); if(choice!='Y'||choice!='y') { break; } }while(sum+1<max); return (sum); } void output(SONG songs[],int sum) { int i=0; system("cls"); printf("\n\n .....歌曲信息表......\n"); printf("歌曲号--歌曲名称--歌曲类型--歌手名字--存储日期(年-月-日)\n"); printf(".........................................................\n"); for(i=0;i<sum;i++) { printf("%4d %8s %8s %8s %8s\n",songs[i].num,songs[i].name,songs[i].kind,songs[i].singer,songs[i].save_time); } printf(" 按任意键返回主菜单!"); getch(); } int modify(SONG songs[],int sum) { int i=0,modify_num,flag; char choice; do { system("cls"); printf("\n 请输入要修改的歌曲号:"); scanf("%d",&modify_num); for (i=0;i<sum;i++) { if(songs[i].num==modify_num) { printf("\n --歌曲信息--\n"); printf("歌曲号--歌曲名称--歌曲类型--歌手名字--存储日期(年-月-日)"); printf("........................................................................................................"); printf("%4d %8s %8s %8s %8s\n",songs[i].num,songs[i].name,songs[i].kind,songs[i].singer,songs[i].save_time); printf("\n 你要修改哪一项?\n"); printf("\n 1.歌曲名称\n"); printf("\n 2.歌曲类型 \n"); printf("\n 3.歌手名字\n"); printf("\n 4.存储时间\n"); scanf("%d",&choice); switch(choice) { case 1: printf("\n 请输入修改后的歌曲名称:"); scanf("%s",&songs[i].name); break; case 2: printf("\n 请输入修改后的歌曲类型:"); scanf("%s",&songs[i].kind); break; case 3: printf("\n 请输入修改后的歌手名字:"); scanf("%s",&songs[i].singer); break; case 4: printf("\n 请输入修改后的时间:"); scanf("%s",&songs[i].save_time); break; } printf("\n --歌曲信息--\n"); printf("歌曲号--歌曲名称--歌曲类型--歌手名字--存储日期(年-月-日)\n"); printf(".........................................................\n"); printf("%4d %8s %8s %8s %8s\n",songs[i].num,songs[i].name,songs[i].kind, songs[i].singer,songs[i].save_time); } break; } if (i==sum) { printf("\n 不存在该歌曲!!!!" ); getch(); return 0; } printf("\n\n 继续修改吗?(Y/others)"); choice=getch(); if(choice=='Y'||choice=='y') { flag=1; } else flag=0; }while(flag==1); printf(" 按任意键返回主菜单!! "); getch(); return 0; } /*删除模块*/ int del(SONG songs[],int sum) { int j,i,flag=0 ; char s[20]; system("cls"); printf(" 请输入要删除的歌曲名字:\n"); scanf("%s",s); for(i=0;i<sum;i++) { if(strcmp(songs[i].name,s)==0) { flag=1; for(j=i;j<sum-1;j++) { songs[j]=songs[j+1]; } } } if(flag==0) { printf("不存在该歌曲!!!\n"); } if(flag==1) { printf("删除成功!!"); getch(); } sum--; return sum; } /*chazhao */ void cha(SONG songs[],int sum) { char cha_name[20]; int i=1; system("cls"); printf("请输入要查找的歌曲名\n"); scanf("%s",&cha_name); do { if (songs[i].name==cha_name) { printf("\n --歌曲信息--\n"); printf("歌曲号--歌曲名称--歌曲类型--歌手名字--存储日期(年-月-日)"); printf("........................................................................................................"); printf("%4d %8s %8s %8s %8s\n",songs[i].num,songs[i].name,songs[i].kind, songs[i].singer,songs[i].save_time); } i++; }while(i<=sum); printf("按任意键返回主菜单!!!"); getch(); return; } void main() { SONG songs[max]; int choice; sum=read_file(songs); if(sum==0) { printf("请录入基本库存信息!!!"); getch(); sum=input(songs); save_file(songs,sum); } do { system("cls"); printf("\n\n\n *****歌曲管理*****\n\n"); printf(" 1.添加歌曲 **\n\n"); printf(" 2.查看歌曲 **\n\n"); printf(" 3.删除歌曲 **\n\n"); printf(" 4.修改歌曲 **\n\n"); printf(" 5.查找歌曲 **\n\n"); printf(" 0.退出系统 **\n\n"); scanf("%d",&choice); switch(choice) { case 1: sum = apend(songs,sum); break; case 2: output(songs,sum); break; case 3: sum = del(songs,sum) ; break; case 4: modify( songs, sum) ; break; case 5: cha(songs,sum); break; case 0: break; } }while(choice!=0); save_file(songs,sum); }
无聊创造奇迹。