導航:首頁 > 源碼編譯 > 編譯一個圖子系統

編譯一個圖子系統

發布時間:2022-05-21 05:25:03

A. 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);
printf("書名:");
scanf("%s",&books[n].name);
printf("作者:");
scanf("%s",&books[n].author);
printf("數量:");
scanf("%d",&books[n].total);
books[n].store=books[n].total;
return_confirm();
}
void book_del(void)
{
int n;
page_title("注銷舊書");
if((n=search_book())!=-1) books[n].id=0;
printf("該書已注銷.\n");
return_confirm();
}

void main(void)
{
menu: page_title("操作選單");
printf("請用數字鍵選擇操作\n\n");
printf("1 借閱圖書\n2 歸還圖書\n\n");
printf("3 注冊新書\n4 注銷舊書\n\n");
printf("\n0 退出\n");
switch(getch())
{
case '1' : book_out();break;
case '2' : book_in();break;
case '3' : book_add();break;
case '4' : book_del();break;
case '0' : exit(0);
}
goto menu;
}
{
int n;
page_title("廣?症慕");
if((n=search_book())!=-1) books[n].id=0;
printf("乎慕廝廣?.\n");
return_confirm();
}

void main(void)
{
menu: page_title("荷恬僉汽");
printf("萩喘方忖囚僉夲荷恬\n\n");
printf("1 処堋夕慕\n2 拷珊夕慕\n\n");
printf("3 廣過仟慕\n4 廣?症慕\n\n");
printf("\n0 曜竃\n");
switch(getch())
{
case '1' : book_out();break;
case '2' : book_in();break;
case '3' : book_add();break;
case '4' : book_del();break;
case '0' : exit(0);
}
goto menu;
}
自己運行一下

B. linux內核源碼如何編譯

首先uname -r看一下你當前的linux內核版本

1、linux的源碼是在/usr/src這個目錄下,此目錄有你電腦上各個版本的linux內核源代碼,用uname -r命令可以查看你當前使用的是哪套內核,你把你下載的內核源碼也保存到這個目錄之下。
2、配置內核 make menuconfig,根據你的需要來進行選擇,設置完保存之後會在當前目錄下生成.config配置文件,以後的編譯會根據這個來有選擇的編譯。
3、編譯,依次執行make、make bzImage、make moles、make moles
4、安裝,make install
5、.創建系統啟動映像,到 /boot 目錄下,執行 mkinitramfs -o initrd.img-2.6.36 2.6.36
6、修改啟動項,因為你在啟動的時候會出現多個內核供你選擇,此事要選擇你剛編譯的那個版本,如果你的電腦沒有等待時間,就會進入默認的,默認的那個取決於 /boot/grub/grub.cfg 文件的設置,找到if [ "${linux_gfx_mode}" != "text" ]這行,他的第一個就是你默認啟動的那個內核,如果你剛編譯的內核是在下面,就把代表這個內核的幾行代碼移到第一位如:
menuentry 'Ubuntu, with Linux 3.2.0-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic root=UUID=9961c170-2566-41ac-8155-18f231c1bea5 ro quiet splash $vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
當然你也可以修改 set default="0"來決定用哪個,看看你的內核在第幾位,default就填幾,不過我用過這種方法,貌似不好用。

重啟過後你編譯的內核源碼就成功地運行了,如果出現問題,比如滑鼠不能用,usb不識別等問題就好好查查你的make menuconfig這一步,改好後就萬事ok了。

最後再用uname -r看看你的linux內核版本。是不是你剛下的那個呢!有沒有成就感?
打字不易,如滿意,望採納。

C. 如何編譯一個操作系統內核

戲台演戲,

D. 如何自己編譯LINUX操作系統

編譯這個難啊,還要網速允許
你可以編譯
gentoo單純的自己編譯一個不屬於任何現在的版本可能不是一
般人可以做到的

E. Linux下,有圖形界面的編譯器嗎

看你用什麼編程語言了?下面是十個傑出的開源開發工具,它們將幫你提升開發效率。
1、Bluefish
Bluefish是進行Web開發時最受歡迎的IDE之一。它能夠處理編程和標記語言,但是該工具的重點用途在於創建動態和互動式網站。和許多 Linux應
用程序一樣,Bluefish是一個輕量級工具,運行速度非常快,它所佔據的資源只有同類工具的30%到40%。Bluefish可以一次打開多個文檔
(最高可打開3500個文檔)。它包含項目支持、遠程文件支持、搜索和替換(包括正則表達式),無限撤消/重做、多語言定製語法高亮、窗口反斜線文本和多
編碼支持等功能。
Bluefish最漂亮的功能之一是用戶定義工具欄Quickba,它可以讓你通過「右鍵點擊並選擇增加到
Quickbar」的方式來增加按鈕。你可以增加任意HTML工具欄按鈕到Quickbar上。Bluefish還有許多操作簡化工具,可以幫助你增加不
同元素到你的代碼中。需要一個 DHTML自動提交選擇框?簡單。從DHTML下拉列表中選擇「自動提交選擇框(Auto-submit Select
Box )」,然後填充必要的條目,就可以增加該元素到你的代碼中。Bluefish有針對C、Apache、DHTML、DocBook、HTML、
PHP+HTML和SQL的智能向導。如果是手動開發自己的網站,你應該選擇使用Bluefish這個工具。
該工具主頁:http://bluefish.openoffice.nl/
2、Anjuta
Anjuta是一個免費的開源C和C++開發工具。
它的安裝非常簡單(在Mandriva上使用urpmi
anjuta命令),提供項目管理、應用程序向導、互動式調試器、一個強大的源代碼編輯器(支持源瀏覽、代碼完成和語法高亮功能)。Anjuta團隊開發
的這個強大IDE非常易於使用,而且可以滿足你的C和C++編程需求。
Anjuta具有一個靈活而強大的用戶界面,讓你可以在布局界面中拖拽工具來安排圖形用
戶界面,使其與你希望的設計最接近。而且每一個用戶配置的布局對一個項目來說是可以持續生存的(因此你可以為每一個項目使用不同的布局)。Anjuta還
具有一個強大的插件系統,通過它你可以選擇激活或關閉哪一個插件。而且與所有開源項目一樣,你可以為Anjuta開發滿足你自己需求的插件。在
Anjuta應用程序中最大的工具之一是項目管理器。這個工具幾乎可以打開任何基於automake/autoconf的項目。這個項目管理器不會增加任
何基於Anjuta的信息到這個項目中,因此在Anjuta之外,你的項目同樣可以被維護和開發。
該工具的主頁:http://anjuta.sourceforge.net/
3、Glade
Glade是一個GNOME桌面環境下用於開發GTK+的RAD(迅速應用開發)工具。它的界面與GIMP非常類似,可以被用戶進行定製化,甚至可以被嵌入到Anjuta中。
Glade包含許多界面創建控制項,諸如文本框、對話標簽、數字輸入框和菜單等,讓你可以更快速的開發界面。界面設計以XML格式存儲,從而讓這些設計可以被輕松的應用於外部工具中。
安裝Glade的過程非常簡單。舉例來說,如果你使用Fedora操作系統,你可以使用命令「yum install glade3」來啟動安裝。Glade不像Anjuta一樣具有一個強大的項目管理器,但是你可以在Glade中創建、編輯和保存項目。
該工具的主頁:http://glade.gnome.org/
4、GCC
GCC是一個GNU編譯器,支持C、C++、Objective-C、FORTRAN、Java和Ada等語言。它是一個命令行工具。

最常見的用途是作為C和C++代碼的編譯器。你可能會有疑問,一個工具如何編譯不同語言的代碼?非常簡單:對於C來說,你調用「gcc」命令,而對於
C++來說,你調用「g++」命令。兩個編譯器在同一套工具集中。而且g++是一個編譯器,而不僅僅是一個預處理器。它可以直接從源代碼創建目標代碼,而
無需使用一個中介首先從C++代碼創建C代碼。這樣可以創建更好的目標代碼,而且讓你掌握更好的調試信息。
該工具的主頁:http://gcc.gnu.org/
5、Kdevelop
Kdevelop創建於1998年,是一個非常易用的KDE桌面環境IDE。Kdevelop目前在GPL下發布,可以免費使用。
它是基於插件的,因此你可以通過增加和移除插件,來創建最適合你需要的功能。Kdevelop還支持描述性檔案(profile)功能,因此不同設置的插件可以與特定項目關聯在一起。

Kdevelop支持15種編程語言,對每一種語言有其特定的功能。Kdevelop還提供一個內置調試器、版本控制系統
(Subversion)、應用程序向導、文檔查看器、代碼段工具(code
snippets)、集成Doxygen、RADio工具、支持Ctags、代碼格式重定、QuickOpen支持和停靠窗口和工具欄等功能。
Kdevelop最好的地方之一是,它替用戶完成了眾多底層的任務。不斷處理make、automake和configure操作是一件令人討厭的事情。
任何好程序員應該知道這些工具,Kdevelop包含了一個Automake管理器,簡化了它們的使用。該工具另一個好用的功能是,該編譯器的輸出窗口是
彩色的,因此你可以很容易的立刻看到錯誤、警告和信息之間的區別。
6、GDB
嚴格來
說,GDB算不上一個開發者工具,不過它是多數*NIX開發者必備的工具之一。GDB就是GNU調試器。這個工具從命令行中啟動,讓開發者可以立即獲得來
自另一個被執行的程序的即時反饋。如果你要創建、完成和發布一個應用程序,可能需要了解問題所在。為了幫助你發現這些問題,你可以從
gdb工具中啟動這個程序,它將幫助你發現問題所在。通過GDB你可以完成如下任務:
·按照影響應用程序行為的指定參數、開關或輸入來啟動它;
·針對特定行為終止應用程序執行;
·當你的應用程序停止時檢查發生的事情;
·修改應用程序,迅速進行測試。
在處理漏洞報告時,GDB也非常好用。
該工具的主頁:http://www.gnu.org/software/gdb/
7、KompoZer
KompZer是一個易用的所見即所得(WYS/WYG)Web開發工具,其目標用戶是希望創建一個專業Web站點,而又不想了解HTML的非技術用戶。
KompoZer具有眾多亮點功能。其中最強大的一點就是可以通過一個URL打開、編輯和上傳一個網站。這個功能讓你可以無需編輯HTML就可以簡單的對網站進行更新。當然,前提是你必須具有網站的上傳許可權。在使用其它網站作為模板時,這個功能也非常有用。
你不能把KompoZer看作一個只適合初學者的工具。它是微軟FrontPage和Adobe Dreamweaver的免費開源替代產品。和其競爭產品一樣,KompoZer可以通過點擊一個標簽就實現代碼編輯和預覽界面的切換。
該工具的主頁:http://www.kompozer.net/
8、Eclipse
Eclipse是一個Java語言編寫的多語言支持的IDE,它具有一個豐富的插件系統,讓你可以對其進行功能擴展。平均每月被下載的次數超過100萬次,Eclipse是當今軟體開發領域最強大的工具之一。實際上,Eclipse是開源開發的事實標准。
Eclipse最強大的地方或許在於其插件功能。在支持編程語言方面,Eclipse號稱擁有高達58個插件。基於這個功能豐富的開發環境,Eclipse擁有一個巨大的開發者社區,而且很多機構都提供該IDE的培訓,甚至在有的大學里將其列為課程之一。
該工具的主頁:http://www.eclipse.org/
9、Make
Make是一個Linux工具,可以自動判斷大型程序的哪一部分需要被編譯。一旦判斷出哪些需要被編譯後,它將運行必要的命令來完成這個操作。當從源代碼安裝應用程序時,經常會用到Make,因此開源應用程序開發者應該對Make工具有比較深入的了解,明白如何使用它。

如果你計劃開發一個需要從源代碼安裝的應用程序,你需要知道如何軟體一個makefile。這個makefile描述了你應用程序中不同文件之間的關
系,並且包含了需要拼合在一起的聲明。如果你熟悉應用程序安裝的話,你會了解這個命令:./configure;make;make install。
10、Quanta Plus
與Kompozer類似,Quanta Plus也是一個HMTL開發工具。Quanta Plus支持所見即所得(WYSIWYG),也支持代碼處理,它支持HTML、XHTML、CSS、XML(以及基於XML的語言)和PHP。

Quanta
Plus的特色功能包括快速標簽完成、項目管理、實時預覽、PHP調試器、CVS支持和子版本支持(需要插件支持)。相對來說,Kompozer的主要目
標用戶是那些非技術專業用戶,而Quanta Plus則是針對那些希望有一個好的所見即所得編輯器的技術型用戶。
該工具的主頁:http://quanta.kdewebdev.org/

F. 如何編譯系統

首先准備好arm-linux-gcc的包,比如說是arm-linux-gcc-fh.tar.gz。 首先是解壓縮,路徑可以隨便放,最好放在/opt這個目錄下面。 使用如下命令: tar xvzf arm-linux-gcc-fh.tar.gz(空格)C(空格/(注意這之間的空格)。 然後就解壓縮好了,接下來就是要修改一下配置文件了。 切換到root許可權,輸入如下命令: vi /etc/bash.bashrc 在最後面一行加入如下語句: export PATH=$PATH:/opt/***(***表示你的arm-linux-gcc這個可執行文件的路徑); 最後,重啟一下配置文件,使用如下命令: source /etc/bash.bashrc,

G. 如何用gentoo交叉編譯一個基本系統

嵌入式系統的編譯環境
為某個平台開發軟體,首先需要一個編譯環境。一般來說,編譯環境包括三部分:工具 鏈/運行環境/編譯方法。對於嵌入式系統來說,常見的編譯環境有三種:

本地環境。如很流行的Ubuntu for ARM,利用官方製作好的目標機鏡像(通常包含了 編譯環境),直接在目標機上編譯/安裝軟體,與PC機開發完全一樣。這種方法簡單省 事。缺點也顯而易見,編譯速度慢,耗時長,特別是較大的軟體包(如xbmc)的時候, 程序員不是停下來喝杯咖啡就可以收攤,恐怕得打場通宵dota後才能看到結果 了…(或許distcc能有所改善)

虛擬環境。在PC上建立目標機的虛擬環境,如QEMU-ARM,然後chroot到虛擬環境 中編譯/安裝軟體。這種方法利用了PC的處理能力,速度比本地環境要快得多,但 QEMU並不能完美的模擬目標機環境,如不支持某些系統調用等,這可能導致它不能 正確的編譯某些軟體。

交叉編譯。為目標機交叉編譯軟體,這是最常規的辦法,也是上面兩種方法實現的基 礎。說交叉編譯是「臟活」,是因為需要手工解決軟體包的所有依賴問題,手工編譯 每一個軟體包,並且解決軟體包對目標機兼容問題… 看網上鋪天蓋地關於求教/指導 某個軟體包如何正確交叉編譯就知道,有多少程序員在被它虐?

gentoo下的交叉編譯
gentoo是一個metadistribution,從源代碼構建整個系統,同時支持很多不同的體 系如alpha/arm/hppa/ppc/sh/sparc/s390等,也為交叉編譯提供了便利的工具,這是 其它二進制發行版沒有辦法比擬的(scratchbox也顯得弱爆了)。

gentoo下的交叉編譯通過crossdev和portage來實現。portage帶來的好處是自 動解決依賴和自動升級更新系統,跟本機環境一樣。

製作工具鏈
crossdev用來製作交叉工具鏈,並且還提供了交叉編譯環境下的emerge的輔助腳本。如 下編譯arm平台的工具鏈:

$ sudo crossdev -t arm-supertux-linux-gnueabi
這樣,crossdev最終製作了符合「gentoo規范」的arm交叉編譯器。

運行環境
crossdev生成/usr/arm-supertux-linux-gnueabi/目錄作為目標系統 $buildroot。編譯後生成的目標會被emerge到$buildroot,編譯時依賴的環境(如 鏈接庫/頭文件/pkgconfig等)也都在$buildroot。

交叉編譯
有了工具鏈/運行環境,使用的crossdev封裝過的emerge,就可以自由的emerge了。 如交叉編譯bash:

$ sudo emerge-arm-supertux-linux-gnueabi -avu bash
porage會自動把bash的依賴如ncurses/readline一起emerge到$buildroot。 交叉編譯就是變得如此簡單…

碰到的問題
站在巨人的肩膀上可以看的更遠,前提是我們先要爬上巨人的肩膀。portage是一個快 速更新迭代的系統,並不完美,維護者沒有辦法測試每個軟體包的所有兼容性。所以, 當你想安裝一個圖形環境如$emerge -avu enlightenment時,很可能會出現錯誤。但 portage提供了細粒度的控制幫助解決這樣的問題。下面是我碰到過一些情形和解決方 法:

由於軟體包的環境變數引起的問題,如鏈接庫指向了/usr/bin,而非 $buildroot。可以配置$buldroot/etc/portage/env/目錄下相應的文 件,portage會自動source該文件,從而改變編譯時的環境。

portage沒有包含該軟體或portage自身的bug引起,如默認使能了某個在目標機 平台不能使用的特性。建立一個針對目標機的overlay,自己編寫相應軟體包的 ebuild文件指導portage進行交叉編譯。

當某個軟體包分階段編譯時,如perl編譯時先生成miniperl,通過miniperl最 後生成perl目標映像。由於miniperl被交叉編譯器生成目標機的映像,正常情況 下不能主機環境中繼續運行生成最終的目標映像。這就要藉助qemu-arm+binfmt模 擬目標機環境,讓miniperl在主機環境中也能無縫的運行。

從形式上看,處理上面幾種情況,也是「臟活」。不僅需要了解該軟體包的編譯環境, 還需要了解portage的原理,還要知道ebuild的書寫語法。但是,與傳統的交叉編譯 方式比起來,這是一勞永逸的工作,別人使用我的運行環境和overlay,即不需再做什 么就能生成最終的目標機系統。

H. 怎麼根據一個總圖E-R圖,畫出一個子系統的用例圖啊

概念弄混了,E-R圖是用來設計資料庫的,不是用來畫用例圖的。用例圖是根據用例來話的,而用例是直接來源於實際業務需求的。建議你不要直接看UML相關的書,而是先找一本OOA/D方面的書看,理解面向對象的分析與設計的原理後再看UML的書,就簡單得多了。

I. 一個典型的編譯系統通常由哪些部分組成

編譯系統又稱為第二類編程環境開發者根據語言的規定編寫源程序,然後進行編譯、連接,生成可執行文件,例如DOS操作系統加各類高級語言,如FORTRAN、PASCLL、C語言等就屬於這種類型介面平台,用於提供編譯任務輸入介面以及處理狀態信息輸出介面,並根據輸入的編譯任務生成任務名;編譯伺服器,用於解析所述任務名,獲得相應的源代碼,並進行編譯,同時產生所述編譯任務的處理狀態信息提供給所述介面平台。 接收輸入的編譯任務; 根據所述編譯任務生成任務名; 解析獲得所述任務名對應的源代碼; 所述源代碼,並輸出所述編譯任務的處理狀態信息; 處理狀態信息,通過介面平台實時提供給客戶端,簡化了編譯監控操作,大大節約了人力資源。

J. C語言圖形編譯

獨立圖形運行程序的建立
Turbo C對於用initgraph()函數直接進行的圖形初始化程序, 在編譯和鏈接
時並沒有將相應的驅動程序(*.BGI)裝入到執行程序, 當程序進行到intitgraph()
語句時, 再從該函數中第三個形式參數char *path中所規定的路徑中去找相應的
驅動程序。若沒有驅動程序, 則在C:\TC中去找, 如C:\TC中仍沒有或TC不存在,
將會出現錯誤:
BGI Error: Graphics not initialized (use 'initgraph')
因此, 為了使用方便, 應該建立一個不需要驅動程序就能獨立運行的可執行
圖形程序,Turbo C中規定用下述步驟(這里以EGA、VGA顯示器為例):
1. 在C:\TC子目錄下輸入命令:BGIOBJ EGAVGA
此命令將驅動程序EGAVGA.BGI轉換成EGAVGA.OBJ的目標文件。
2. 在C:\TC子目錄下輸入命令:TLIB LIB\GRAPHICS.LIB+EGAVGA
此命令的意思是將EGAVGA.OBJ的目標模塊裝到GRAPHICS.LIB庫文件中。
3. 在程序中initgraph()函數調用之前加上一句:
registerbgidriver(EGAVGA_driver):

閱讀全文

與編譯一個圖子系統相關的資料

熱點內容
汽車小壓縮機拆解 瀏覽:825
雲桌面卡是因為伺服器的原因嗎 瀏覽:377
qd123壓縮機 瀏覽:969
pn532讀取加密門禁卡 瀏覽:85
win10文件夾屬性里無法加密 瀏覽:34
比特幣加密的條件 瀏覽:848
求購現成影視app源碼 瀏覽:572
wdsecurity加密版 瀏覽:813
雲伺服器和雲豐雲 瀏覽:188
伺服器如何設置獨立ip 瀏覽:857
tar命令打包文件夾 瀏覽:1000
刪除linux用戶和組 瀏覽:548
小米的程序員都用什麼筆記本 瀏覽:703
位元組三面演算法題 瀏覽:971
伺服器保護有什麼好處 瀏覽:894
全部下載完後進行統一解壓 瀏覽:393
遠嫁的程序員媽媽 瀏覽:555
1024程序員節安全攻防挑戰賽 瀏覽:786
怎麼解除txt加密 瀏覽:772
javahttp流 瀏覽:656