本文目錄一覽:
C語言基本框架,詳細!
這個沒框架一說,你想問的可能是C語言的學習方向和內容上的話題。 C語言主要學習:數據類型、關鍵字、控制語句、函數、指針、結構體和數組,文件,編譯方法,操作系統的API等等。 銳英源教C語言非常好,全面能力綜合教材海量源碼因人施教,保證掌握工作能力,打開成為項目經理或系統分析員之門。
希望採納
用C語言編寫一個QQ通訊錄管理系統設計
課程設計課程設計名稱:數據結構課程設計專業班級:計科××××學生姓名:×××學號:××××××指導教師:課程設計時間:計算機應用技術專業課程設計任務書學生姓名×××專業班級計科××學號××××題目××××××××××課題性質A課題來源D指導教師同組姓名無主要內容學習掌握並熟練運用C語言進行程序設計;針對具體應用問題,選擇、設計和實現合適的抽象數據類型;進行簡單的需求分析,給出設計方案。任務要求綜合運用和融化所學理論知識,提高分析和解決實際問題的能力,達到培養良好程序設計能力和習慣的目的,為開發滿足問題要求的小型應用軟體奠定基礎,達到軟體工程的綜合性基礎訓練的目的。完成需求分析報告,報告中對關鍵部分給出圖表說明。要求格式規範,工作量飽滿。參考文獻《數據結構(C語言版)》嚴蔚敏清華大學出版社《C語言程序設計》(第三版)譚浩強清華大學出版社審查意見指導教師簽字:教研室主任簽字:年月日1需求分析手機通訊錄系統,以聯繫人為節點建立偽隊列(有頭尾指針、且可從表中間進行操作),要實現一下基本功能。增加聯繫人刪除聯繫人修改聯繫人清空通訊錄查找聯繫人按分組顯示聯繫人顯示全部聯繫人退出系統2概要設計(1)程序總體框架如圖1所示:圖1程序框架圖(2)序中各函數程簡單說明見如表1函數說明所示:返回值函數名參數表函數說明提供客戶intmainvoid主函數是voidinitAddressBookLinkQueueQ初始化通訊錄否boolenAddressBookLinkQueueQ增加聯繫人是boolupdateLinkQueueQ修改聯繫人是booldelPersonLinkQueueQ刪除聯繫人是boolfindByNameLinkQueueQ查找聯繫人是boolfindByGroupLinkQueueQ按組顯示是voiddisAllLinkQueueQ顯示全部聯繫人是boolclearAddressBookLinkQueueQ清空通訊錄是表1函數說明(2)對程序中的各個函數功能的描述① 主函數main:系統開始、結束界面的顯示、各個功能函數的調用、轉換以及參數的傳遞、定義通訊頭結點並傳遞給各個功能函數② 初始化通訊錄函數initAddressBook:初始化主函數傳入的頭結點,即初始化通訊錄,此系統採用偽隊列,有頭、尾指針,可從中間進行刪除操作③ 增加聯繫人函數enAddressBook增加聯繫人到通訊錄的尾部,返回增加是否成功。④ 修改聯繫人函數按照用戶提供的聯繫人姓名修改聯繫人所有信息,返回修改是否成功。⑤ 刪除聯繫人按照用戶指定的聯繫人姓名刪除相應聯繫人信息,返回刪除是否成功。⑥ 查找聯繫人按照用戶提供的聯繫人姓名查找第一個合法姓名對應的信息,查找成功則顯示信息,失敗則提示無此聯繫人,返回是否查找到。⑦ 按組顯示函數按照用戶提供的分組名稱,查找組中聯繫人,若存在則全部輸出,若不存在則提示無此分組,返回是否超找到合法聯繫人。⑧ 顯示全部聯繫人函數顯示當前通訊錄中所有聯繫人的信息,若為空通訊錄,則顯示無聯繫人。⑨ 清空通訊錄刪除所有聯繫人信息,返回是否成功!⑩ 通訊錄人數函數判斷通訊錄當前聯繫人數量,返回之,此函數主要是為清空通訊錄函數所調用,故不提供給用戶。計3運行環境1)軟體環境操作系統:Windows72)硬體環境處理器:IntelPentium166MX或更高內存:32MB以上硬碟空間:1GB以上顯卡:SVGA顯示適配4開發工具和編程語言MicrosoftvisualC++C語言5詳細設//主函數intmain(){LinkQueueQ;initAddressBook(Q);intflag=0;while(flag!=8){printf(“※※※※※主※※※※※菜※※※※※單※※※※※\n”);printf(“※1、增加聯繫人2、刪除聯繫人※\n”);printf(“※3、修改聯繫人4、清空通訊錄※\n”);printf(“※5、查找聯繫人6、按組顯示※\n”);printf(“※7、顯示全部聯繫人8、退出※\n”);printf(“※※※※※※※※※※※※※※※※※※※※※※※\n”);printf(“請輸入編號(1-8):\n”);scanf(“%d”,flag);if(flag8){printf(“輸入錯誤請重新輸入!\n”);continue;}else{switch(flag){case1:if(enAddressBook(Q))printf(“增加聯繫人成功!\n”);elseprintf(“增加聯繫人失敗!\n”);break;case2:if(delPerson(Q))printf(“刪除聯繫人成功!\n”);elseprintf(“聯繫人刪除失敗!\n”);break;case3:if(update(Q))printf(“修改聯繫人成功!\n”);elseprintf(“修改聯繫人失敗!\n”);break;case4:if(clearAddressBook(Q))printf(“通訊錄已清空!\n”);elseprintf(“通訊錄清空失敗!\n”);break;case5:findByName(Q);break;case6:findByGroup(Q);break;case7:disAll(Q);break;case8:system(“cls”);break;}}}printf(“※※※※※感謝您使用本系統!※※※※※※\n”);return0;}//初始化通訊錄voidinitAddressBook(LinkQueueQ){Q.front=Q.rear=(QNode*)malloc(sizeof(QNode));if(!Q.front)exit(1);elseQ.front-next=NULL;}//清空通訊錄boolclearAddressBook(LinkQueueQ){system(“cls”);while(addressBookLength(Q)!=0){QNode*p;p=Q.front-next;Q.front-next=p-next;if(p==Q.rear)Q.rear=Q.front;free(p);}returntrue;}//通訊錄當前人數intaddressBookLength(LinkQueueQ){inti=0;QNode*p;p=Q.front;if(Q.front==Q.rear)i=0;else{while(p!=Q.rear){p=p-next;i++;}}returni;}//刪除聯繫人booldelPerson(LinkQueueQ){char_name[20];system(“cls”);printf(“請輸入要刪除的聯繫人的姓名:\n”);scanf(“%s”,_name);QNode*p,*q;if(Q.front==Q.rear){printf(“通訊錄為空!\n”);returnfalse;}else{p=Q.front;q=Q.front-next;while(q!=Q.rear){if(strcmp(q-name,_name)==0){p-next=q-next;free(q);//刪除節點returntrue;}else{p=p-next;q=q-next;}}if((strcmp(q-name,_name)==0)){free(q);Q.front=Q.rear;returntrue;}else{printf(“無此聯繫人!\n”);returnfalse;}}}//查找聯繫人boolfindByName(LinkQueueQ){system(“cls”);if(Q.front==Q.rear){printf(“手機中無聯繫人!\n”);returnfalse;}else{char_name[20];printf(“請輸入要查詢的聯繫人姓名:\n”);scanf(“%s”,_name);QNode*p;p=Q.front-next;while(p-next!=NULL){if(strcmp(p-name,_name)==0){printf(“姓名:%s號碼:%s分組:%s\n”,p-name,p-tel,p-group);returntrue;}p=p-next;}if(strcmp(p-name,_name)==0){printf(“姓名:%s號碼:%s分組:%s\n”,p-name,p-tel,p-group);returntrue;}else{printf(“查無此人!\n”);returnfalse;}}}//按組顯示聯繫人boolfindByGroup(LinkQueueQ){system(“cls”);if(Q.front==Q.rear){printf(“手機中無聯繫人!\n”);returnfalse;}else{char_group[20];printf(“請輸入要查詢的分組:\n”);scanf(“%s”,_group);QNode*p;p=Q.front-next;while(p-next!=NULL){if(strcmp(p-group,_group)==0){printf(“姓名:%s號碼:%s\n”,p-name,p-tel);}p=p-next;}if(strcmp(p-group,_group)==0){printf(“姓名:%s號碼:%s\n”,p-name,p-tel);returntrue;}else{printf(“無此分組!\n”);returnfalse;}}}//增加聯繫人boolenAddressBook(LinkQueueQ){system(“cls”);QNode*p;p=(QNode*)malloc(sizeof(QNode));if(!p)returnfalse;else{printf(“請輸入聯繫人姓名:\n”);scanf(“%s”,p-name);printf(“請輸入聯繫人號碼:\n”);scanf(“%s”,p-tel);printf(“請輸入聯繫人分組:\n”);scanf(“%s”,p-group);if(Q.front-next==NULL){Q.front-next=p;Q.rear=p;Q.rear-next=NULL;}else{p-next=NULL;Q.rear-next=p;Q.rear=p;}returntrue;}}//修改聯繫人boolupdate(LinkQueueQ){system(“cls”);if(Q.front==Q.rear){printf(“手機中無聯繫人!\n”);returnfalse;}else{char_name[20];printf(“請輸入要修改的聯繫人姓名:\n”);scanf(“%s”,_name);QNode*p;p=Q.front-next;while(p-next!=NULL){if(strcmp(p-name,_name)==0){printf(“請輸入新聯繫人姓名:\n”);scanf(“%s”,p-name);printf(“請輸入新聯繫人號碼:\n”);scanf(“%s”,p-tel);printf(“請輸入新聯繫人分組:\n”);scanf(“%s”,p-group);returntrue;}p=p-next;}if(strcmp(p-name,_name)==0){printf(“請輸入新聯繫人姓名:\n”);scanf(“%s”,p-name);printf(“請輸入新聯繫人號碼:\n”);scanf(“%s”,p-tel);printf(“請輸入新聯繫人分組:\n”);scanf(“%s”,p-group);returntrue;}else{printf(“查無此人!\n”);returnfalse;}}}//顯示所有聯繫人voiddisAll(LinkQueueQ){system(“cls”);inti=0;QNode*p;p=Q.front-next;if(Q.front==Q.rear)printf(“無聯繫人!\n”);else{printf(“姓名號碼分組\n”);while(p!=NULL){printf(“%15s%15s%15s\n”,p-name,p-tel,p-group);p=p-next;}}}6調試分析1.測試中的問題舉例:在測試刪除聯繫人函數時發現無論通訊錄中現存多少條記錄只要刪除一條之後,通訊錄就會被清空,經過檢查發現是刪除函數中的條件控制設置有錯,導致只要一刪除一個聯繫人就會事頭結點與尾結點指向同一個,導致再顯示聯繫人時顯示無聯繫人。經過調整已處理好。2.演算法改進設想舉例:程序中還有很多地方不能很好的模擬通訊錄的功能,比如在增肌聯繫人時,不管原來新聯繫人姓名是否已存在,都會被加入通訊錄,這樣一來就有可能重複記錄。此外在查找聯繫人時只要查找到一個合法記錄就會中斷查找操作,如此有可能導致記錄的漏查。結合以上兩點應優化增加查找聯繫人演算法,在存入之間進行防重判斷。7測試結果1.測試數據舉例:姓名手機號分組張三12345678910家人李四12345678911朋友王五12345678912朋友趙六12345678913同學表2測試數據舉例2.按如下順序進行測試:1)將測試數據逐條輸入通訊錄(測試增加聯繫人函數)2)顯示全部聯繫人(測試顯示聯繫人函數)3)選擇一個聯繫人進行修改(測試修改聯繫人函數)4)顯示全部聯繫人(驗證修改聯繫人函數是否有效)5)選擇一個聯繫人進行查找(測試查找聯繫人函數)6)選擇一個多人分組進行按分組顯示(測試按分組顯示函數)7)選擇清空聯繫人(測試清空聯繫人函數)8)顯示全部聯繫人(驗證清空聯繫人函數)9)選擇退出(退出程序)3、按照如上提供的測試步驟得出以下結果運行圖:主菜單如圖2所示:圖2運行示例圖a1)在菜單中選擇「1」將測試數據逐條輸入通訊錄,如圖3圖3運行示例圖b2)在菜單中選擇「7」顯示全部聯繫人,如圖4圖4運行示例圖c3)在菜單中選擇「3」選擇一個聯繫人進行修改,如圖5圖5運行示例圖d4)在菜單中選擇「7」顯示全部聯繫人,如圖6圖6運行示例圖e5)在菜單中選擇「5」選擇一個聯繫人進行查找,如圖7圖7運行示例圖f6)在菜單中選擇「6」選擇一個多人分組進行按分組顯示,如圖8圖8運行示例圖g7)在菜單中選擇「4」清空聯繫人,如圖9圖9運行示例圖h8)在菜單中選擇「7」顯示全部聯繫人,如圖10圖10運行示例圖i9)在菜單中選擇「8」,退出,如圖11圖11運行示例圖j參考文獻[1]嚴蔚敏,《數據結構(C語言版)》清華大學出版社[2]譚浩強.《C語言程序設計》(第三版)清華大學出版社[3]PeterVanDerLinden,C專家編程,人民郵電出版社[4]KennethA.ReekC和指針,人民郵電出版社心得體會通過這次數據結構實踐作業,我更深刻的體會到了C語言的語句簡潔性、緊湊性,與數據結構思想對於一個程序編碼順利進行的重要性。語言是程序的骨肉,而數據結構和演算法即使程序的靈魂,要想成功的編寫程序必須選好合適的數據結構,比如這次課程設計中,最開始我準備用普通的線性表進行設計,後來發現那樣很不方便,後來改為用「偽隊列」之後就方便了許多。另外,我覺得比較重要的一點是在編複雜程序時要有宏觀思想,想從整體把握設計好各個板塊的調用關係,最好先做出一個流程圖,再按照這個總體設想進一步具體、細化!這樣才不會在需要調用其它函數時手忙腳亂!此外,進行如上所述的操作前提都是以紮實的語言基礎做為前提的,在最開始的代碼編輯階段,我曾被指針很深的困擾,後來對此一節找了些資料進行「補課」,自己也進行的深入的理解,後來才逐漸順利起來!信息科學與工程學院課程設計成績評價表課程名稱:數據結構課程設計設計題目:×××××專業:計科班級:×××姓名:×××學號:××××××序號評審項目分數滿分標準說明1內容思路清晰;語言表達準確,概念清楚,論點正確;實驗方法科學,分析歸納合理;結論嚴謹,設計有應用價值。任務飽滿,做了大量的工作。2創新內容新穎,題目能反映新技術,對前人工作有改進或突破,或有獨特見解3完整性、實用性整體構思合理,理論依據充分,設計完整,實用性強4數據準確、可靠數據準確,公式推導正確5規範性設計格式、繪圖、圖紙、實驗數據、標準的運用等符合有關標準和規定6紀律性能很好的遵守各項紀律,設計過程認真;7答辯準備工作充分,回答問題有理論依據,基本概念清楚。主要問題回答簡明準確。在規定的時間內作完報告。總分綜合意見指導教師年月日
C語言的基本框架是什麼意思?
C語言的基本框架指的是構成C語言程序的主要的結構,也是最基本的結構。
簡單的基本框架是僅由一個主函數(函數名main)構成,在主函數中也只有一條語句,該語句是通過標準輸出函數printf( )在顯示屏上輸出指定信息。如下面的程序:
#include”stdio.h”
int main()
{
printf (“\nThis is my first C program!\n”);
}
程序開頭的#include”stdio.h”是預處理命令,其作用是包含輸入輸出庫文件,當程序中調用標準輸入或輸出函數時添加此行。
c語言編程如何實現圖形化?
這要看你所使用的系統平台,圖形化編程與系統平台息息相關
對於C語言來說,有許多成熟的框架。比如Windows上可使用Windows的系統API,Linux下有GTK,嵌入式環境下有miniGUI等。
C語言是一門比較特殊的語言,雖然也是高級編程語言的一種,但是為了和其他語言區分開來,部分人也會將C語言稱作中級語言,主要是因為C語言不是面向對象的語言,並且有指針這樣的利器可以直接對底層以及硬體進行操作。
正是因為C語言不是面向對象的語言,在圖形化這樣更偏上層的應用中,一般會使用C++替代C語言,這樣能極大的降低開發的工作量。
比如,Windows下可使用MFC,WPF也支持C++。Linux下一般用跨平台的QT(可在Windows/MAC等多種平台運行)。嵌入式環境下有嵌入式的QT版本。
C語言中switch語句的N-S流程圖怎麼畫啊?
1、首先要進入到該繪製網站中,在新建文件夾中選擇流程圖進行新建使用,打開流程編輯工具。
2、直接進入在線編輯頁面中,在繪製面板中是有流程圖的基礎圖形和工具欄,以及編輯面板等。這些在繪製時都是需要使用的,可以先將繪製面板進行熟悉。
3、首先是對流程圖框架進行搭建使用,直接使用滑鼠點擊圖形樣式就會自動添加到編輯面板中,之後在用滑鼠移動到需要的位置就可以。圖形的添加與需要填充的內容成正比。
4、設置內容大小,樣式以及排列方式,還有給流程圖圖形添加背景顏色。
5、繪製好的流程圖我們還要對其進行檢查使用這樣可以保證流程圖的正確率,一般選擇編輯欄目中的選擇節點可以進行編輯使用。
6、畫好後的流程圖可以導出使用,有多種格式可以進行選擇方便存儲。在面板中的右上方顯示欄裡面可以選擇相關操作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/183620.html