c語言增刪改查
實現步驟:1建立自定義結構體,2建立一個結構體指針數組,3實現添加(重新開辟一段內存給新元素,重新指定數組大小,添加元素指針到數組),4實現刪除(獲取需要刪除的項,釋放結構體指針,重新指定數組大小,如果刪除的是不是最後一個元素還需要移動元素),5修改元素內容 額 前幾步都編好了的話 這步應該就沒什麼問題了 提示***主要函數,malloc,free
㈡ C語言數組 增刪改查 刪改兩個程序怎麼寫
這行代碼:數組=(結構記錄*)malloc的(的sizeof(結構記錄)* NUM); 是應用的內存結構記錄類型,你定義為int *,所以詮釋*數組轉換成結構記錄*數組,另有界定者外Num和我不記錄定義放在一起,否則,同一類型和記錄,是獨立的定義為:整型數,scanf函數(「%c」的,與數組[I]系數);改革為scanf函數(在「%f」,&陣列由[i]系數).
㈢ C語言中資料庫的增刪改查與鏈表的增刪改查有什麼區別
資料庫使用來存貯大數據的,鏈表是一種數據結構二者不是同一個概念,如果你想關閉之後數據能夠保存的話請使用資料庫或者文件,否則的話就用鏈表吧
㈣ 誰知道用c語言向資料庫做增刪改查嗎
我曾經寫過C語言的資料庫系統..
給你部分代碼(一個銷售函數)以作參考...
void
book_out()
//銷售函數
{
char
temp;
EXEC
SQL
BEGIN
DECLARE
SECTION;
/*主變數定義開始.*/
int
Hout_shuliang;
int
Hshuliang;///////////
char
Hbook_id[11];
EXEC
SQL
END
DECLARE
SECTION;
/*主變數定義結束*/
lab3:
printf("請輸入圖書編號:");
scanf("%s",&Hbook_id);
printf("請輸入賣出本數:");
scanf("%d",&Hout_shuliang);
//先將庫存量取出到主變數
EXEC
SQL
select
book_shuliang
into
:Hshuliang
from
book_kucun
where
book_id=:Hbook_id;
if(Hshuliang<Hout_shuliang)
//假如庫存不足,銷售不成功.
{
printf("輸入有誤.沒那麼多庫存,請重新輸入.\n");
goto
lab3;
}
//將銷售記錄插入到book_out(銷售表)數據表.
EXEC
SQL
insert
into
book_out
values(:Hbook_id,:Hout_shuliang,GETDATE());
EXEC
SQL
COMMIT
TRANSACTION;
/*事務提交*/
printf("售出成功,輸入Y繼續輸入其他要售出的書.其他鍵返回主菜單:");
getchar();//////////////////////////
scanf("%c",&temp);
if(temp=='y'||temp=='Y')
goto
lab3;
}
㈤ C語言一維數組的增,刪,改,查的編程例子,要簡單點的!會的教一下
有譚浩強那本書么?
看一下數組部分就好了。
數組定義好了,是不能增刪的。只能對數組元素賦值,查找之類的操作。定義數組就簡單了:
類型說明
數組名
【元素個數】
其中元素個數不能是變數,只能是常量。例如定義一個五個元素的整形arr數組
int
arr【5】。給數組賦值:arr【x】=數值。
其中x只能是0-5,數組第一個元素為0,而不是1。查找你就要首先學會那幾個查找的演算法。就懂了。
㈥ 用c語言實現對學生信息增刪改,怎麼做啊
要更詳細答案,聯系我,這個很難做的,起碼要給點懸賞分作為酬勞啊!!!
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
//數據結構的定義
typedef struct node{
int id; //學號
char name[10]; // 姓名
int grade; //成績
struct node * next; //指向下一節點的指針
}node,*list;
//函數的聲明,必須按照聲明來定義函數
void showMenu(); //顯示菜單
void start(); // 主控程序
void init(list &h);// 初始化鏈表h
void printAnRecord(node * p);//輸出p所指節點的值(id,name,grade)
void printList(list h);// 輸出鏈表h的各節點的值
int del(list h,int n);//刪除鏈表h中id為n的節點,成功刪除返回1,若不存在則返回0
int insert(list h,int id,char * name,int grade);//在鏈表h中,插入節點(n,name,grade),若id重復返回0,否則返回1
node * searchByID(list h, int n);// 在鏈表h中查找id為n的節點,查找成功返回其指針,否則返回NULL
int update(list h,int n,int grade);// 將鏈表h中id為n的節點的成績改為grade,若不存在該節點返回0,否則返回1
float average(list h); //返回鏈表h中各個節點成績的平均值
int bulkInsert(list h);//在鏈表h中批量插入節點,以id=0結束,返回成功插入的節點數
void clearList(list h);//清空鏈表h(使其成為空鏈表)
void showMenu()
{ //顯示菜單
puts(" 0----Bulk Insert ");
puts(" 1----Insert an Record");
puts(" 2----Delete an Record");
puts(" 3----Update an Record's grade");
puts(" 4--- Search an Record by stu_id");
puts(" 5----Print all Record");
puts(" 6----Average of grade");
puts(" 7----Clear list");
puts(" 9----Exit");
}
//主控程序
void start()
{
list h; //鏈表
int choice; //功能選擇
int id,grade,flag=1,m;
char name[10];
showMenu();
init(h); //初始化鏈表h,即建立空鏈表
while(flag){//若未退出程序
puts(" ******** Please input 1...9 ********* ");
scanf("%d",&choice);
switch(choice){ //根據選擇的功能號,執行不同的操作
case 0 :
puts("input Stu_ID, Name , Grade (end by 0)");
m=bulkInsert(h);
printf(" %d Record insert successfully\n",m);
break;
case 1:
puts("input Stu_ID, Name , Grade: ");
scanf("%d",&id);
scanf("%s",name);
scanf("%d",&grade);
if( insert(h,id,name,grade) )
puts("Insert an Record successfully!");
else
puts("Sorry, blicate ID ");
break;
case 2:
puts("input Stu_ID to delet");
scanf("%d",&id);
if( del(h,id) )
puts("Delete an Record successfully");
else
puts("Sorry, ID no exit ");
break;
case 3:
puts("input Stu_ID and grade to update");
scanf("%d",&id);
scanf("%d",&grade);
if ( update(h,id,grade) )
puts("Update an Record successfully ");
else
puts("Sorry, ID no exit ");
break;
case 4:
puts("input Stu_ID to search");
scanf("%d",&id);
node *p;
if( p=searchByID(h,id) )
printAnRecord(p);
else
puts("Sorry, ID no exit ");
break;
case 5:
printList(h);
break;
case 6:
printf("The average grade is %6.2f \n ", average(h) );
break;
case 7:
clearList(h);
break;
case 9:
flag=0; //退出循環
break;
default:
puts(" Error ! Must Input (1...9) ");
}
}
}
void main()
{
//編程時要一個一個函數的調試完成後,最後再調用主控程序
start();
}