當前位置:首頁 » 編程語言 » c語言編寫qq

c語言編寫qq

發布時間: 2022-08-16 17:39:12

❶ 用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答辯准備工作充分,回答問題有理論依據,基本概念清楚。主要問題回答簡明准確。在規定的時間內作完報告。總分綜合意見指導教師年月日

❷ 如何在linux下用c語言編寫一個類似qq的聊天軟體

語言 望採納謝謝

/*

* server.c

*

*

Created on: 2012-6-15

*

Author: root

*/

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <error.h>
#include<netinet/in.h>

#define PORT 7999
#define MAX_NUM 3

//client
連接最大個數

#define MAX_CLIENT 15
#define MAX_SIZE 1024

pthread_rwlock_t idx_lock, wait_lock;

//client
信息

typedef struct _client {

int sockfd;

char name[20];

pthread_t pid;

int flg;
} c_client;
c_client client[MAX_CLIENT];//
定義
client;
//
等待的
client
struct _client_ {

int sockfd;

char name[20];

pthread_t pid;

struct _client_ *next;
};
typedef struct _client_ c_client_c;
c_client_c *head = NULL;

c_client_c *temp_c1 = NULL, *temp_c2 = NULL;//
等待的

var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);

//
初始化
client
信息

void init_client() {

int i = 0;

for (i = 0; i < MAX_CLIENT; i++) {

client[i].sockfd = -1;

memset(client[i].name, 0, 20);

client[i].pid = -1;

client[i].flg = -1;

}
}

//
查找結構體數組中
sockfd

-1
的下標值

int find_fd(c_client *client) {

int i = 0;

while (i < MAX_NUM) {
//

printf("====%d\n",client[i].sockfd);

if (client[i].sockfd == -1)

return i;

i++;

}

return -1;
}

//
判斷登錄格式

int logform(char *buf) {

char *p = strstr(buf, "LOGIN\r\n");

int n = strlen(buf);

char *q = p + n - 4;

if (p != NULL && p + 7 != q && strcmp(q, "\r\n\r\n") == 0)

return 1;

else

return 0;
}

int cmpname(char *buf, c_client *p_client) {

int i = 0;

char *p = strtok(buf + 7, "\r\n\r\n");

while (client[i].sockfd != -1 && client[i].sockfd != p_client->sockfd && i

< MAX_NUM) {

if (strcmp(client[i].name, p) == 0)

return 0;

i++;

}

return 1;

}
//SHOW
void showuser(c_client *p_client) {

int i = 0;

char buf[1024] = { 0 };

strcpy(buf, "200\r\n");

for (i = 0; i < MAX_NUM; i++) {

if (client[i].sockfd != -1) {

sprintf(buf + strlen(buf), "%s\r\n", client[i].name);

}

}

sprintf(buf + strlen(buf), "\r\n");

send(p_client->sockfd, buf, strlen(buf), 0);
}

//ALL
void sendto_all(c_client *p_client, char *buf) {

int i = 0;

char sendbuf[1024] = { 0 };

sprintf(sendbuf, "AFROM\r\n%s\r\n%s", p_client->name, buf + 5);

for (i = 0; i < MAX_NUM; i++) {

if (client[i].sockfd != -1 && client[i].flg != -1)

if(send(client[i].sockfd, sendbuf, strlen(sendbuf), 0) <= 0){

printf("send errrrrr\n");

exit(1);

}

}

}
int findname(char *name) {

int i = 0;

for (i = 0; i < MAX_NUM; i++) {

if (client[i].sockfd != -1 && strcmp(client[i].name, name) == 0)

return client[i].sockfd;

}

return 0;
}
//TO
void sendto_one(c_client *p_client, char *buf) {

int i = 0;

char sendbuf[1024] = { 0 };

char name[20] = { 0 };

char *p = strtok(buf + 4, "\r\n");//TO\r\n

4
個字元後取出
\r\n
前的名字

strcpy(name, p);

int sock = findname(name);

if (!sock) {

sprintf(sendbuf, "ERROR2\r\n%s
用戶不存在
\r\n\r\n", name);

send(p_client->sockfd, sendbuf, strlen(sendbuf), 0);

} else {

sprintf(sendbuf, "FROM\r\n%s\r\n%s", p_client->name, buf + 4 + strlen(

name) + 2);

if(send(sock, sendbuf, strlen(sendbuf), 0)<=0){

printf("send errrrrr\n");

exit(1);

}

}
}

void pthread_fun(void* cclient);
//quit
void quit(c_client *p_client){

int i=0;

int idx;

char buf[1024] = {0};

c_client_c *temp;

printf("--%s
退出聊天室
\n",p_client->name);

close(p_client->sockfd);

p_client->sockfd = -1;

p_client->pid = -1;

p_client->flg = -1;

sprintf(buf,"NOTICE1\r\n%s
退出聊天室
\r\n\r\n",p_client->name);

memset(p_client->name,0,20);

for(i=0;i<MAX_NUM;i++){

if(client[i].sockfd != -1 && client[i].flg != -1)

send(client[i].sockfd,buf,strlen(buf),0);

}

if(head != NULL && head->next != NULL){

memset(buf,0,1024);

pthread_rwlock_rdlock(&idx_lock);

idx = find_fd(client);

pthread_rwlock_unlock(&idx_lock);

client[idx].sockfd = head->next->sockfd;

pthread_rwlock_wrlock(&wait_lock);

temp = head->next;

head->next = head->next->next;

free(temp);

pthread_rwlock_unlock(&wait_lock);

sprintf(buf,"NOTICE\r\n
您已被喚醒
,
請繼續操作
\r\n\r\n");

send(client[idx].sockfd,buf,strlen(buf),0);

if
(pthread_create(&client[idx].pid,
NULL,
(void
*)pthread_fun,(void
*)
&client[idx]) != 0) {

perror("pthread_create");

exit(1);

}

pthread_detach(client[idx].pid);

}
}

void pthread_fun(void* cclient) {

c_client *p_client = (c_client *) cclient;

char buf[MAX_SIZE] = { 0 };

char sendbuf[1024] = { 0 };

int i, n;

char *p;

sprintf(sendbuf, "%s", "NOTICE\r\n
通訊通道開啟
\r\n\r\n");

if (send(p_client->sockfd, sendbuf, strlen(sendbuf), 0) <= 0) {

printf("send err\n");

}

memset(sendbuf, 0, 1024);

while (1) {

memset(buf, 0, MAX_SIZE);

n = recv(p_client->sockfd, buf, sizeof(buf) - 1, MSG_NOSIGNAL);

if (n <= 0) {

close(p_client->sockfd);

p_client->sockfd = -1;

break;

}

if (logform(buf)) {

if (cmpname(buf, p_client) == 0) {

send(p_client->sockfd, "ERROR\r\n
用戶名重復
\r\n\r\n", 26, 0);

continue;

} else {

p_client->flg = 1;

p = strtok(buf + 7, "\r\n\r\n");

strcpy(p_client->name, p);

sprintf(sendbuf, "100\r\n%s\r\n\r\n", p_client->name);

send(p_client->sockfd, sendbuf, sizeof(sendbuf), 0);

printf("%s
進入聊天室
\n", p_client->name);

for (i = 0; i < MAX_NUM; i++) {

if (client[i].sockfd != -1 && client[i].sockfd

!= p_client->sockfd && client[i].flg != -1)

send(client[i].sockfd, sendbuf, sizeof(sendbuf), 0);

❸ QQ是怎麼用c語言寫出來的,誰有代碼

方法還是有的,第一運行QQ,然後計算QQ賬號框所在屏幕的坐標,再模擬滑鼠點擊賬號框,把游標傳遞給賬號框,再模擬鍵盤輸入賬號。第二,同上,計算密碼框的坐標再模擬鍵盤輸入密碼。至於代碼是如何實現的,就看你的C語言水平和Win32 API 熟悉的程

❹ 用c語言編寫一個QQ登陸的程序有3次機會

#include<stdio.h>
#include<string.h>
#defineNAME"test"
#definePASSWORD"test"
intmain()
{
charusername[20],passwd[20];
intcount=1;
while(1)
{
printf("請輸入用戶名:");
scanf("%s",username);
printf("請輸入密碼:");
scanf("%s",passwd);
if(strcmp(username,NAME)==0)
{
if(strcmp(passwd,PASSWORD)==0){printf("恭喜!登錄成功! ");break;}
else
{
if(count<3){printf("抱歉!密碼輸入錯誤!你還有%d次嘗試的機會 ",3-count);count++;}
else{printf("抱歉!密碼錯誤!你已經沒有機會了! ");break;}
}
}
else
{
if(count<3){printf("抱歉!用戶名輸入錯誤!你還有%d次嘗試的機會 ",3-count);count++;}
else{printf("抱歉!密碼錯誤!你已經沒有機會了! ");break;}
}
}
return0;
}

❺ 求一個用C語言編寫的「QQ會員信息管理系統」

我想了好久也還是沒寫出來,這是剛才復制別人的,我試了,真的不錯
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
struct persion
{
char name[10];
char tep[20];
}student;
int main()
{
int chose;

struct persion *imf_p=&student;
void input(struct persion *p);
void output(struct persion *p);
void change(struct persion *p);
void del(struct persion *p);
void add(struct persion *p);
void end();
printf("\t\t\t\t\t通訊錄\n\n");

do
{
printf("\n請正確選擇操作:\n");
printf("\n1.全部重輸\n2.查看\n3.修改\n4.刪除\n5.添加\n6.退出\n\n請選擇:");
scanf("%d",&chose);
switch (chose)
{
case 1:
input(imf_p);
break;
case 2:
output(imf_p);
break;
case 3:
change(imf_p);
break;
case 4:
del(imf_p);
break;
case 5:
add(imf_p);
break;
case 6:
end();
}
}
while (1);
}

void input(struct persion *p) //輸入
{

FILE *fp;

fp=fopen("imformation.dat","wb");
printf("請輸入名字和電話號碼:\n");
printf("\n在姓名處輸入<-1>結束!\n\n");
while (1)
{
printf("姓名:");
scanf("%s",p->name);
if (!strcmp(p->name,"-1"))break;
printf("電話號碼:");
scanf("%s",p->tep);
fwrite(p,sizeof(struct persion),1,fp);
}

fclose(fp);
printf("輸入完成!\n");
system("pause");
system("cls");
}

void output(struct persion *p) //查看
{

FILE*fp;
fp=fopen("imformation.dat","rb");
while (1)
{
fread(p,sizeof(struct persion),1,fp);
if (feof(fp))break;
printf("姓名:%s\n",p->name);
printf("電話:%s\n",p->tep);
}
fclose(fp);
system("pause");
system("cls");
}

void change(struct persion *p) //修改
{
int i=0;
char name_change[10],tep_change[20];
FILE*fp1,*fp2;
printf("請輸入要修改的人名:");
scanf("%s",name_change);

fp1=fopen("imformation.dat","rb+");
fp2=fopen("temp","wb+");
while (feof(fp1)==0)
{

fread(p,sizeof(struct persion),1,fp1);
if (!strcmp(p->name,name_change))
{
if (feof(fp1))break;
i=1;
printf("請輸入新的號碼:");
scanf("%s",tep_change);
strcpy(p->tep,tep_change);
}
if (feof(fp1)==0)
fwrite(p,sizeof(struct persion),1,fp2);
}
fclose(fp2);
fclose(fp1);
remove("imformation.dat");
rename("temp","imformation.dat");
if (i==1)
printf("已成功修改!\n");
if (i==0)
printf("沒有搜索到文件!\n");
system("pause");
system("cls");
}

void del(struct persion *p) //刪除
{
int i=0;
char name_change[10];
FILE*fp1,*fp2;
printf("請輸入要刪除的人名:");
scanf("%s",name_change);

fp1=fopen("imformation.dat","rb+");
fp2=fopen("temp","wb+");
while (!feof(fp1))
{
fread(p,sizeof(struct persion),1,fp1);

if (!strcmp(p->name,name_change))
{
i=1;
continue;
}

if (!feof(fp1))
fwrite(p,sizeof(struct persion),1,fp2);
}
fclose(fp2);
fclose(fp1);
remove("imformation.dat");
rename("temp","imformation.dat");
if (i==1)
printf("已完成刪除操作!\n");
if (i==0)
printf("沒有搜索到名字!\n");
system("pause");
system("cls");
}

void add(struct persion *p) //增加
{
FILE *fp1,*fp2;

fp1=fopen("imformation.dat","rb+");
fp2=fopen("temp","wb+");
while (!feof(fp1))
{
fread(p,sizeof(struct persion),1,fp1);
if (!feof(fp1))
fwrite(p,sizeof(struct persion),1,fp2);
}

printf("請輸入要增加的名字和電話號碼:\n");
printf("\n在姓名處輸入<-1>結束!\n\n");

while (1)
{
printf("姓名:");
scanf("%s",p->name);
if (!strcmp(p->name,"-1"))break;
printf("電話號碼:");
scanf("%s",p->tep);
fwrite(p,sizeof(struct persion),1,fp2);
}

fclose(fp1);
fclose(fp2);
remove("imformation.dat");
rename("temp","imformation.dat");
printf("輸入完成!\n");
system("pause");
system("cls");
}

void end()
{
exit(0);
}

❻ 使用C語言編寫QQ會員程序

多加點分啊
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
struct QqVip
{
char name[40];//名
int age;//年齡
int Qb;//Q幣
bool sex;//true為男
int timelim;//期限
};
int option()
{
printf("1.查看會員信息\n");
printf("2.查找指定會員\n");
printf("3.添加會員\n");
printf("0.退出\n");
printf("請選擇:");
fflush(stdout);
int temp;
scanf("%d",&temp);
fflush(stdin);
return temp;
}
void look(QqVip* vip,int num)
{
printf("會員數:%d\n",num);
if (num<1)
{
return;
}
printf("姓 名\t年齡\t性別\tQ 幣\t會員期限\n");
for(int i=0;i<num;i++)
{
printf("%6s\t%4d\t%4s\t%5d\t%8d\n",vip[i].name,vip[i].age,vip[i].sex?"男":"女",vip[i].Qb,vip[i].timelim);
}
}
void add(QqVip* vip,int *num)
{
if(*num>=100)
{
printf("數量已滿,無法加入\n");
return;
}
printf("請輸入會員姓名、年齡、性別、Q 幣、會員期限(以回車分隔):\n");
fflush(stdout);
scanf("%s",vip[*num].name);
scanf("%d",&vip[*num].age);
char sex[5];
scanf("%s",sex);
if (strcmp(sex,"男")==0)
{
vip[*num].sex=true;
}
else
{
vip[*num].sex = false;
}
scanf("%d",&vip[*num].Qb);
scanf("%d",&vip[*num].timelim);
fflush(stdin);
(*num)++;
}
void serch(QqVip* vip,int num)
{
if (num<1)
{
printf("無會員\n");
return;
}
char n[40];
printf("輸入要查找會員姓名:");
scanf("%s",n);
fflush(stdin);
for (int i=0;i<num;i++)
{
if (strcmp(vip[i].name,n)==0)
{
printf("該會員信息為:\n");
printf("%6s\t%4d\t%4s\t%5d\t%8d\n",vip[i].name,vip[i].age,vip[i].sex?"男":"女",vip[i].Qb,vip[i].timelim);
fflush(stdout);
break;
}
}
}
void main()
{
int num=0;
QqVip vip[100];
int r;
while(r=option())
{
switch(r)
{
case 1:
look(vip,num);
break;
case 2:
serch(vip,num);
break;
case 3:
add(vip,&num);
break;
default:
break;
}
}
printf("exit..\n");
system("PAUSE");

}

❼ 聽人說理論上c語言就可以編譯出qq之類的軟體,但c語言似乎連控制項都沒有,那是怎麼實現qq功能的

199*年代,最時髦的unix系統,就採用了X-window概念,有許多程序包不但含控制項,有許多功能,至今windows系統等等尚未能超越。例如,在一台unix上,就可開一個窗,100%相似地模擬進入遠方的另一台機上操作,在這個窗內的操作就完全像自己就在遠方機上操作一樣。OpenGL, Glut 這些有3維動態原unix的程序包 微軟的windows系統上 現在還在用。
視窗系統,習慣用c語言的擴展 即c++, 編寫含控制項的程序。因為visual studio 和 MFC做了許多前期工作,大大減少了程序員書寫 Win ApI 的工作量。qq 實際上只是一個app而已,算不得什麼。

❽ 求用C語言寫一個可以打開QQ的程序

#include<windows.h>
#include<stdio.h>

void main()
{
HKEY hKey;
LONG iret;
char path[512];
DWORD cbData;
iret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"software\\tencent\\qq",NULL,KEY_QUERY_VALUE,&hKey);
if(iret != ERROR_SUCCESS)
printf("沒有安裝QQ.\n");
iret=RegQueryValueEx(hKey,"install",NULL,NULL,(LPBYTE)path,&cbData);
if(iret != ERROR_SUCCESS)
printf("查詢注冊表失敗.\n");
RegCloseKey(hKey);
lstrcat(path,"\\qq.exe");
ShellExecute(NULL,"open",path,NULL,NULL,SW_SHOWNORMAL);
}

熱點內容
看linux版本 發布:2025-01-20 04:40:37 瀏覽:19
php獲取調用的方法 發布:2025-01-20 04:25:45 瀏覽:458
SMPT郵箱伺服器地址 發布:2025-01-20 04:04:16 瀏覽:662
抖影工廠為什麼安卓手機用不了 發布:2025-01-20 04:00:05 瀏覽:386
我的世界網易版怎麼進朋友伺服器 發布:2025-01-20 03:50:10 瀏覽:684
phpsession跳轉頁面跳轉 發布:2025-01-20 03:47:20 瀏覽:540
深圳解壓工廠 發布:2025-01-20 03:41:44 瀏覽:690
linux字體查看 發布:2025-01-20 03:41:30 瀏覽:742
pythonextendor 發布:2025-01-20 03:40:11 瀏覽:199
為什麼安卓手機儲存越來越少 發布:2025-01-20 03:40:07 瀏覽:925