为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > C语言程序设计报告—歌曲信息管理系统

C语言程序设计报告—歌曲信息管理系统

2018-01-05 15页 doc 36KB 60阅读

用户头像

is_597436

暂无简介

举报
C语言程序设计报告—歌曲信息管理系统C语言程序设计报告—歌曲信息管理系统 C语言程序设计报告—歌曲信息管理系统 C语言课程设计 班级序号: 5507133 姓 名:指导教师: 刘文忠 成 绩: 学 号: 20071004369 实习日期: 2008-12至2009-1 C语言程序设计报告 一、 C语言课程设计的目的: 高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。提高学生适应实际,...
C语言程序设计报告—歌曲信息管理系统
C语言程序设计—歌曲信息管理系统 C语言程序设计报告—歌曲信息管理系统 C语言课程设计 班级序号: 5507133 姓 名:指导教师: 刘文忠 成 绩: 学 号: 20071004369 实习日期: 2008-12至2009-1 C语言程序设计报告 一、 C语言课程设计的目的: 高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。 二、 题目:歌曲信息管理系统 需求分析:制作一个歌曲信息管理系统 使之有以下功能 1 歌曲信息包括歌曲名,作者,演唱者,发行年月等。 2 可以对歌曲信息进行输入,删除,浏览。 3 可以查询歌曲名,作者,演唱者信息。 4 可以提供按作者显示功能。 5 用文件存储信息。 三 总体设计 根据分析,整个系统可设计为以下4个模块: 信息输入模块,删除模块,浏览模块。查找模块。 信息删除:根据输入的歌曲名,作者,演唱者等一项可以删除对应的其他项 信息浏览:可以直接浏览歌曲,作者,演唱者,发行年月。 信息查找:可以查找歌曲,作者等。 四 详细设计 1 主函数 主函数的设计提供数据输入、数据处理和数据输出以及各种函数的调用。其中各功能模块用菜单方式选择;另外,部分菜单也可以写成函数。 ( 流程图如下图1 ) [程序] void main() { void menu(); void function1(); void function2(); void function3(); void function4(); menu(); return; } ( 图 1 ) 2 各功能模块设计 (1)输入模块 信息输入时直接按顺序结构(如图2)输入: void input() { char ch; n=0; if((fp=fopen("song.txt","a"))==NULL) { printf("can?t open file song.txt"); exit(0); } printf("Please input a record:"); 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("继续输入吗, (y/n)\n"); ch=getchar();getchar(); if(ch==„n?) break; } fwrite(song,sizeof(song[0]),n,fp); fclose(fp); } ( 图 2) 2 删除模块: 用户输入要删除的信息,如输入歌曲名 ,根据歌曲名找到其他并删除。 [程序] /******************删除模块*************************/ void del() { int m,k=0; long a; char namekey[8]; 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); } 3?浏览模块: 在用户按下菜单后直接显示出所有歌曲信息。 void xianshi() { n=0; if((fp=fopen("song.txt","rb"))==NULL) { printf("can?t open the file song.txt"); exit(0); } printf(" 歌名\t 作者\t 歌手 时间 \n"); while(fread(&song[n],sizeof(song[n]),1,fp)==1) { printf("%6s %5s %10s %5s\n",song[n].name,song[n].author,song[n].singer,song[n ].year); n++; } fclose(fp); } 4?查找模块: 用户输入要查找的歌曲名或歌曲的任意信息,按菜单键。void searchname() { int a=0; char ch; n=0; 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].si nger); fclose(fp); } 流程图如下图(图3) 5?公共函数 2 各种被调函数 (1)insert函数:数据的插入,用于个人的信息的补录,包括姓名、工作单位、电话号码和email地址。 (2)del函数:用于通讯录中个人信息的删除。 (3)change函数:用于通讯录中个人信息的修改,输入人名,对人名所对应的机构体内容进行修改(包括姓名、工作单位、电话号码和email信息)。 (4)searchname函数:用于输入姓名查找个人信息。如果通讯录中没有此人信息,显示“查无此人~”。 (5)searchnum函数:用于输入电话号码查询个人信息。如果通讯录中没此人信息,显示“查无此人~”。 (6)show函数:用于个人全部信息的显示。 (7)income函数:用于所有原始个人信息的录入(包括姓名、电话号码、工作单位和email地址)。 五 上机操作 1( 主菜单函数 2( 编辑模块 3(替换模块 4查找模块( 5(修改模块 6(删除模块 7(保存模块 8(退出模块 学 习 心 得 通过此次C语言程序设计实践,本人实在是获益匪浅!C语言是上半学期开的课程,当要开始 设计的时候,还真不知从哪下手!结果,第一次的上机,我傻坐着不知道该做什么,后来就写了几 个预处理命令。发觉自已有许多都遗忘了!特别是有文件的操作,几乎是一片空白!温习过后, 开始做题! 一开始做题,也是有点模糊,在指导老师的指导下,我们慢慢的进入状态,我做的是一个 歌星大奖赛,内容包括很多。运用的函数也是非常的复杂,首先完成了结构题,经过几天的 努力,我完成了大半个程序,但是总是有很多错误出现,有好多是些小问题,这都是我的粗 心大意造成的,所以设计程序一定要仔细,不容一点的马虎。当然 也有大问题,关于文件的操作,是我们最大的问题,不过,我们做好后,经过老师的讲解 和改错,我们也懂得设计和运用了。同时,也让我知道了,不懂就要问,没有老师和同学的 帮助,我也不能在规定时间内完成。 这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验,也从 中学到了很多东西。让我懂得了做什么事都要有耐心,要有对什么事都认真仔细的品质。还 有老师的帮助与指导,让我学会了很多以前不懂的东西,使我更加意识到实践的重要性~ 六 :原代码(附录) #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> int i=0; struct system { char author[20]; char singer[20]; char time[20]; char name[20]; } dan[100]; void enter() { int j; char c[2]; FILE *fp; if((fp=fopen("data.txt","w"))==NULL) { } for(j=0;j<i;j++) { } while(1) { printf("Please input the author:\n"); scanf("%s",dan[i].author); printf("Please input the song?s name:\n"); fwrite(&dan[j],sizeof(struct system),1,fp); printf("Can not open the file!\n"); exit(0); } scanf("%s",dan[i].name); printf("Please input the singer:\n"); scanf("%s",dan[i].singer); printf("Please input the outday:\n"); scanf("%s",dan[i].time); if(fwrite(&dan[i++],sizeof(struct system),1,fp)!=1) printf("File write error\n"); else printf("Successful!\n"); printf("Is there any more?( Yes[y]/No[n]) \n"); scanf("%s",c); if(strcmp(c,"n")==0)break; } fclose(fp); void delete() { int j,v,c; char w[20]; FILE *fp; printf("Please input the song?name which you want to delete:"); scanf("%s",w); fp=fopen("data.txt","rb"); for(j=0;j<100;j++) { } v=j; for(j=0;j<v;j++) { } fclose(fp); if(strcmp(w,dan[j].name)==0) c=j; if(fread(&dan[j],sizeof(struct system),1,fp)!=1) break; fp=fopen("data.txt","wb"); for(j=0;j<v;j++) { } if(j!=c) fwrite(&dan[j],sizeof(struct system),1,fp); } fclose(fp); printf("Delete OK!\n"); i--; void browse() { int j; FILE *fp; fp=fopen("data.txt","rb"); for(j=0;j<100;j++) { } if(fread(&dan[j],sizeof(struct system),1,fp)==1) { } else break; printf("Name:%s\n",dan[j].name); printf("Author:%s\n",dan[j].author); printf("Singer:%s\n",dan[j].singer); printf("Outday:%s\n",dan[j].time); printf("---------------------------------\n"); } fclose(fp); void search() { int flag,j,x; char w[20]; FILE *fp; char v[20]; printf("(1)By author\n"); printf("(2)By singer\n"); printf("(3)By name\n"); printf("Please choose which you want to search:\n"); scanf("%d",&x); if(x==3) { flag=0; printf("Please input the song?s name:"); scanf("%s",&w); fp=fopen("data.txt","rb"); for(j=0;j<100;j++) { } } if(fread(&dan[j],sizeof(struct system),1,fp)!=1) break; if(strcmp(dan[j].name,w)==0) { } printf("Name:%s\n",dan[j].name); printf("Author:%s\n",dan[j].author); printf("Singer:%s\n",dan[j].singer); printf("Outday:%s\n",dan[j].time); printf("---------------------------------\n"); flag=1; if(flag==0) printf("Cannot find the song!\n"); fclose(fp); else if(x==2) { flag=0; printf("Please input the singer:"); scanf("%s",&v); fp=fopen("data.txt","rb"); } for(j=0;j<100;j++) { } if(flag==0) printf("Cannot find the song!\n"); if(fread(&dan[j],sizeof(struct system),1,fp)!=1) break; if(strcmp(dan[j].singer,v)==0) { } printf("Name:%s\n",dan[j].name); printf("Author:%s\n",dan[j].author); printf("Singer:%s\n",dan[j].singer); printf("Outday:%s\n",dan[j].time); printf("---------------------------------\n"); flag=1; fclose(fp); else if(x==1) { flag=0; printf("Please input the author:"); } } scanf("%s",w); fp=fopen("data.txt","rb"); for(j=0;j<100;j++) { } if(flag==0) printf("Cannot find the song!\n"); if(fread(&dan[j],sizeof(struct system),1,fp)!=1) break; if(strcmp(dan[j].author,w)==0) { } printf("Name:%s\n",dan[j].name); printf("Author:%s\n",dan[j].author); printf("Singer:%s\n",dan[j].singer); printf("Outday:%s\n",dan[j].time); printf("---------------------------------\n"); flag=1; fclose(fp); else printf("Error!\n"); main() { while(1) { int a; printf("\t\tot;); printf("\t\t\t(4).Search\n"); printf("\t\t\t(0).exit\n"); printf("\t\t*************************************************\n"); printf("\n\t\t\tPlease choose the number(0-4):"); scanf("%d",&a); if(a==0) break; switch(a) MENU } } { case 1:enter();break; case 2:delete();break; case 3:browse();break; case 4:search();break; }
/
本文档为【C语言程序设计报告—歌曲信息管理系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索