欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C語言實現(xiàn)圖書管理系統(tǒng)

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

目前為止跟著學(xué)校進度學(xué)習(xí)C語言大概半年左右,基礎(chǔ)學(xué)習(xí)只學(xué)到了指針,學(xué)得非常淺。說實話,起初對C語言的印象———只是一個學(xué)習(xí)計算機語言的敲門磚,對具體C語言如何應(yīng)用等,非常迷茫。直到大一下半學(xué)期的高級語言設(shè)計課程之后,試過dos運行的圖形化界面的完整小程序,才發(fā)現(xiàn)C語言的魅力。

ok,廢話不多說了,下面是我第二節(jié)課的作品————C語言的圖書管理系統(tǒng)。一個簡單的小程序。并非純原創(chuàng),是基于網(wǎng)絡(luò)搜索到的“學(xué)生管理系統(tǒng)”改編而成的。通過直接瀏覽、修改一個完整的代碼,我的收獲頗豐。我認(rèn)為這樣比枯燥的學(xué)習(xí)代碼更加高效、易懂、易記。以下是幾個我在修改程序時學(xué)到的對于我來說比較有用的幾點:

(這些可能很簡單,但是我之前真的沒學(xué)過(⊙﹏⊙)b )

1.DOS界面的顏色設(shè)置(背景、字體顏色)

color [attr]

下面是顏色代碼:(如 color fc 為亮白色產(chǎn)生亮紅色,第一個背景,第二個前景)

0 = 黑色 8 = 灰色
1 = 藍(lán)色 9 = 淡藍(lán)色
2 = 綠色 A = 淡綠色
3 = 湖藍(lán)色 B = 淡淺綠色
4 = 紅色 C = 淡紅色
5 = 紫色 D = 淡紫色
6 = 黃色 E = 淡黃色
7 = 白色 F = 亮白色
dos只能顯示這幾種基礎(chǔ)顏色并不能自己定制其他的顏色

2.字符串的比較(用于密碼驗證等)

strcmp 是一個比較字符串的函數(shù) 原型:extern int strcmp(char *s1,char * s2); 用法:#include <string.h>  功能:比較字符串s1和s2。 說明: 當(dāng)s1<s2時,返回值<0 當(dāng)s1=s2時,返回值=0 當(dāng)s1>s2時,返回值>0

3.C語言的文件操作

定義一個代表文件的符號(指針變量)這樣的形式FILE *fp

打開文件的語句是

fopen(文件位置,打開模式);

文件位置好理解,就是文件所在的位置,例如D://test.txt

打開模式有幾種,

r(read): 讀

w(write): 寫

a(append): 追加

t(text): 文本文件,可省略不寫

b(banary): 二進制文件

+: 讀和寫

一般是rt+,也可以寫成r+,和w+,就是讀和寫,能保留原來的內(nèi)容。所以打開C盤下my目錄中的文件c:\my\test.txt的語句是

fp=fopen("c://my/test.txt","r+")。注意文件夾符號同上面的不同。

4.代碼模塊(驗證密碼、查詢信息、修改信息、刪除信息)

安全驗證

void check() 
{ 
 char userName[5];/*用戶名*/ 
 char userPWD[5];/*密碼*/ 
 int i,sum; 
 system("color 0B"); 
 for(i = 1; i < 4; i++) 
 { 
 /*用戶名和密碼均為abcde;*/ 
 printf("    (用戶名和密碼均為abcde)\n\n"); 
 printf("\n 請輸入您的用戶名:"); 
 gets(userName); 
  
 printf("\n 請輸入您的密碼:"); 
 gets(userPWD); 
  
 if ((strcmp(userName,"abcde")==0) && (strcmp(userPWD,"abcde")==0))/*驗證用戶名和密碼*/ 
 { 
  printf("\n   *用戶名和密碼正確,顯示主菜單*"); 
  return; 
 } 
 else 
 { 
  if (i < 3) 
  { 
  printf("用戶名或密碼錯誤,提示用戶重新輸入"); 
  printf("用戶名或密碼錯誤,請重新輸入!"); 
  } 
  else 
  { 
  printf("連續(xù)3次輸錯用戶名或密碼,退出系統(tǒng)。"); 
  printf("您已連續(xù)3次將用戶名或密碼輸錯,系統(tǒng)將退出!"); 
  exit(1); 
  } 
 } 
 } 
} 

②查詢圖書信息

void inquire(STUDENTS stu[]) 
 { int i; 
 char name[20]; 
 system("cls"); 
 printf(" \n\n請輸入您要查找的圖書的書名:"); 
 scanf("%s",&name); 
 for(i=0;i<k;i++) 
 if(strcmp(name,stu[i].name)==0) 
  printf("\n\n\n編號:%d,書名:%s,作者:%s,出版社:%s,價格: %.2f,數(shù)量:%d\n",stu[i].num,stu[i].name, 
 stu[i].author,stu[i].press,stu[i].price,stu[i].quantity); 
 printf("按任意鍵加回車返回主菜單!"); 
 scanf("%d",&i); 
 getchar(); 
 } 

原理是通過循環(huán),將所有stu數(shù)組中的學(xué)號stu[i].num同輸入要查詢的學(xué)號num對比,如果一樣,就printf顯示。

③修改圖書信息

函數(shù)是change(STUDENTS stu[])

void change(STUDENTS stu[]) 
 { int num,i,choice; 
 system("cls"); 
 printf("\n\n\n 請輸入您要修改的圖書的編號"); 
 scanf("%d",&num); 
 for(i=0;i<k;i++) 
 { if(num==stu[i].num) 
  printf("\n編號:%d,書名:%s,作者:%s,出版社:%s,價格: %.2f,數(shù)量:%d\n",stu[i].num,stu[i].name, 
 stu[i].author,stu[i].press,stu[i].price,stu[i].quantity); 
 
 printf("\n\n\n ********請輸入您想要修改的數(shù)據(jù)********\n\n"); 
 printf("  1. 編號\n\n"); 
 printf("  2. 書名\n\n"); 
 printf("  3. 作者\n\n"); 
 printf("  4. 出版社\n\n"); 
 printf("  5. 價格\n\n"); 
 printf("  6. 數(shù)量\n\n"); 
 printf("   請選擇(1-6):"); 
 scanf("%d",&choice); 
 switch(choice) 
 {case 1:{ 
  printf("\n 請輸入你改的新編號"); 
  scanf("%d",&stu[i].num); 
  break; 
  } 
 case 2:{ 
  printf("\n 請輸入你改的新書名"); 
  scanf("%s",stu[i].name); 
  break; 
 } 
 case 3:{ 
  printf("\n 請輸入你改的新作者"); 
  scanf("%s",stu[i].author); 
  break; 
 } 
 case 4:{ 
  printf("\n 請輸入你改的新出版社"); 
  scanf("%s",stu[i].press); 
  break; 
 } 
 case 5:{ 
  printf("\n 請輸入你改的新價格"); 
  scanf("%f",&stu[i].price); 
  break; 
 case 6:{ 
  printf("\n 請輸入你改的新數(shù)量"); 
  scanf("%d",&stu[i].quantity); 
  break; 
 } 
 } 
 } 

原理是首先定位,然后輸入新的值替換以前的值。

④刪除圖書信息

函數(shù)是 void deletel(STUDENTS stu[])

主要原理是

printf("請輸入圖書名稱:"); 
scanf("%s",Stuname2); 

讓用戶輸入圖書的名稱,然后從頭開始比對每個stu變量中的名稱
[csharp] view plain copy
if(strcmp(stu[i].name,Stuname2)==0) 
 for(j=0;j<20;j++) 
 stu[i].name[j]=stu[i+1].name[j]; 
 k--; 

如果找到名字相符的話,就將下一個名字覆蓋前一個名字

以下是完整的主程序代碼:

#include"stdio.h" 
#include"stdlib.h" 
#include"string.h" 
#include"conio.h" 
#define Pquantity 3 
#define MAX 1000 
#define N 5 
int k=0; 
 /*結(jié)構(gòu)體類型*/ 
typedef struct 
{ int num;/*編號*/ 
 char name[20];/*書名*/ 
 char author[20];/*作者*/ 
 char press[20];/*出版社*/ 
 float price;/*價格*/ 
 int quantity;/*數(shù)量*/ 
 
 
}STUDENTS; 
 
int read_file(STUDENTS stu[]) 
{ FILE *fp; 
 int i=0; 
 if((fp=fopen("stu.txt","rt"))==NULL) 
 {printf("\n\n—————庫存文件不存在!請創(chuàng)"); 
 return 0; 
 } 
 while(feof(fp)!=1) 
 { 
 fread(&stu[i],sizeof(STUDENTS),1,fp); 
 if(stu[i].num==0) 
 break; 
 else 
 i++; 
 } 
 fclose(fp); 
 return i; 
} 
void save_file(STUDENTS stu[],int sum) 
{FILE*fp; 
 int i; 
 if((fp=fopen("stu.txt","wb"))==NULL) 
 {printf("寫文件錯誤!\n"); 
 return; 
 } 
 for(i=0;i<sum;i++) 
 if(fwrite(&stu[i],sizeof(STUDENTS),1,fp)!=1) 
 printf("寫文件錯誤!\n"); 
 fclose(fp); 
} 
 
 
/*創(chuàng)建圖書信息*/ 
int input(STUDENTS stu[]) 
{ int i,x; 
 for(i=0;i<1000;i++) 
 { 
 system("cls"); 
 printf("\n\n   錄入圖書信息 (最多%d本)\n",MAX); 
 printf("  ----------------------------\n"); 
 
 printf("\n   第%d本圖書",k+1); 
 printf("\n 請輸入圖書的編號:"); 
 scanf("%d",&stu[k].num); 
 printf("\n 請輸入圖書的書名:"); 
 scanf("%s",stu[k].name); 
 printf("\n 請輸入圖書的作者:"); 
 scanf("%s",stu[k].author); 
 printf("\n 請輸入圖書的出版社:"); 
 scanf("%s",stu[k].press); 
 printf("\n 請輸入圖書的價格:"); 
 scanf("%f",&stu[k++].price); 
 printf("\n 請輸入圖書的數(shù)量:"); 
 scanf("%d",&stu[i].quantity); 
 printf("\n 請按1鍵返回菜單或按0鍵繼續(xù)創(chuàng)建"); 
 scanf("%d",&x); 
 if(x) 
 break; 
 } 
 
 return k; 
} 
 
 
/*刪除圖書信息*/ 
void deletel(STUDENTS stu[]) 
 { system("cls"); 
 char Stuname2[20]; 
 int i,j; 
 printf("請輸入圖書書名:"); 
 scanf("%s",Stuname2); 
 printf("\n"); 
 for(i=0;i<k;i++) 
 if(strcmp(stu[i].name,Stuname2)==0) 
 for(j=0;j<20;j++) 
 stu[i].name[j]=stu[i+1].name[j]; 
 k--; 
 
 
 printf("刪除成功\n"); 
 printf("按任意鍵加回車返回主菜單!"); 
 scanf("%d",&i); 
 getchar(); 
} 
 
/*打印圖書信息*/                                
void output(STUDENTS stu[]) 
{ system("cls"); 
 int i; 
 for(i=0;i<k;i++) 
 printf("編號:%d,書名:%s,作者:%s,出版社:%s,價格: %.2f,數(shù)量:%d\n",stu[i].num,stu[i].name, 
 stu[i].author,stu[i].press,stu[i].price,stu[i].quantity); 
 printf("按任意鍵加回車返回主菜單!"); 
 scanf("%d",&i); 
 getchar(); 
} 
 
/*查詢圖書信息*/ 
void inquire(STUDENTS stu[]) 
 { int i; 
 char name[20]; 
 system("cls"); 
 printf(" \n\n請輸入您要查找的圖書的書名:"); 
 scanf("%s",&name); 
 for(i=0;i<k;i++) 
 if(strcmp(name,stu[i].name)==0) 
  printf("\n\n\n編號:%d,書名:%s,作者:%s,出版社:%s,價格: %.2f,數(shù)量:%d\n",stu[i].num,stu[i].name, 
 stu[i].author,stu[i].press,stu[i].price,stu[i].quantity); 
 printf("按任意鍵加回車返回主菜單!"); 
 scanf("%d",&i); 
 getchar(); 
 } 
 
 
/*修改圖書信息*/ 
void change(STUDENTS stu[]) 
 { int num,i,choice; 
 system("cls"); 
 printf("\n\n\n 請輸入您要修改的圖書的編號"); 
 scanf("%d",&num); 
 for(i=0;i<k;i++) 
 { if(num==stu[i].num) 
  printf("\n編號:%d,書名:%s,作者:%s,出版社:%s,價格: %.2f,數(shù)量:%d\n",stu[i].num,stu[i].name, 
 stu[i].author,stu[i].press,stu[i].price,stu[i].quantity); 
 
 printf("\n\n\n ********請輸入您想要修改的數(shù)據(jù)********\n\n"); 
 printf("  1. 編號\n\n"); 
 printf("  2. 書名\n\n"); 
 printf("  3. 作者\n\n"); 
 printf("  4. 出版社\n\n"); 
 printf("  5. 價格\n\n"); 
 printf("  6. 數(shù)量\n\n"); 
 printf("   請選擇(1-6):"); 
 scanf("%d",&choice); 
 switch(choice) 
 {case 1:{ 
  printf("\n 請輸入你改的新編號"); 
  scanf("%d",&stu[i].num); 
  break; 
  } 
 case 2:{ 
  printf("\n 請輸入你改的新書名"); 
  scanf("%s",stu[i].name); 
  break; 
 } 
 case 3:{ 
  printf("\n 請輸入你改的新作者"); 
  scanf("%s",stu[i].author); 
  break; 
 } 
 case 4:{ 
  printf("\n 請輸入你改的新出版社"); 
  scanf("%s",stu[i].press); 
  break; 
 } 
 case 5:{ 
  printf("\n 請輸入你改的新價格"); 
  scanf("%f",&stu[i].price); 
  break; 
 case 6:{ 
  printf("\n 請輸入你改的新數(shù)量"); 
  scanf("%d",&stu[i].quantity); 
  break; 
 } 
 } 
 } 
 
 printf("編號:%d,書名:%s,作者:%s,出版社:%s,價格: %.2f,數(shù)量:%d\n",stu[i].num,stu[i].name, 
 stu[i].author,stu[i].press,stu[i].price,stu[i].quantity); 
 printf("按任意鍵加回車返回主菜單!"); 
 scanf("%d",&i); 
 break; 
 } 
} 
 
 
/*圖書價格信息排名*/ 
void sort(STUDENTS stu[]) 
 { int i,j,n=1,x; 
 system("cls"); 
 int t; 
 for(i=0;i<k-1;i++) 
 for(j=i+1;j<k;j++) 
 if(stu[i].price<stu[j].price) 
 { t=stu[i].price; 
 stu[i].price=stu[j].price; 
 stu[j].price=t; 
  t=stu[i].num; 
 stu[i].num=stu[j].num; 
 stu[j].num=t; 
 
 } 
 for(i=0;i<k;i++) 
 printf("排名 編號 價格\n %d %d %.2f\n",n++,stu[i].num,stu[i].price); 
 printf("按任意鍵加回車返回主菜單!"); 
 scanf("%d",&x); 
 getchar(); 
 } 
 
void pquantitydis() 
{ 
 printf(" \n\n\n   **********************************\n"); 
 printf("   *    *\n"); 
 printf("   *    *\n"); 
 printf("   *    *\n"); 
 printf("   * 歡迎進入圖書信息管理系統(tǒng) *\n"); 
 printf("   *    *\n"); 
 printf("   *    *\n"); 
 printf("   *    *\n"); 
 printf("   **********************************\n"); 
 
} 
void check() 
{ 
 char userName[5];/*用戶名*/ 
 char userPWD[5];/*密碼*/ 
 int i,sum; 
 system("color 0B"); 
 for(i = 1; i < 4; i++) 
 { 
 /*用戶名和密碼均為abcde;*/ 
 printf("    (用戶名和密碼均為abcde)\n\n"); 
 printf("\n 請輸入您的用戶名:"); 
 gets(userName); 
  
 printf("\n 請輸入您的密碼:"); 
 gets(userPWD); 
  
 if ((strcmp(userName,"abcde")==0) && (strcmp(userPWD,"abcde")==0))/*驗證用戶名和密碼*/ 
 { 
  printf("\n   *用戶名和密碼正確,顯示主菜單*"); 
  return; 
 } 
 else 
 { 
  if (i < 3) 
  { 
  printf("用戶名或密碼錯誤,提示用戶重新輸入"); 
  printf("用戶名或密碼錯誤,請重新輸入!"); 
  } 
  else 
  { 
  printf("連續(xù)3次輸錯用戶名或密碼,退出系統(tǒng)。"); 
  printf("您已連續(xù)3次將用戶名或密碼輸錯,系統(tǒng)將退出!"); 
  exit(1); 
  } 
 } 
 } 
} 
void menu() 
{ 
 STUDENTS stu[20]; 
 int choice,k,sum; 
 sum=read_file(stu); 
 if(sum==0) 
 { printf("首先錄入基本庫存信息!按回車后進入—————\n"); 
 getch(); 
 sum=input(stu); 
 } 
 
 do 
 { system("cls"); 
 printf("\n\n\n  ********圖書信息管理系統(tǒng)********\n\n"); 
 printf("   1. 創(chuàng)建圖書信息\n\n"); 
 printf("   2. 打印圖書信息\n\n"); 
 printf("   3. 查詢圖書信息\n\n"); 
 printf("   4. 修改圖書信息\n\n"); 
 printf("   5. 刪除圖書信息\n\n"); 
 printf("   6. 圖書價格信息排名\n\n"); 
 printf("   0. 退出系統(tǒng)\n\n"); 
 printf("   請選擇(0-6):"); 
 scanf("%d",&choice); 
 switch(choice) 
 { 
 case 1: k=input(stu); break;/*創(chuàng)建圖書信息*/ 
 case 2: output( stu) ; break;/*打印圖書信息*/ 
 case 3: inquire(stu); break;/*查詢圖書信息*/ 
 case 4: change(stu); break;/*修改圖書信息*/ 
 case 5: deletel(stu); break;/*刪除圖書信息*/ 
 case 6: sort(stu); break;/*圖書價格信息排名*/ 
 case 0: break; 
 } 
 }while(choice!=0); 
 save_file(stu,sum); 
} 
int main() 
{ 
 int i,sum; 
 pquantitydis(); 
 check(); 
 menu(); 
} 

更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。

 以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:C語言實現(xiàn)opencv提取直線、輪廓及ROI實例詳解

欄    目:C語言

下一篇:利用OpenCV實現(xiàn)局部動態(tài)閾值分割

本文標(biāo)題:C語言實現(xiàn)圖書管理系統(tǒng)

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/990.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有