图书登记管理程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
苏州市职业大学课程设计任务书
课程名称:
起讫时间:
院系:电子工程系
班级:计算机应用
指导教师:
系主任:
目录
一.需求分析 (2)
图书登记管理程序 (2)
二.概要设计 (3)
三.详细设计 (5)
流程图:................................................................................. 错误!未定义书签。
详细设计:............................................................................. 错误!未定义书签。
整个程序运行结果: (6)
菜单 (6)
初始化程序及输入所有书的信息: (7)
输出所有书的信息: (7)
给定编号,显示该本书的信息: (8)
查找书的信息: (8)
插入书的信息: (9)
修改书的信息: (9)
退出程序: (10)
四.用户使用说明 (10)
五.测试结果 (11)
六.附录 (13)
七.参考文献 (17)
八.总结 (19)
一.需求分析
随着科学技术的进步,计算机行业的迅速发展,大大提高人们的工作效率。
计算机信息处理系统的引进已彻底改变了许多系统的经营管理。
图书管理系统是学校管理机制中的重要组成部分,通过对图书管理系统的运行管理机制进行调查研究,开发了此图书系统。
本系统中解决了学校图书管理事务中的常用基本问题以及相关统计工作。
本系统中包含6个功能模块:系统设置,读者管理,图书管理,图书借还,系统查询和更改口令。
本程序由XXX,XXX,XXX,XXX四人共同设计,用以实现以下功能:
图书登记管理程序
【题目描述】
请设计一个图书登记管理程序。
该程序应该具有下列功能:
(1) 通过键盘输入某些图书的信息;
(2) 给定图书编号,显示该本图书的信息;
(3) 给定作者姓名,显示所有该作者编写的图书信息;
(4) 给定图书编号,修改该图书的出版社信息;
(5) 给定图书编号,删除该本图书的信息;
(6) 提供一些统计各类信息的功能。
(可选)
【题目要求】
(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;
(2) 图书信息应该包含:编号、书名、作者姓名、出版社、价格等;
(3) 为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。
【输入要求】
应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示)。
用户可以根据需求,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
【输出要求】
(1) 应用程序运行后,要在屏幕上显示一个菜单;
(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
【提示】
设计一个结构类型和一维数组类型,用来保存图书信息。
【实验步骤】
(1)装入给定程序模板,运行演示;
(2)根据题目要求,修改数据类型,添加必要的变量,实现功能(1)和(2),并进行调试;
(3)实现功能(3)和(4),并进行测试;
(4)实现功能(5)和(6),并进行调试;
(5)编写实验报告。
二.概要设计
1.制作这样一个系统需要用到以下几个语句:
if()else(),do()while,for(),void DisplayMenu();int choiceItem();void Init(struct book *);void PrintInfo(struct book *);void Print_aInfo(struct book *) ;int Search(struct book *);void Insert(struct book *);void Modify(struct book *),void DeleInfor(struct book *);等用以实现输入,输出,修改和排序等功能。
2.工作界面的退出。
用户需要退出时,可以根据屏幕上的提示来进行相应的选择。
3.程序设计思路
整个系统除了主函数外,另外还有11个函数,实现八大功能:菜单显示功能,菜单选择功能,输入功能,显示功能,查找功能,修改功能,插入功能,删除功能。
各个函数的详细设计说明分别如下:
(1).主函数main()
主函数是程序的入口,采用模块化的设计,主函数不宜复杂,功能尽量在各个模块中实现。
首先声明一些必要的变量,然后做一些循环程序,循环体为一个开关语句,该语句的条件值是通过主菜单得到的返回值,根据该值,调用相应的个功能函数。
(2).初始化函数Init()
这是一个无参函数,里面只有一个语句,它的作用是使结构体初始化。
没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码。
(3)菜单显示函数DisplayMenu()
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的七大功能,根据每个功能前面的序号进行选择。
等执行完每一个函数功能后,按任意键回到主界面也要通过这个函数来实现!
(4).菜单选择函数choiceItem()
定义一个变量choice, 用来接收用户从键盘输入的数字,然后返回choice的值。
根据显示的菜单,用户可根据需要选择数字,实现相应的操作。
(5)输入一本书信息的函数Print_aInfo()
这个函数,用来执行书的名字,作者,出版社,价钱等信息的输入。
用printf语句进行操作提示,根据提示,可以输入一本书编号的信息。
(6)输入所有书的信息函数Init ()
使程序初始化,并输入书的名字,作者,出版社,价钱等信息。
(7)输出所有书信息函数PrintInfo()
该函数负责对全部书信息的输出。
通过一个do()while语句,先判断是否存在想要输出的书信息。
若存在,则输出每一本书的信息。
(8)查找指定书信息函数search()
按照编号查找,并显示所查找的记录。
输入所要查找的书的编号num,在do()while循环内先查找与要查找的编号是否相同,若相同,则返回i,反之,则返回-1。
(9).修改指定书信息函数modify()
调用该函数可以根据书的编号修改该本书的名字,作者,出版社,价格等信息。
通过调用Print_aInfo()函数来修改某书出版社信息。
因为信息已存在,这是调用Print_aInfo ()函数输入新的出版社,把原来的信息覆盖掉了,实现了修改出版社信息的功能。
(10)插入一本书信息函数Insert();
调用该函数可以插入一本书的信息,如:书名,作者,出版社,价格等。
三.详细设计
通过键盘输入查找一本书的信息:
#define MUNMAX 5 定义书的数目为5本
struct book 定义书的结构体类型
void DisplayMenu() /*显示菜单*/
{
printf("\n========= MENU =========");
printf("\n Init book's informations ............... 1"); /*初始化书的信息*/
printf("\n Print book's informations .............. 2"); /*输出所有书的信息*/
printf("\nprintf a book's information............ . 3"); /*输出一本书的信息*/
printf("\n Search a book's information .............4"); /*查找一本书的信息*/
printf("\n Insert a book's information .............5"); /*插入一本书的信息*/
printf("\n Modify a book's information .............6"); /*修改一本书的信息*/
printf("\n delete a book's information .............7"); /*删除一本书的信息*/
printf("\n exist system ............................... 0");
printf("\nchoice,please:");
}
int choiceItem() /*菜单选择*/
{
int choice;
do{
DisplayMenu();
scanf("%d",&choice);
}while(choice<0||choice>6); /*当大于6或小于0时返回菜单选择目录*/
return choice;
}
int Search(struct book *s) /*查找一本书的信息*/
{ long num;
int i=0;
printf("\nEnter num:"); /*通过键盘输入某书的编号*/
scanf("%d",&num);
do{
if(s[i].num==num) /*如果查找的书的编号与循环体内有的书的编号相同*/
return i; /*返回i */
i++;
}while(s[i].num!=0); /*循环语句*/
return -1; /*如果查找的书的编号与循环体内有的书的编号不相同,则返回-1 */ }
整个程序运行结果:
菜单
初始化程序及输入所有书的信息:输出所有书的信息:
给定编号,显示该本书的信息:查找书的信息:
插入书的信息:修改书的信息:
退出程序:
四.用户使用说明
通过键盘输入查找一本书的信息:
五.测试结果
在调试过程中出现了一些错误,后来在组员的共同探讨和查找下发现并解决了问题:有错误的程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUMMAX 5
struct book{ /*结构类型定义*/
long num;
char bname[4],author[4],publisher[4];
float price;
};
int Search(struct book *s) /*查找*/
{
long num;
int i=0;
printf("\nEnter num:");
scanf("%d",&num);
do{
if(s[i].num==num);
return i;
i++;
while(s[i].num!=0);
return -1;
}
错误:
Compiling...
c6.cpp
F:\c6.cpp(18) : warning C4390: ';' : empty controlled statement found; is this the intent F:\c6.cpp(23) : fatal error C1004: unexpected end of file found
执行cl.exe 时出错.
c6.obj - 1 error(s), 0 warning(s)
修改后正确程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUMMAX 5
struct book{ /*结构类型定义*/
long num;
char bname[4],author[4],publisher[4];
float price;
};
int Search(struct book *s) /*查找*/
{
long num;
int i=0;
printf("\nEnter num:");
scanf("%d",&num);
do{
if(s[i].num==num)
return i;
i++;
}while(s[i].num!=0);
return -1;
}
Compiling...
c6.cpp
c6.obj - 0 error(s), 0 warning(s)
六.附录
执行源程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUMMAX 5
struct book{ /*结构类型定义*/
long num;
char bname[4],author[4],publisher[4];
float price;
};
void DisplayMenu();
int choiceItem();
void Init(struct book *);
void PrintInfo(struct book *);
void Print_aInfo(struct book *) ;
int Search(struct book *);
void Insert(struct book *);
void Modify(struct book *);
void DeleInfor(struct book *);
void main()
{
struct book books[NUMMAX];
int choice,index;
do{
choice=choiceItem();
switch (choice){
case 0:printf("\nWelcome to");break;
case 1:Init(books);break;
case 2:PrintInfo(books);break;
case 3:Print_aInfo(books);break;
case 4:if ((index=Search(books))!=-1)
printf("%ld%s%s%s%.2f\n",books[index].num ,books[index] .bname ,books[index].aut hor,books[index]. publisher ,books[index].price);
else printf("\n No exist the book.");
break;
case 5:Insert(books);break;
case 6:Modify(books);break;
case 7:DeleInfor(books);break;
}
}while(choice);
}
void DisplayMenu() /*显示菜单*/
{
printf("\n========= MENU =========");
printf("\n Init book's informations ............... 1");
printf("\n Print book's informations .............. 2");
printf("\nprintf a book's information............ . 3");
printf("\n Search a book's information .............4");
printf("\n Insert a book's information .............5");
printf("\n Modify a book's information .............6");
printf("\n delete a book's information .............7");
printf("\n exit system ............................... 0");
printf("\nchoice,please:");
}
int choiceItem() /*菜单选择*/
{
int choice;
do{
DisplayMenu();
scanf("%d",&choice);
}while(choice<0||choice>6);
return choice;
}
void Init(struct book *s)/*初始化*/
{
int i;
for(i=1;i<=NUMMAX;i++)
{printf("请输入第%d本书信息\n",i);
scanf("%ld,%s,%s,%s,%f",&s[i].num,&s[i].bname,&s[i].author,&s[i].publisher ,&s[i].pr ice);
printf("\n");
}
}
void Print_aInfo(struct book *s) /*根据编号输出一本书的信息*/
{
int i=0;
long index;
printf("please enter number\n");
scanf("%ld",&index);
do
{if(s[i].num==index)
{printf("\n%ld %-2s %-2s %-2s% ",s[i].num,s[i].bname,s[i].author, s[i]. publisher); printf("\n%6.1f", s[i].price);}
i++;
}while(s[i].num!=0);
}
void PrintInfo(struct book *s) /*输出所有书的信息*/
{
int i=1;
do
{printf("\n%d %-2s %-2s %-2s%3.1f ",s[i].num,s[i].bname,s[i].author, s[i].publisher, s[i].price);
i++;
} while(s[i].num!=0);
}
void Insert(struct book *s) /*插入一本书的信息*/
{
int i=0;
while(s[i].num!=0)
i++;
printf("请输入插入书的信息\n");
scanf("%ld,%s,%s,%s,%f",&s[i].num,&s[i].bname,&s[i].author,&s[i].publisher,&s[i].price );
}
int Search(struct book *s) /*查找*/
{
long num;
int i=0;
printf("\nEnter num:");
scanf("%d",&num);
do{
if(s[i].num==num)
return i;
i++;
}while(s[i].num!=0);
return -1;
}
void Modify(struct book *s) /*修改一本书的信息(出版社)*/
{ long num;
int i=0,index;
printf("\nEnter num:");
scanf("%ld",&num);
do{if(s[i].num==num) index=i;
i++;
}while(s[i].num!=0);
printf("\nEnter the book's new publisher:");
scanf("%s",&s[index]. publisher);
}
void DeleInfor(struct book *s)
{int i=0,j;
long number;
printf("please enter number which is going to be deleted\n");/*删除一本书的信息*/ scanf("%ld",&number);
while(s[i].num!=number) i++;
j=i;
do{s[j].num=s[j+1].num;
strcpy(s[j].bname,s[j+1].bname);
strcpy(s[j].author ,s[j+1].author);
strcpy(s[j].publisher ,s[j+1].publisher);
s[j].price =s[j+1].price;
j++;
}while(s[j].num!=0);
}
七.参考文献
[1] 王立福. 软件工程(第二版)[M]. 北京:北京大学出版社.2002.
[2] 张秋余,杨玥. 基于用例的需求建模方法[J]. 计算机工程与设计,2006,
19:3539-3541.
[3] MattheMacDonal.管理信息系统[J].电子工业出版
社.2003.Vol.3(8):102-108.
[4] 谭浩强《C程序设计》清华大学出版
[5] John W. Satzinger, Robert B. Jackson, Stephen D. Burd. [Z]. 北京:
人民邮电出版社, 2008.
[6] 王珊,萨师炫.数据库系统概论(第三版)[M]. 北京:高等教育出版社.2002
[7] 张海潘.软件工程[J].清华大学出版社.2003年11月
[8] 张波. 网络答疑系统的设计与实现[D]. 长春:吉林大学软件学院,2005.
[9] 陆荣幸,郁洲. J2EE平台上MVC设计模式的研究与实现[J]. 计算机应用研
究,2003,03:144-146.
[10] 孙卫琴,李洪称. Tomcat与Java Web开发技术详解[M]. 北京:电子工业
出版社,2003.
[11] 何成万,余秋惠. MVC模型2及软件框架Struts的研究[J]. 计算机工程,
2002,06:274-276.
[12] Marty Hall,Larry Brown著,赵学良译. Servlet与JSP核心编程(第2
版)[M]. 北京:清华大学出版社,2004.
[13] 戴继周. 基于Web的网络教学平台的设计与实现[D]. 长春:吉林大学计算
机应用技术专业,2004
[14] 尹朝庆. 计算机系统结构教程[M]. 北京:清华大学出版社.2005.
[15] 张海藩. 软件工程导论(第四版)[M]. 北京:清华大学出版社,2003.
[16] 张维明. 信息系统原理与工程. 电子工业出版社. 2002年1月
八.总结
很认真的做完了课程设计,因为它是我这个学期的最后一次作业了。
完成了它我这个学期的学习生活便接近尾声了。
通过这次课程设计,使用回顾这一学期所学的C语言知道,学会了灵活运用各命令行,受益匪浅。
回想我的这一学期的大学生活真的有很多收获和感触,在这一学期里我不仅学到了文化知识,实践动手能力,更形成了我的许多价值观,学会了许多做人做事的道理,除了自己的成长和收获不说,我真的很像感谢很多人。
还有,我要感谢我的课程设计指导老师张老师,是您严谨的治学,适时的督促,不断地知道使我顺利完成了我的课程设计,在整个课程设计期间您不断地给与我帮助和指导使我不止完成了我的设计任务还学的了很多相关的专业知识,老师不但经验丰富知识领域宽广而且和善可亲,在完成毕设的过程您不但教授了我很多专业知识,还为我的未来发展学业工作提出了很多宝贵的意见,我们不但是亲切的师生,也是彼此的朋友,在我整个毕业设计的指导过程中您给我的印象就是认真负责,在这里我想对我可敬可亲的张老师说一声:“谢谢!”
非常感谢我的同学们我的老师们当我在课程设计过程中遇到问题和困难时,是你们给我提出许多关键性的意见和建议,使我对整个毕业设计的思路有了总体的把握,并耐心的帮我解决了许多实际问题,使我获益良多。
是你们教授了我丰富的知识,教会了我学习知识的能力。