當前位置:首頁 » 編程語言 » c語言程序設計書店存貨清單
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言程序設計書店存貨清單

發布時間: 2023-08-29 01:12:55

1. c語言程序設計 用鏈表編寫商品庫存管理。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct node{
char no[20];//存放編號
char name[40];//存放名稱
int reserve;//庫存
struct node *next;
}NODE;

typedef struct link{
NODE *front;//頭指針
NODE *rear;//尾指針
}LINK;

NODE *create_node(void){
NODE *node = (NODE *)malloc(sizeof(NODE));
printf("請輸入貨物編號:");
gets(node->no);
printf("請輸入貨物名稱:");
gets(node->name);
printf("請輸入貨物名稱:");
char ch;
while( (ch= getchar()) != '\n');//rewind(stdin);
scanf("%d",&node->reserve);
node->next = NULL;
return node;
}

void init_link(LINK *link){
link->rear = NULL;
link->front = NULL;
}

int link_empty(LINK *link){
return link->front == NULL ? 1: 0;
}

int node_num(LINK *link){
int num = 0;
if( link_empty(link)){
return num;
}
num = 1;
NODE *node = link->front;
while(node != link->rear){
node = node->next;
++num;
}
return num;
}

/*NODE *node_find(LINK *link,const int n){
int num = node_num(link);
if(num < n){
printf("公有節點%d個,無法找到第%d個節點\n",num,n);

}
else{

}
}
*/
void node_push(LINK *link){
NODE *node = create_node();
if(link->front == NULL){
link->front = node;
link->rear = node;
node->next = NULL;
}
else{
link->rear->next = node;
link->rear = node;
node->next = NULL;
}
}

void node_insert(LINK *link,const int n){
int num = 0,i = 1;
NODE *node = link->front;
NODE *new_node = NULL;
if ( link_empty(link) ){
printf("鏈表為空,將建立鏈表!\n");
node_push(link);
}
else{
if( n <= 1){
printf("在鏈表頭插入數據\n");
new_node = create_node();
new_node->next = link->front;
link->front = new_node;
}
else if( n>= num = node_num(link) ){
printf("節點數少於%d,將在末尾插入節點.\n",n);
node_push(link);
}
else{
printf("在第n個節點後插入數據\n");
if(num >= n){
while( i != n){
node = node->next;
++i;
}
new_node = create_node();
new_node-next = node->next;
node->next = new_node;
}
}
}

void find_node_insert(LIKNK *link,const char *name){
NODE *node = link->front;
if( link_empty(link) )
node_push(link);
else {
while(strcmp(node->name,name) != 0){
if(node != link->rear)
node = node->next;
else break;

}
if(node != NULL){

NODE *new_node = create_node();
new_node-next = node->next;
node->next = new_node;
}
else {
printf("沒有找到相關貨物,將在頭節點插入數據\n");
intsert(link,0);
}
}

/*由於我不知到你對貨物統計具體實現的要求,關於貨物數量統計就你自己寫了,應該比較簡單。*/
/* 代碼沒有具體運行過,如果你學過C結構體與指針,就這個代碼思路應該看得明白,真正的實現你自己實現吧
這樣對你會更好寫。可能會有錯誤的地方,請謹慎。 */

2. c語言圖書管理系統程序設計

一 程序設計說明書
【設計題目】 圖書館借閱管理
【問題描述】圖書館,適合用C++面向對象的功能來描述。圖書館管理系統分為借書、還書、圖書管理和讀者服務等四個部分。設計一個讀者類Reader,記錄每個讀者基本信息;讀者庫類Rdatabase,記錄所有讀者信息;圖書類Book, 記錄每本書的基本信息;圖書庫類Bdatabase, 記錄所有圖書信息。
【基本要求】
1讀者庫類RDatabase中,其構造函數中,將read.txt文件中所有讀入讀者記錄rede[]中。處理完畢,在析構函數中將read[]中的所有未刪記錄寫入到read.txt中。
2圖書庫類BDatabase中,其構造函數中,將book.txt文件中所有讀入圖書記錄book[]中。處理完畢,在析構函數中將book[]中的所有未刪記錄寫入到book.txt中。
3 利用構造函數完成讀者和圖書數據初始化,完成內存分配。程序結束前,析構函數完成所申請的堆內存空間。
4 編寫主函數,對所編寫的矩陣類進行全面測試。要求用戶界面採用菜單方式。測試中需要讀者和圖書數據通過I/O流從磁碟文件讀入,同時顯示在屏幕上。得到的數據通過I/O流寫入磁碟文件保存,同時顯示在屏幕上。
5 源程序中要有充分的注釋,報告中要有詳細的流程圖和文字材料。
【類的設計】
該程序包含了四個類,如下:
1.Reader類,有讀者的基本管理功能,具有以下私有數據:
int tag;//刪除標記 1:已刪;0:未刪
int no;//讀者編號
char name[10];//讀者姓名
int borbook[Maxbor];//所借圖書
2.讀者庫類Rdatabase, 具有以下私有數據:
int top;//讀者記錄指針
Reader read[Maxr];//讀者記錄
3.圖書庫類Book,有一本圖書的基本功能,有以下私有數據:
int tag;//刪除標記 1:已刪;0:未刪
int no;//圖書編號
char name[20];//書名
int onshelf;//是否在架 1在架 0已借
4.圖書庫類BDatabase,有以下私有數據:
int top;//圖書記錄指針
Book book[Maxb];//圖書記錄
【特殊函數的設計說明】
構造函數
1.Reader類中構造函數Reader(),初始化函數;
2.讀者庫類RDatabase中,其構造函數Rdatabase(),將read.txt文件中所有讀入讀者記錄rede[]中。
3.Book類中構造函數Book(),初始化函數;
4.圖書庫類BDatabase中,其構造函數中,將book.txt文件中所有讀入圖書記錄book[]中。

拷貝構造函數
Reader類中的拷貝構造函數將getname()的返回值讀者姓名拷貝到setname()中,Book類中的拷貝構造函數將getname()函數的返回值圖書名拷貝到圖書名設置函數setname()中。

析構函數
1.讀者庫類RDatabase中,其析構函數~Rdatabase(),將read[]中的所有未刪記錄寫入到read.txt中;
2.圖書庫類BDatabase中,其析構函數~Bdatabase(),將book[]中的所有未刪記錄寫入到book.txt中。

運算符重載
重載了「=」,當比較讀者編號和圖書編號時,重載;重載位運算符「〈〈」和「〉〉」等。

【主要函數演算法流程圖】

【程序的使用方法】
1.進入操作頁面,按提示操作;
2.首先,新增圖書和讀者信息,之後就可以對以存在的信息進行操作;
3.操作當中,可以隨時增加,更改和刪除圖書或讀者信息;
4.當選擇退出時,進行清屏。

二 程序上機調試報告
【語法錯誤及其排除】
1.在敲程序時,有很多拼寫錯誤,例好多處把Readdata()誤打Readdate();結束的分號,在不同的輸入法狀態下輸入,這些小錯誤剛開始很難發現,不過有了經驗,就很容易了。
2.創建新的構造函數時,使用出現了錯誤。重載構造函數要注意函數的訪問許可權,結果就不會出現錯誤。
【演算法錯誤及其排除】
1.讀者類中借書操作函數中,採用循環語句時判斷讀者已借圖書量時for(int i=0;i<Maxbor;i++)誤寫為for(int i=1;i<Maxbor;i++),使循環發生錯誤。
2.指針使用錯誤,指針b和r混淆,導致編譯錯誤得到「error C2660: 'retbook' : function does not take 1 parameters」錯誤報告。

3. 用C語言設計一個超市購物列印系統

我自己設計了一個,你試試!操作結束後按Ctrl+z顯示清單。使用方面有什麼不懂可以問我!
#include "stdio.h"
typedef struct{
char node[100]; /*商品編號*/
char name[100];/*商品名稱*/
float price;/*商品價格*/
} datatype;

typedef struct node{
datatype food[100];
int len;/*存放商品總數*/
}SPku;

datatype Input(void)
{datatype x;<br/> scanf("%s %s %f",x.node,x.name,&x.price);<br/>首消 printf("輸入完畢!");<br/>return x;<br/>}

void create(SPku *r)
{ int i;
printf("\n輸入商品總數:");
scanf("%d",&r->len);
for(i=0;i<r->len;i++)
{printf("\n輸入商品編號 名稱 價格:"); <br/> r->food[i]=Input();<br/> }
}
int strlen(char s[])
{int i;<br/> for(i=0;i<s[i];i++);<br/> return i;<br/> }
int compare(char y[],char s[])
{int i;<br/>if(strlen(y)!=strlen(s))<br/> return 0;<br/>else<br/>轎脊 for(i=0;i<strlen(y);i++)<br/>者帆知 if(y[i]!=s[i])<br/> return 0;<br/> return 1;<br/>}

void Output(datatype f)
{
printf("\n%s %s %f",f.node,f.name,f.price);
}

int judge(SPku *r,char nd[])
{ int i;
for(i=0;i<r->len;i++)
if(compare(r->food[i].node,nd))
{ Output(r->food[i]) ;
return i;
}
return 1000;
}

main()
{SPku r,n;<br/> char nd[100];<br/> int k,j,i,y=0;<br/> printf("\n開始創建資料庫...");<br/> create(&r);<br/> printf("\n*********商品總單*********");<br/> for(i=0;i<r.len;i++)<br/> Output(r.food[i]);<br/> printf("\n**************************");<br/>while((j=getchar())!=EOF)<br/> {<br/> printf("\n掃描輸入商品的編號:");<br/> gets(nd);<br/> printf("輸入成功!");<br/> k=judge(&r,nd);<br/> if(k==1000) <br/> printf("\n無此商品...");<br/> else<br/> n.food[y++]=r.food[k];<br/> }
printf("\n*********商品清單*********");
n.len=y;
for(i=0;i<n.len;i++)
Output(n.food[i]);
}

4. C語言程序設計;圖書信息管理系統;圖書信息包括:書號、書名、作者名、出版時間、價格,借閱次數等。

// 圖書管理的實驗報告

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct BOOK
{
int id,usr[10],total,store,days[10];
char name[30],author[20];
}books[100];
void page_title(char *menu_item)
{
printf("\n- %s -\n\n",menu_item);
}

void book_add(void)
{
int n;
page_title("注冊");
for(n=0;n<100;n++)
if(books[n].id==0) break;
printf("序號:");
scanf("%d",&books[n].id);
printf("書名:");
scanf("%s",&books[n].name);
printf("作者:");
scanf("%s",&books[n].author);
printf("數量:");
scanf("%d",&books[n].total);
books[n].store=books[n].total;

}

int search_book(void)
{
int n,i;
page_title("查找");
printf("請輸入圖書序號:");
scanf("%d",&i);
for(n=0;n<100;n++)
{
if(books[n].id==i)
{
printf("書名:%s\n",books[n].name);
printf("作者:%s\n",books[n].author);
printf("存數:%d\n",books[n].store);
printf("總數:%d\n",books[n].total);
return n;
}
}
printf("\n輸入有錯或圖書序號不存在.\n");
return -1;
}

void book_out(void)
{
int n,s,l,d;
page_title("借書");
if((n=search_book())!=-1&&books[n].store>0)
{
printf("請輸入借書證序號:");
scanf("%d",&s);
printf("請輸入可借天數:");
scanf("%d",&d);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==0)
{
books[n].usr[l]=s;
books[n].days[l]=d;
break;
}
}
books[n].store--;
}
if(n!=-1&&books[n].store==0) printf("此書已經全部借出.\n");

}
/*借書的函數,首先調用找書函數*/

void book_in(void)
{
int n,s,l;
page_title("還書");
if((n=search_book())!=-1&&books[n].store<books[n].total)
{
printf("借閱者圖書證列表:\n");
for(l=0;l<10;l++)
if (books[n].usr[l]!=0)
printf("[%d] - %d天\n",books[n].usr[l],books[n].days[l]);
printf("請輸入借書證序號:");
scanf("%d",&s);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==s)
{
books[n].usr[l]=0;
books[n].days[l]=0;
break;
}
}
books[n].store++;
}
if(n!=-1&&books[n].store==books[n].total)
printf("全部入藏.\n");

}

void book_del(void)
{
int n;
page_title("注銷");
if((n=search_book())!=-1) books[n].id=0;
printf("該書已注銷.\n");

}

void main(void)
{ char n;
page_title("請選擇");
printf("1 注冊\n2 查找\n");
printf("3 借書\n4 還書\n5 注銷書");
printf("\n0 退出\n");
while(n=getchar()){
switch(n)
{
case '1' : book_add();break;
case '2' :search_book();break;
case '3' : book_out();break;
case '4' : book_in();break;
case '5' : book_del();break;
case '0' :exit(0);
}printf("\n\n請選擇\n1 注冊\n2 查找\n3 借書\n4 還書\n5 注銷書\n0 退出\n\n");
getchar();
}
}

5. c語言題目!跪求大佬做!

#include<stdio.h>

main(){
int n1,n2,n3

double x;
printf("輸入三種商品購買數量,空格分開:" );
scanf("%d%d%d",&n1,&n2,&n3);
x=n1*2.6;
x+=n2*12*(n2>10,0.8,1);
x+=n*4.8*(n3>20,0.7,1);
printf("總金額:%lf\n",x);

}

6. 用c語言設計一個超市管理系統程序,要求能添加商品,能查詢商品,能購買商品,能展示商品。

超市管理系統
*/
#include<stdio.h>
#include<string.h>
//歡迎界面//
void welcome();
//功能瀏覽//
void mainMenu();
//購物結算//
void saleCalc();
//進貨管理//
void addGoods();
//修改信息
void updateGoods();
//顯示商品//
void showGoods();
//刪除商品//
void deleteGoods();
//查詢商品//
int searchGoods();
//購買結算
void saleCalc();
//更新庫存//
void updateGoodsNum(int number,char name[50]);
//結構體
struct goods
{
char name[50];//商品名稱
int num;//商品數量
float price;//商品價格
};
int count;//商品種類數量
goods list[1000];//聲明goods的變數數組
char name[50];
void main()//主函數
{
int num;
welcome();
do{
mainMenu();
printf("請選擇功能:");
scanf("%d",&num);
switch(num)
{
case 1:
saleCalc();
break;
case 2:
addGoods();
break;
case 3:
updateGoods();
break;
case 4:
showGoods();
break;
case 5:
deleteGoods();
break;
case 0:
break;
}
}while(num!=0);
}
void welcome()//歡迎界面
{
printf("-------------------------------------------------------------------------\n");
printf("****************歡迎使用超市管理系統*******************\n");
printf("-------------------------------------------------------------------------\n");
}
void mainMenu()//功能瀏覽界面
{
printf("****1.購物結算****\n");
printf("****2.進貨管理****\n");
printf("****3.修改商品****\n");
printf("****4.顯示商品****\n");
printf("****5.刪除商品****\n");
printf("****0.退出系統****\n");
}
//查詢信息
int searchGoods()//查詢商品信息
{
printf("請輸入您要購買商品的名字:");
scanf("%s",name);
for(int i=0;i<count;i++)
{
if(stricmp(name,list[i].name)==0)
{
return 1;
}
else
{
printf("對不起了,沒有找到%c商品\n",name);
return -1;
}
}
}
//購物結算
void saleCalc()//購物結算
{
int number,i,s;
float priceGoods=0,sum=0,money;
char c=' ';
s=searchGoods();
do
{
if(s==-1)
{
s=searchGoods();
}else
{
printf("該商品b存在");
for(i=0;i<count;i++)
{
if(strcmp(name,list[i].name)==0)
{
priceGoods=list[i].price;
break;
}
}
printf("請輸入您要購買的數量:");
scanf("%d",&number);
sum=priceGoods*number;
updateGoodsNum(-number,name);
printf("是否繼續購買(y/n)");
fflush(stdin);
c=getchar();
}
}while(c=='y'||c=='Y');
printf("本次消費總金額為:%.2f",sum);
printf("請輸入您的實際付款金額:");
scanf("%f",&money);
printf("找零:%.2f\n",money-sum);
}
//進貨管理
void addGoods() //商品的錄入
{
int i=0;
char c=' ';
do
{
printf("請輸入商品的名稱:");
fflush(stdin);
scanf("%s",list[i].name);
printf("請輸入商品的數量:");
scanf("%d",&list[i].num);
printf("請輸入商品的單價:");
scanf("%f",&list[i].price);
printf("是否繼續(y/n)");
fflush(stdin);
c=getchar();
}while(c=='Y'||c=='y');
}
//更新庫存
void updateGoodsNum(int number,char name[50])
{
int i;
for(i=0;i<count;i++)
{
list[i].num+=number;//list[i].num=list[i].num+number
}
}
//顯示貨物信息
void showGoods()
{
printf("商品名稱\t數量\t單價\n");
for(int i=0;i<count;i++)
{
printf("%s\t%d\t%.2f\n",list[i].name,list[i].num,list[i].price);
}
}
//修改商品信息
void updateGoods()
{
int i;
printf("請輸入您要修改商品的名字:");
scanf("%s",&name);
for(i=0;i<count;i++)
{
if(strcmp(name,list[i].name)==0)
{
printf("請輸入新的商品名字:");
scanf("%s",list[i].name);
printf("請輸入您要修改商品的數量:");
scanf("%d",list[i].num);
printf("請輸入您要修改商品的單價:");
scanf("%f",list[i].price);
}
else
{
printf("對不起,沒有找到該商品信息!");
}
}
}
//刪除商品信息
void deleteGoods()
{
int index=-1;
printf("請輸入您要刪除的商品名字:");
scanf("%s",name);
for(int i=0;i<count;i++)
{
if(strcmp(name,list[i].name)==0)
{
index=i;
}
}if(index==-1)
{
printf("對不起!沒有找到您要刪除的商品信息!");
}
else{
for(int i=index;i<count;i++)
{
list[i]=list[i+1];
}
}
}