国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C > 正文

C語(yǔ)言圖書管理系統(tǒng)簡(jiǎn)潔版

2020-01-26 13:48:55
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

DOS界面的圖書管理系統(tǒng),具體內(nèi)容如下

程序分為兩塊:管理員操作(收錄圖書、刪除圖書等)和會(huì)員操作(注冊(cè)、借書、還書等);

1、管理員操作界面

2、會(huì)員操作界面

global.h頭文件:(程序中只使用了一個(gè)編寫的頭文件,在這里存放了所有的接口函數(shù)以及需要使用到的頭文件,還有結(jié)構(gòu)體的定義)

#include "iostream" #include "string" #include "fstream" #include "conio.h"   //getch(); #include "algorithm"  //sort(); using namespace std;  #define Max_BookNum 10240   //最大存書數(shù)目 #define Max_MemberNum 10240   //最大會(huì)員數(shù)目  typedef enum{//圖書借閱狀態(tài)  Borrowed=1,    //已被借閱  available=0    //當(dāng)前可借 }Book_Status;  typedef struct{//圖書信息  char name[20];   //書名  char author[20];  //作者  string isbn;   //圖書編號(hào)  string price;   //價(jià)格  string pub;    //出版社  string pubtime;   //出版時(shí)間  string addtime;   //收錄日期  string Class;   //分類號(hào)  Book_Status Book_sta; //借閱狀態(tài),初始化為可借 }Book_Message;  typedef struct{//借閱人信息  string name;  //姓名  string sex;    //性別  string number;   //學(xué)號(hào)  char login[20];   //登錄號(hào) 以A1001開(kāi)始  char code[20];   //登錄密碼  Book_Message Borrow_Book[10];  //最大可借書本數(shù)目:10本  int BorBook_Cnt;  //借書數(shù)量 }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();  //會(huì)員菜單界面 void Book_WelMenu();  //管理員菜單界面  void Member_Login();  //會(huì)員登錄 void Member_Reg();  //會(huì)員注冊(cè) void Member_Bor();  //借書手續(xù) void Member_Ret();  //還書 void Member_Search(); //會(huì)員資料查詢 0,按姓名;1,按學(xué)號(hào) void Member_Delete(); //會(huì)員資料注銷 void Member_RecordSave();//會(huì)員信息保存 int Member_RecordLoad();//會(huì)員信息讀檔 void Member_InfoChange();   //void Member_BookMsgSave(); //int Member_BookMsgLoad(); void Member_MsgShow(Member_Message *Member_Msg);//信息顯示 void Member_CodeAdjust();//會(huì)員修改密碼 

主程序: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];  //會(huì)員登記表  int main() {  char key[2];  while(1){   Show_WelMenu();   int cmd;   cin>>cmd;   if(!cmd)    Admin_Login();   //進(jìn)入管理員登錄界面   else    Member_Login();   //進(jìn)入會(huì)員登錄界面     cout<<"/t/t/t/t是否退出圖書管理系統(tǒng)?/ty/n/n";   cin>>key;   if(strcmp(key,"y")==0)    break;  }  cout<<"系統(tǒng)即將退出"<<endl;  getch();  return 0; } 

以下分別是各個(gè)功能模塊的函數(shù)實(shí)現(xiàn):

1、輸出界面(選擇登錄界面)

void Show_WelMenu() {  system("cls");  cout<<"/t/t/t/t歡迎使用圖書管理系統(tǒng)"<<endl<<endl;  cout<<"/t/t/t/t0:管理員登錄"<<endl;  cout<<"/t/t/t/t1:會(huì)員登錄"<<endl; } 

2、管理員登錄程序(這里選擇了固定密碼登錄,Init_Code就是初始密碼。當(dāng)然也可以自行修改密碼)

void Admin_Login() {  short count=0;  char code[20];  char Init_Code[10]="0";  cout<<"請(qǐng)輸入管理員密碼:"<<endl;  while(1){   cin>>code;   if(strcmp(code,Init_Code)==0){    break;   }   else{    cout<<"密碼錯(cuò)誤請(qǐng)重新輸入"<<endl;    count++;    if(count>3){     cout<<"密碼錯(cuò)誤超過(guò)三次,程序即將退出"<<endl;     break;    }   }  }  Book_WelMenu();   //enter Admin Menu } 

3、會(huì)員登錄程序(使用賬戶密碼登錄,若無(wú)賬號(hào),可自行注冊(cè))

void Member_Login() {   Book_Record = 0;  Member_Record = 0;  Book_Record = Book_RecordLoad();  Member_Record = Member_RecordLoad();  //從文件讀入當(dāng)前注冊(cè)表  char code[20],login[20],Req[2];  bool Login_Sta = false;  while(1){ //登錄程序,登錄成功后退出   if(Login_Sta) break;   if((Member_Record==0)){    cout << "/t/t/t/t用戶庫(kù)為空,請(qǐng)先注冊(cè)" << endl;    cout << "/t/t/t/t按任意鍵注冊(cè)";    getch();    system("cls");    Member_Reg();    }   else{    cout << "/t/t/t/t請(qǐng)輸入會(huì)員登錄號(hào):" << endl;    cin>>login;    for(Mem_Point=0; Mem_Point<Member_Record; Mem_Point++){     if((strcmp(login,Member_List[Mem_Point].login) == 0)){      cout << "/t/t/t/t請(qǐng)輸入密碼:" << endl;      cin >> code;      while(strcmp(code, Member_List[Mem_Point].code) != 0){        cout << "密碼錯(cuò)誤,請(qǐng)重新輸入" << endl;        cin >> code;      }      Login_Sta = true;      cout << "/t/t/t/t登錄成功,按任意鍵繼續(xù)";      break;     }    }    if(Mem_Point >= Member_Record){     cout << "/t/t/t該用戶未注冊(cè),不能使用圖書管理系統(tǒng)" << endl;     cout << "/t/t/t/t是否現(xiàn)在注冊(cè)(Y/N)" << endl;     cin >> Req;     if((strcmp(Req,"y") == 0) || (strcmp(Req,"Y") == 0))      Member_Reg();    }   }  }  getch();  system("cls");  Member_WelMenu();  getch(); } 

4、文件操作(讀入與寫入,這里只貼出會(huì)員信息部分的文件操作,圖書收錄的文件操作類似)

/*導(dǎo)出會(huì)員注冊(cè)表到文件*/ 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(); }  /*從文件導(dǎo)入會(huì)員注冊(cè)表*/ 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;  //從文件導(dǎo)入信息,并注冊(cè)會(huì)員信息   Member_Add(n,s,num,l,c);   if(infile.eof() != 0)break;   Member_FileLoad++;  }  infile.close();  return Member_FileLoad; } 

5、會(huì)員注冊(cè)程序(先掃描注冊(cè)表,若已被注冊(cè)返回失敗。注冊(cè)就是在文件中添加會(huì)員信息)

//內(nèi)部函數(shù) 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++; }  /*會(huì)員注冊(cè)程序*/ void Member_Reg() {   string n,s,num;  char l[20],c[20],choice[2];  cout << "/t/t/t/t會(huì)員注冊(cè)" << endl;  cout << "/t/t請(qǐng)以此輸入 姓名、性別、學(xué)號(hào)、登錄號(hào)、密碼" << endl;  cin >> n >> s >> num >> l >> c;  for(int i=0; i<Member_Record; i++){   if(strcmp(Member_List[i].login,l) == 0){    cout << "/t/t/t/t該登錄號(hào)已存在,注冊(cè)失敗" << endl;    getch();    system("cls");    return;   }  }  Member_Add(n,s,num,l,c);  cout << "/t/t/t/t注冊(cè)成功" << endl;  cout << "/t/t/t/t是否存入文件/ty/n?" << endl;;  cin >> choice;  if((strcmp(choice,"y")==0) || (strcmp(choice,"Y") == 0))   Member_RecordSave();  getch();  system("cls");  //clear screan } 

6、會(huì)員注銷和密碼修改

/*會(huì)員資料注銷*/ void Member_Delete() {  bool key=false;  char Del_Name[20],cmd[2];  cout<<"請(qǐng)輸入要注銷的會(huì)員登錄號(hào)"<<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<<"是否需要?jiǎng)h除該會(huì)員,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<<"會(huì)員 "<<Del_Name<<" 已注銷"<<endl;     break;    }    }  }  if(!key) cout<<"沒(méi)有找到該會(huì)員"<<endl; }  void Member_CodeAdjust() {   char TempCode[20],choice[2],Temp[20];  strcpy(Temp,Member_List[Mem_Point].code);  while(1){   cout<<"請(qǐng)輸入原來(lái)的密碼:";   cin>>TempCode;   if(strcmp(Temp,TempCode)==0){    cout<<"請(qǐng)輸入新的密碼:";    cin>>TempCode;    cout<<"請(qǐng)?jiān)俅屋斎胄碌拿艽a:";    strcpy(Member_List[Mem_Point].code,TempCode);    cin>>TempCode;    if(strcmp(Member_List[Mem_Point].code,TempCode)==0){     cout<<"/t/t/t/t修改密碼成功,新密碼為"<<Member_List[Mem_Point].code<<endl;    //test     Member_RecordSave();     break;    }    else{     cout<<"兩次輸入的密碼不一致,修改失敗!"<<endl;     cout<<"/t/t/t/t輸入Y繼續(xù),輸入N放棄修改"<<endl;     cin>>choice;     if((strcmp(choice,"n")==0)||(strcmp(choice,"N")==0))      return ;     continue;    }   }   cout<<"密碼錯(cuò)誤,請(qǐng)按任意鍵重新輸入!"<<endl;   getch();  }  } 

管理員操作的大部分程序和會(huì)員操作是類似的,這里只貼一個(gè)圖書排序的操作

7、圖書排序

/* 內(nèi)部函數(shù),供圖書排序功能調(diào)用*/ 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 圖書排序,根據(jù)作者姓名升序排序,若作者相同,則按書名升序排序 * @param None * @retval None */ void Book_Sort() {  sort( Book_List, Book_List+Book_Record, cmp );  cout << "排序已完成" << endl;  cout << "所有圖書信息如下" << endl;  cout << "書名/t作者/t價(jià)格/t出版社/t出版時(shí)間/t分類號(hào) 編號(hào) 收錄日期 是否可借" << endl;  for(int i=0; i<Book_Record; i++){   Book_InfoShow( &Book_List[i] );  }  getch(); } 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 蕲春县| 镇远县| 南木林县| 湟源县| 三河市| 卓资县| 景洪市| 柞水县| 武穴市| 江华| 石景山区| 凤阳县| 万安县| 浙江省| 陇川县| 洪江市| 利川市| 定结县| 威宁| 合作市| 屯昌县| 乌恰县| 安多县| 石狮市| 抚宁县| 乐山市| 牙克石市| 延安市| 葵青区| 高密市| 博罗县| 仁布县| 酉阳| 海伦市| 分宜县| 横峰县| 孟连| 仙桃市| 澄江县| 罗源县| 沅陵县|