當前位置:首頁 » 編程語言 » c語言項目案例之工程管理系統
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言項目案例之工程管理系統

發布時間: 2022-12-25 11:06:17

❶ 什麼是c語言程序設計

什麼是C語言?C語言的簡介。
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。
它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。
因此,它的應用范圍廣泛,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,具體應用比如單片機以及嵌入式系統開發。
語言特點:C是中級語言/C是結構式語言/C語言功能齊全/C語言適用范圍大/簡潔緊湊、靈活方便/運算符豐富/數據類型豐富/C是結構式語言/語法限制不太嚴格,程序設計自由度大/適用范圍大,可移植性好。

❷ 圖書館圖書管理系統(c語言)

完整的C語言圖書管理系統

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include "graphics.h"
#include "math.h"
#define m 1
struct data
{ int year;
int month;
int day;
};

struct ReaderNode
{
char num[20];
struct data bro;
struct data back;
};

struct BookNode
{
char title[15];
char writer[15];
int currentnum;
int totalnum;
char brief[30];
struct ReaderNode reader[20];
};

struct TreeNode
{
int n;
struct TreeNode *prt;
int key[2*m];
struct BookNode *rec[2*m];
struct TreeNode *link[2*m+1];

};

struct BookNode *InputNode();
struct TreeNode *mbsearch(struct TreeNode *bth,int x,int *k,int *flag);
struct TreeNode *mbinsert(struct TreeNode *bth);
struct TreeNode *mbdel(struct TreeNode *bth);
void OutputNode(struct TreeNode *bth);
void borrow(struct TreeNode *bth);
void payback(struct TreeNode *bth);
char menu(void);
struct TreeNode *mbsearch(struct TreeNode *bth,int x,int *k,int *flag)
{
struct TreeNode *p,*q;
p=bth; *flag=0; q=p;
while( (p!=NULL) && (*flag==0) )
{
*k=1;q=p;
while( (*k < q->n) && ( q->key[*k-1] < x) ) *k=*k+1;
if( q->key[*k-1]==x) *flag=1;
else if( ( *k==q->n ) && ( q->key[*k-1] < x) ) {p=q->link[*k];p->prt=q;}
else { p=q->link[*k-1]; p->prt=q;*k=*k-1;}
}
return(q);
}

struct TreeNode *mbinsert(struct TreeNode *bth)
{
int flag,j,k,t;
int y,x,z;
struct TreeNode *p,*q,*u,*s;
struct BookNode *r,*l;
clrscr();
printf("\n\tPlease input the book you want to insert: ");
scanf("%d",&x);
q=mbsearch(bth,x,&k,&flag);
if(flag==1)
{

printf("\n\tHas %d this kind of book,do you want to add another?(y/n)\n",(q->rec[k-1])->totalnum);
z=getch();
if(z=='y'||z=='Y')
{
(q->rec[k-1])->totalnum++; (q->rec[k-1])->currentnum++;
printf("\n\tNow total has %d this kind of book,",(q->rec[k-1])->totalnum);
printf("\n\tand current has %d in the library.",(q->rec[k-1])->currentnum);
}
return(bth);
}
r=InputNode(bth);
if(bth==NULL)
{
bth=p=(struct TreeNode *)malloc(sizeof(struct TreeNode));
p->n=1; p->key[0]=x; p->rec[0]=r;p->prt=NULL;
for(j=1;j<=2*m+1;j++) p->link[j-1]=NULL;
return(p);
}

p=NULL; t=0;
while(t==0)
{
if(k==q->n) {y=x;l=r;u=p;}
else
{
y=q->key[q->n-1]; l=q->rec[q->n-1];u=q->link[q->n];
for(j=(q->n)-1; j>=k+1; j--)
{
q->key[j]=q->key[j-1];q->rec[j]=q->rec[j-1];q->link[j+1]=q->link[j];
}
q->key[k]=x;q->rec[k]=r;q->link[k+1]=p;
if(p!=NULL) p->prt=q;
}

if(q->n<2*m)
{
q->n=(q->n)+1;
t=1;
q->key[(q->n)-1]=y; q->rec[(q->n)-1]=l; q->link[q->n]=u;
if(u!=NULL) u->prt=q;
}
else
{
p=(struct TreeNode *)malloc(sizeof(struct TreeNode));
p->n=m; q->n=m; p->prt=q->prt;
x=q->key[m];r=q->rec[m];
for(j=1;j<=m-1;j++)
{
p->key[j-1]=q->key[m+j];p->rec[j-1]=q->rec[m+j];p->link[j-1]=q->link[m+j];
if(q->link[m+j]!=NULL) (q->link[m+j])->prt=p;

}

p->link[m-1]=q->link[2*m];
p->link[m]=u;
p->key[m-1]=y;
p->rec[m-1]=l;

if(u!=NULL) u->prt=p;
for(j=m+2;j<=2*m+1;j++)
{
q->link[j-1]=NULL;p->link[j-1]=NULL;
}

if(q->prt==NULL)
{
s=(struct TreeNode *)malloc(sizeof(struct TreeNode));
s->key[0]=x; s->rec[0]=r;
s->link[0]=q; s->link[1]=p;
s->n=1; s->prt=NULL; q->prt=s; p->prt=s;
for(j=3;j<=2*m+1;j++) s->link[j-1]=NULL;
bth=s; t=1;
}
else
{
q=q->prt; k=1;
while((k<=q->n)&&(q->key[k-1]<x)) k=k+1;
k=k-1;
}
}
}
return(bth);
}
struct TreeNode *mbdel(struct TreeNode *bth)
{
int flag,j,k,t;
int x,y;
struct TreeNode *u,*s,*p,*q;
struct BookNode *r,*l;
clrscr();
printf("\n\tPlease input the book you want to delete: ");
scanf("%d",&x);
q=mbsearch(bth,x,&k,&flag);
if(flag==0) { printf("\n\tThe book is not exist!\n"); return(bth);}
p=q->link[k];
if(p!=NULL)
{
while(p->link[0]!=NULL) p=p->link[0];
q->key[k-1]=p->key[0];
q->rec[k-1]=p->rec[0];
k=1;q=p;
}

for(j=k;j<=q->n-1;j++)
{
q->key[j-1]=q->key[j];
q->rec[j-1]=q->rec[j];
}
q->n=q->n-1;

while ((q!=bth)&&(q->n<m))
{
p=q->prt;j=1;
while(p->link[j-1]!=q) j=j+1;
if((j<=p->n)&&((p->link[j])->n>m))
{
s=p->link[j];
y=s->key[0];
l=s->rec[0];
u=s->link[0];
for(k=1;k<=s->n-1;k++)
{
s->key[k-1]=s->key[k];
s->rec[k-1]=s->rec[k];
s->link[k-1]=s->link[k];
}
s->link[s->n-1]=s->link[s->n];
s->link[s->n]=NULL;
s->n=s->n-1; q->n=q->n+1;
q->key[q->n-1]=p->key[j-1];
q->rec[q->n-1]=p->rec[j-1];
q->link[q->n]=u;
p->key[j-1]=y;
p->rec[j-1]=l;
if(u!=NULL) u->prt=q;
}
else if((j>1)&&((p->link[j-2])->n>m))
{
s=p->link[j-2];
q->n=q->n+1;
q->link[q->n]=q->link[q->n-1];

for(k=q->n-1;k>=1;k--)
{
q->key[k]=q->key[k-1];
q->rec[k]=q->rec[k-1];
q->link[k]=q->link[k-1];
}
q->key[0]=p->key[j-2];
q->rec[0]=p->rec[j-2];
u=s->link[s->n];
q->link[0]=u;
if(u!=NULL) u->prt=q;
p->key[j-2]=s->key[s->n-1];
p->rec[j-2]=s->rec[s->n-1];
s->link[s->n]=NULL;
s->n=s->n-1;
}

else
{
if(j==p->n+1)
{ q=p->link[j-2]; s=p->link[j-1]; j=j-1;}
else s=p->link[j];
q->key[q->n]=p->key[j-1];
q->rec[q->n]=p->rec[j-1];
t=q->n+1;
for(k=1;k<=s->n;k++)
{ q->key[t+k-1]=s->key[k-1];
q->rec[t+k-1]=s->rec[k-1];
u=s->link[k-1];
q->link[t+k-1]=u;
if(u!=NULL) u->prt=q;
}
u=s->link[s->n]; q->link[t+s->n]=u;
if(u!=NULL) u->prt=q;
q->n=2*m;
free(s);
for(k=j;k<=p->n-1;k++)
{
p->key[k-1]=p->key[k];
p->rec[k-1]=p->rec[k];
p->link[k]=p->link[k+1];
}
p->n=p->n-1; s=q; q=p;
}
}
if((q==bth)&&(q->n==0))
{ free(bth); bth=s; bth->prt=NULL;
if(s->n==0) {bth=NULL; free(s); }
}
printf("\n\tThe book has been delete !");
return(bth);
}
struct BookNode *InputNode()
{
struct BookNode *p;
int i;
p=(struct BookNode *)malloc(sizeof(struct BookNode));
clrscr();
fflush(stdin);
printf("\n\tInput the title: ");
gets(p->title);
printf("\n\tInput the writer: ");
gets(p->writer);
printf("\n\tInput the book current amount: ");
scanf("%d",&p->currentnum);
printf("\n\tInput the book total amount: ");
scanf("%d",&p->totalnum);
fflush(stdin);
printf("\n\tInput the book brief instruction: ");
gets(p->brief);
for(i=0;i<20;i++)
(p->reader[i]).num[0]='\0';
return(p);
}
void OutputNode(struct TreeNode *bth)
{
struct TreeNode *q;
struct BookNode *p;
int k;
int x;
int flag;
clrscr();
printf("\n\tPlease input the book you want to search: ");
scanf("%d",&x);
q=mbsearch(bth,x,&k,&flag);
if(flag==1)
{
p=q->rec[k-1];
printf("\n\tTitle: %s",p->title);
printf("\n\tWriter: %s",p->writer);
printf("\n\tCurrentAmount: %d",p->currentnum);
printf("\n\tTotalAmount: %d",p->totalnum);
printf("\n\tBriefIntroction: %s\n",p->brief);
}
else printf("\n\tThis book is not exist!");
}
void borrow(struct TreeNode *bth)
{
struct TreeNode *q;
struct BookNode *p;
struct ReaderNode *r;
int i,k, x, flag,t;
clrscr();
printf("\n\tPlease input the book you want to borrow: ");
scanf("%d",&x);
q=mbsearch(bth,x,&k,&flag);
if(flag==1)
{
p=q->rec[k-1];
printf("\n\tDo you want this book ?(y/n)");
printf("\n\tTitle: %s",p->title);
printf("\n\tWriter: %s",p->writer);
printf("\n\tCurrentAmount: %d",p->currentnum);
printf("\n\tTotalAmount: %d",p->totalnum);
printf("\n\tBriefIntroction: %s",p->brief);
t=getch();
if(t=='y'||t=='Y')
{
if( (p->currentnum)==0) printf("\n\tSorry,this book has all borrow out...");
else
{
clrscr();
for(i=0;i<20;i++) if( (p->reader[i]).num[0]=='\0') break;
printf("\n\tPlease input your certificate number: ");
scanf("%s",(p->reader[i]).num);
printf("\n\tPlease input the borrow data: ");
printf("\n\tYear: ");
scanf("%d",&((p->reader[i]).bro.year));
printf("\tMonth: ");
scanf("%d",&((p->reader[i]).bro.month));
printf("\tDay: ");
scanf("%d",&((p->reader[i]).bro.day));

printf("\n\tPlease input the payback data: ");
printf("\n\tYear: ");
scanf("%d",&((p->reader[i]).back.year));
printf("\tMonth: ");
scanf("%d",&((p->reader[i]).back.month));
printf("\tDay: ");
scanf("%d",&((p->reader[i]).back.day));

p->currentnum--;
printf("\n\tYou have borrow the book.");}
}

}
else printf("\n\tThis book is not exist!");
}
void payback(struct TreeNode *bth)
{
struct TreeNode *q;
struct BookNode *p;
int i,k, x, flag,t,j;
int year,month,day,d;
float pay;
char temp[20];
clrscr();
printf("\n\tPlease input the book you want to payback: ");
scanf("%d",&x);
q=mbsearch(bth,x,&k,&flag);
if(flag==1)
{
p=q->rec[k-1];
printf("\n\tDo you want to payback this book ?(y/n)");
printf("\n\tTitle: %s",p->title);
printf("\n\tWriter: %s",p->writer);
printf("\n\tCurrentAmount: %d",p->currentnum);
printf("\n\tTotalAmount: %d",p->totalnum);
printf("\n\tBriefIntroction: %s",p->brief);
t=getch();
if(t=='y'||t=='Y')
{
if( (p->currentnum) >=(p->totalnum) )
printf("\n\tYou want to offer a more book ??\n");
else
{
clrscr();
printf("\n\tPlease input your certificate number: ");
scanf("%s",temp);
j=0;
for(i=0;i<20;i++)
{
if(! (strcmp(temp,(p->reader[i]).num))) {j=1;break;}
}
if(j==0) {printf("\n\tYou haven't borrow this book.");return;}
printf("\n\tToday is:");
printf("\n\tYear: ");
scanf("%d",&year);
printf("\tMonth: ");
scanf("%d",&month);
printf("\tDay: ");
scanf("%d",&day);

d=0;
if(year<(p->reader[i]).back.year) d=1;
if(year<=(p->reader[i]).back.year && month<(p->reader[i]).back.month) d=1;
if(year<=(p->reader[i]).back.year && month<=(p->reader[i]).back.month && day<(p->reader[i]).back.day) d=1;
if(d==0)
{
clrscr();
pay=(year-(p->reader[i]).back.year)*365+(month-(p->reader[i]).back.month)*30+(day-(p->reader[i]).back.day);
printf("\n\tYou borrow this book is in %d-%d-%d",(p->reader[i]).bro.year,(p->reader[i]).bro.month,(p->reader[i]).bro.day);
printf("\n\tYou should pay it back in %d-%d-%d",(p->reader[i]).back.year,(p->reader[i]).back.month,(p->reader[i]).back.day);
printf("\n\tToday is %d-%d-%d",year,month,day);
printf("\n\n\tSo you have go out the payback day");
printf("\n\tYou have to pay %2.1f Yuan.",0.1*pay);
}
(p->reader[i]).num[0]='\0';
p->currentnum++;
printf("\n\tYou have payback the book.");
}
}

}
else printf("\n\tYou want to payback an inexistence book ???");

}
donghua()
{int graphdriver=VGA;
int graphmode=VGAHI;
int i,j;
registerbgidriver(EGAVGA_driver);
initgraph(&graphdriver,&graphmode,"");
clrscr();

for(i=0;i<=150;i+=5)
{setcolor(i);
textbackground(RED);
settextstyle(0,0,2);
outtextxy(100,i+140,"Liberary management System");
delay(10000000);
clrscr();
}
setcolor(RED);
outtextxy(50,200,"Loading");
delay(100000000000);
outtextxy(50,200,"Loading.");
delay(100000000000);
outtextxy(50,200,"Loading..");
delay(100000000000);
outtextxy(50,200,"Loading...");
delay(100000000000);
outtextxy(50,200,"Loading....");
delay(100000000000);
outtextxy(50,200,"Loading.....");
delay(100000000000);
outtextxy(50,200,"Loading......");
delay(100000000000);
outtextxy(50,200,"Loading.......");
delay(100000000000);
outtextxy(50,200,"Loading........");
delay(100000000000);
outtextxy(50,200,"Loading.........");
delay(100000000000);
outtextxy(50,200,"Loading..........");
delay(100000000000);
outtextxy(50,200,"Loading...........");
outtextxy(50,200,"Loading............");
delay(100000000000);
for(i=0;i<=10;i++)
delay(100000000000);
clrscr();

}
char menu(void)
{
clrscr();
window(1,1,80,25);
textmode(MONO);
textbackground(BLACK);
textcolor(5);
printf("\n\t ****************************************************");
printf("\n\t ***** Welcome to Liberary management System *****");
printf("\n\t ****************************************************");
printf("\n\t ****************************************************");
printf("\n\t *1.Add a book *");
printf("\n\t ****************************************************");
printf("\n\t *2.Delete a book *");
printf("\n\t ****************************************************");
printf("\n\t *3.Search a book *");
printf("\n\t ****************************************************");
printf("\n\t *4.Borrow a book *");
printf("\n\t ****************************************************");
printf("\n\t *5.Payback a book *");
printf("\n\t ****************************************************");
printf("\n\t *0.exit *");
printf("\n\t ****************************************************");
printf("\n\t please select: ");
return getch();
}
bofangdonghua()
{int graphdriver=VGA;
int graphmode=VGAHI;
int i,j;
char c;
registerbgidriver(EGAVGA_driver);
initgraph(&graphdriver,&graphmode,"");
/*************shi fou bo fang dong hua?**************/
printf:{setcolor(RED);
settextstyle(3,0,5);
outtextxy(100,30,"bo fang dong hua?");
outtextxy(150,80,"Yes");
outtextxy(300,80,"No");
c=getch();
if(c=='Y'||c=='y')
{donghua();
menu();
}
else
if(c=='N'||c=='n')
menu();
else
{setcolor(GREEN);
settextstyle(3,0,8);
outtextxy(200,240,"Error!");
delay(10000000000);
clrscr();
goto printf;
}
}
/**************************************/

}

void main()
{
char c,t;
int x;
int k,flag,p=1;
struct TreeNode *bth=NULL;

bofangdonghua();

while(1)
{
c=menu();
putch(c);
getch();
switch(c)
{
case '1': bth=mbinsert(bth);

break;

case '2': bth=mbdel(bth);

break;

case '3': OutputNode(bth);
break;

case '4': borrow(bth);
break;

case '5': payback(bth);
break;

case '0': clrscr();
printf("\n\tDo you want to return ?(y/n)");
t=getch();
if(t=='y'||t=='Y') exit(0);
break;
defult :break;
}
printf("\n\tPress any key to the main menu....");
getch();
}
}

❸ 怎樣用C語言製作學生信息管理系統

還真不想再寫代碼了啊。。。。。

直接跟你說下思路吧。。。。

首先創建一個結構體,如——

struct student
{
char num[10]; //學號
char name[20]; //姓名
char sex[4]; //性別
int age; //年齡
int flag; //一個標示符(下面會說用法)
};

然後就定義一個student類型的數組stu[max],在前面#define max 1000000,你也可以把max定義得小一點,這是用來表示最大能容納多少個學生信息。。。。

說到flag的用處,我不清楚你了不了解,還是先跟你說下吧。。。。

先考一下你,知道怎樣把一個數組裡面的某一個元素清空嗎?清空就表示能在那個位置再次賦值,沒清空的位置就不能重復賦值。把那個元素設為a[x],可能你會想著把a[x]=0不就得啦,那好,如果用這種方法,那麼如果你想尋找數組a中可以再次賦值的元素,然後進行賦值,你是不是要通過一個判別式來對數組a的每一個元素進行判斷,看看它是否能被再賦值,對吧,那這個判別式肯定就是判斷a中的數值是否為零了。但是你想一下,如果一開始a中某個元素的值就是等於0,並不表示清空狀態,那你這樣的判別式能成立嗎,所以我們要用到一個標示符flag。。。。

當flag=1時,表示該數組的元素已存在,當flag=0時,表示該數組的元素是無效的,這樣的話就不需要對數組中的每個元素進行什麼清空操作了,就像上面的數組stu,這么多元素,你怎麼清空。。。。

然後有一個最重要的是怎樣存儲數據,因為沒用到資料庫,所以就用txt文件來存儲吧,給你一個相關的代碼——

int load_student() //把已存在的儲存數據的txt文件打開
{
FILE *fp;
if((fp=fopen("student.txt","rb"))==NULL) //判斷文件是否存在
{
printf("不能打開此文件.\n");
exit(0);
}
for(int i=0;i<SIZE;i++) //存在的話就打開它
{
fread(&stu[i],sizeof(struct student),1,fp);
}
fclose(fp);
return 0;
}

int save_student() //把數據存放進txt文件中
{
FILE *fp;
if((fp=fopen("student.txt","wb"))==NULL)
{
printf("不能打開此文件.\n");
exit(0);
}
for(int i=0;i<SIZE;i++)
{
fwrite(&stu[i],sizeof(struct student),1,fp);
}
fclose(fp);
return 0;
}

這是一個比較基本的代碼,你可以靈活的修改一下,實現讀寫過程的代碼也就是這樣了。。。。

然後是功能的實現,這方面就得看你的要求了,不過我建議你把每個界面做成一個函數,實現模塊化,如——

int shouye() //首頁
{
system("cls"); //清屏
int num1;
printf("**********************************\n");
printf(" 學生信息管理系統 \n");
printf("**********************************\n");
printf("\n\n");
printf("1、更改學生信息\n\n");
printf("2、查看學生信息\n\n");
printf("3、退出系統\n\n");
scanf("%d",&num1); //輸入操作
if(num1==1)
update(); //進入學生信息更改模塊
else if(num1==2)
check(); //進入學生信息查看模塊
else
exit(0); //退出系統
return 0;
}

在給多你一個界面函數的代碼吧——

int update()
{
system("cls");
int num2;
printf("**********************************\n");
printf(" 更改成績 \n");
printf("**********************************\n");
printf("\n\n");
printf("1、增加學生信息\n\n");
printf("2、修改學生信息\n\n");
printf("3、返回上一層\n\n");
scanf("%d",&num2);
if(num2==1)
add();
else if(num2==2)
correct();
else
shouye();
return 0;
}

大概就是這種模式,我就不多弄了,你自己開拓一下吧,可能你會問我主函數怎麼實現,大概就是這樣吧——

int main()
{
load_student(); //讀取txt裡面的內容
shouye();
return 0;
}

這里要說明一下,我給你這代碼還不怎麼完善的,只是簡單跟你說下思路罷了,如果你招著復制的話,要記住,在你第一次運行之前,要先在你這工程目錄低下創建一個名字為student的txt文件,不然會顯示錯誤,因為load_student()那裡就會判斷是否存在student.txt文件,沒的話就會顯示錯誤的。。。。

我建議你簡單地畫下流程圖,這樣可以讓你的編程思路更清晰,如果還有什麼不清楚的地方可以Q我,410430209。。。。

希望這些對你有所幫助。。。。

❹ 單片機開發與典型工程項目實例詳解的目 錄

1.1 單片機的應用和特點 1
1.1.1 單片機的應用 1
1.1.2 主流單片機的種類及特點 3
1.2 MCS-51系列單片機的內部結構 7
1.3 MCS-51單片機的引腳功能與時序 9
1.3.1 MCS-51系列單片機引腳說明 10
1.3.2 MCS-51單片機的時序 16
1.4 MCS-51單片機的存儲器組織 17
1.4.1 程序存儲器 18
1.4.2 數據存儲器 19
1.4.3 特殊功能寄存器 21
1.5 單片機最小系統 24
1.5.1 單片機最小系統 24
1.5.2 彩燈控制器的設計 25
1.5.3 順序控制器的設計 27
1.6 本章小結 29 2.1 單片機C語言宏配置介紹 30
2.1.1 處理器的配置 30
2.1.2 ID區域 31
2.1.3 EEPROM數據 31
2.2 單片機數據結構 31
2.2.1 類型限定詞 32
2.2.2 常數 33
2.2.3 變數 34
2.2.4 構造數據類型 38
2.2.5 函數 46
2.2.6 中斷 49
2.2.7 C語言和匯編語言的嵌套使用 53
2.2.8 偽指令 54
2.3 MPLAB IDE編譯器簡介 57
2.3.1 MPLAB工程管理器(MPLAB Project Manager) 57
2.3.2 MPLAB文本編輯器(MPLAB Editor) 57
2.3.3 MPLAB軟體模擬器(MPLAB-SIM Simulator) 58
2.3.4 MPLAB在線模擬器(MPLAB-ICE Simulator) 58
2.4 MPLAB IDE的安裝和使用 58
2.4.1 MPLAB IDE的安裝要求 58
2.4.2 MPLAB IDE的使用 59
2.4.3 實例應用 59
2.4.4 MPLAB IDE中的工程 62
2.4.5 MPLAB IDE工程的編譯 65
2.4.6 MPLAB IDE的軟體模擬 66
2.5 MCC18基礎 68
2.5.1 MCC18的安裝目錄瀏覽 68
2.5.2 MCC18的語言執行流程 70
2.5.3 MCC18舉例 70
2.5.4 MCC18的編譯環境 72
2.5.5 MCC18和單片機的比較 73
2.6 單片機的混合開發 74
2.6.1 C51和匯編語言的性能比較 74
2.6.2 C51和匯編語言的混合編程 74
2.7 本章小結 79 3.1 單片機應用系統設計的流程 80
3.2 單片機應用系統兩設計原則 82
3.2.1 硬體系統設計原則 82
3.2.2 應用軟體設計原則 83
3.3 單片機的選型 83
3.3.1 單片機選型的原則 83
3.3.2 單片機選型參考 85
3.3.3 開發工具的選擇 86
3.4 系統常見故障與調試 87
3.5 本章小結 88 4.1 數字濾波演算法 89
4.1.1 算術平均值濾波 90
4.1.2 滑動平均值濾波 92
4.1.3 防脈沖干擾平均值濾波 93
4.1.4 中值濾波 95
4.1.5 一階滯後濾波 96
4.2 數字PID控制演算法 97
4.2.1 位置式PID控制演算法 98
4.2.2 增量式PID控制演算法 100
4.2.3 積分分離的PID控制演算法 102
4.2.4 變速積分PID控制演算法 103
4.3 本章小結 104 5.1 鍵盤設計的組成和分類 105
5.1.1 鍵盤的物理結構 106
5.1.2 鍵盤的組成形式 106
5.2 鍵盤介面的工作過程和工作方式 111
5.2.1 鍵盤的抖動干擾和消除方法 111
5.2.2 盤介面的工作過程 112
5.2.3 鍵盤的工作方式 112
5.3 鍵位置的判別方法 113
5.4 鍵盤介面設計的儲存晶元和
5.4 相關協議 114
5.4.1 鍵盤介面設計的儲存晶元 114
5.4.2 AT24CXX系列的晶元及I2C協議 114
5.4.3 A93CXX系列的晶元及SPI協議 124
5.5 鍵盤介面實現的工程實例 132
5.5.1 矩陣鍵盤介面的工程實例 132
5.5.2 矩陣式中斷掃描鍵盤的設計 137
5.5.3 二進制編碼鍵盤介面的工程實例 139
5.6 重點與難點 141 6.1 交通燈順序控制 143
6.1.1 硬體系統的設計 143
6.1.2 反向器74F06 145
6.1.3 控制字 145
6.1.4 程序設計 145
6.2 設計一種基於模糊理論的單片機控制交通路口調度系統 148
6.2.1 系統的總體設計 148
6.2.2 十字路口調度系統模糊控制器的設計 149
6.2.3 電路設計 151
6.2.4 車流量檢測電路 154
6.2.5 系統主程序和模糊控製程序設計 155
6.2.6 系統顯示程序設計 157
6.3 重點與難點 159 7.1 顯示屏顯示原理及串列通信基本概念 161
7.1.1 顯示屏顯示原理 161
7.1.2 串列通信 163
7.1.3 陣列式LED顯示屏的實現 166
7.2 顯示屏硬體電路設計 166
7.2.1 硬體電路介紹 168
7.2.2 外擴數據存儲器電路 170
7.3 列式LED顯示屏顯示程序的171
7.3.1 漢字點陣數據的提取 171
7.3.2 顯示主程序 174
7.3.3 串口中斷處理程序 176
7.3.4 顯示驅動函數 179
7.3.5 外部存儲器讀寫程序 181
7.3.6 串口通信程序 181
7.3.7 文字顯示特效程序 182
7.4 本章小結 191 8.1 IC卡基礎 192
8.1.1 IC卡的分類 192
8.1.2 IC卡的標准 194
8.2 接觸型IC卡讀寫系統的開發 194
8.2.1 IC卡讀寫系統的時序 195
8.2.2 IC卡讀寫系統的硬體連196
8.2.3 IC卡讀寫系統的軟體系統 197
8.3 基於SLE4442加密卡讀寫系統的開發 201
8.3.1 SLE4442卡的介紹 201
8.3.2 SLE4442的模式 203
8.3.3 SLE4442的操作命令 205
8.3.4 SLE4442讀/寫系統的軟硬體設計 208
8.4 重點與難點 215 9.1 無刷直流電機控制原理 216
9.1.1 無刷直流電機的組成 217
9.1.2 無刷直流電機的工作原理 217
9.1.3 無刷直流電機的控制方法 219
9.2 無刷直流電機的工作特性 220
9.3 直流無刷電機控制的應用實現 221
9.3.1 總體設計概述 221
9.3.2 直流無刷電機控制的硬體設計 222
9.3.3 直流無刷電機控制的軟體設計 224
9.3.4 無刷直流電機速度閉環控制系統 227
9.4 本章小結 230 10.1 永磁同步電機的結構與分類 231
10.2 永磁同步電機的矢量控制 232
10.3 永磁同步電機控制 236
10.3.1 控制電路設計 237
10.3.2 光電隔離電路設計 238
10.3.3 功率電路設計 239
10.4 永磁同步電機控制的軟體實現 239
10.4.1 電壓SVPVM的DSPIC33f軟體實現 241
10.4.2 轉子位置檢測 243
10.4.3 AD轉換模塊 245
10.5 本章小結 246 11.1 汽車行駛記錄儀功能介紹 247
11.2 簡易汽車行駛記錄儀的設計 249
11.2.1 汽車行駛記錄儀的考慮因素 250
11.2.1 MSP430 251
11.2.2 車模擬信號的採集 254
11.2.4 數字信號採集電路 255
11.2.5 SST39VF160晶元介紹 257
11.3 記錄儀的軟體設計 257
11.3.1 軟體流程圖 258
11.3.2 數據存儲格式 259
11.3.3 SST39VF160存儲器數據讀寫的實現 259
11.4 數據採集的程序實現 263
11.5 本章小結 264 12.1 USB-GPIB控制器簡介 265
12.1.1 認識USB 266
12.1.2 GPIB 269
12.2 USB-GPIB控制器的硬體電路設計 271
12.2.1 器件的選擇 272
12.2.2 USB-GPIB控制器電路設計 278
12.3 USB-GPIB控制器的軟體程序的實現 287
12.3.1 USB單片機協議控制晶元與主機(計算機)的數據交互 288
12.3.2 USB協議控制晶元與GPIB控制器的數據交互 299
12.4 USB-GPIB控制器固件的調試與固化 300
12.4.1 USB-GPIB控制器固件的調試 301
12.4.2 USB-GPIB控制器固件程序的固化 302
12.5 本章小結 303 13.1 研究抗干擾技術的重要性 304
13.2 干擾的分類 305
13.2.1 按雜訊產生的原因分類 306
13.2.2 按雜訊傳導模式分類 306
13.2.3 按雜訊波形及性質分類 307
13.3 干擾的耦合方式 308
13.4 單片機系統可靠性的設計任務與方法 310
13.4.1 單片機系統可靠性設計的任務 310
13.4.2 可靠性設計一般方法 311
13.5 本章小結 313 14.1 無源濾波器抗干擾 314
14.1.1 電容濾波器 315
14.1.2 電感濾波器 316
14.1.3 RC低通濾波器 316
14.1.4 1LC低通濾波器 318
14.1.5 低通濾波器的結構選擇 319
14.1.6 低通濾波器的平衡結構與串聯形式 319
14.2 有源濾波器抗干擾 321
14.2.1 一級低通有源濾波器 321
14.2.2 二級低通有源濾波器 322
14.3 去耦電路 324
14.3.1 尖峰電流的形成原理 324
14.3.2 去耦電容的配置 325
14.3.3 光電隔離 326
14.3.4 繼電器隔離 328
14.3.5 變壓器隔離 328
14.3.6 布線隔離 329
14.4 接地技術 330
14.5 本章小結 334 15.1 概述 335
15.2 指令冗餘技術 336
15.2.1 單位元組指令冗餘 337
15.2.2 重要指令冗餘 337
15.3 軟體陷阱技術 337
15.3.1 未使用的中斷向量區設置陷阱 338
15.3.2 RAM數據區中設置陷阱 338
15.3.3 未使用的EPROM數據區設置陷阱 339
15.3.4 非EPROM單片機空間設置陷阱 339
15.3.5 運行程序區設置陷阱 339
15.4 看門狗技術 339
15.4.1 硬體看門狗技術 340
15.4.2 軟體看門狗技術 342
15.5 本章小結 345

❺ 各位大佬C語言程序設計題,幫幫忙

/****************************************************************/
/* 程 序: 學生成績管理系統 */
/* 功 能: 主菜單的選擇 */
/* 作 者: 戴鵬 */
/* 時 間: 2019-12-11 */
/* 修 改: (請修改為自己的姓名) */
/* 時 間: 2019-12- */
/****************************************************************/
#include "stdafx.h"
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
//#include <memory.h>
#include<string>
using namespace std;
#define MAX_SIZE 30 //學生成績單最大長度
#define MATH_COL 0 //數學成績的列號
#define CHI_COL 1 //語文成績的列號
#define ENG_COL 2 //英語成績的列號
#define AVE_COL 3 //平均成績的列號

//輸入一條學生記錄
void InputLst(char *number, char *name, float *score)
{
printf("請輸入學號:"); //輸入學號
gets(number);
printf("請輸入姓名:"); //輸入姓名
gets(name);
score[AVE_COL]=0;
printf("請輸入數學成績:"); //輸入數學成績
cin>>score[MATH_COL];
score[AVE_COL]+=score[MATH_COL];
printf("請輸入語文成績:"); //輸入語文成績
cin>>score[CHI_COL];
score[AVE_COL]+=score[CHI_COL];
printf("請輸入英語成績:"); //輸入英語成績
cin>>score[ENG_COL];
score[AVE_COL]+=score[ENG_COL];
score[AVE_COL]/=3; //計算平均成績
}
int main(void)
{
int stuListSize; //學生成績單實際長度,初始情況下長度為0
char number[MAX_SIZE][10]; //學號
char name[MAX_SIZE][11]; //姓名
float score[MAX_SIZE][4]; //各科成績,按照數組第二維下標,分別對應數學、語文、英語、平均成績
int statistics[4][5]; //分段統計結果,分數段分別是[100,90],(90,80],(80,70],(70,60],(60,0]
char subject[4][5]={"數學","語文","英語","平均"}; //科目名稱
//統計成績模塊使用
char choice; //表示編號
int n,i,j;
stuListSize=0; //創建空表

do
{
system("cls");
printf(" *------------------------------------------------------------*\n");
printf(" | 中國****大學學生成績管理系統 |\n");
printf(" | 請輸入選項編號(0~8): |\n");
printf(" |------------------------------------------------------------|\n");
printf(" | |\n");
printf(" | 1 —— 創建成績單 |\n");
printf(" | 2 —— 添加學生 |\n");
printf(" | 3 —— 編輯學生 |\n");
printf(" | 4 —— 刪除學生 |\n");
printf(" | 5 —— 查找學生 |\n");
printf(" | 6 —— 瀏覽成績單 |\n");
printf(" | 7 —— 排序成績單 |\n");
printf(" | 8 —— 統計成績 |\n");
printf(" | 0 —— 退 出 |\n");
printf(" |------------------------------------------------------------|\n");
printf(" | 開發者:軟體工程系- 戴鵬 @2019 |\n");
printf(" *------------------------------------------------------------*\n");
printf("請同學們自己完成:3,5,7三個功能。\n");
choice=getch(); //接收選項
switch(choice) //實現點菜
{
case '1': //創建成績單
if(stuListSize>0) //非空表
{
printf("\n不能重新創建學生成績單!\n");
}
else //空表
{
printf("請輸入學生人數:"); //輸入學生人數
scanf("%d",&n);
if(n>0&&n<=MAX_SIZE) //學生人數合法,[1,MAX_SIZE]
{
for(i=0;i<n;i++) //輸入n個學生
{
fflush(stdin); //清空鍵盤緩沖區
printf("請輸入第%2d條記錄\n",i+1);
InputLst(number[i],name[i],score[i]);
}
stuListSize=n; //設置當前表長為n;
printf("創建%d條學生記錄成功!\n",stuListSize);
}
else //學生人數不合法
{
printf("學生人數范圍應在[1,%d]之間,創建學生成績單失敗!\n",MAX_SIZE);
}
}
break;
case '2':
printf("您選擇了\"2 —— 添加學生\"\n");
if(stuListSize==MAX_SIZE)
{
printf("學生人數范圍應在[1,%d]之間,添加學生失敗!\n",MAX_SIZE);
}
else if(stuListSize==0)
{
printf("成績單為空,請先創建成績單!\n");
}
else
{
fflush(stdin); //清空鍵盤緩沖區
printf("請輸入第%2d條記錄\n",stuListSize+1);
InputLst(number[stuListSize],name[stuListSize],score[stuListSize]);
printf("請輸入學號:"); //輸入學號
gets(number[stuListSize]);
for(i=0;i<stuListSize;i++) //學號不能重復
{
if(strcmp(number[i],number[stuListSize])==0)
{
printf("輸入學號重復!請重新輸入!");
break;
}
}
if(i==stuListSize)
InputLst(number[i],name[i],score[i]);
}
break;
case '3'://請完成(可以編輯每一個學生的信息)
printf("您選擇了\"3 —— 編輯學生\"\n");
// 請補充以下代碼;
break;
case '4': //請完成(可以根據學號刪除學生)
printf("您選擇了\"4 —— 刪除學生\"\n");
fflush(stdin);
printf("請輸入學號:");
gets(number[stuListSize]);
for(i=0;i<stuListSize;i++)
{
if(strcmp(number[i],number[stuListSize])==0)
{
if(i==stuListSize-1)
stuListSize--;
else {
for(j=0;j<10;j++)
{
char temp;
temp=number[i][j];
number[i][j]=number[stuListSize-1][j];
number[stuListSize-1][j]=temp;
}
stuListSize--;
}
}
if(i==stuListSize)
printf("查找不到該學生!");
}
break;
case '5':
printf("您選擇了\"5 —— 查找學生\"\n");
// 請補充以下代碼;
break;
case '6': //瀏覽成績單
if( 0 == stuListSize ) //表空
{
printf("無學生記錄,請創建成績單或添加學生!\n");
}
else //表不空
{
//輸出表頭
printf("%4s%12s%12s%10s%10s%10s%10s\n",
"序號","學號","姓名","數學","語文","英語","平均");
for(i=1;i<=68;i++)
putchar('=');
printf("\n");
//輸出表體
for(i=0;i<stuListSize;i++) //輸出stuListSize個學生成績信息
{
printf("%4d%12s%12s",i+1,number[i],name[i]); //輸出學號、姓名
for(j=0;j<4;j++) //輸出數學、語文、英語、平均成績
printf("%10.1f",score[i][j]);
printf("\n");
}
}
break;
case '7': //排序成績單
printf("您選擇了\"7 —— 排序成績單\"\n");
// 請補充以下代碼;
break;
case '8':
if( 0== stuListSize ) //表空
{
printf("無學生記錄,請創建成績單!\n");
break; //結束switch
}
memset(statistics,0,sizeof(statistics)); //初始化statistics數組元素都為0

for(i=0;i<stuListSize;i++) //統計
{
for(j=0;j<4;j++)
{

if( score[i][j]<=100 && score[i][j]>=90 ) //[100,90]
statistics[j][0]++;
else
if( score[i][j]<90 && score[i][j]>=80 ) //(90,80]
statistics[j][1]++;
else
if( score[i][j]<80 && score[i][j]>=70 ) //(80,70]
statistics[j][2]++;
else
if( score[i][j]<70 && score[i][j]>=60 ) //(70,60]
statistics[j][3]++;
else
statistics[j][4]++;
}
}
//顯示統計結果
printf("%10s%10s%10s%10s%10s%10s\n", //列印表頭
"科目","90分以上","80~89","70~79","60~69","60分以下");
for(i=0;i<4;i++) //列印四行數據(4科),每行包括:科目名稱,5個分數段人次數
{
printf("%10s",subject[i]);
for(j=0;j<5;j++)
printf("%10d",statistics[i][j]);
printf("\n");
}
break;
case '0':
printf("您選擇了\"0 —— 退出\"\n");
break;
default:
printf("非法輸入\n");
break;
}
system("pause"); //提示用戶「按任意鍵繼續......」
}while(choice!='0'); //當選擇0編號時退出系統
return 0;
}

❻ C語言工程師一般都做什麼什麼項目的開發

現在幾乎沒大有做C語言的項目,C語言工程師就更少了。

❼ 工程管理系統C語言代碼

呵呵,300多分一個Q幣,100分很難招到人才出來的大哥。勸你一句。找專業人士來幫忙吧

❽ 求介紹一些關於C語言在工程中 各種文件的管理的 書

這種書是沒有的,網路經驗之類的網上東西很多的。建議您多看看網上的,再自己摸索。

❾ 四個人用C語言做一個小項目該如何分工呢比如做一個圖書館管理系統

傳統意義上的項目管理軟體更多的是管理項目的資源、任務、進度、質量,而忽略了項目管理的最終目標——項目成本控制。諾明軟體為例,通過項目管理軟體,可全面核算各類項目成本,其中包括人工、費用、材料、設備、管理分攤、外包等項目成本的精細化管理,幫助財務人員輕松完成項目成本核算過程,同時幫助項目經理實時了解項目實際產生的各項成本。

❿ C語言簡單小題目:編寫程序,輸入一個十進制整數,將其變換為二進制後存儲在一個數組中。並用make工程管理

#include <stdio.h>
#define MAX (sizeof(int)*8)

int main()
{
int a[MAX];
int num;
int i;
int sign=1;
printf("please input the number:");
scanf("%d",&num);
if(num<0)
{
num=~num+1;
sign=-1;
}
if(sign==1)
a[0]=0;
else
a[0]=1;
for(i=MAX-1;i>0;i--)
{
a[i]=num & 1;
num=num>>1;
}
for(i=0;i<MAX;i++)
{
printf("%d",a[i]);
}
putchar('\n');
return 0;
}