所需功能类似于学生成绩管理系统,界面可参考附录C。用户分为管理员和一般人员两大类。
功能需求描述如下。
①用户登录:根据用户输入的用户名和密码判断是否允许该用户使用本系统,并且当用户登录后根据用户权限判断用户可以使用哪些功能。学生只有浏览等权限而不能进行实质性改动。
②提供系统主控平台:系统主控平台也应根据用户权限不同而有所区别,只列出在用户权限范围内的功能供用户选择。系统主控平台包括输入功能选项、调用相应程序两大需求。教师和学生对应的系统主控平台是不同的。所能进行的操作也不相同。
③创建图书信息文件:用户根据提示输入图书编号、图书分类号、书名、作者姓名、出版社名、出版年月、定价、存库数量和借阅和上架情况等等信息存储在系统磁盘的文件中。以便进行管理、查找和备份。
④增加图书信息:可在原有图书信息文件的基础上增加新的图书信息记录并继续保存至磁盘,并且将增加后的文件存储状况显示给用户。
⑤删除图书信息:提示用户输入要进行删除操作的图书编号,如果在文件中有该信息存在,则将该书号所对应的记录删除。并选择是否继续进行删除操作。
⑥修改图书信息:提示用户输入要进行修改操作的书号,如果在文件中有该息存在,则将提示用户输入该书号对应的要修改的选项,结果存储于文件。该部分需求也需要提示用户选择是否继续进行修改操作。
⑦查询图书信息:提供按书号或书名等查询。在该功能中,也需提示用户是否需要继续查再继续查找,则返回主界面。
⑧一般用户查询个人的借阅情况并按日期进行排序:。
⑨管理员和一般用户管理:管理员对用户的管理也需要进行用户的创建、增加、删除、浏览。管理员创建的用户存储在名为yonghu的磁盘文件中,每当有用户登录系统时,会根据该文件中的用户名和密码进行核实判断,用户才能够顺利登录。管理员还具有用户的功能。增加的用户及密码、权限等也被继续存储在yonghu文件中。当某些用一用该系统时,还可以进行删除操作,并且管理员具有修改用户权限的功能,一般用户和管理员对于系统的权限是不一样的。
源代码如下:
#include<iostream>
#include<iomanip>
#include<string>
#include<fstream>
#include<stdio.h>
using namespace std
const int maxb=10000 //最多的图书
class book//图书类
{
int tag //删除标记1:已删0:未删
int number //isbn书号
char name[20] //书名
char author[10]//主编
char number2[10]//版次
char position[20]//出版社
char time[20]//出版年
void addbook(int n,char *na,char *au,char *n2,char *da,char *ti,int pr) //增加图书
{
tag=0
number=n
price=pr
strcpy(name,na)
strcpy(author,au)
strcpy(number2,n2)
strcpy(position,da)
strcpy(time,ti)
onshelf=1
}
扩展资料
1、源程序中,很多符号都是成对匹配出现的,为避免遗漏必须配对使用的符号。
2、用花括号括起来的部分,但从程序结构清晰,便于阅读、理解、维护的角度出发,建议在书写程序时应遵循以下规则,以养成良好的编程习惯。
3、一个说明或一条语句占一行,与该结构开始处的左花括号对齐。
#include<stdio.h>#include<string.h>
struct sale/*商品名的定义*/
{int number<br>char name[20]<br>float price<br>long count<br>long time<br>long date}
/*各个函数*/
void input(struct sale s[7])/*输入函数*/
void output(struct sale s[7])/*输出函数*/
void seek(struct sale s[7])/*查找函数*/
void row(struct sale s[7])/*排序函数*/
void change(struct sale s[7])/*删除、修改、或插入*/
void main()/*主函数执行区域*/
{struct sale s[7]={{2,"pen",0.5,200,20050604,20090102},{1,"milk",3.5,100,20050403,20090202},
{5,"coke",3.5,500,20060203,20070503},{6,"chewing",0.3,200,20060305,20080205},
{4,"eraser",0.4,20,20060304,20500607},{3,"pencil",0.9,100,20040607,20060709}}/*定义初始值*/
/*input(s)【已付初始值暂不运行!!】*/
output(s)
seek(s)
row(s)
change(s)
}
/*void input(struct sale s[7])【注释:已付初始值,暂不运行!!】
{int i<br>printf("请分别输入产品编号、名称、单价、库存数量、入库时间、有效日期:\n")<br> for(i=0i<7i++)<br> scanf("%d%s%f%ld%ld%ld",&s.number,&s.name,&s.price,&s.count,&s.time,&s.date)}*/
void output(struct sale s[7])/*定义输出*/
{int i<br>printf("编号\t名称\t单价\t库存数量\t入库时间\t\t有效日期\n")<br> for(i=0i<7i++)<br> printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date)}
void seek(struct sale s[7])/*定义查找*/
{int i<br> int m<br> int k<br> k=1<br> printf("请输入要查找的编号\n")<br>printf("m== ")<br> scanf("%d",&m)<br>for(i=0i<7i++)<br> {<br> if(m==s.number)<br> {printf("你想查找的物品是:\n")<br> printf("编号\t名称\t单价\t库存数量\t入库时间\t\t有效日期\n")<br> printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date)<br> k=m}
}
if(k==1)
printf("没有此类商品!!!\n")
}
void row(struct sale s[7])/*排序*/
{
struct sale t
int i,j
int m,a
printf("\n")
printf("输出已排好序的商品\n")
for(j=0j<6j++)
for(i=0i<6-ji++)
if(s.number>s.number)
{
t=s
s=s
s=t
}
printf("重新排序后是; \n")
printf("编号\t名称\t单价\t库存数量\t入库时间\t\t有效日期\n")
for(a=0a<7a++)
printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s[a].number,s[a].name,s[a].price,s[a].count,s[a].time,s[a].date)
}
void change(struct sale s[7])/*删除、修改、或插入*/
{
struct sale c
int i,m,q,n,k
k=0
printf("请输入您要删除、修改或要插入的物品编号\n")/*前奏*/
scanf("%d",&m)
for(i=0i<7i++)
if(m==s.number)
{{printf("编号\t名称\t单价\t库存数量\t入库时间\t\t有效日期\n")<br> printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date)}
printf("你确实要删除它么???还是要修改??\n")
printf("如果想删除请输入1,如果要修改请输入2。\n")
printf("您要输入的是: ")
scanf("%d",&q)
if(q==1)/*执行删除命令*/
{printf("您删除后的结果是:\n")<br> for(i=0i<7i++)<br>if(m!=s.number)<br>{printf("编号\t名称\t单价\t库存数量\t入库时间\t\t有效日期\n")<br>printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date)}}
if(q==2)/*执行修改命令*/
{printf("输入你想修改的库存数量: ")<br> scanf("%d",&n)<br> s[m].count=n<br> printf("修改后的商品信息为:\n")<br>printf("编号\t名称\t单价\t库存数量\t入库时间\t\t有效日期\n")<br> for(i=0i<7i++)<br>printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date)}
k=i
}
if(k==0)/*执行插入命令*/
{printf("\n\n")<br> printf("由于插入语句没有要求,所以插入语句尚未完成,有些功能尚未完善,所以会有错误,请老师见谅。\n\n\n")<br> printf("此类商品不存在,请插入\n")<br> printf("请分别输入要插入产品的编号、名称、单价、库存数量、入库时间、有效日期:\n")<br> i=m-1<br> scanf("%d%s%f%ld%ld%ld",&s.number,&s.name,&s.price,&s.count,&s.time,&s.date)<br> printf("编号\t名称\t单价\t库存数量\t入库时间\t\t有效日期\n")<br> printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date)<br> for(i=0i<7i++)<br>printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date)<br> <br> <br> row(s)<br> <br> <br> }}
这是我大一时候做的大作业,虽然不是图书管理系统,你只要改改就行了,原理都一样,呵呵