⑴ 編個自動記牌器,需要學哪些知識
復雜點的,要學習Win32編程,知道窗口(句柄),知道如何向指定窗口發送WINDOWS消息,知道如何獲取指定進程的相關信息,知道虛擬內存(你直接通過某些工具取到的內存地址可能是不正確的,需要了解虛擬內存的概念才能正確換算),還有可能要你學習加解密的知識...
簡單點的,網路一下 「TC腳本」 ,或者 「按鍵精靈」。 這些腳本允許你使用腳本截取指定窗口的屏幕顏色或圖像,然後通過你自己的邏輯來處理它們。至於其獲取屏幕圖像的原理不需要你關心,腳本的「編譯器」通過調用一些相關組件已經幫你做好了。
⑵ 用c語言編寫一個QQ通訊錄管理系統設計
課程設計課程設計名稱:數據結構課程設計專業班級:計科××××學生姓名:×××學號:××××××指導教師:課程設計時間:計算機應用技術專業課程設計任務書學生姓名×××專業班級計科××學號××××題目××××××××××課題性質A課題來源D指導教師同組姓名無主要內容學習掌握並熟練運用C語言進行程序設計;針對具體應用問題,選擇、設計和實現合適的抽象數據類型;進行簡單的需求分析,給出設計方案。任務要求綜合運用和融化所學理論知識,提高分析和解決實際問題的能力,達到培養良好程序設計能力和習慣的目的,為開發滿足問題要求的小型應用軟體奠定基礎,達到軟體工程的綜合性基礎訓練的目的。完成需求分析報告,報告中對關鍵部分給出圖表說明。要求格式規范,工作量飽滿。參考文獻《數據結構(C語言版)》嚴蔚敏清華大學出版社《C語言程序設計》(第三版)譚浩強清華大學出版社審查意見指導教師簽字:教研室主任簽字:年月日1需求分析手機通訊錄系統,以聯系人為節點建立偽隊列(有頭尾指針、且可從表中間進行操作),要實現一下基本功能。增加聯系人刪除聯系人修改聯系人清空通訊錄查找聯系人按分組顯示聯系人顯示全部聯系人退出系統2概要設計(1)程序總體框架如圖1所示:圖1程序框架圖(2)序中各函數程簡單說明見如表1函數說明所示:返回值函數名參數表函數說明提供客戶intmainvoid主函數是voidinitAddressBookLinkQueue&Q初始化通訊錄否boolenAddressBookLinkQueue&Q增加聯系人是boolupdateLinkQueue&Q修改聯系人是booldelPersonLinkQueue&Q刪除聯系人是boolfindByNameLinkQueue&Q查找聯系人是boolfindByGroupLinkQueue&Q按組顯示是voiddisAllLinkQueue&Q顯示全部聯系人是boolclearAddressBookLinkQueue&Q清空通訊錄是表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(LinkQueue&Q){Q.front=Q.rear=(QNode*)malloc(sizeof(QNode));if(!Q.front)exit(1);elseQ.front->next=NULL;}//清空通訊錄boolclearAddressBook(LinkQueue&Q){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(LinkQueue&Q){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(LinkQueue&Q){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(LinkQueue&Q){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(LinkQueue&Q){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(LinkQueue&Q){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(LinkQueue&Q){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(LinkQueue&Q){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語言編寫一個計算QQ 等級(LV):)
/* Note:Your choice is C IDE */ #include "stdio.h" void main() {int day,lv; printf("請輸入你的QQ等級:"); scanf("%d",&lv); day=lv*lv+4*lv; printf("你的在線天數為:%d",day); } #include "stdio.h" #include"math.h" void main() { int day,lv,m; printf("請輸入您的在線天數:"); scanf("%d",&day); lv=(sqrt(16+4*day)-4)/2; printf("你的Q等級為:%d",lv); }
⑷ 怎麼用c語言編一個程序來把qq聊天記錄讀取出來
你得先知道他的數據結構. QQ的聊天記錄據說是存放在MsgEx.db這個文件裡面,db類型我不知怎麼打開。
麻煩採納,謝謝!
⑸ 怎麼將網路編程的代碼變成窗體口調試,就是寫出一個類似於qq的東西,用c語言。謝謝
首先,樓主所謂的學C,學演算法,實際上就是說學會了編寫代碼,即知道讓計算機先干什麼,再干什麼,最後得什麼結果。他遇到的問題是,沒有一個界面讓他輸入數據,因為他看到的幾乎所有軟體,都具有輸入框、「確定」、「取消」、「關閉」之類的按鈕,而他不知道從哪兒弄到這些按鈕。
其次,我覺得樓主要有必要建立一些「面向對象程序設計」的觀念,具體我不多說,樓主可以自己查。
希望大家不要嫌我羅嗦,因為我覺得,要為樓主解決問題很簡單,但要讓樓主知道為什麼會有這樣的迷惑,則須多說幾句。
在上世紀九十年代以前的微機,也就是人們說的286,386時代,計算機的運行速度還很低,那時候的計算機幾乎不需要用到滑鼠,也幾乎沒什麼圖形界面,沒音響,沒彩色……當然也沒有windows操作系統,人們操作計算機,大都是用的DOS操作系統。屏幕是黑的,字元是白的,人們輸入一組字元串組成的命令,回車,計算機就開始執行,執行完後,再由人輸入下一組命令。其界面相信樓主見識過,因為樓主似乎能將原代碼變成exe文件,運行時跳出一個黑框來,程序在黑框中運行。實際上,那個黑框就是DOS操作系統的界面,只不過以前的計算機上,這個界面占據了整個屏幕,而現在,卻是一個窗口。也就是說,windows操作系統為了方便老用戶,提供了這樣一個功能:可以運行DOS操作系統的程序,只不過不是占據整個屏幕,而是將其顯示在一個窗口中。人們可在裡面運行DOS程序,就同當年使用DOS操作系統一樣。樓主所學的TC,就是那個時代的程序設計軟體,由於幾乎不需用到圖形界面,當然也沒有提供相應的按鈕,窗體等功能。假如你非要一個按鈕,那麼你先得掌握繪圖語句,如畫線,畫點,填色等等。在公元2000年以前,湖南教育界的計算機一級考試系統界面中的那幾個按鈕就是這樣完成的。另外,我最初學用qbasic語言設計界面時,也是這樣做的,畫個按鈕形狀,當遇到回車鍵時,再畫個被按下去的形狀,半秒種後讓它又恢復彈起的形狀……總之,麻煩。
隨著計算機軟、硬體的高速發展以及滑鼠,音響,圖片,動畫在計算機中的大量應用,DOS操作系統已如昔日黃花,退出了歷史舞台。windows的普及,使得人們能夠更方便,直觀的操作電腦。那麼新興起的軟體,當然需要經常用到諸如菜單、按鈕,圖標,滾動條,進度條,文本框之類的東西,我們把它叫做控制項,在面像對像程序設計中,一個已繪好的控制項就可以理解為一個對像。顯然,每編一個程序都去畫這些東西是相當煩人的,所以微軟公司在後來提供的軟體開發工具,比如visual c++中,就直接提供這些控制項讓人們使用,因為繪制各種控制項的方式雖然麻煩,但其過程大致是相同的,所以人們只需給出諸出高度,寬度,名稱之類的參數,而把繪制的過程交給了編譯程序,就好像在word裡面畫一張表格一樣,你只需用滑鼠一拖,它就自己給你畫好了。實際上產生的繪制語句代碼,可以從頭文件里找到,不過我估計沒多少人去研究這些無多大意義的過程。為了便於理解,以VC++6.0為例:啟動程序--新建--在「工程」欄選擇「MFC AppWizard」,工程名字隨便填,確定--單選「基本對話框」,然後點「完成」--最後確定。這時你可以見到一個面板,他就是你將要設計的程序的界面。初始時只有「確定」、「取消」兩個按鈕,當然,旁邊還有一個工具箱,上面有很多其它的控制項,需要的話你自己加,比如你想要兩個框框輸入數據,就可從工具箱中選「編輯框」,畫兩個就是。
⑹ 如何用c語言編寫QQ聊天程序(源代碼)
1、首先,我們編寫C語言的頭文件#include <stdio.h>。
⑺ 誰能用C語言編一個QQ記牌器
三種方法:
1圖片識別,通過對圖片矩陣像素識別牌。
2內存讀取,讀取qqGame的內存,找到出牌的臨時地址進行記錄。
3網路監視,sniffer網路信息,記錄出的牌。
首先,你必須學會Windows 編程,對windows的程序運行及內存管理要了解。C語言是基礎!要寫可用的程序必須學相關的開發。
⑻ QQ是怎麼用c語言寫出來的,誰有代碼
方法還是有的,第一運行QQ,然後計算QQ賬號框所在屏幕的坐標,再模擬滑鼠點擊賬號框,把游標傳遞給賬號框,再模擬鍵盤輸入賬號。第二,同上,計算密碼框的坐標再模擬鍵盤輸入密碼。至於代碼是如何實現的,就看你的C語言水平和Win32 API 熟悉的程
⑼ QQ機器人是用什麼語言寫的
你好扣扣機器人是用的C語言編輯而成的
⑽ 學了哪些比如C語言,怎麼編程比如獲取QQ密碼,獲取鍵盤記錄,謝謝了
QQ密碼不是那麼好獲取的,有干擾,在密碼框還有一個timer定時器只要你滑鼠放到密碼框去,就會被激活這個定時器而且會隨機插入其它字元進來,而且密碼框還有Hook,專門是否有Hook載入准們對方其它Hook鉤子,如果發現就會馬上卸載,因為QQ密碼框不但有載入的Hook,還有卸載的