『壹』 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結構體與指針,就這個代碼思路應該看得明白,真正的實現你自己實現吧
這樣對你會更好寫。可能會有錯誤的地方,請謹慎。 */
『貳』 商品庫存管理系統的c語言源代碼
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct BOOK
{
int id,usr[10],total,store,days[10];
char name[31],author[21];
}books[100];
/*上面是結構體的定義,用於存放書籍及借書的信息。*/
void page_title(char *menu_item)
{
clrscr();
printf(">>> 圖 書 管 理 系 統 <<<\n\n- %s -\n\n",menu_item);
}
/*上面是列印頁眉的函數,同時通過參數menu_item,可以顯示當前的狀態。*/
void return_confirm(void)
{
printf("\n按任意鍵返回……\n");
getch();
}
/*上面是返回前請求確認的函數,以便在返回前觀察結果*/
int search_book(void)
{
int n,i;
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 of ",books[n].store);
printf("%d\n",books[n].total);
return n;
}
}
printf("\n輸入錯誤或無效圖書序號.\n");
return -1;
}
/*上面的函數是在數組中找到圖書號匹配的記錄,顯示其信息並返
回數組下標,如果找不到相應記錄則提示錯誤並返回-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");
return_confirm();
}
/*上面是借書的函數,首先調用找書函數*/
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");
return_confirm();
}
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);
『叄』 c語言 商品管理系統
#include"stdio.h"
#include <conio.h>
#include <stdlib.h>
//#include"FILE.h"
typedef struct shangpin
{
char name[20];
int biaohao;
int shuliang;
double jiage;
}Node;
typedef struct list
{
Node data;
struct list *next;
}List ,*Slist;
void charu(Slist &s,Node x);
int caidan()
{
int i;
while(1)
{
system("cls");
printf("\n\t\t\t 商店銷售管理系統\n\n");
printf("\t\t **********************************************\n\n");
printf("\t\t 1--添加商品 2--出售商品\n\n");
printf("\t\t 3--刪除商品 4--顯示商品\n\n");
printf("\t\t 5--查找商品 0--退出系統\n\n");
printf("\t\t **********************************************\n\n");
printf("請選擇(0-5): ");
scanf("%d",&i);
if(i<6&&i>=0)break;
}
return i;
}
void chushihua(Slist &s)
{
Slist head=new List;
head->next=NULL;
s=head;
}
void tianjia(Slist &s)
{
Node x;
Slist r,p,q;
int i=0;
r=new List;
r->next=NULL;
q=p=s->next;
while(q)
{
i++;
q=q->next;
}
printf("請輸入商品名稱、數量以及價格: ");
scanf("%s%d%lf",x.name,&x.shuliang,&x.jiage);
x.biaohao=i+1;
r->data=x;
s->next=r;
r->next=p;
}
void chu(Slist &s)
{
FILE *cp;//定義文件指針
int i=0;
Node x;
if((cp=fopen("shangpin.txt","a+"))==NULL)//打開文件
{printf("文件打開失敗!");return ;}
fseek(cp,0L,SEEK_SET);//將文件指針移動到文件開頭
while(!feof(cp))
{
fscanf(cp,"%s%d%lf",x.name,&x.shuliang,&x.jiage);//讀取文件的內容
x.biaohao=++i;
charu(s,x);//把讀到的數據插入到鏈表上
}
fclose(cp);//關閉文件
}
void charu(Slist &s,Node x)
{
Slist r,p=s->next;
r=new List;
r->next=NULL;
r->data=x;
s->next=r;
r->next=p;
}
void xieru(Slist s)
{
FILE *cp;//同上
Slist p=s->next;
if((cp=fopen("shangpin.txt","w+"))==NULL)
{printf("文件打開失敗!");return ;}//同上
while(p)
{
fprintf(cp,"%s %d %.2lf ",p->data.name,p->data.shuliang,p->data.jiage);//寫入文件中,並且以空格隔開
p=p->next;
}
fclose(cp);//關閉文件
}
Slist chazhao(Slist s,int m)
{
Slist p=s->next;
if(p==0)return 0;
if(p->next==0)return p;
if(p->data.biaohao==m)return p;
while(p->next)
{
if(p->next->data.biaohao==m)return p;
p=p->next;
}
return 0;
}
void xianshi(Slist s)
{
Slist p;
p=s->next;
printf("%10s%20s%10s%10s\n","商品編號","商品名稱","商品數量","商品價格");
while(p)
{
printf("%10d%20s%10d%10.2f\n",p->data.biaohao,p->data.name,p->data.shuliang,p->data.jiage);
p=p->next;
}
}
void shanchu(Slist &s)
{
}
void chushou(Slist &s)
{
}
void main()
{
int num;
Slist s;
chushihua(s);
chu(s);
num=caidan();
while(1)
{
switch(num)
{
case 0:exit(0);break;
case 1:tianjia(s);break;
case 2:chushou(s);break;
case 3:shanchu(s);break;
case 4:xianshi(s);break;
case 5:chazhao(s,1);break;
}
printf("按任意鍵繼續!");
getch();
num=caidan();
}
xieru(s);
}
//有些函數我在沒寫啊,你自己寫寫吧,文件的讀取和寫入,還有鏈表的創建我都給你寫好了,也就是上面的1,4我都寫好了,
//包括了文件,剩下的2,3,5,你自己試試,並且我也給你寫了一個查找函數,你看看能用不!
『肆』 c語言設計實現一個簡單庫存管理程序編程
我有一個學生管理系統程序,你可以把學生量改成庫存量。
希望對你能有幫助。http://..com/question/2202293700663164948.html?oldq=1
『伍』 如何用C語言編一個小型的倉庫管理系統,作為課程設計的 謝了哈
可以完成源代碼的編制
『陸』 C語言課程設計,商品庫存管理系統怎麼做啊
首先要創建資料庫啊,也就是一個txt文件,要讓裡面有內容啊。其次是你的增加刪除商品種類,修改指定商品的數目之類的,具體看老師的要求。
常式(基本框架,具體的操作需進一步開發):
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<memory.h>
intcount=0;
structcommodity
{
intid;/*商品編號*/
intnumber;/*庫存數量*/
intprice;/*單價*/
charname[20];/*商品名稱*/
charindate[9];/*入庫時間*/
chardeadline[9];/*有效日期*/
}a[100];
voidpage_title(char*menu_item)
{
printf("【商品庫存管理系統】 ",menu_item);
}
voidreturn_confirm(void)
{
printf(" 按任意鍵返回…… ");
getch();
}
voidinsert(void)/*1插入*/
{
}
intsearch(void)/*2商品信息的查詢*/
{
}
voiddel(void)/*3刪除*/
{
}
voidsort()/*4排序*/
{
}
intmodify(void)/*5修改*/
{
}
intmain(void)
{menu:page_title("操作選單");
printf(" 1信息查詢 2全部商品 ");
printf(" 3商品增加 4商品刪除 ");
printf(" 5信息修改 0退出程序 ");
switch(getch())
{
case'1':search();break;
case'2':sort();break;
case'3':insert();break;
case'4':del();break;
case'5':modify();break;
case'0':exit(0);
}
gotomenu;
return0;
}
『柒』 求一個C語言課程設計題的源程序代碼,題目是:商品進銷存管理程序。
#include<stdio.h>
#include <string.h>
#define NULL 0
#define LEN sizeof(struct student)
struct date
{ int year;
int month;
int day;
};
struct xueke
{
int pingshi;
int shiyan;
int kaoshi;
float zchji;
};
struct student
{
int num;
char name[10];
char sex;
struct date birthday;
struct xueke xk[2];
struct student *next; /*指向下一個結構體數據類型*/
};
typedef struct student score; /*用score來代替類型struct student*/
int n,k; /*n.k為全局變數,n表示結點個數,k表示人數*/
score *r=NULL; /*定義一個全局變數指針*/
score *stu;
/***************************************菜單***********/
int caidan(k)
{
int i;
printf("\n\n\n\t\t\t\t考試成績管理系統\n");
printf("\t\t\t作者:薛文波、魏文清、姚志浩\n");
for(i=1;i<79;i++)
printf("*");
printf("\n");
printf("1.輸入學生資料\t\t2.輸出學生資料\t\t3.統計學生資料\n");
printf("4.刪除學生資料\t\t5.查詢學生資料\t\t6.排序學生資料\n");
printf("7.插入學生資料\t\t8.更新學生資料\t\t9.保存學生資料\n");
printf("0.退出!\n");
for(i=1;i<79;i++)
printf("*");
printf("\n");
printf("請輸入你所要操作的選項:");
scanf("%d",&k);
printf("\n");
getchar();
return(k);
}
/**************************************************/
save(score *head)
{
score *q=head;
FILE *fp; /*調用fopen()函數打開磁碟文件*/
char wjlj[90];
printf("請輸入文件的路經:");
scanf("%s",wjlj);
if((fp=fopen(wjlj,"w"))==NULL) /*為讀、寫建立一個新的二進制文件 */
{
printf("文件打開失敗!\n");
return(0);
}
fprintf(fp,"*****************************************************************************\n");
fprintf(fp,"|學號|姓名|性別|生 日 |");
fprintf(fp,"C(平時.實驗.考試.綜合)|");
fprintf(fp,"高數(平時.實驗.考試.綜合)\n");
fprintf(fp,"*****************************************************************************\n");
while(q!=NULL)
{
fprintf(fp,"|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day);
fprintf(fp,"%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji);
fprintf(fp,"%5d|%5d|%5d|%.1f\n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji);
q=q->next;
}
fclose(fp); /*關閉文件指針fP指向的文件*/
printf("文件已保存\n");
return(0);
}
/*******************************************輸入模塊*******/
score *creat(void)
{
score *head,*p1,*p2; /*定義一個頭指針和兩個工作點*/
int i;
head=NULL;
n=0;
p1=(struct student *)malloc(LEN); /*用P1開辟一個新單元*/
printf("1.請輸入學生資料(輸0退出):\n");
printf("a.請輸入學生學號(學號應大於0):");
scanf("%d",&p1->num);
while(p1->num<0)
{
printf("輸入錯誤,請重新輸入:"); /* 學號小於零報錯*/
scanf("%d",&p1->num);
}
while(p1->num!=0)
{ printf("b.請輸入學生的姓名:");
scanf("%s",p1->name);
printf("請輸入學生的性別(M&&F):");
scanf(" %c",&p1->sex);
while(p1->sex!='M'&&p1->sex!='F') /*判斷輸入性別時的字母是否為M或F*/
{
printf("輸入錯誤,請重新輸入學生的性別:");
scanf(" %c",&p1->sex);
}
printf("c.請輸入學生的生日(年.月.日):");
scanf(" %d.%d.%d",&p1->birthday.year,&p1->birthday.month,&p1->birthday.day);
printf("d.請輸入學生的成績!\n");
printf("1.請輸入 C 成績(平時,實驗,考試):");
scanf(" %d,%d,%d",&p1->xk[0].pingshi,&p1->xk[0].shiyan,&p1->xk[0].kaoshi);
p1->xk[0].zchji=p1->xk[0].pingshi*0.1+p1->xk[0].shiyan*0.2+p1->xk[0].kaoshi*0.7;
printf("2.請輸入高數成績(平時,實驗,考試):");
scanf(" %d,%d,%d",&p1->xk[1].pingshi,&p1->xk[1].shiyan,&p1->xk[1].kaoshi);
p1->xk[1].zchji=p1->xk[1].pingshi*0.1+p1->xk[1].shiyan*0.2+p1->xk[1].kaoshi*0.7;
n=n+1; /*結點個數加一*/
if(n==1) head=p2=p1; /*若為首結點,則頭指針指向本結點*/
else p2->next=p1;
p2=p1; /*若不是首結點 則把本結點鏈接到尾部*/
p1=(struct student *)malloc(LEN);
printf("********************************\n");
printf("1.請輸入學生資料(輸0退出):\n");
printf("a.請輸入學生的學號(學號應大於0):");
scanf("%d",&p1->num);
while(p1->num<0) /*判斷輸入的學號是否小於0*/
{
printf("輸入錯誤,輸入錯誤請重新輸入學號:");
scanf("%d",&p1->num);
}
}
p2->next=NULL; /* 最後結點不指向任何地址*/
free(p1); /*釋放結點佔用空間*/
return(head);
}
/*****************************************輸出模塊********/
void print(score *head)
{
score *q=head;
printf("\n輸出%d個學生的資料:\n",n);
printf("*****************************************************************************\n");
printf("|學號|姓名|性別|生 日 |");
printf("C(平時.實驗.考試.綜合)|");
printf("高數(平時.實驗.考試.綜合)\n");
printf("*****************************************************************************\n");
if(head==NULL)
{
printf("\n沒有這個學生的資料!\n");
return;
}
while(q!=NULL)
{
printf("|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day);
printf("%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji);
printf("%5d|%5d|%5d|%.1f \n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji);
q=q->next; /*q指針依次向下掃描*/
}
printf("\n***************************************************************************\n");
}
/*********************************************統計模塊*****/
score *tongji(score *head)
{
score *q=head,*max,*min;
int i,k1[2]={0,0},k2[2]={0,0},k3[2]={0,0}; /*將人數統計值的初始值賦為0*/
float czong=0,gzong=0,caver,gaver;
q=head; /*工作點首先指向頭指針*/
max=q;
min=q;
while(q!=NULL)
{
czong+=q->xk[0].zchji; /*P1指向學生總成績*/
gzong+=q->xk[1].zchji;
for(i=0;i<2;i++)
{
if(q->xk[i].zchji>max->xk[i].zchji)
max=q; /*將最大值的地址賦給P1*/
if(q->xk[i].zchji<min->xk[i].zchji)
min=q;
if(q->xk[i].zchji>=80) k1[i]++; /*k1[i]++為人數的統計*/
else if(q->xk[i].zchji>=60) k2[i]++;
else k3[i]++; /*分段成績的人數統計*/
}
q=q->next;
}
caver=czong/n; /*計算C的平均成績*/
gaver=gzong/n; /*計算math平均成績*/
printf("C 語言成績的總分為:%.2f C 語言成績的平均分為:%.2f\n",czong,caver);
printf("C 語言成績的最高分為:%.2f C 語言成績的最低分為:%.2f\n",max->xk[0].zchji,min->xk[0].zchji);
printf("C 語言成績優秀的人數為:%d\n",k1[0]);
printf("C 語言成績良好的成績為:%d\n",k2[0]);
printf("C 語言成績及格的人數為:%d\n",k1[0]+k2[0]);
printf("C 語言成績不及格的人數為:%d\n",k3[0]);
printf("高數成績的總分為:%.2f 高數成績的平均分為:%.2f\n",gzong,gaver);
printf("高數成績的最高分為:%.2f 高數成績的最低分為:%.2f\n",max->xk[1].zchji,min->xk[1].zchji);
printf("高數成績優秀的人數為:%d\n",k1[1]);
printf("高數成績良好的人數為:%d\n",k2[1]);
printf("高數成績及格的人數為:%d\n",k1[1]+k2[1]);
printf("高數成績不及格的人數為:%d\n",k3[1]);
return(head);
}
/*********************************************按學號查詢模塊*****/
void chaxun2(score *head)
{
score *q=head;
int sss=0;
char name[10];
printf("請輸入要查詢的學生姓名:");
scanf("%s",name);
while(q!=NULL)
{
if(strcmp(name,q->name)==0) /*通過字元串的比較按姓名查找*/
{
printf("*****************************************************************************\n");
printf("|學號|姓名|性別|生 日 |");
printf("C(平時.實驗.考試.綜合)|");
printf("高數(平時.實驗.考試.綜合)\n");
printf("*****************************************************************************\n");
printf("|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day);
printf("%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji);
printf("%5d|%5d|%5d|%.1f\n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji);
printf("*****************************************************************************\n");
sss=3; /*定義變數不等於初始值則退出循環體*/
}
q=q->next;
}
if(sss==0) printf("沒有這個學生的資料!\n\n");
}
/*******************************************按學號查詢*******/
void chaxun1(score *head)
{
score *q=head;
int num,sss=0;
printf("請輸入要查詢的學生學號:");
scanf("%d",&num);
while(q!=NULL)
{
if(num==q->num)
{
printf("*****************************************************************************\n");
printf("|學號|姓名|性別|生 日 |");
printf("C(平時.實驗.考試.綜合)|");
printf("高數(平時.實驗.考試.綜合)\n");
printf("*****************************************************************************\n");
printf("|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day);
printf("%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji);
printf("%5d|%5d|%5d|%.1f\n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji);
printf("*****************************************************************************\n");
sss=3;
}
q=q->next;
}
if(sss==0) printf("沒有這個學生的資料!\n\n");
}
/********************************************查詢二級菜單******/
chaxun_cd()
{
int m=0,i;
while(m==0)
{
printf("查詢學生的資料\n");
printf("1.按學號查詢\n");
printf("2.按姓名查詢\n");
printf("請選擇你所要操作的選項(按0退出):");
scanf("%d",&i);
switch(i)
{
case 1:chaxun1(r);break; /*break表示跳出循環結構結束循環退出包含break語句的那層循環體*/
case 2:chaxun2(r);break;
case 0:m=1;break;
default:printf("錯誤,重新選擇:");break;
}
}
}
/***************************************按學號刪除***********/
score *del1(score *head)
{
score *p1,*p2;
int num;
printf("請輸入要刪除學生的學號:");
scanf("%d",&num);
if(head==NULL)
{
printf("沒有這個學生的資料!\n\n");
return(head);
}
p2=p1=head;
while(num!=p1->num&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)
{
if(head==p1)
head=head->next;
else
p2->next=p1->next;
free(p1);
p1=p2;
printf("第%d 學生的資料已刪除完畢!\n\n",num);
}
else printf("沒有這個學生的資料!\n\n");
return(head);
}
/**************************************************/
score *del2(score *head)
{
score *p1,*p2;
char name[10];
printf("請輸入要刪除學生的姓名:");
scanf("%s",name);
if(head==NULL)
{
printf("沒有這個學生的資料!\n\n");
return(head);
}
p2=p1=head;
while(strcmp(name,p1->name)!=0&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(strcmp(name,p1->name)==0)
{
if(head==p1)
head=head->next;
else
p2->next=p1->next;
free(p1);
p1=p2;
printf("名字叫%s的學生的資料已被刪除!\n\n",name);
}
else printf("沒有這個學生的資料!\n\n");
return(head);
}
/*************************************************/
del_cd()
{
int m=0,i;
while(m==0)
{
printf("刪除學生的資料\n");
printf("1.按學號刪除\n");
printf("2.按姓名刪除\n");
printf("3.查看刪除結果\n");
printf("請選擇你所要操作的選項(按0退出):");
scanf("%d",&i);
switch(i)
{
case 1:r=del1(r);break;
case 2:r=del2(r);break;
case 3:print(r);break;
case 0:m=1;break;
default:printf("錯誤,重新選擇:");break;
}
}
}
/*****************************************按學號排序********/
score *paixu2(score *head)
{
score *p1,*p2,*k,h;
int i;
if(head==NULL)
{
printf("沒有任何學生的資料!");
return(head);
}
p1=head;
p2=head->next;
k=p1;
for(i=0;i<n-1;i++)
{
while(p2!=NULL)
{
if(k->num>p2->num)
k=p2;
p2=p2->next;
}
if(k!=p1)
{
h=*k;
*k=*p1;
*p1=h;
h.next=k->next;
k->next=p1->next;
p1->next=h.next;
}
p1=p1->next;
p2=p1->next;
k=p1;
}
printf("排序成功!\n\n");
return(head);
}
/*************************************************/
score *paixu1(score *head)
{
score *p1,*p2,*k,h;
int i;
if(head==NULL)
{
printf("沒有任何學生的資料!");
return(head);
}
p1=head;
p2=head->next;
k=p1;
for(i=0;i<n-1;i++)
{
while(p2!=NULL)
{
if(k->xk[0].zchji>p2->xk[0].zchji)
k=p2;
p2=p2->next;
}
if(k!=p1)
{
h=*k;
*k=*p1;
*p1=h;
h.next=k->next;
k->next=p1->next;
p1->next=h.next;
}
p1=p1->next;
p2=p1->next;
k=p1;
}
printf("排序成功!\n\n");
return(head);
}
/*************************************************/
paixu_cd()
{
int m=0,i;
while(m==0)
{
printf("對學生的資料進行排序\n");
printf("1.按C語言成績排序\n");
printf("2.按學號排序\n");
printf("請選擇你所要操作的選項(按0退出):");
scanf("%d",&i);
switch(i)
{
case 1:r=paixu1(r);break;
case 2:r=paixu2(r);break;
case 0:m=1;break;
default:printf("錯誤,重新選擇:");break;
}
}
}
/*******************************************按C成績插入******/
score *charu1(score *head,score *stu)
{
score *p1,*p2;
int i;
p1=head;
r=paixu1(r);
stu=(score*)malloc(LEN); /*開辟一個新單元,用於保存要插入的信息*/
printf("請輸入要增加的學生資料:\n");
printf("請輸入要增加的學生學號:");
scanf("%d",&stu->num);
while(stu->num<0) /*判斷學號是否小於0*/
{
printf("輸入錯誤,輸入錯誤請重新輸入學號:");
scanf("%d",&stu->num);
}
printf("b.請輸入要增加的學生姓名:");
scanf("%s",stu->name);
printf("請輸入要增加的學生性別(F或M):");
scanf(" %c",&stu->sex);
while(stu->sex!='M'&&stu->sex!='F')
{
printf("輸入錯誤,輸入錯誤請重新輸入性別:");
scanf(" %c",&stu->sex);
}
printf("c.請輸入要增加的學生生日(年.月.日):");
scanf(" %d.%d.%d",&stu->birthday.year,&stu->birthday.month,&stu->birthday.day);
printf("d.請輸入要增加的學生成績!\n");
printf("1.請輸入要增加的學生C語言成績(平時,實驗,考試):");
scanf(" %d,%d,%d",&stu->xk[0].pingshi,&stu->xk[0].shiyan,&stu->xk[0].kaoshi);
stu->xk[0].zchji=stu->xk[0].pingshi*0.1+stu->xk[0].shiyan*0.2+stu->xk[0].kaoshi*0.7;
printf("2.請輸入要增加的學生高數成績(平時,實驗,考試):");
scanf(" %d,%d,%d",&stu->xk[1].pingshi,&stu->xk[1].shiyan,&stu->xk[1].kaoshi);
stu->xk[1].zchji=stu->xk[1].pingshi*0.1+stu->xk[1].shiyan*0.2+stu->xk[1].kaoshi*0.7;
if(head==NULL) /*判斷頭指針是否為空*/
{
head=stu;
stu->next=NULL; /*如果為空,直接插入頭上*/
n++; /*人數加一*/
return(head);
}
while(p1->xk[0].zchji<stu->xk[0].zchji&&p1->next!=NULL) /*根據C成績確定要插入的位置*/
{
p2=p1;
p1=p1->next;
}
if(stu->xk[0].zchji<=p1->xk[0].zchji)
{
if(p1==head) /*如果p1指向頭指針 */
{
head=stu;
stu->next=p1;
n++;
}
else
{
stu->next=p2->next;
p2->next=stu;
n++;
}
}
else
{
p1->next=stu;
stu->next=NULL;
n++;
}
printf("增加學生資料成功!\n");
return(head);
}
/*********************************************按學號插入****/
score *charu2(score *head,score *stu)
{
score *p1,*p2;
int i=0;
p1=head;
r=paixu2(r); /*調用排序函數*/
stu=(score*)malloc(LEN); /*開辟一個新單元,用於保存要插入的信息*/
printf("請輸入要增加的學生資料:\n");
printf("請輸入要增加的學生學號:");
scanf("%d",&stu->num);
while(stu->num<0)
{
printf("輸入錯誤,輸入錯誤請重新輸入學號:");
scanf("%d",&stu->num);
}
printf("b.請輸入要增加的學生姓名:");
scanf("%s",stu->name);
printf("請輸入要增加的學生性別(F或M):");
scanf(" %c",&stu->sex);
while(stu->sex!='M'&&stu->sex!='F')
{
printf("輸入錯誤,輸入錯誤請重新輸入性別:");
scanf(" %c",&stu->sex);
}
printf("c.請輸入要增加的學生生日(年.月.日):");
scanf(" %d.%d.%d",&stu->birthday.year,&stu->birthday.month,&stu->birthday.day);
printf("d.請輸入要增加的學生的成績!\n");
printf("1.請輸入要增加的學生C語言成績(平時,實驗,考試):");
scanf(" %d,%d,%d",&stu->xk[0].pingshi,&stu->xk[0].shiyan,&stu->xk[0].kaoshi);
stu->xk[0].zchji=stu->xk[0].pingshi*0.1+stu->xk[0].shiyan*0.2+stu->xk[0].kaoshi*0.7;
printf("2.請輸入要增加的學生高數的成績(平時,實驗,考試):");
scanf(" %d,%d,%d",&stu->xk[1].pingshi,&stu->xk[1].shiyan,&stu->xk[1].kaoshi);
stu->xk[1].zchji=stu->xk[1].pingshi*0.1+stu->xk[1].shiyan*0.2+stu->xk[1].kaoshi*0.7;
if(head==NULL) /*判斷頭指針是否為空*/
{
head=stu;
stu->next=NULL;
n++;
return(head);
}
while(p1->num<stu->num&&p1->next!=NULL) /*根據學號確定要插入的位置*/
{
p2=p1;
p1=p1->next;
}
if(stu->num<=p1->num)
{
if(p1==head)
{
head=stu;
stu->next=p1;
n++;
}
else
{
stu->next=p2->next;
p2->next=stu;
n++;
}
}
else
{
p1->next=stu;
stu->next=NULL;
n++;
}
printf("增加學生資料成功!\n");
printf("\n");
return(head); /*返回頭指針*/
}
/*******************************************插入的二級菜單******/
charu_cd()
{
int m=0,i;
while(m==0)
{
printf("增加學生的人數\n");
printf("\n1.按C語言成績增加\n");
printf("2.按學號增加\n");
printf("請選擇你所要操作的選項(按0退出):");
scanf("%d",&i);
switch(i)
{
case 1:r=charu1(r,stu);break;
case 2:r=charu2(r,stu);break;
case 0:m=1;break;
default:printf("錯誤,重新選擇:");break;
}
}
}
『捌』 c語言設計商品信息管理系統
如果你不是為了學慣用途,直接用藍點產品管理系統好了,這些需求基本直接就實現了的。