當前位置:首頁 » 數據倉庫 » c資料庫操作框架
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c資料庫操作框架

發布時間: 2022-10-10 04:50:04

Ⅰ 寫一個學生信息的管理系統,用c語言和數據結構,我想請問一下基本的框架怎麼寫請高手指點!!!

不知道你要的信息管理功能都要求實現什麼功能,只是我前兩天做的,可以給你參考一下,用結構做的,其中統計功能是我做的,其他部分是老師編好的
/*預編譯命令*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

/*自定義數據類型*/
typedef struct student{
char xh[10];//學號
char xm[15];//姓名
int cj[3];//3門課程的成績
}STU,*STUP;

typedef struct stulist{
STUP elem;//結構體指針變數
int listsize;//容量
int length;//長度
}sqlist;

/*自定義函數說明*/
int initSqlist(SqList &L,int n);
int insertSqlist(SqList &L,STU x,int i);
void creatSqlist(SqList &L,int m);
int deleteSqlist(SqList &L,int i);
int locateSqlist(SqList L,char *xhp);
void disp(SqList L);
int menu();
void tongji(int bh,SqList &m);

/*函數定義*/

/*菜單函數*/
int menu(){
int num;
while(1){
system("cls");//清屏
printf(" ------------學生成績管理系統-------------\n\n");
printf(" 1--創建學生成績表 2--插入學生成績\n\n");
printf(" 3--刪除學生成績 4--按學號查找\n\n");
printf(" 5--顯示學生成績表 6--成績統計\n\n");
printf(" 0--退出\n\n");
printf(" -----------------------------------------\n");
printf("請輸入0-6:");
scanf("%d",&num);
fflush(stdin);
if(num<0||num>6){
printf("重新選擇!按任意鍵繼續!");
getch();}
else
break;
}
return num;
}

/*初始化函數*/
int initSqlist(SqList &L,int n){
L.elem=new STU[n];
if(L.elem==NULL){
printf("申請空間失敗!\n");
exit(0);
}
L.listsize=n;
L.length=0;
return 1;
}

/*插入函數*/
int insertSqlist(SqList &L,STU x,int i){
int j;
if(i>L.listsize){
printf("溢出!\n");
printf("重新選擇!按任意鍵繼續!");
getch();
return 0;
}
if(i<=0||i>L.length+1){
printf("位置不合理!\n");
printf("重新選擇!按任意鍵繼續!");
getch();
return 0;
}
for(j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elem[j];
L.elem[i-1]=x;
L.length++;
return 1;
}

/*創建函數*/
void creatSqlist(SqList &L,int m){
int i,j; STU x;
for(i=1;i<=m;i++){
printf("請輸入第%d個學生的數據:\n",i);
printf("學號:");
scanf("%s",x.xh);
for(j=0;j<L.length;j++){
if(strcmp(x.xh,L.elem[j].xh)==0){
printf("該學號已存在,請重新輸入:");
scanf("%s",x.xh);
}
}
printf("姓名:");
scanf("%s",x.xm);
printf("高數 C語言 英語(以空格隔開):");
scanf("%d%d%d",&x.cj[0],&x.cj[1],&x.cj[2]);
insertSqlist(L,x,i);
}
fflush(stdin);
}

/*顯示函數*/
void disp(SqList L){
int i;
printf("%10s%15s%7s%7s%7s\n","學號","姓名","高數","C語言","英語");
for(i=0;i<L.length;i++)
printf("%10s%15s%7d%7d%7d\n",L.elem[i].xh,L.elem[i].xm,
L.elem[i].cj[0],L.elem[i].cj[1],L.elem[i].cj[2]);
printf("按任意鍵繼續!");
getch();
}

/*刪除函數*/
int deleteSqlist(SqList &L,int i){
int j;
if(i<=0||i>L.length){
printf("位置不合理,請重新輸入!");
getch();
return 0;
}
for(j=i;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j];
L.length--;
return 1;
}

/*查找函數*/
int locateSqlist(SqList L,char *xhp){
int i;
for(i=0;i<L.length;i++)
if(strcmp(xhp,L.elem[i].xh)==0)break;
if(i<L.length)return i+1;
else return 0;
}

/*統計函數*/
void tongji(int bh,SqList &m){
int i,max,min;
double sum;
switch(bh){
case 1: if(m.length<2){
printf("當前人數少於2個,無法完成統計,按任意鍵繼續:");
getch();
break;
}
sum=0;
for(i=0;i<m.length;i++){
sum=sum+m.elem[i].cj[0];
}
max=m.elem[0].cj[0];
for(i=1;i<m.length;i++){
if(max<m.elem[i].cj[0])
max=m.elem[i].cj[0];
}
min=m.elem[0].cj[0];
for(i=1;i<m.length;i++){
if(min>m.elem[i].cj[0])
min=m.elem[i].cj[0];
}
printf("最高分:%d\n\n最低分:%d\n\n平均分:%.2lf\n",max,min,sum/m.length);
printf("按任意鍵繼續:");
getch();
break;
case 2: if(m.length<2){
printf("當前人數少於2個,無法完成統計,按任意鍵繼續:");
getch();
break;
}
sum=0;
for(i=0;i<m.length;i++){
sum=sum+m.elem[i].cj[1];
}
max=m.elem[0].cj[1];
for(i=1;i<m.length;i++){
if(max<m.elem[i].cj[1])
max=m.elem[i].cj[1];
}
min=m.elem[0].cj[1];
for(i=1;i<m.length;i++){
if(min>m.elem[i].cj[1])
min=m.elem[i].cj[1];
}
printf("最高分:%d\n\n最低分:%d\n\n平均分:%.2lf\n",max,min,sum/m.length);
printf("按任意鍵繼續:");
getch();
break;
case 3: if(m.length<2){
printf("當前人數少於2個,無法完成統計,按任意鍵繼續:");
getch();
break;
}
sum=0;
for(i=0;i<m.length;i++){
sum=sum+m.elem[i].cj[2];
}
max=m.elem[0].cj[2];
for(i=1;i<m.length;i++){
if(max<m.elem[i].cj[2])
max=m.elem[i].cj[2];
}
min=m.elem[0].cj[2];
for(i=1;i<m.length;i++){
if(min>m.elem[i].cj[2])
min=m.elem[i].cj[2];
}
printf("最高分:%d\n\n最低分:%d\n\n平均分:%.2lf\n",max,min,sum/m.length);
printf("按任意鍵繼續:");
getch();
break;
}
}

/*主函數*/
void main(){
int menunum,n,m,pos,i; SqList L; STU x; char xh[10];
while(1){
menunum=menu();
switch(menunum){
case 0: exit(0);

case 1: printf("請輸入學生總人數:");
scanf("%d",&n);
if(initSqlist(L,n)){
printf("請輸入現在需要創建的學生人數:");
scanf("%d",&m);
creatSqlist(L,m);
}
break;

case 2: printf("\n請輸入待插入學生的數據:\n");
printf("學號:");
scanf("%s",x.xh);
for(i=0;i<L.length;i++){
if(strcmp(x.xh,L.elem[i].xh)==0){
printf("該學號已存在,請重新輸入:");
scanf("%s",x.xh);
}
}
printf("姓名:");
scanf("%s",x.xm);
printf("高數 C語言 英語:");
scanf("%d%d%d",&x.cj[0],&x.cj[1],&x.cj[2]);
while(1){
printf("請輸入待插入學生的位置(1-%d):",L.length+1);
scanf("%d",&pos);
if(insertSqlist(L,x,pos))break;
}
break;

case 3: while(1){
printf("請輸入待刪除學生的位置(1-%d):",L.length);
scanf("%d",&pos);
if(deleteSqlist(L,pos))break;
}
break;

case 4: printf("請輸入要查找的學號:");
scanf("%s",xh);
pos=locateSqlist(L,xh);
if(pos!=0){
printf("該學生的成績如下:\n");
printf("%10s%15s%7s%7s%7s\n","學號","姓名","高數","C語言","英語");
printf("%10s%15s%7d%7d%7d\n",L.elem[pos-1].xh,L.elem[pos-1].xm,
L.elem[pos-1].cj[0],L.elem[pos-1].cj[1],L.elem[pos-1].cj[2]);
}
else
printf("該學生的成績不存在\n");
printf("按任意鍵繼續!");
getch();
break;
case 5: disp(L);
break;
case 6: int bianhao1;
printf("請輸入需要統計的課程編號1-3:\n\n");
printf("1--高數 2--C語言 3--英語 \n\n");
scanf("%d",&bianhao1);
fflush(stdin);
while(bianhao1<1||bianhao1>3){
printf("編號錯誤,請重新輸入:\n");
scanf("%d",&bianhao1);
}
tongji(bianhao1,L);

}//switch

}//while
}

Ⅱ 如何用c編寫框架程序

MFC?看來你是windows窗口應用程序了。告訴你吧windows下面,用ASM,C,C++,其實都是一樣的框架,都是寫winmain+winprocess這兩個函數。語言上的區別在於語法上,還有就是封裝性上,開發效率上。具體的框架都一樣。其實你說的MFC就是vc++封裝了的,以至於在代碼里找不到主入口函數winmain和消息處理函數winprocess。

Ⅲ C語言資料庫是什麼

資料庫是用來存入數據的倉庫。用戶可以對文件中的數據進行新增、查詢、更新、刪除等操作。但是C語言和資料庫是兩個東西,他們之間的關系就是C語言可以用來開發資料庫管理軟體,也可以通過C語言藉助於SQL語句來操作資料庫。

C語言普適性最強的一種計算機程序編輯語言,它不僅可以發揮出高級編程語言的功用,還具有匯編語言的優點,因此相對於其它編程語言,它具有自己獨特的特點。具體體現在以下三個方面:

其一,廣泛性。C 語言的運算范圍的大小直接決定了其優劣性。C 語言中包含了34種運算符,因此運算范圍要超出許多其它語言,此外其運算結果的表達形式也十分豐富。此外,C 語言包含了字元型、指針型等多種數據結構形式,因此,更為龐大的數據結構運算它也可以應付。

其二,簡潔性。9 類控制語句和32個KEYWORDS是C語言所具有的基礎特性,使得其在計算機應用程序編寫中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同 時還能夠支持高級編程,避免了語言切換的繁瑣。


(3)c資料庫操作框架擴展閱讀

資料庫架構

1、內層:最接近實際存儲體,亦即有關數據的實際存儲方式。

2、外層:最接近用戶,即有關個別用戶觀看數據的方式。

3、概念層:介於兩者之間的間接層。

Ⅳ 如何在Linux下用C語言操作資料庫sqlite3

sqlite3是跨平台的 只要能讀寫文件就能使用sqlite3.
這種高詞頻出現的第三方框架,各種例子一大堆,我以前領導經常對新手說一句話,一個新手能遇到的問題,那前面已經有無數個人遇到過了,所以資料肯定一大堆。如果你遇到了連資料都搜不到的問題,那你已經是高手了。

搜索 「sqlite3 例子」

Ⅳ 有哪些優秀的 C/C++ 開源代碼框架這些框架的設計思路是怎樣的

框架我的理解就是用一套類庫搭建出程序的方式。比較有名的當然就是mfc,是微軟的。還有boland的vcl,不過好像已經賣給別的公司了。還有trolltech公司的qt,這個支持跨平台。
有了基礎還需要一個RAD(Rapid Application Development),比如vc,delphi。如果你是手機方面的開發root吧,如不是請參考下面的
C++通用框架和庫:
Apache C++ Standard Library:是一系列演算法,容器,迭代器和其他基本組件的集合
ASL :Adobe源代碼庫提供了同行的評審和可移植的C++源代碼庫。
Boost :大量通用C++庫的集合。
BDE :來自於彭博資訊實驗室的開發環境。
Cinder:提供專業品質創造性編碼的開源開發社區。
Cxxomfort:輕量級的,只包含頭文件的庫,將C++ 11的一些新特性移植到C++03中。
Dlib:使用契約式編程和現代C++科技設計的通用的跨平台的C++庫。
EASTL :EA-STL公共部分。
ffead-cpp :企業應用程序開發框架。
Folly:由Facebook開發和使用的開源C++庫。
JUCE :包羅萬象的C++類庫,用於開發跨平台軟體。
libPhenom:用於構建高性能和高度可擴展性系統的事件框架。
LibSourcey :用於實時的視頻流和高性能網路應用程序的C++11 evented IO。
LibU : C語言寫的多平台工具庫。
Loki :C++庫的設計,包括常見的設計模式和習語的實現。
MiLi :只含頭文件的小型C++庫。
openFrameworks :開發C++工具包,用於創意性編碼。
Qt :跨平台的應用程序和用戶界面框架。
Reason :跨平台的框架,使開發者能夠更容易地使用Java,.Net和Python,同時也滿足了他們對C++性能和優勢的需求。
ROOT :具備所有功能的一系列面向對象的框架,能夠非常高效地處理和分析大量的數據,為歐洲原子能研究機構所用。
STLport:是STL具有代表性的版本。
STXXL:用於額外的大型數據集的標准模板庫。
Ultimate++ :C++跨平台快速應用程序開發框架。
Windows Template Library:用於開發Windows應用程序和UI組件的C++庫。
Yomm11 :C++11的開放multi-methods。

Ⅵ c語言的數據結構和程序設計

數據結構
數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率。數據結構往往同高效的檢索演算法和索引技術有關。數據結構在計算機科學界至今沒有標準的定義。個人根據各自的理解的不同而有不同的表述方法: Sartaj Sahni 在他的《數據結構、演算法與應用》一書中稱:「數據結構是數據對象,以及存在於該對象的實例和組成實例的數據元素之間的各種聯系。這些聯系可以通過定義相關的函數來給出。」他將數據對象(data object)定義為「一個數據對象是實例或值的集合」。 Clifford A.Shaffer 在《數據結構與演算法分析》一書中的定義是:「數據結構是 ADT(抽象數據類型 Abstract Data Type) 的物理實現。」 Lobert L.Kruse 在《數據結構與程序設計》一書中,將一個數據結構的設計過程分成抽象層、數據結構層和實現層。其中,抽象層是指抽象數據類型層,它討論數據的邏輯結構及其運算,數據結構層和實現層討論一個數據結構的表示和在計算機內的存儲細節以及運算的實現。
重要意義
一般認為,一個數據結構是由數據元素依據某種邏輯聯系組織起來的。對數據元素間邏輯關系的描述稱為數據的邏輯結構;數據必須在計算機內存儲,數據的存儲結構是數據結構的實現形式,是其在計算機內的表示;此外討論一個數據結構必須同時討論在該類數據上執行的運算才有意義。 在許多類型的程序的設計中,數據結構的選擇是一個基本的設計考慮因素。許多大型系統的構造經驗表明,系統實現的困難程度和系統構造的質量都嚴重的依賴於是否選擇了最優的數據結構。許多時候,確定了數據結構後,演算法就容易得到了。有些時候事情也會反過來,我們根據特定演算法來選擇數據結構與之適應。不論哪種情況,選擇合適的數據結構都是非常重要的。 選擇了數據結構,演算法也隨之確定,是數據而不是演算法是系統構造的關鍵因素。這種洞見導致了許多種軟體設計方法和程序設計語言的出現,面向對象的程序設計語言就是其中之一。
研究內容 在計算機科學中,數據結構是一門研究非數值計算的程序設計問題中計算機的操作對象(數據元素)以及它們之間的關系和運算等的學科,而且確保經過這些運算後所得到的新結構仍然是原來的結構類型。
「數據結構」作為一門獨立的課程在國外是從1968年才開始設立的。 1968年美國唐•歐•克努特教授開創了數據結構的最初體系,他所著的《計算機程序設計技巧》第一卷《基本演算法》是第一本較系統地闡述數據的邏輯結構和存儲結構及其操作的著作。「數據結構」在計算機科學中是一門綜合性的專業基礎課。數據結構是介於數學、計算機硬體和計算機軟體三者之間的一門核心課程。數據結構這一門課的內容不僅是一般程序設計(特別是非數值性程序設計)的基礎,而且是設計和實現編譯程序、操作系統、資料庫系統及其他系統程序的重要基礎。
計算機是一門研究用計算機進行信息表示和處理的科學。這裡面涉及到兩個問題:信息的表示,信息的處理 。
而信息的表示和組織又直接關繫到處理信息的程序的效率。隨著計算機的普及,信息量的增加,信息范圍的拓寬,使許多系統程序和應用程序的規模很大,結構又相當復雜。因此,為了編寫出一個「好」的程序,必須分析待處理的對象的特徵及各對象之間存在的關系,這就是數據結構這門課所要研究的問題。眾所周知,計算機的程序是對信息進行加工處理。在大多數情況下,這些信息並不是沒有組織,信息(數據)之間往往具有重要的結構關系,這就是數據結構的內容。數據的結構,直接影響演算法的選擇和效率。 計算機解決一個具體問題時,大致需要經過下列幾個步驟:首先要從具體問題中抽象出一個適當的數學模型,然後設計一個解此數學模型的演算法(Algorithm),最後編出程序、進行測試、調整直至得到最終解答。尋求數學模型的實質是分析問題,從中提取操作的對象,並找出這些操作對象之間含有的關系,然後用數學的語言加以描述。計算機演算法與數據的結構密切相關,演算法無不依附於具體的數據結構,數據結構直接關繫到演算法的選擇和效率。運算是由計算機來完成,這就要設計相應的插入、刪除和修改的演算法 。也就是說,數據結構還需要給出每種結構類型所定義的各種運算的演算法。 數據是對客觀事物的符號表示,在計算機科學中是指所有能輸入到計算機中並由計算機程序處理的符號的總稱。
數據元素是數據的基本單位,在計算機程序中通常作為一個整體考慮。一個數據元素由若干個數據項組成。數據項是數據的不可分割的最小單位。有兩類數據元素:一類是不可分割的原子型數據元素,如:整數"5",字元 "N" 等;另一類是由多個款項構成的數據元素,其中每個款項被稱為一個數據項。例如描述一個學生的信息的數據元素可由下列6個數據項組成。其中的出身日期又可以由三個數據項:"年"、"月"和"日"組成,則稱"出身日期"為組合項,而其它不可分割的數據項為原子項。
關鍵字指的是能識別一個或多個數據元素的數據項。若能起唯一識別作用,則稱之為 "主" 關鍵字,否則稱之為 "次" 關鍵字。
數據對象是性質相同的數據元素的集合,是數據的一個子集。數據對象可以是有限的,也可以是無限的。
數據處理是指對數據進行查找、插入、刪除、合並、排序、統計以及簡單計算等的操作過程。在早期,計算機主要用於科學和工程計算,進入八十年代以後,計算機主要用於數據處理。據有關統計資料表明,現在計算機用於數據處理的時間比例達到80%以上,隨著時間的推移和計算機應用的進一步普及,計算機用於數據處理的時間比例必將進一步增大。
分類
數據結構是指同一數據元素類中各數據元素之間存在的關系。數據結構分別為邏輯結構、存儲結構(物理結構)和數據的運算。數據的邏輯結構是對數據之間關系的描述,有時就把邏輯結構簡稱為數據結構。邏輯結構形式地定義為(K,R)(或(D,S)),其中,K是數據元素的有限集,R是K上的關系的有限集。
數據元素相互之間的關系稱為結構。有四類基本結構:集合、線性結構、樹形結構、圖狀結構(網狀結構)。樹形結構和圖形結構全稱為非線性結構。集合結構中的數據元素除了同屬於一種類型外,別無其它關系。線性結構中元素之間存在一對一關系,樹形結構中元素之間存在一對多關系,圖形結構中元素之間存在多對多關系。在圖形結構中每個結點的前驅結點數和後續結點數可以任意多個。
數據結構在計算機中的表示(映像)稱為數據的物理(存儲)結構。它包括數據元素的表示和關系的表示。數據元素之間的關系有兩種不同的表示方法:順序映象和非順序映象,並由此得到兩種不同的存儲結構:順序存儲結構和鏈式存儲結構。順序存儲方法:它是把邏輯上相鄰的結點存儲在物理位置相鄰的存儲單元里,結點間的邏輯關系由存儲單元的鄰接關系來體現,由此得到的存儲表示稱為順序存儲結構。順序存儲結構是一種最基本的存儲表示方法,通常藉助於程序設計語言中的數組來實現。鏈接存儲方法:它不要求邏輯上相鄰的結點在物理位置上亦相鄰,結點間的邏輯關系是由附加的指針欄位表示的。由此得到的存儲表示稱為鏈式存儲結構,鏈式存儲結構通常藉助於程序設計語言中的指針類型來實現。索引存儲方法:除建立存儲結點信息外,還建立附加的索引表來標識結點的地址。散列存儲方法:就是根據結點的關鍵字直接計算出該結點的存儲地址。
數據結構中,邏輯上(邏輯結構:數據元素之間的邏輯關系)可以把數據結構分成線性結構和非線性結構。線性結構的順序存儲結構是一種隨機存取的存儲結構,線性表的鏈式存儲結構是一種順序存取的存儲結構。線性表若採用鏈式存儲表示時所有結點之間的存儲單元地址可連續可不連續。邏輯結構與數據元素本身的形式、內容、相對位置、所含結點個數都無關。
數據結構與演算法
演算法的設計取決於數據(邏輯)結構,而演算法的實現依賴於採用的存儲結構。數據的存儲結構實質上是它的邏輯結構在計算機存儲器中的實現為了全面的反映一個數據的邏輯結構,他在存儲器中的映象包括兩方面內容,及數據元素之間的信息和數據元素之間的關系。不同數據結構有其相應的若干運算。數據的運算是在數據的邏輯結構上定義的操作演算法,如檢索、插入、刪除、更新的排序等。
數據的運算是數據結構的一個重要方面,討論任一種數據結構時都離不開都離不開對該結構上的數據運算及其實現演算法的討論。
數據結構的形式定義為:數據結構是一個二元組:
Data-Structure=(D,S)
其中:D是數據元素的有限集,S是D上關系的有限集。
數據結構不同於數據類型,也不同於數據對象,它不僅要描述數據類型的數據對象,而且要描述數據對象各元素之間的相互關系。
數據類型是一個值的集合和定義在這個值集上的一組操作的總稱。數據類型可分為兩類:原子類型、結構類型。一方面,在程序設計語言中,每一個數據都屬於某種數據類型。類型明顯或隱含地規定了數據的取值范圍、存儲方式以及允許進行的運算。可以認為,數據類型是在程序設計中已經實現了的數據結構。另一方面,在程序設計過程中,當需要引入某種新的數據結構時,總是藉助編程語言所提供的數據類型來描述數據的存儲結構。
計算機中表示數據的最小單位是二進制數的一位,叫做位。我們用一個由若干位組合起來形成的一個位串表示一個數據元素,通常稱這個位串為元素或結點。當數據元素由若干數據項組成時,位串中對應於各個數據項的子位串稱為數據域。元素或結點可看成是數據元素在計算機中的映象。 一個軟體系統框架應建立在數據之上,而不是建立在操作之上。一個含抽象數據類型的軟體模塊應包含定義、表示、實現三個部分。 對每一個數據結構而言,必定存在與它密切相關的一組操作。若操作的種類和數目不同,即使邏輯結構相同,數據結構能起的作用也不同。
不同的數據結構其操作集不同,但下列操作必不可缺:1,結構的生成;2.結構的銷毀;3,在結構中查找滿足規定條件的數據元素;4,在結構中插入新的數據元素; 5,刪除結構中已經存在的數據元素; 6,遍歷。
抽象數據類型:一個數學模型以及定義在該模型上的一組操作。抽象數據類型實際上就是對該數據結構的定義。因為它定義了一個數據的邏輯結構以及在此結構上的一組演算法。抽象數據類型可用以下三元組表示:(D,S,P)。D是數據對象,S是D上的關系集,P是對D的基本操作集。ADT的定義為: ADT 抽象數據類型名{ 數據對象:(數據元素集合) 數據關系:(數據關系二元組結合) 基本操作:(操作函數的羅列) } ADT 抽象數據類型名;
抽象數據類型有兩個重要特性: 數據抽象
用ADT描述程序處理的實體時,強調的是其本質的特徵、其所能完成的功能以及它和外部用戶的介面(即外界使用它的方法)。 數據封裝 將實體的外部特性和其內部實現細節分離,並且對外部用戶隱藏其內部實現細節。
數據(Data)是信息的載體,它能夠被計算機識別、存儲和加工處理。它是計算機程序加工的原料,應用程序處理各種各樣的數據。計算機科學中,所謂數據就是計算機加工處理的對象,它可以是數值數據,也可以是非數值數據。數值數據是一些整數、實數或復數,主要用於工程計算、科學計算和商務處理等;非數值數據包括字元、文字、圖形、圖像、語音等。數據元素(Data Element)是數據的基本單位。在不同的條件下,數據元素又可稱為元素、結點、頂點、記錄等。例如,學生信息檢索系統中學生信息表中的一個記錄等,都被稱為一個數據元素。
有時,一個數據元素可由若干個數據項(Data Item)組成,例如,學籍管理系統中學生信息表的每一個數據元素就是一個學生記錄。它包括學生的學號、姓名、性別、籍貫、出生年月、成績等數據項。這些數據項可以分為兩種:一種叫做初等項,如學生的性別、籍貫等,這些數據項是在數據處理時不能再分割的最小單位;另一種叫做組合項,如學生的成績,它可以再劃分為數學、物理、化學等更小的項。通常,在解決實際應用問題時是把每個學生記錄當作一個基本單位進行訪問和處理的。
數據對象(Data Object)或數據元素類(Data Element Class)是具有相同性質的數據元素的集合。在某個具體問題中,數據元素都具有相同的性質(元素值不一定相等),屬於同一數據對象(數據元素類),數據元素是數據元素類的一個實例。例如,在交通咨詢系統的交通網中,所有的頂點是一個數據元素類,頂點A和頂點B各自代表一個城市,是該數據元素類中的兩個實例,其數據元素的值分別為A和B。 數據結構(Data Structure)是指互相之間存在著一種或多種關系的數據元素的集合。在任何問題中,數據元素之間都不會是孤立的,在它們之間都存在著這樣或那樣的關系,這種數據元素之間的關系稱為結構。根據數據元素間關系的不同特性,通常有下列四類基本的結構:
⑴集合結構。該結構的數據元素間的關系是「屬於同一個集合」。
⑵線性結構。該結構的數據元素之間存在著一對一的關系。
⑶樹型結構。該結構的數據元素之間存在著一對多的關系。
⑷圖形結構。該結構的數據元素之間存在著多對多的關系,也稱網狀結構。 從上面所介紹的數據結構的概念中可以知道,一個數據結構有兩個要素。一個是數據元素的集合,另一個是關系的集合。在形式上,數據結構通常可以採用一個二元組來表示。
數據結構的形式定義為:數據結構是一個二元組
Data_Structure =(D,R)
其中,D是數據元素的有限集,R是D上關系的有限集。 線性結構的特點是數據元素之間是一種線性關系,數據元素「一個接一個的排列」。在一個線性表中數據元素的類型是相同的,或者說線性表是由同一類型的數據元素構成的線性結構。在實際問題中線性表的例子是很多的,如學生情況信息表是一個線性表:表中數據元素的類型為學生類型; 一個字元串也是一個線性表:表中數據元素的類型為字元型,等等。
線性表是最簡單、最基本、也是最常用的一種線性結構。 線性表是具有相同數據類型的n(n>=0)個數據元素的有限序
列,通常記為:
(a1,a2,… ai-1,ai,ai+1,…an)
其中n為表長, n=0 時稱為空表。 它有兩種存儲方法:順序存儲和鏈式存儲,它的主要基本操作是插入、刪除和檢索等。
常用數據結構數組 (Array) 在程序設計中,為了處理方便, 把具有相同類型的若干變數按有序的形式組織起來。這些按序排列的同類數據元素的集合稱為數組。在C語言中, 數組屬於構造數據類型。一個數組可以分解為多個數組元素,這些數組元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字元數組、指針數組、結構數組等各種類別。
棧 (Stack) 是只能在某一端插入和刪除的特殊線性表。它按照後進先出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。
隊列 (Queue) 一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。
鏈表 (Linked List) 是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。
樹 (Tree) 是包含n(n>0)個結點的有窮集合K,且在K中定義了一個關系N,N滿足 以下條件: (1)有且僅有一個結點 k0,他對於關系N來說沒有前驅,稱K0為樹的根結點。簡稱為根(root)。 (2)除K0外,k中的每個結點,對於關系N來說有且僅有一個前驅。
(3)K中各結點,對關系N來說可以有m個後繼(m>=0)。
圖 (Graph) 圖是由結點的有窮集合V和邊的集合E組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關系。
堆 (Heap) 在計算機科學中,堆是一種特殊的樹形數據結構,每個結點都有一個值。通常我們所說的堆的數據結構,是指二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。
散列表 (Hash) 若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上。由此,不需比較便可直接取得所查記錄。稱這個對應關系f為散列函數(Hash function),按這個思想建立的表為散列表。

Ⅶ C/S架構的項目都用哪些框架

C++通用框架和庫: Apache C++ Standard Library:是一系列演算法,容器,迭代器和其他基本組件的集合 ASL :Adobe源代碼庫提供了同行的評審和可移植的C++源代碼庫。 Boost :大量通用C++庫的集合。 BDE :來自於彭博資訊實驗室的開發環境

Ⅷ 學好c語言編程,應該學習的框架是什麼

初學階段,給你說什麼框架都是木用的!你對這些根本都沒理解……初學,還是那本基礎書學好就行了!一邊學習,你才會一邊了解編程的那些道道——當然這些都不是那本書能教給你的!多在網上和人交流交流……你就能知道C語言到底是干什麼的!
按我現在的理解,編程吧……用c的話,流行的就是MFC編WIN32窗口程序,另外我在用的就是Klei c學習單片機……所以,其實路子也很簡單,就兩條:編寫應用程序和編寫系統程序!

Ⅸ C語言基本框架,詳細!

這個沒框架一說,你想問的可能是C語言的學習方向和內容上的話題。 C語言主要學習:數據類型、關鍵字、控制語句、函數、指針、結構體和數組,文件,編譯方法,操作系統的API等等。 銳英源教C語言非常好,全面能力綜合教材海量源碼因人施教,保證掌握工作能力,打開成為項目經理或系統分析員之門。

希望採納