求高手帮我做一个c语言程序,带解释说明,要答辩的,好的还可以继续追加。可以扩展更多功能,那个管理系统

课程报告任务书
题 目 图书信息管理系统
主要
内容 开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能:
(1)图书信息录入功能(图书信息用文件保存)--输入
(2)图书信息浏览功能--输出
(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):
 ①按书名查询 ②按作者名查询 ③ 按照价钱排序 ④按出版时间排序等等
(4)图书信息的删除与修改
扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理 (2)报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。(4)模糊查询 (5)综合查询 (6)统计功能 比如统计处某一类别的图书信息 或 筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。
做好的发我邮箱451202397@qq.com,万分感谢!!!

第1个回答  2012-03-28
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define MAX 100

struct Student
{
int num;/*登录号*/
char name[100];/*书名*/
char author[100];/*作者名*/
char fn[100];/*分类号*/
char place[100];/*出版单位*/
char day[100];/*出版时间*/
float money;/*价格*/
}stu[MAX];

main()/*主函数*/
{
void Input();/*输入*/
void Display();/*输出*/
void Find();/*查找*/
void Modify();/*删除*/
void Change();/*修改*/
int n;
for(;;)
{
printf("\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※ ※\n");
printf("※ 欢迎来到图书信息管理系统 ※\n");
printf("※ ※\n");
printf("※ ※\n");
printf("※ 主菜单 ※\n");
printf("※ ※\n");
printf("※ ▲1.图书信息录入 ▲ ※\n");
printf("※ ※\n");
printf("※ ▲2.图书信息浏览 ▲ ※\n");
printf("※ ※\n");
printf("※ ▲3.图书信息查询 ▲ ※\n");
printf("※ ※\n");
printf("※ ▲4.图书信息删除 ▲ ※\n");
printf("※ ※\n");
printf("※ ▲5.图书信息修改 ▲ ※\n");
printf("※ ※\n");
printf("※ ▲6.退出系统 ▲ ※\n");
printf("※ ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n");
printf("请输入选择项(1-6):");
scanf("%d",&n);
printf("\n\n\n\n");
if(n>0&&n<7)
{
switch(n)
{
case 1:Input();break;
case 2:Display();break;
case 3:Find();break;
case 4:Modify();break;
case 5:Change();break;
case 6:printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※ ※\n");
printf("※ 谢谢使用! ※\n");
printf("※ 再见! ※\n");
printf("※ ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
exit(0);
}
}
else
{
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※ ※\n");
printf("※ 输入错误! ※\n");
printf("※ 请退出! ※\n");
printf("※ ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
break;
}
}
}

void Find()/*查找*/
{
FILE *fp;
int i;
int choose,t;
char ans[100];

do
{
printf("1.按书名查找\n");
printf("2.按作者名查找\n");
printf("返回主菜单(其他数字)\n");
scanf("%d",&choose);
if(choose==1)
{
printf("输入所查书名:\n");
scanf("%s",ans);
t=-1;
if(choose==1)
{
for(i=0;i<MAX;i++) if(strcmp(ans,stu[i].name)==0)
{
t=i;
fp=fopen("student","rb");
for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++)
printf("%d %s %s %s %s %s %f\n",stu[t].num,stu[t].name,stu[t].author,stu[t].fn,stu[t].place,stu[t].day,stu[t].money);
}
}
if(t==-1) printf("不存在该信息\n");
}
else if(choose==2)
{
printf("输入所查作者名:\n");
scanf("%s",ans);
t=-1;
if(choose==2)
{
for(i=0;i<MAX;i++)
if(strcmp(ans,stu[i].author)==0)
{ t=i;
fp=fopen("student","rb");
for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++)
printf("%d %s %s %s %s %s %f\n",stu[t].num,stu[t].name,stu[t].author,stu[t].fn,stu[t].place,stu[t].day,stu[t].money);
}

}
if(t==-1) printf("不存在该信息\n");
}
else return;
}while(1);
}

void Display()/*输出*/
{
FILE *fp;
int i;
fp=fopen("student","rb");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 图书列表\n");
printf("-----------------------------------------------------------\n");
printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
printf("-----------------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++)
{
printf("%6d %8s %8s %8s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money);
}
fclose(fp);
}

void Input()/*输入*/
{
FILE *fp;
int n;
fp=fopen("student","wb");
for(n=0;n<MAX;n++)
{
printf("n=%d 输入序号n(当输入n=-1时,返回),n=",n++);
scanf("%d",&n);
if(n==-1)
{
fclose(fp);
return;
}
else
{
printf("请输入登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
scanf("%d%s%s%s%s%s%f",&stu[n].num,stu[n].name,stu[n].author,stu[n].fn,stu[n].place,stu[n].day,&stu[n].money);
fwrite(&stu[n],sizeof(struct Student),1,fp);
}
}
fclose(fp);
}

void Modify()/*删除*/
{
FILE *fp;
int i,flag,n,s,j;
fp=fopen("student","rb+");
rewind(fp);
printf(" 图书列表\n");
printf("-----------------------------------------------------------\n");
printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
printf("-----------------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++)
{
printf("%6d %8s %8s %8s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money);
printf("\n");
}
n=i;
printf("输入待删除图书号:\n");
scanf("%d",&s);
for(i=0,flag=1;flag&&i<n;i++)
{
if(s==stu[i].num)
{
for(j=i;j<n-1;j++)
{
stu[j].num=stu[j+1].num;
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j].author,stu[j+1].author);
strcpy(stu[j].fn,stu[j+1].fn);
strcpy(stu[j].place,stu[j+1].place);
strcpy(stu[j].day,stu[j+1].day);
stu[j].money=stu[j+1].money;
}
flag=0;
}
}
if(!flag)
n=n-1;
else
printf("没有此号\n");
fp=fopen("student","wb");
for(i=0;i<n;i++)
fwrite(&stu[i],sizeof(struct Student),1,fp);
fclose(fp);
fp=fopen("student","r");
printf(" 图书列表\n");
printf("-----------------------------------------------------------\n");
printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
printf("-----------------------------------------------------------\n");
for(i=0;i<n;i++)
{
fread(&stu[i],sizeof(struct Student),1,fp);
printf("%6d %8s %8s %8s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money);
printf("\n");
}
fclose(fp);
}

void Change()/*修改*/
{
FILE *fp;
int i,num,n;
int flag=0;
printf("请输入要修改的图书号:");
scanf("%d",&num);
for(i=0;i<=MAX;i++)
if(stu[i].num==num)
{
printf(" 图书列表\n");
printf("-----------------------------------------------------------\n");
printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
printf("-----------------------------------------------------------\n");
printf("%6d %8s %8s %8s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money);
printf("-----------------------------------------------------------\n\n");
n=i;
flag=1;
break;
}
if(flag==0)
{
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 输入错误!\n");
printf(" 请返回!\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
return;
}
printf("\n\n\n");
fp=fopen("student","rb+");
fseek(fp,n*sizeof(struct Student),0);
printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
scanf("%d%s%s%s%s%s%f",&stu[n].num,stu[n].name,stu[n].author,stu[n].fn,stu[n].place,stu[n].day,&stu[n].money);
fwrite(&stu[i],sizeof(struct Student),1,fp);
fclose(fp);
fp=fopen("student","rb");
printf(" 图书列表\n");
printf("-----------------------------------------------------------\n");
printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
printf("-----------------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++)
{
printf("%6d %8s %8s %8s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money);;
}
printf("-----------------------------------------------------------\n\n");
fclose(fp);
}追问

可不可以将这个程序所用方法,主要思想以及牵涉到的函数再做一总述呢?谢谢,可以继续追加

追答

结构提 加 文件!

追问

可不可以增加图书按价格和按出版日期的排序,以及提供模糊查询和综合查询的功能,可以的话发我邮箱451202397@qq。com,不胜感谢!!

...带解释说明,要答辩的,好的还可以继续追加。可以扩展更多功能...
求高手帮我做一个c语言程序,带解释说明,要答辩的,好的还可以继续追加。可以扩展更多功能,那个管理系统 100 课程报告任务书题目图书信息管理系统主要内容开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充... 课程报告任务书题 目 图...

...带解释说明,要答辩的,好的还可以继续追加。可以扩展更多功能...
我做的学生管理系统,是在linux下运行的,是之前做好的,可分为管理员登录和学生登录,管理员权限可修改、删除、查看(成绩排序,全部信息、单科排序等)、查找(按姓名、学号等),保存,学生权限可修改自己的基本信息、密码、保存。你这个做起来太麻烦了,用我的基本修改点就能哦了,你可以加我4595262...

帮我看下这个c语言课设答辩老师可能会问的问题,顺便解答一下,感激不尽...
我觉得这个方面肯定会问到,但是由于答辩时间有限并不会给你过多时间思考,也不会问太多的问题,所以这个方面你应该好好准备一下:;1、C语言基本概念,主要是程序循环,各个语句的表达语法及意义(这个是基本的);2、设计的总体思路,达到的目的结果;3、设计的过程,从主函数开始写程序...然后程序嵌...

帮我找个c语言程序 300行左右的 要每行后面都有很全的注释,谢谢了
c=atoi(s); \/*将输入的字符串转化为整形数*\/ }while(c<0||c>14); \/*选择项不在0~14之间重输*\/ return c; \/*返回选择项,主程序根据该数调用相应的函数*\/ } STUDENT *init() { return NULL; } \/*创建链表*\/ STUDENT *create() { int i; int s; STUDENT *h=NULL,*info; \/* STUDENT指向...

您能帮我注释下这个C语言程序!!!急用,等着答辩!!!谢谢啊!!!由于字数...
ch=getch();\/*读取一个键盘输入*\/ \/*如果选择退出,则清屏,恢复黑白色,退出*\/ if(ch=='Q'||ch=='q'){ window(1,1,25,80);textbackground(BLACK);textcolor(LIGHTGRAY);clrscr();exit(0);} else {\/*否则将前景色置为黄色,11列22行的“开始游戏”提示清空*\/ textcolor(YELLOW);goto...

大一期末有一个c语言课程设计,需要答辩,我们小组是三个人,但是另外两个...
三个人都要参加,不过他俩啥都不干,没啥用,老师会给你留下好形象的,成绩不会差。

求C语言编日历源代码的详细说明
for( temp = 1; temp <=12; temp++ ) \/\/temp从1到12, 对应一年内12个月 { switch( temp ) \/\/用switch语句将temp和12个月对应起来 { case 1:printf(" January(%d)\\n",year); \/\/一月 break;case 2:printf(" February(%d)\\n",year); \/\/二月 break;case 3:printf(" ...

求大佬帮写一个结构体按总分排序并输出的C语言程序,急急急!?
cout << "编程: " << arr[i].cyy << "\\t";cout << "总分: " << arr[i].all << endl;} } \/\/ 排序: 升序 void sorts(student arr[], int row) { for (int l = 0; l < row - 1; l++) { for (int i = 0; i < row - l - 1; i++) { if (arr[i].all...

求一份单片机答辩的题目和答案 我不是计算机专业的 简单点就行 拜托了...
3.400减50,程序语句上如何SUBB实现呢? 4.C或汇编语言可以用于单片机,C++能吗? 5.学了电子线路、C语言,感觉很迷茫怎么办? 6.8位机还能延续多久? 7.搞单片机开发,一定要会C吗? 8.请问作为学生,如何学好单片机? 9.单片机的生命期还有多长? 10.当开发项目时,用C还是用汇编开发好? 11.如何才能才为单片机的高手...

...要求网上查不到的 最好是简单易懂的 我方便答辩 谢谢大家
2.1总体构思 在用UG进行机械设计时,为了将常用件模块化,首先要把 常用件的三维模型表达出来。对于系列产品,可按照成组技术的 原理进行分类,一组相似的常用件建立一个三维模型,即所谓的 三维模型样板。根据UG参数化设计思想,一个三维模型样板可 认为是一组尺寸不同、结构相似的系列化零部件的基本模型。

相似回答