图书信息管理系统课程设计报告--C语言程序设计

合集下载

c语言课程设计报告图书管理系统

c语言课程设计报告图书管理系统

c语言课程设计报告图书管理系统一、教学目标本课程的目标是使学生掌握C语言的基本语法,熟悉图书管理系统的开发流程,培养学生运用C语言解决实际问题的能力。

具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构。

–理解图书管理系统的需求和设计原理。

2.技能目标:–能够使用C语言编写简单的程序。

–学会使用C语言实现图书管理系统的功能。

3.情感态度价值观目标:–培养学生的团队协作意识和沟通能力。

–增强学生对计算机科学和编程的兴趣和热情。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构以及图书管理系统的开发。

具体安排如下:1.C语言的基本语法:–变量和数据类型–运算符和表达式–函数和数组–指针和引用2.数据结构:3.图书管理系统的开发:–系统测试和优化三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性。

具体方法如下:1.讲授法:用于讲解C语言的基本语法和数据结构。

2.案例分析法:通过分析具体的图书管理系统案例,使学生更好地理解系统设计和功能实现。

3.实验法:让学生动手编写程序,巩固所学知识,提高实际操作能力。

4.小组讨论法:鼓励学生分组讨论,培养团队协作意识和沟通能力。

四、教学资源本课程所需的教学资源包括:1.教材:《C语言程序设计》2.参考书:《C Primer Plus》、《数据结构与算法分析》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络设备以上教学资源将用于支持教学内容和教学方法的实施,丰富学生的学习体验。

五、教学评估本课程的评估方式包括平时表现、作业、考试等。

评估方式应客观、公正,能够全面反映学生的学习成果。

具体安排如下:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的20%。

2.作业:包括编程练习和理论作业,占总评的30%。

3.考试:包括期中和期末考试,占总评的50%。

期中和期末考试将涵盖C语言基本语法、数据结构以及图书管理系统的开发内容。

《C语言程序设计》课程设计报告(图书信息管理系统)

《C语言程序设计》课程设计报告(图书信息管理系统)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:会计学院专业:会计学年级:2012班别: 4班指导教师:组长:同组成员:目录一、目的 (1)二、需求分析 (1)三、概要设计 (1)四、详细设计 (3)五、调试分析 (4)六、测试结果 (5)七、用户使用说明 ................................................. 错误!未定义书签。

八、课程设计总结..................................................................................错误!未定义书签。

附录:参考代码 ..................................................... 错误!未定义书签。

图书信息管理系统 ........................................... 错误!未定义书签。

一目的本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会。

将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。

二需求分析根据图书馆图书信息管理的需要,建立一个“图书信息管理系统”,以方便对图书的各项管理操作。

开发目的如下:1、图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

2、图书信息管理系统,提供以下功能:1)图书信息录入功能(图书信息用文件保存)--输入;2)图书信息浏览功能--输出;3)查询和排序功能:--算法;4)按书名查询;5)按作者名查询;6) 按登录号从大到小排列;7)图书信息的删除与修改三概要设计程序总体功能框架:开始界面主要提示的菜单界面插入图书信息浏览图书信息查询图书信息删除图书信息修改图书信息采用结构:struct tsxx{ //定义结构 long dlnum; //定义登录号 char bname[10]; //定义书名 char aname[10]; //定义作者名 char scnum[10]; //定义分类号 char plname[10]; //定义出版社名 char time[11]; //定义录入时间 float price; //定义价格struct tsxx * next;//定义指向下一个结构的首地址};链表结构:head各功能独立自定义的函数:1、插入图书信息(按登录号从大到小排序):struct tsxx * zengjia(struct tsxx * head)//传递链表的首地址,并返回链表的首地址 2.、浏览全部的图书信息:void Ptrint_Stu_Doc(struct tsxx *head) //传递链表的首地址3、查询图书信息(包括书名查询和作者名查询):void Check(struct tsxx * head)//传递链表的首地址4、删除图书信息:struct tsxx * Delete(struct tsxx * head)//传递链表的首地址,并返回链表的首地址 5.、修改图书信息:struct tsxx * revise(struct tsxx * head)//传递链表的首地址,并返回链表的首地址其他一些变量的定义:long size; //定义结构的大小 FILE * fp; //定义文件指针,指向文件 struct tsxx * head; //定义链表的首地址 struct tsxx * p; //定义结构指针 char choice; //定义选择变量struct tsxx Astruct tsxx Bstruct tsxx Cstruct tsxx DNULL四详细设计1、设计思路:首先,输入一些图书信息,申请一个结构类型的动态内存,把图书信息赋值到动态内存内,每一快动态内存存放一本图书的信息,并形成一条链表,比较登录号的大小,按登录号从大到小排列;然后,建立并打开一个文件,把链表中的数据写入文件中,然后关闭文件;最后,插入功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,输入你想要插入的图书信息,比较登录号的大小,然后把新的图书信息按照登录号的大小顺序插入链表里面,新建一个文间,把新的链表写入文件中;浏览功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,然后链表头开始,把结构中的数据一个一个输出到界面上;查询功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表;选择你要查询的方式:1是按书名查询,2是按作者名查询。

图书信息管理系统——C语言课程设计报告

图书信息管理系统——C语言课程设计报告

课程设计报告课程名称 C语言程序设计课题名称图书信息管理系统专业电子技术班级 1101班学号 201101040240姓名陈正军指导教师2012年 6 月 19 日湖南工程学院课程设计任务书课程名称C语言程序设计课题图书信息管理系统专业班级电子技术1101班学生姓名陈正军学号 201101040240指导老师审批任务书下达日期 2012 年 6月 19日任务完成日期2012 年 7 月 4 日一、设计内容与设计要求1.设计内容:图书信息管理系统设计涉及的知识点:①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;②掌握数组的基本概念。

熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。

③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。

④掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。

⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。

2.设计要求:1)用C语言实现系统;利用结构体数组实现图书信息的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。

2) 建立一个图书信息数据库,文件名为book.txt,并从该文件中读取数据;3) 图书信息管理系统应能提供以下功能:①系统以菜单方式工作②图书信息显示功能;能以表格形式显示图书库中所有信息,且应有表头。

③图书信息追加功能;追加一条(或多条)新记录,要求在追加过程中有相应的提示信息,完成追加后能重新排序和显示;④图书信息查询功能;a. 按书名查询;b. 按单价查询;c. 按出版单位查询;d. 按出版时间查询e. 按分类号查询;f. 按入库时间查询要求系统在上述查询方式中至少应有两种以上的查询方式,且能显示符合条件的所有记录。

图书信息管理系统设计—C语言课程设计

图书信息管理系统设计—C语言课程设计

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

设计一图书信息管理系统,使之能提供以下功能:(1) 系统以菜单方式工作(2) 图书信息录入功能(3) 图书信息浏览功能(4) 图书信息查询功能(5) 图书信息的删除与修改功能NY主函数流程图建立menu()函数将主函数功能提取出来,主函数main 调用menu()函数方便简捷。

void main (){menu ();}void menu (){int a;do{printf (” ******赵毅******\n") ;printf("\n");printf(”******中国地质大学******\n");printf ("\n”) ;printf ("\n\n\n\n\n\t\t\t\t 图书信息管理系统\t\t\t\t\n");printf(”\t\t*************************** **** *************\n”);printf ("\t\t\t1 —-—---—————-—-——图书信息录入\n”);printf(”\t\t\t2 -——----——--—----图书信息浏览\n”) ;printf(”\t\t\t3 ———-—-——--—-—--—图书信息查询\n");printf (” \t\t\t4 -——-—-——-—-—---—图书信息删除\n");printf("\t\t\t5 -——-------—--——-图书信息修改\n");printf ("\t\t\t6 -———-—-——————---图书信息追加\n") ;printf("\t\t\t0 -————-—-—----—-—退出图书信息系统\n”) ;printf("\t\t********************************************\n");printf(”\t\tplease choose: ") ;scanf (”%d",&a);switch (a){case 1:input() ;break;case 2:list ();break;case 3:search();break;case 4:del ();break;case 5:revise();break;case 6:append();break;case 0:exit(0);default:printf ("\n 序号不对\n”) ;}}while(a!=0);}#include<stdio.h〉#include〈stdlib.h〉#include<string.h>#include<conio.h>void menu() ;#define N 3typedef struct system{long num;char name[20];char writer[10];char sort[10];char publisher[20];long time;float price;}BOOK;N 为限定的录入图书个数(可依据不同要求变化范围)long num 为定义的登录号(长整形变量)char name[20]为定义的书名的数组char writer[10]为定义的作者的数组char sort [10]定义的分类号数组char publisher [20]定义的出版单位数组long time 定义的出版时间长整形变量float price 价格为浮点型变量。

图书管理系统c课程设计报告

图书管理系统c课程设计报告

图书管理系统c 课程设计报告一、教学目标本课程旨在通过学习图书管理系统的设计与实现,使学生掌握数据库的基本操作、编程语言的应用以及软件工程的实践方法。

在知识目标上,学生应理解数据库的概念、结构及其在图书管理中的应用;掌握至少一种编程语言的基本语法和编程技巧;了解软件开发的流程和规范。

技能目标则要求学生能够独立设计简单的图书管理系统数据库;编写程序实现图书的增删改查等操作;运用软件工程的方法完成一个小型的图书管理项目。

情感态度价值观目标强调培养学生对计算机科学的兴趣,增强创新意识和团队协作精神,同时培养学生的信息素养,使其能够合法、合理地使用信息技术。

二、教学内容本课程的教学内容围绕图书管理系统的设计与实现展开,具体包括以下几个部分:1.数据库基础:介绍数据库的基本概念、数据模型以及SQL语言的使用,让学生掌握如何创建、查询和管理数据库。

2.编程语言应用:通过实例教学,使学生熟悉至少一种编程语言(如C语言)的基本语法,培养学生编写程序解决问题的能力。

3.软件工程实践:讲解软件开发的生命周期,包括需求分析、设计、编码、测试和维护等环节,强调编程规范和团队合作的重要性。

4.项目实现:指导学生利用所学知识设计并实现一个简易的图书管理系统,涵盖图书的录入、查询、借阅等功能。

三、教学方法为了提高教学效果,将采用多种教学方法相结合的方式进行授课:1.讲授法:用于传授数据库理论基础、编程语言的基本语法和软件工程的概念。

2.案例分析法:通过分析具体的图书管理案例,使学生理解数据库设计和程序实现的过程。

3.实验法:安排实验室实践环节,让学生动手编写代码,实际操作数据库,加深理解和实践能力。

4.小组讨论法:学生分组完成项目设计,鼓励学生相互讨论、协作解决问题,培养团队精神和沟通能力。

四、教学资源教学资源将包括:1.教材:《数据库原理与应用》、《C程序设计》等,为学生提供理论学习的坚实基础。

2.多媒体资料:包括教学PPT、案例视频等,增强课堂的互动性和趣味性。

c语言课程设计报告 图书管理系统

c语言课程设计报告 图书管理系统

第一章§ 1.1 题目描述图书管理系统设计:【要求】图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。

试设计一图书管理系统,使之能提供以下功能:(1)新图书基本信息的输入;(2)图书基本信息的查询;(3)对撤销图书信息的删除;(4)办理借书手续;(5)办理还书手续;【提示】建立图书馆里信息结构体,结构体成员包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号。

存在状态设为整型,可用不同数字代表借还状态。

借书和还书手续要注意修改结构体的成员变量存在状态的值。

§ 1.2 算法设计1.设计思想:在整个系统编写的过程中,涉及了较多 C 语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。

由此进一步加深、巩固了所学的课程的基本理论知识,培养了综合分析问题、解决问题的能力。

在设计程序时,参考了学校图书馆的图书管理系统,实现了程序的模块化、结构化。

在主函数中调用各种函数,操作界面简单,易操作,人机互动性较强。

2.实现注释:这个实用的小型图书管理系统程序以结构体数组指针操作完成,并实现文件信息的录入、修改和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。

本图书管理系统分为管理员和学生两个部分,其基本功能包括了对图书信息的存储、查询、添加、删除和借书、还书手续办理等。

查询时可按书名、编号等方式查询,找到后输出这本书的所有信息。

可查询图书的在库状态,方便用户进行借书、还书操作。

在借书还书成功后图书的在库状态自动改变,并更新信息到数据库。

系统中主要的数据结构就是图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。

在处理过程中各项可以作为一本图书的不同属性来进行处理。

3 •结构体系设计图1.1 :主函数结构;图1.2 :新书信息录入流程;图 1.3 :图书信息查询(管理员)流程;图1.4 :图书信息查询(学生)流程;图 1.5 :图书信息删除流程;图 1.6 :办理借书手续流程;图 1.7 :办理还书手续流程;S1.1囹1.4•管理负功能菜单<圈书信息删除出枪索结果/S1.5>学生功能菜单办理借书手续输出檢索结果一是借书办湮成功<1 ------------------- •辐入个人信息/■图1.6^l.T1.3 程序设计及代码分析1.程序设计:下面,我大致介绍一下我的系统的主要功能和注意事项:当运行此程序时,首先进入系统主界面,然后可以选择[1]. 管理员登陆(密码:123),[2]. 学生登陆,[0]. 退出系统;选择[1] 后进入管理员系统,验证密码成功后显示管理员功能菜单,按数字键选择所需服务。

图书管理系统C语言程序设计实验报告

图书管理系统C语言程序设计实验报告
scanf("%f",&f);
books[i].price=f;
i++;
flushall();
printf("is Continue(y/n)?:");
scanf("%c",&isCon);
}
printf("\n --%d种图书信息输入完毕!--\n",i);
printf("\n按任意键返回主菜单!");
{
FILE*fp;
int i;
char filename[40];
//clrscr();
printf("\n input SAVE filename=");
scanf("%s",filename);
if ( (fp=fopen(filename, "w")) == NULL)
{
printf("\n %s file NOT open! press any key exit system.");
printf("\n input READ filename=");
scanf("%s",filename);
if ( (fp=fopen(filename, "r")) == NULL)
{
printf("\n %s file NOT open! press any key exit system.");
〔2〕执行编译操作,并根据提示调试此程序,排除所有的错误和警告。直到编译成功为止。
〔3〕执行运行操作,逐一对每个模块进行调试,直到全部程序运行成功为止。

C语言课程设计图书管理系统课程设计报告

C语言课程设计图书管理系统课程设计报告

C语言课程设计图书管理系统Books Management System学生姓名张朝柱学院名称徐州工程学院学号20130566140班级13计转本专业名称计算机科学与技术指导教师李子龙2016年5月10日一、需求分析为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。

使用c语言编写了图书管理系统。

本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。

实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。

所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。

图书信息包括编号、书名、作者、数量、在库状态等。

图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、借阅、还书等基本操作。

整个程序实现顺序表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。

二、算法设计:1.设计思想:整个系统制造的而过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。

进一步加深、巩固了所学的专业的基本理论知识,培养了综合分析问题、解决问题的能力。

在设计程序时,实现了程序的模块化、结构化。

在主函数中调用各种子函数,操作界面简单,易操作。

2,设计表示:(1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。

主要实现了图书的录入、存储、查询、借书、还书、显示库存等功能。

(2)、void Book_Entering(struct SqList &SL);这是一个录入图书信息的函数,它主要实现了顺序表的创建,并且在创建过程中从文件读取信息到顺序表中,以用于后面其他函数的操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图书信息管理系统课程设计报告--C语言程序设计德州学院计算机系课程设计报告实习名称程序设计课程设计设计题目图书信息管理系统实习时间2010.06.27-2010.07.04专业班级网络工程指导老师教学单位(盖章)小组分工情况:二O一O年七月五日课程设计报告正文内容及格式要求:1、正文部分主要包括:选题背景、论点或方案论证、过程(设计或实验)论述、结果分析、结论或总结。

2、标题:题目用小二号黑体字(加黑),居中;副标题用三号黑体字,紧挨正标题下居中,文字前加破折号。

英文题目为18磅加粗Times New Roman字,副标题为16磅加粗Times New Roman字。

3、课程设计报告格式要求:一级标题用小三号黑体字;二级标题用四号黑体字;三级标题用小四号黑体字;正文用宋体小四号字(英文用12磅Times New Roman字),采用1.5倍行距,标准字符间距:页码一律用小5号字标明。

4、课程设计报告撰写要求:(1)文字通顺,语言流畅,能将设计过程表述清楚。

(2)图表整洁,布局合理,须按国家规定的绘图标准绘制。

(3)报告字数不少于3千字。

C语言程序设计报告---图书管理系统一、实验准备做系统前,首先,自己详细看了《C程序设计教程》(教科书)的第十章《文件》,基本自学会了文件的相关内容,理解了相关函数的用法和作用;另,上网查询了很多相关资料,还有找了很多相关的系统,都详细的看了一遍,加深了对C的理解以及对文件的相关内容进一步理解。

学习了C语言的内容,图书信息管理系统有助于C语言学习的进一步巩固,在本系统可以增强对指针、数组、文件、函数等基本知识的进一步理解。

另外图书信息管理系统也是学校常用的基本系统之一,它有助于学校对图书馆书籍的基本管理。

二、功能简介图书信息管理系统是对图书信息的基本管理,它包括:图书信息的输入、图书信息的修改及删除、图书信息的查询、图书信息的添加、图书信息的浏览。

使用模块化编程的方法每项功能有一个或多个函数组合来完成.三、系统与性环境系统可以在MicrosoftVisualC++6.0软件运行,硬件基本无要求,现在的计算机基本都可以运行该系统。

四、功能划分及详细说明主要算法的设计:(1) 主函数的算法设计首先,运行程序,进入菜单,然后选择操作(运用swith语句),调用各子函数。

在返回操作中运用while 语句进行控制返回菜单。

(2) 各子函数的算法设计1、图书信息的输入函数函数假真2、图书信息的修改3、图书信息的查询void search()选择查询方式,1按书号查询,2按书名查询,然后定位,再调用输出函数;4、图书信息的浏览首先,输出所有图书的信息,并输出图书记录数,然后调用辅助函数进行菜单选择,操作完成后返回主菜单。

5、图书信息的添加首先,从文件中调用函数读入函数,再输入要添加数,然后添加图书信息,并保存。

上机调试过程:在调试过程中出现了许多的错误!特别是在查询、修改删除这2个函数的调上花费了很多时间,主要是文件的写入与读出以及菜单调试的问题,还有建立新的链接也出现问题,说明自己对程序的执行过程理解不够深刻。

五、源程序#include<stdio.h>#include<malloc.h>#include<string.h>#include<stdlib.h>#define LEN sizeof(stu)typedef struct student{long number;char name[10];char sex[3];int age;float chinese;float math;float english;float sum;float average;struct student *next;}stu;book *creat(void);book *changes(book *head);book *modify(book *head,long num);book *del(book *head,long num);book *insert(book *head,book *stud); book *input(book *head,book *p1);void sort(book *head);void total_average_sort(book *head); void chinese_sort(book *head);void math_sort(book *head);void english_sort(book *head);void print(book *head);void Statistics(book *head);void search(book *head);void numsearch(book *head,long num); void namesearch(book *head,char name[]); int n;book *creat(void){book *head,*p1,*p2;n=0;p1=p2=(book *)malloc(LEN);printf("请输入图书信息!\n");head=NULL;p1=input(head,p1);while(p1->number!=0){n=n+1;if(n==1) head=p1;else p2->next=p1;p2=p1;p1=(book *)malloc(LEN);p1=input(head,p1);}p2->next=NULL;return(head);}book *input(book *head,book *p1)/*输入图书的信息*/{int i,f,k;book *p2;loop:printf("图书号(为整数,输入0时返回上一级):");scanf("%ld",&p1->number);if(p1->number<0){printf("图书号不能为负数,请重新输入!\n");goto loop;}else{if(p1->number==0)return(p1);else{p2=head;f=0;for(i=1;i<=n;i++){if(p1->number==p2->number){f=1;break;}p2=p2->next;}}if(f){printf("图书不能重复,请重新输入!\n");goto loop;}}printf("书名:");scanf("%s",p1->name);loop1:printf("类别: 1.文科 2.理科 \n");printf("请选择类别:");scanf("%d",&k);switch(k){case 1:strcpy(p1->sex,"文科");break;case 2:strcpy(p1->sex,"理科");break;default:printf("类别只能是“文科”或“理科”,请重新输入!\n");goto loop1;}printf("存期:");scanf("%d",&p1->age);while(p1->age<0||p1->age>120){printf("你输入的存期不符合实际情况,请重新输入!\n");printf("存期:");scanf("%d",&p1->age);}printf("章数:");scanf("%f",&p1->chinese);while(p1->chinese<0||p1->chinese>100){printf("你输入的章数不符合实际情况,请重新输入!\n");printf("章数:");scanf("%f",&p1->chinese);}printf("页数:");scanf("%f",&p1->math);while(p1->math<0||p1->math>100){printf("你输入的页数不符合实际情况,请重新输入!\n");printf("页数:");scanf("%f",&p1->math);}printf("阅读次数:");scanf("%f",&p1->english);while(p1->english<0||p1->english>100){printf("你输入的阅读次数不符合实际情况,请重新输入!\n");printf("阅读次数:");scanf("%f",&p1->english);}p1->sum=p1->chinese+p1->math+p1->english;p1->average=p1->sum/3;return(p1);}void search(book *head){int k;long num;char name[10];if(n==0){printf("数据库为空,没有图书的记录!\n");return;}else{do{printf("1. 按书号查找 2. 按书名查找 0. 返回上一级\n");printf("请选择:");scanf("%d",&k);switch(k){case 1:do{printf("书号(输入0时跳出按书号查找):");scanf("%ld",&num);if(num==0)break;else{if(num>0)numsearch(head,num);elseprintf("输入错误,请重新选择!\n");} }while(1);break;case 2:do{printf("书名(输入0时跳出按书名查找):");scanf("%s",name);printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t平均次数\n");namesearch(head,name);}while(strcmp(name,"0")!=0);break;case 0:break;default:printf("输入错误,请重新选择!\n");}}while(k!=0);}}void numsearch(book *head,long num){book *p1;p1=head;while(p1!=NULL){if(num==p1->number){printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t平均次数\n");printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number, p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1 ->average);return;}p1=p1->next;}printf("没有找到你要查找的图书信息!\n");}void namesearch(book *head,char name[]){int a=1;book *p1;p1=head;while(p1!=NULL){if(strcmp(name,p1->name)==0){printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number, p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1 ->average);a=0;}p1=p1->next;}if(a)printf("没有找到你要查找的图书信息!\n");}book *changes(book *head){book *p1;int k;long num;do{printf("1. 修改 2. 删除 3. 插入 0. 返回上一级\n");printf("请选择:");scanf("%d",&k);switch(k){case 1:do{if(n==0){printf("数据库为空,没有图书的记录!\n");break;}else{printf("请输入图书的书号(书号应为整数,输入0时跳出修改数据):");scanf("%ld",&num);if(num==0)break;else{if(num>0)head=modify(head,num);elseprintf("书号不能为负数,请重新输入!\n");} }}while(1);break;case 2:do{if(n==0){printf("数据库为空,没有图书信息!\n");break;} else{printf("请输入要删除的图书的书号(书号应为整数,输入0时跳出删除元素):");scanf("%ld",&num);if(num==0)break;else{if(num>0)head=del(head,num);elseprintf("书号不能为负数,请重新输入!\n");} }}while(1);break;case 3:printf("请输入图书信息!\n");p1=(book *)malloc(LEN);p1=input(head,p1);while(p1->number!=0){head=insert(head,p1);print(head);printf("请输入图书信息!\n");p1=(book *)malloc(LEN);p1=input(head,p1);}break;case 0:break;default:printf("输入错误,请重新输入!\n");}}while(k!=0);return(head);}void sort(book *head){int k;if(n==0){printf("数据库为空,没有图书记录!\n");return;}do{printf("1.按书号排序 2.按总次数和平均次数排序 3.按章数成绩排序 4.按页数排序 5.按阅读次数排序 0.返回上一级\n");printf("请选择:");scanf("%d",&k);switch(k){case 1:print(head);break;case 2:total_average_sort(head);break;case 3:chinese_sort(head);break;case 4:math_sort(head);break;case 5:english_sort(head);break;case 0:break;default:printf("输入错误,请重新输入!\n");}}while(k!=0);}void total_average_sort(book *head){book *p1,*p2;int j=0;float max,k=301;printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t 平均次数\n");do{max=0;for(p1=head;p1;p1=p1->next)if(p1->sum>max&&p1->sum<k){max=p1->sum;p2=p1;}k=max;for(p1=p2;p1;p1=p1->next)if(p1->sum==max){printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number, p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1 ->average);j++;}}while(j<n);}void chinese_sort(book *head){int j=0;float k=101,max;book *p1,*p2;printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t 平均次数\n");do{max=0;for(p1=head;p1;p1=p1->next)if(p1->chinese>max&&p1->chinese<k){max=p1->chinese;p2=p1;}k=max;for(p1=p2;p1;p1=p1->next)if(p1->chinese==max){printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number, p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1 ->average);j++;}}while(j<n);}void math_sort(book *head){int j=0;float k=101,max;book *p1,*p2;printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t 平均次数\n");do{max=0;for(p1=head;p1;p1=p1->next)if(p1->math>max&&p1->math<k){max=p1->math;p2=p1;}k=max;for(p1=p2;p1;p1=p1->next)if(p1->math==max){printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number, p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1 ->average);j++;}}while(j<n);}void english_sort(book *head){int j=0;float k=101,max;book *p1,*p2;printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t 平均次数\n");do{max=0;for(p1=head;p1;p1=p1->next)if(p1->english>max&&p1->english<k){max=p1->english;p2=p1;}k=max;for(p1=p2;p1;p1=p1->next)if(p1->english==max){printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number, p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1->average);j++;}}while(j<n);}book *modify(book *head,long num){book *p1;int k,m;p1=head;while(p1!=NULL){if(p1->number==num)break;p1=p1->next;}if(p1->number==num){do{printf("1.书名 2.类别 3.存期 4.章数成绩 5.页数6.阅读次数 0.返回上一级\n");printf("请选择:");scanf("%d",&k);switch(k){case 1:printf("书名:");scanf("%s",p1->name);printf("修改成功!\n");break;case 2:loop2:printf("类别: 1.文科 2. 理科\n");printf("请选择类别:");scanf("%d",&m);switch(m){case 1:strcpy(p1->sex,"文科");break;case 2:strcpy(p1->sex," 理科");break;default:printf("类别只能是“文科”或“理科”,请重新输入!\n");goto loop2;}printf("修改成功!\n");break;case 3:printf("存期:");scanf("%d",&p1->age);while(p1->age<0||p1->age>120){printf("你输入的存期不符合实际情况,请重新输入!\n");printf("存期:");scanf("%d",&p1->age);}printf("修改成功!\n");break;case 4:printf("章数成绩:");scanf("%f",&p1->chinese);while(p1->chinese<0||p1->chinese>100){printf("你输入的章数成绩不符合实际情况,请重新输入!\n");printf("章数成绩:");scanf("%f",&p1->chinese);}p1->sum=p1->chinese+p1->math+p1->english;p1->average=p1->sum/3;printf("修改成功!\n");break;case 5:printf("页数:");scanf("%f",&p1->math);while(p1->math<0||p1->math>100){printf("你输入的页数不符合实际情况,请重新输入!\n");printf("页数:");scanf("%f",&p1->math);}p1->sum=p1->chinese+p1->math+p1->english;p1->average=p1->sum/3;printf("修改成功!\n");break;case 6:printf("阅读次数:");scanf("%f",&p1->english);while(p1->english<0||p1->english>100){printf("年输入的阅读次数不符合实际情况,请重新输入!\n");printf("阅读次数:");scanf("%f",&p1->english);}p1->sum=p1->chinese+p1->math+p1->english;p1->average=p1->sum/3;printf("修改成功!\n");break;case 0:break;default:printf("输入错误,请重新选择!\n");}}while(k!=0);}elseprintf("没有找到你要修改的图书的信息!\n");return(head);}book *del(book *head,long num){book *p1,*p2;if(head==NULL){printf("数据库为空,没有图书记录! \n");goto end;}p1=head;while(num!=p1->number&&p1->next!=NULL){p2=p1;p1=p1->next;}if(num==p1->number){if(p1==head){head=p1->next;printf("删除成功!\n");}else {p2->next=p1->next;printf("删除成功!\n");}n=n-1;}else printf("没有找到你要删除的图书信息!\n",num);end:;return(head);}book *insert(book *head,book *stud){book *p0,*p1,*p2;p1=head;p0=stud;if(head==NULL){head=p0;p0->next=NULL;}else{while((p0->number>p1->number)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}if(p0->number<=p1->number){if(head==p1)head=p0;else p2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}n=n+1;return(head);}void Statistics(book *head){book *p1;int i,c=0,m=0,e=0;float cmax=0,mmax=0,emax=0,summax=0,averagemax=0; p1=head;for(i=1;i<=n;i++){if(p1->chinese>=cmax)cmax=p1->chinese;if(p1->math>=mmax)mmax=p1->math;if(p1->english>=emax)emax=p1->english;if(p1->sum>=summax)summax=p1->sum;if(p1->average>=averagemax)averagemax=p1->average;if(p1->chinese<60)c++;if(p1->math<60)m++;if(p1->english<60)e++;p1=p1->next;}printf("总成绩最高分:%5.1f\n",summax);printf("平成绩最高分:%5.1f\n",averagemax);printf("章数最多:%5.1f\n",cmax);printf("页数最高分:%5.1f\n",mmax);printf("阅读次数最多:%5.1f\n",emax);printf("章数最少:%d\n",c);printf("页数最少:%d\n",m);printf("阅读次数最少:%d\n",e);printf("\n");}void print(book *head){book *p1;printf("\n现在的%d个图书记录为:\n",n);p1=head;if(head!=NULL){printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t平均次数\n");do {printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number,p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1->average);p1=p1->next;}while(p1!=NULL);}}void main(){int choice;book *head;do{/*打印表头*/printf("*******************************************************************************\n");printf("^_^_^_^_^_^_^_^_^_^_^_^_^_^欢迎来到图书成绩管理系统!^_^_^_^_^_^_^_^_^_^_^_^_^_^\n");printf(" \n");printf(" 图书成绩管理系统的基本功能: \n");printf(" 1. 新建; \n");printf(" 2. 查找; \n");printf(" 3. 更新; \n");printf(" 4. 排序; \n");printf(" 5. 统计; \n");printf(" 6. 显示; \n");printf(" 0. 跳出; \n");printf(" \n");printf(" 按键选择,回车确定! \n");printf("\n");printf("^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^\n");printf("*******************************************************************************\n");printf("请选择:");/*提示用户选择操作功能*/scanf("%d",&choice);while(getchar()!='\n');/*接收回车符*/switch(choice){case 1:head=creat();print(head);break;case 2:search(head);break;case 3:head=changes(head);break;case 4:sort(head);break;case 5:Statistics(head);break;case 6:print(head);break;case 0:break;default:printf("输入错误,请重新选择!\n");}}while(choice!=0);}说明:基本上实现了题目所要求的函数功能,可以对图书的信息进行输入、浏览、查询、修改、添加等功能管理。

相关文档
最新文档