虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > C/C++编程 > C语言图书管理系统简洁版

C语言图书管理系统简洁版
类别:C/C++编程   作者:码皇   来源:互联网   点击:

这篇文章主要为大家详细介绍了C语言图书管理系统简洁版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

DOS界面的图书管理系统,具体内容如下

程序分为两块:管理员操作(收录图书、删除图书等)和会员操作(注册、借书、还书等);

1、管理员操作界面

2、会员操作界面

global.h头文件:(程序中只使用了一个编写的头文件,在这里存放了所有的接口函数以及需要使用到的头文件,还有结构体的定义)

    #include "iostream" #include "string" #include "fstream" #include "conio.h" //getch();
    #include "algorithm" //sort();
    using namespace std;
    #define Max_BookNum 10240 //最大存书数目 #define Max_MemberNum 10240 //最大会员数目 typedef enum{
    //图书借阅状态 Borrowed=1, //已被借阅 available=0 //当前可借 }
    Book_Status;
    typedef struct{
    //图书信息 char name[20];
    //书名 char author[20];
    //作者 string isbn;
    //图书编号 string price;
    //价格 string pub;
    //出版社 string pubtime;
    //出版时间 string addtime;
    //收录日期 string Class;
    //分类号 Book_Status Book_sta;
    //借阅状态,初始化为可借 }
    Book_Message;
    typedef struct{
    //借阅人信息 string name;
    //姓名 string sex;
    //性别 string number;
    //学号 char login[20];
    //登录号 以A1001开始 char code[20];
    //登录密码 Book_Message Borrow_Book[10];
    //最大可借书本数目:10本 int BorBook_Cnt;
    //借书数量 }
    Member_Message;
    void Show_WelMenu();
    //Welcome菜单 void Book_InfoInput();
    //图书信息录入 void Book_InfoShow(Book_Message *Book_Info);
    //输出图书信息 void Book_Search();
    //搜索书本 0,按书名;1,按作者 void Book_Delete();
    //删除图书信息 void Book_InfoChange();
    //修改图书信息 void Book_Sort();
    //图书排序 void Book_RecordSave();
    //图书信息保存 int Book_RecordLoad();
    //读档 void Admin_Login();
    //管理员登录 void Member_WelMenu();
    //会员菜单界面 void Book_WelMenu();
    //管理员菜单界面 void Member_Login();
    //会员登录 void Member_Reg();
    //会员注册 void Member_Bor();
    //借书手续 void Member_Ret();
    //还书 void Member_Search();
    //会员资料查询 0,按姓名;1,按学号 void Member_Delete();
    //会员资料注销 void Member_RecordSave();
    //会员信息保存 int Member_RecordLoad();
    //会员信息读档 void Member_InfoChange();
    //void Member_BookMsgSave();
    //int Member_BookMsgLoad();
    void Member_MsgShow(Member_Message *Member_Msg);
    //信息显示 void Member_CodeAdjust();
    //会员修改密码

主程序:main.c文件:

    #include "global.h" int Book_Record=0;
    int Member_Record=0;
    Book_Message Book_List[Max_BookNum];
    //图书登记表 Member_Message Member_List[Max_MemberNum];
    //会员登记表 int main() {
    char key[2];
    while(1){
    Show_WelMenu();
    int cmd;
    cin>>cmd;
    if(!cmd) Admin_Login();
    //进入管理员登录界面 else Member_Login();
    //进入会员登录界面 cout<<"tttt是否退出图书管理系统?ty/nn";
    cin>>key;
    if(strcmp(key,"y")==0) break;
    }
    cout<<"系统即将退出"<<endl;
    getch();
    return 0;
    }

以下分别是各个功能模块的函数实现:

1、输出界面(选择登录界面)

    void Show_WelMenu() {
    system("cls");
    cout<<"tttt欢迎使用图书管理系统"<<endl<<endl;
    cout<<"tttt0:管理员登录"<<endl;
    cout<<"tttt1:会员登录"<<endl;
    }

2、管理员登录程序(这里选择了固定密码登录,Init_Code就是初始密码。当然也可以自行修改密码)

    void Admin_Login() {
    short count=0;
    char code[20];
    char Init_Code[10]="0";
    cout<<"请输入管理员密码:"<<endl;
    while(1){
    cin>>code;
    if(strcmp(code,Init_Code)==0){
    break;
    }
    else{
    cout<<"密码错误请重新输入"<<endl;
    count++;
    if(count>3){
    cout<<"密码错误超过三次,程序即将退出"<<endl;
    break;
    }
    }
    }
    Book_WelMenu();
    //enter Admin Menu }

3、会员登录程序(使用账户密码登录,若无账号,可自行注册)

    void Member_Login() {
    Book_Record = 0;
    Member_Record = 0;
    Book_Record = Book_RecordLoad();
    Member_Record = Member_RecordLoad();
    //从文件读入当前注册表 char code[20],login[20],Req[2];
    bool Login_Sta = false;
    while(1){
    //登录程序,登录成功后退出 if(Login_Sta) break;
    if((Member_Record==0)){
    cout << "tttt用户库为空,请先注册" << endl;
    cout << "tttt按任意键注册";
    getch();
    system("cls");
    Member_Reg();
    }
    else{
    cout << "tttt请输入会员登录号:" << endl;
    cin>>login;
    for(Mem_Point=0;
    Mem_Point<Member_Record;
    Mem_Point++){
    if((strcmp(login,Member_List[Mem_Point].login) == 0)){
    cout << "tttt请输入密码:" << endl;
    cin >> code;
    while(strcmp(code, Member_List[Mem_Point].code) != 0){
    cout << "密码错误,请重新输入" << endl;
    cin >> code;
    }
    Login_Sta = true;
    cout << "tttt登录成功,按任意键继续";
    break;
    }
    }
    if(Mem_Point >= Member_Record){
    cout << "ttt该用户未注册,不能使用图书管理系统" << endl;
    cout << "tttt是否现在注册(Y/N)" << endl;
    cin >> Req;
    if((strcmp(Req,"y") == 0) || (strcmp(Req,"Y") == 0)) Member_Reg();
    }
    }
    }
    getch();
    system("cls");
    Member_WelMenu();
    getch();
    }

4、文件操作(读入与写入,这里只贴出会员信息部分的文件操作,图书收录的文件操作类似)

    /*导出会员注册表到文件*/ void Member_RecordSave() {
    ofstream outfile;
    outfile.open("E:\Course\002\Member_Info.txt",ios::ate|ios::out);
    //若有文件,先清空,再写入 for(int i=0;
    i<Member_Record;
    i++){
    outfile << Member_List[i].name <<" " << Member_List[i].sex <<" " << Member_List[i].number <<" " << Member_List[i].login <<" " << Member_List[i].code << endl;
    }
    outfile.close();
    }
    /*从文件导入会员注册表*/ int Member_RecordLoad() {
    int Member_FileLoad=0;
    ifstream infile;
    infile.open("E:\Course\002\Member_Info.txt",ios::in);
    string n,s,num;
    char l[20],c[20];
    while(1){
    infile >> n >> s >> num >> l >> c;
    //从文件导入信息,并注册会员信息 Member_Add(n,s,num,l,c);
    if(infile.eof() != 0)break;
    Member_FileLoad++;
    }
    infile.close();
    return Member_FileLoad;
    }

5、会员注册程序(先扫描注册表,若已被注册返回失败。注册就是在文件中添加会员信息)

    //内部函数 void Member_Add(string n,string s,string num,char* l,char* c) {
    Member_List[Member_Record].name = n;
    Member_List[Member_Record].sex =s;
    Member_List[Member_Record].number =num;
    strcpy(Member_List[Member_Record].login,(const char*)l);
    strcpy(Member_List[Member_Record].code,(const char*)c);
    Member_Record++;
    }
    /*会员注册程序*/ void Member_Reg() {
    string n,s,num;
    char l[20],c[20],choice[2];
    cout << "tttt会员注册" << endl;
    cout << "tt请以此输入 姓名、性别、学号、登录号、密码" << endl;
    cin >> n >> s >> num >> l >> c;
    for(int i=0;
    i<Member_Record;
    i++){
    if(strcmp(Member_List[i].login,l) == 0){
    cout << "tttt该登录号已存在,注册失败" << endl;
    getch();
    system("cls");
    return;
    }
    }
    Member_Add(n,s,num,l,c);
    cout << "tttt注册成功" << endl;
    cout << "tttt是否存入文件ty/n?" << endl;
    ;
    cin >> choice;
    if((strcmp(choice,"y")==0) || (strcmp(choice,"Y") == 0)) Member_RecordSave();
    getch();
    system("cls");
    //clear screan }

6、会员注销和密码修改

    /*会员资料注销*/ void Member_Delete() {
    bool key=false;
    char Del_Name[20],cmd[2];
    cout<<"请输入要注销的会员登录号"<<endl;
    cin>>Del_Name;
    for(int i=0;
    i<Member_Record;
    i++){
    if(strcmp(Member_List[i].login,Del_Name)==0){
    //found key=true;
    Member_MsgShow(&Member_List[i]);
    cout<<"是否需要删除该会员,y/n?"<<endl;
    cin>>cmd;
    if((strcmp(cmd,"y")==0)||(strcmp(cmd,"Y")==0)){
    //ensure delete while(i<=Member_Record-1){
    Member_List[i]=Member_List[i+1];
    i++;
    }
    Member_Record--;
    Member_RecordSave();
    cout<<"会员 "<<Del_Name<<" 已注销"<<endl;
    break;
    }
    }
    }
    if(!key) cout<<"没有找到该会员"<<endl;
    }
    void Member_CodeAdjust() {
    char TempCode[20],choice[2],Temp[20];
    strcpy(Temp,Member_List[Mem_Point].code);
    while(1){
    cout<<"请输入原来的密码:";
    cin>>TempCode;
    if(strcmp(Temp,TempCode)==0){
    cout<<"请输入新的密码:";
    cin>>TempCode;
    cout<<"请再次输入新的密码:";
    strcpy(Member_List[Mem_Point].code,TempCode);
    cin>>TempCode;
    if(strcmp(Member_List[Mem_Point].code,TempCode)==0){
    cout<<"tttt修改密码成功,新密码为"<<Member_List[Mem_Point].code<<endl;
    //test Member_RecordSave();
    break;
    }
    else{
    cout<<"两次输入的密码不一致,修改失败!"<<endl;
    cout<<"tttt输入Y继续,输入N放弃修改"<<endl;
    cin>>choice;
    if((strcmp(choice,"n")==0)||(strcmp(choice,"N")==0)) return ;
    continue;
    }
    }
    cout<<"密码错误,请按任意键重新输入!"<<endl;
    getch();
    }
    }

管理员操作的大部分程序和会员操作是类似的,这里只贴一个图书排序的操作

7、图书排序

    /* 内部函数,供图书排序功能调用*/ bool cmp( Book_Message a, Book_Message b ){
    if(strcmp( a.author, b.author ) == 0) return strcmp( a.name, b.name ) < 0;
    return strcmp( a.author , b.author ) < 0;
    }
    /* * @brief 图书排序,根据作者姓名升序排序,若作者相同,则按书名升序排序 * @param None * @retval None */ void Book_Sort() {
    sort( Book_List, Book_List+Book_Record, cmp );
    cout << "排序已完成" << endl;
    cout << "所有图书信息如下" << endl;
    cout << "书名t作者t价格t出版社t出版时间t分类号 编号 收录日期 是否可借" << endl;
    for(int i=0;
    i<Book_Record;
    i++){
    Book_InfoShow( &Book_List[i] );
    }
    getch();
    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • C语言链表实现图书管理系统
  • C语言实现图书管理系统
  • 基于C语言实现图书管理信息系统设计
  • C语言图书管理系统课程设计
  • C语言实现图书管理系统
  • C语言设计图书登记系统与停车场管理系统的实例分享
  • C语言图书借阅系统源码
相关热词搜索: C语言图书管理系统 C语言图书管理 C语言管