简单图书管理系统
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
//结构体声明
struct List
{
char name[20];
struct List *next;
};
typedef struct List book;
typedef book *link;
//函数声明
void menu();
void display(link head);
link addbook(link head);
void found(link head);
link delbook(link head);
//主函数
main()
{
int n;
link head=NULL;
while(1)
{
menu();
scanf("%d",&n);
switch(n)
{
case 0: exit(0);
case 1: head=addbook(head);break;
case 2: display(head);break;
case 3: found(head);break;
case 4: head=delbook(head);break;
default:printf("请正确输入
");break;
}
system("pause");
system("cls");
}
}
//菜单函数定义
void menu()
{
printf("********************************
");
printf("*** 1 新增图书 ***
");
printf("*** 2 显示图书目录 ***
");
printf("*** 3 查找图书 ***
");
printf("*** 4 删除图书 ***
");
printf("*** 0 推出系统 ***
");
printf("********************************
");
printf("请选择(0—4)项
");
}
//增加节点定义
link addbook(link head)
{
link p,q;
p=(link)malloc(sizeof(book));
printf("请输入书名 ");
fflush(stdin);
gets(p->name);
p->next=NULL;
if(head==NULL)
head=p;
else
{
for(q=head;q->next!=NULL;q=q->next)
continue;
q->next=p;
}
printf("新书名字为 %s
",p->name);
return head;
}
//显示当前信息函数定义
void display(link head)
{
link p;
int n=0;
for(p=head;p!=NULL;p=p->next)
{
printf("书名《 %s 》
",p->name);
n++;
}
if(n==0)
printf("现在没有图书
");
else
printf("现在一共有%d本图书
",n);
}
//查找函数定义
void found(link head)
{
link p;
char name[20];
int n=0;
fflush(stdin);
printf("请输入要查找的书名
");
gets(name);
for(p=head;p!=NULL;p=p->next)
{
if(strcmp(p->name,name)==0)
{
printf("找到书名 《 %s 》 的图书
",p->name);
n=1;
break;
}
}
if(n==0)
printf("没有此图书
");
}
//删除节点函数定义
link delbook(link head)
{
link p=head,q;
char name[20];
int n=0;
fflush(stdin);
printf("请输入要删除的图书名字: ");
gets(name);
if(strcmp(p->name,name)==0)
{
head=p->next;
free(p);
printf("已删除
");
return head;
}
else
for(q=p,p=p->next;p!=NULL;q=q->next,p=p->next)
{
if(strcmp(p->name,name)==0)
{
q->next=p->next;
free(p);
printf("已删除
");
return head;
}
}
printf("没有此图书
");
return head;
}
如何通过豆瓣API获取图书和电影列表
豆瓣API提供了一种简单的方式可以直接在HTML页面中使用API,下面给出这种使用方式的简单示例。
1. 首先我们需要在HTML页面中做如下script标签:<script type="text/javascript" src=" />
2. 然后就可以调用豆瓣API,其中通过定义callback函数来操作返回的JSON数据。
3. 此外,豆瓣也提供了解析函数来帮助你更容易地使用JSON格式的返回值。
使用豆瓣提供的解析函数,你需要在页面中添加script标签:<script type="text/javascript" src="。
4. 接下来你就可以使用豆瓣提供的解析函数来处理返回值,例如:var book = DOUBAN.parseSubject(result)。
5. 解析函数返回更容易使用的javascript对象,你可以这样得到书的封面图片:book.link.image
6. HTML页面使用API获得ID为xxxxx电影的信息并展示在页面上(注意将{yourapikey}替换为你的API Key)。
注:实现上,豆瓣API使用 JSONP 方式来支持跨域调用API 因此你也可以使用自己熟悉的javascript库来调用JSONP风格的豆瓣API. 此时,你需要将alt设置为xd同时提供callback参数。
另外部份的豆瓣功能及操作可登陆下面的网站/客户端:
电话簿c语言
下面这个是我以前做的,功能更多,可以参考一下.
/*
数据描述:学号 姓名 班级 高数 英语 总分
程序完成功能:
(1) 浏览数据 (2) 增加数据 (3) 修改数据
(4) 查询数据(按姓名,按总分) (5) 退出
*/
#include
#include
#include
using namespace std;
class student
{
public:
student(int , string ,int ,int ,int );
string getName(){return _name;};
int getID(){return _ID;};
void setID(int i){_ID=i;};
void setName(string);
void setClass(int c){_class=c;};
void setMath(int m){_math=m;_total=_math+_english;};
void setEnglish(int e){_english=e;_total=_math+_english;}
void print();
static int _stNum;
private:
int _ID;
string _name;
int _class;
int _math;
int _english;
int _total;
};
int student::_stNum=0;
student::student(int id, string name, int iclass, int ma, int en)
{
_ID=id;
_name=name;
_class=iclass;
_math=ma;
_english=en;
_total=_math+_english;
_stNum++;
};
void student::setName(string s)
{
_name=s;
};
void student::print()
{
cout<<_ID
<<" "<< _name
<<" "<<_class
<<" "<<_math
<<" "<<_english
<<" "<<_total < ec;
printMenu();
cin>>order;
while(order!=5)
{
switch(order)
{
case 1:
if (ec.size()==0)
{
cout<<"ERR:---->No data in the system!"<>order;
break;
}
else
{
vector::iterator iter=ec.begin();
vector::iterator iter_end=ec.end();
printHead();
for(;iter!=iter_end;iter++)
{
(*iter).print();
}
printTail(ec.size());
printMenu();
cin>>order;
break;
}
case 2:
cout<<"Insert-->ID:";
cin>>tmp_ID;
cout<<"Insert-->Name:";
cin>>tmp_name;
cout<<"Insert-->Class:";
cin>>tmp_class;
cout<<"Insert-->Mark of Math:";
cin>>tmp_math;
cout<<"Insert-->Mark of English:";
cin>>tmp_english;
ec.push_back(student(tmp_ID,tmp_name,tmp_class,tmp_math,tmp_english));
printMenu();
cin>>order;
break;
case 3:
{
string search_name;
bool isFind=false;
cout<<"
Orignal_Update-->Name:";
cin>>search_name;
vector::iterator iter=ec.begin();
vector::iterator iter_end=ec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
isFind=true;
cout<<"New_Update-->ID:";
cin>>tmp_ID;
cout<<"New_Update-->Name:";
cin>>tmp_name;
cout<<"New_Update-->Class:";
cin>>tmp_class;
cout<<"New_Update-->Mark of Math:";
cin>>tmp_math;
cout<<"New_Update-->Mark of English:";
cin>>tmp_english;
(*iter).setID(tmp_ID);
(*iter).setName(tmp_name);
(*iter).setClass(tmp_class);
(*iter).setMath(tmp_math);
(*iter).setEnglish(tmp_english);
}
}
if(!isFind)
{
cout<<"There no student named "<>order;
break;
}
case 4:
string search_name;
int search_ID;
int name_ID=0;
bool isFind=false;
cout<<"-----------"<>name_ID;
if (name_ID==1)
{
cout<<"
Search-->name:"<>search_name;
vector::iterator iter=ec.begin();
vector::iterator iter_end=ec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
if(!isFind)
{
cout<>order;
break;
}
if (name_ID==2)
{
cout<<"
Search-->ID:"<>search_ID;
vector::iterator iter=ec.begin();
vector::iterator iter_end=ec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getID()==search_ID)
{
if(!isFind)
{cout<>order;
break;
}
}
}
}
void printMenu(void)
{
cout<1)
{cout<c语言 电话簿管理系统#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <iostream>
//主函数
int main()
{
LinkQueue Q;
initAddressBook(Q);
int flag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※单※※※※※
");
printf("※1、增加联系人 2、删除联系人 ※
");
printf("※3、修改联系人 4、清空通讯录 ※
");
printf("※5、查找联系人 6、按组显示 ※
");
printf("※7、显示全部联系人 8、退出 ※
");
printf("※※※※※※※※※※※※※※※※※※※※※※※
");
printf("请输入编号(1-8):
");
scanf("%d",&flag);
if(flag<1||flag>8)
{
printf("输入错误请重新输入!
");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加联系人成功!
");
else
printf("增加联系人失败!
");
break;
case 2:
if(delPerson(Q))
printf("删除联系人成功!
");
else
printf("联系人删除失败!
");
break;
case 3:
if(update(Q))
printf("修改联系人成功!
");
else
printf("修改联系人失败!
");
break;
case 4:
if(clearAddressBook(Q))
printf("通讯录已清空!
");
else
printf("通讯录清空失败!
");
break;
case 5:
findByName(Q);
break;
case 6:
findByGroup(Q);
break;
case 7:
disAll(Q);
break;
case 8:
system("cls");
break;
}
}
}
printf("※※※※※感谢您使用本系统!※※※※※※
");
return 0;
}
//初始化通讯录
void initAddressBook(LinkQueue &Q)
{
Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));
if(!Q.front)
exit(1);
else
Q.front->next=NULL;
}
//清空通讯录
bool clearAddressBook(LinkQueue &Q)
{
system("cls");
while(addressBookLength(Q)!=0)
{
QNode *p;
p=Q.front->next;
Q.front->next=p->next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
}
return true;
}
//通讯录当前人数
int addressBookLength(LinkQueue &Q)
{
int i=0;
QNode *p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p->next;
i++;
}
}
return i;
}
//删除联系人
bool delPerson(LinkQueue &Q)
{
char _name[20];
system("cls");
printf("请输入要删除的联系人的姓名:
");
scanf("%s",_name);
QNode *p,*q;
if(Q.front==Q.rear)
{
printf("通讯录为空!
");
return false;
}
else
{
p=Q.front;
q=Q.front->next;
while(q!=Q.rear){
if(strcmp(q->name,_name)==0)
{
p->next=q->next;
free(q);//删除节点
return true;
}
else
{
p=p->next;
q=q->next;
}
}
if((strcmp(q->name,_name)==0))
{
free(q);
Q.front=Q.rear;
return true;
}
else
{
printf("无此联系人!
");
return false;
}
}
}
//查找联系人
bool findByName(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!
");
return false;
}
else
{
char _name[20];
printf("请输入要查询的联系人姓名:
");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("姓名:%s 号码:%s 分组:%s
",p->name,p->tel,p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s 号码:%s 分组:%s
",p->name,p->tel,p->group);
return true;
}
else
{
printf("查无此人!
");
return false;
}
}
}
//按组显示联系人
bool findByGroup(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!
");
return false;
}
else
{
char _group[20];
printf("请输入要查询的分组:
");
scanf("%s",_group);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->group,_group)==0)
{
printf("姓名:%s 号码:%s
",p->name,p->tel);
}
p=p->next;
}
if(strcmp(p->group,_group)==0){
printf("姓名:%s 号码:%s
",p->name,p->tel);
return true;
}
else
{
printf("无此分组!
");
return false;
}
}
}
//增加联系人
bool enAddressBook(LinkQueue &Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
else
{
printf("请输入联系人姓名:
");
scanf("%s",p->name);
printf("请输入联系人号码:
");
scanf("%s",&p->tel);
printf("请输入联系人分组:
");
scanf("%s",p->group);
if(Q.front->next==NULL)
{
Q.front->next=p;
Q.rear=p;
Q.rear->next=NULL;
}
else
{
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
return true;
}
}
//修改联系人
bool update(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!
");
return false;
}
else
{
char _name[20];
printf("请输入要修改的联系人姓名:
");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("请输入新联系人姓名:
");
scanf("%s",p->name);
printf("请输入新联系人号码:
");
scanf("%s",&p->tel);
printf("请输入新联系人分组:
");
scanf("%s",p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("请输入新联系人姓名:
");
scanf("%s",p->name);
printf("请输入新联系人号码:
");
scanf("%s",&p->tel);
printf("请输入新联系人分组:
");
scanf("%s",p->group);
return true;
}
else
{
printf("查无此人!
");
return false;
}
}
}
//显示所有联系人
void disAll(LinkQueue &Q)
{
system("cls");
int i=0;
QNode *p;
p=Q.front->next;
if(Q.front==Q.rear)
printf("无联系人!
");
else
{
printf(" 姓名 号码 分组
");
while(p!=NULL){
printf("%15s %15s %15s
",p->name,p->tel,p->group);
p=p->next;
}
}
}