本人是一名大三学生, 今天跟大家分享下我写的信息管理系统 ,请各位大佬帮我看看,说说哪里错了,长话短说 想学习c语言c++小伙伴们 可以加一下这个群C语言C++学习交流群 590750544 很不错的!群里很多学习资料和编程工具
#include<stdio.h>
#include <stdlib.h>
#include <string>
void input();
void del();
void liulan();
void searchname();
void menu();
struct song{
char name[20];
char year[20];
char author[20];
char singer[20];
}song[];
int main()
{
menu();
return 0;
}
void input()
{
FILE *fp;
char ch;
int n,m=0;
if((fp=fopen("song.txt","a"))==NULL)
{
printf("can’t open file song.txt");
//exit(0);
}
printf("Please input a record:");
scanf ("%d",&n);
for(n=0;n<=50;)
{
printf("\nrecord%d:\n歌名:",n+1);
gets(song[n].name);
printf("\n时间:");
gets(song[n].year);
printf("\n作者:");
gets(song[n].author);
printf("\n歌手:");
gets(song[n].singer);
n++;
printf("继续输入吗?\n");
ch=getchar();
getchar();
if(ch==’n’)
{
break;
}
fwrite(song,sizeof(song[0]),n,fp);
fclose(fp);
}
}
void del()
{
int n,m,k=0;
long a;
char namekey[8];
FILE* fp;
printf("\n请输入您要删除的歌曲名:");
scanf("%s",&namekey);
if((fp=fopen("song.txt","r+"))==NULL)
{
printf("\n不能打开该文件!");
//exit(0);
}
while(!feof(fp))
{
a=ftell(fp);
fscanf(fp,"%6s %5s %5s %10s\n",&song[n].name,&song[n].year,&song[n].author,&song[n].singer);
if(strcmp(namekey,song[n].name)==0)
{
k=1;
break;
}
}
if(k==1)
{
printf("\n已查到,记录为");
printf("\n%6s %5s %5s %10s\n",song[n].name,song[n].year,song[n].author,song[n].singer);
printf("\n确认删除,按1;不删除,按0:");
scanf("%d",&m);
if(m==1)
{
fseek(fp,a,0);
fprintf(fp,"%s %s %s %s\n"," "," "," "," ");
}
}
else
printf("\n对不起,查无此人");
fclose(fp);
}
void liulan()
{
FILE *fp;
int n=0;
if((fp=fopen("song.txt","rb"))==NULL)
{
printf("can’t open the file song.txt");
//exit(0);
}
printf("歌名\n作者\n歌手\n时间\n");
while(fread(&song[n],sizeof(song[0]),1,fp)==1)
{
printf("%6s %5s %10s %5s\n",song[n].name,song[n].year,song[n].author,song[n].singer);
n++;
}
fclose(fp);
}
void searchname()
{
FILE *fp;
int a=0;
char ch;
int n;
char numstr[5];
if((fp=fopen("song.txt","rb"))==NULL)
{
printf("can not open the file.\n");
// exit(0);
}
while(fread(&song[n],sizeof(song[n]),1,fp)==1){
n++;}
a=n;
printf("用什么方式查询?\n");
printf("1.歌名 2.时间 3.歌手\n");
ch=getchar();
getchar();
switch(ch)
{
case ’1’:
printf("输入你想要查的歌名:\n");
gets(numstr);
for(n=0;n<a;)
{
if(!strcmp(numstr,song[n].name))
break;
n++;
}
break;
case’2’:
printf("输入你想要查询的歌曲发行时间\n");
gets(numstr);
for(n=0;n<a;)
{
if(atol(*numstr)==song[n].year)
break;
n++;
}
break;
case’3’:
printf("输入你要查的歌手\n");
gets(numstr);
for(n=0;n<a;)
{
if(!strcmp(numstr,song[n].singer))
break;
n++;
}
break;
}
printf("歌名 作者 歌手 时间\n");
printf("%6s %5s %5s %10s\n",song[n].name,song[n].year,song[n].author,song[n].singer);
fclose(fp);
}
有上面指正的地方,希望大家指出...
(加群: 571545210 学习编程)获得学习视频和资料及工具
最后希望我们大家能继续努力......