Ⅰ c語言程序設計,通訊錄管理系統
/*【用C語言編寫具有數據插入、修改、刪除、顯示和查詢功能的電話薄管理程序】
1、數據包括:人名、工作單位、電話號碼和E-mail地址。
2、可對記錄中的姓名和電話號碼進行修改。
3、可增加或刪除記錄。
4、可顯示所有保存的記錄。
5、可按人名或電話號碼進行查詢。
另:採用結構體數組和文件系統實現。結構體包括人名、工作單位、電話號碼和E-mail
絕對原創,2010年7月12日晚剛寫完測試通過的,純C語言! */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define szSTR 64
#define fileDB "c:\\contact.txt"
struct CONTACT {
char name[szSTR];/*姓名*/
char unit[szSTR];/*工作單位*/
char tele[szSTR];/*電話*/
char mail[szSTR];/*mail*/
};
typedef struct CONTACT CON;
#define BNAME 1
#define BUNIT 2
#define BTELE 4
#define BMAIL 8
#define BFULL 0xFF
int OPER[5] = {BFULL, BNAME, BUNIT, BTELE, BMAIL};
void input(CON * s, int mask)
{
if(mask & BNAME) { printf("請輸入學生姓名:"); scanf("%s", s->name); }
if(mask & BUNIT) { printf("請輸入工作單位:"); scanf("%s", s->unit); }
if(mask & BTELE) { printf("請輸入聯系電話:"); scanf("%s", s->tele); }
if(mask & BMAIL) { printf("請輸入電子郵件:"); scanf("%s", s->mail); }
}/*end input*/
void show (int id, CON * s)
{
if(!s) return ;
if(id)
printf("%d\t%s\t%s\t%s\t%s\n",
id, s->name , s->unit , s->tele , s->mail );
else
printf("【姓名】%s【工作單位】%s【電話】%s【電郵】%s\n",
s->name , s->unit , s->tele , s->mail );
/*end if*/
}/*end show*/
void regist(void)
{
CON s; FILE * f = 0;
input(&s, BFULL);
f = fopen(fileDB, "ab");
fwrite(&s,sizeof(s),1,f);
fclose(f);
printf("資料已保存!\n");
}/*end regist*/
int browse(char * key, fpos_t * p, CON * s)
{
FILE * f =0; int i = 0, r = 0; CON t;
char * a = 0, * b = 0; fpos_t q;
if(!s) return 0;
f = fopen(fileDB, "rb");
if(!f) {
printf("資料庫暫無記錄\n");
return 0;
}/*end if*/
printf("編號\t姓名\t單位\t電話\t電郵\n");
printf("------------------------------------------------\n");
while(!feof(f)) {
fgetpos(f, &q);
r = fread(&t, sizeof(t), 1, f);
if(r<1)break;
if(t.name[0]==0) continue;
if(key) {
a = strstr(t.name , key);
b = strstr(t.tele , key);
if(a == 0 && b == 0) continue;
}/*end if*/
if(p) *p = q;
if(s) memcpy(s, &t, sizeof(t));
i++;
show(i, &t);
}/*end while*/
fclose(f);
printf("------------------------------------------------\n");
return i;
}/*end browse*/
fpos_t query(CON * s)
{
char key[szSTR]=""; fpos_t p = 0; int r = 0;
printf("請輸入姓名或者電話號碼:");
scanf("%s", key);
r = browse(key, &p, s);
return r?p:-1;
}/*end query*/
void clear(void)
{
FILE * f = 0; CON s;
fpos_t p = query(&s);
if(p<0) return;
f = fopen(fileDB, "rb+");
fsetpos(f, &p);
memset(&s, 0, sizeof(s));
fwrite(&s, sizeof(s),1, f);
fclose(f);
printf("記錄已刪除!\n");
}/*end clear*/
void modify(void)
{
FILE * f = 0; CON s; int cmd = 0;
fpos_t p = query(&s);
if(p<0) return;
f = fopen(fileDB, "rb+");
fsetpos(f, &p);
for(;;) {
show(0, &s);
printf("請選擇:1-姓名;2-工作單位;3-電話;4-電郵;5-保存並退出;6-放棄修改並退出\n");
scanf("%d", &cmd);
switch(cmd) {
case 1:
case 2:
case 3:
case 4:
input(&s, OPER[cmd]);
break;
case 5:
fsetpos(f, &p);
fwrite(&s, sizeof(s), 1, f);
case 6:
fclose(f);
return;
default:
printf("錯誤的操作,請重新輸入。\n");
}/*end case*/
}/*mext*/
}/*end clear*/
int main(void)
{
int cmd = 0; CON s;
for(;;) {
printf("歡迎使用通信簿!請選擇:1-添加;2-查詢;3-刪除;4-修改;5-全部輸出;0-退出\n");
scanf("%d", &cmd);
switch(cmd) {
case 0: return 0;
case 1: regist(); break;
case 2: query(&s); break;
case 3: clear(); break;
case 4: modify(); break;
case 5: browse(0, 0, &s); break;
}//end case
}
return 0;
}
Ⅱ c語言編寫一個程序計算長途電話費。電話費根據以下費率計算:
自己先試著寫,有問題了在慢慢解決!!!不要一味地等別人寫好了,當個「拿來黨」
Ⅲ C語言話費計算程序
#include<stdio.h>
#defineSHZF0.20//SHZF為市話標准資費
//以下函數將通話時長折算成分鍾
intminu(inthour,intminute,intsecond)
{
minute=minute+hour>0?minute*60:0;//小時折算成分鍾
minute=minute+second>0?1:0;//不足1分鍾按折算成1分鍾
returnminute;//返回通話時間(單位:分鍾)
}
voidmain()
{
doublemoney=0;//總話費
inttotal_minute=0;//總通話時長(分鍾)
inthour,minute,second;//通話時長的小時數、分鍾數、秒數
printf(" 請輸入第1次通話時長:");
scanf("%d:%d:%d:",&hour,&minute,&second);//輸入時間
total_minute+=minute+minu(hour,minute,second);//調用函數求通話時間(分)
printf(" 請輸入第2次通話時長:");
scanf("%d:%d:%d:",&hour,&minute,&second);
total_minute+=minute+minu(hour,minute,second);
printf(" 請輸入第3次通話時長:");
scanf("%d:%d:%d:",&hour,&minute,&second);
total_minute+=minute+minu(hour,minute,second);
money=total_minute*SHZF;//計算話費
printf("今天話費是:%f ",money);
}
Ⅳ c語言編程(關於電話費的問題)
走過一秒也算0.15嗎?如果是何不統一換算成秒數來算,,對60取模,不為零則多加一個月的。。
Ⅳ C語言,編寫一個簡單的通訊錄管理系統
實現一個通訊錄管理系統;
通訊錄管理系統可以用來存儲1000個人的信息,每個人的信息包括:
姓名、性別、年齡、電話、住址
**提供方法:
1. 添加聯系人信息
2. 刪除指定聯系人信息
3. 查找指定聯系人信息
4. 修改指定聯系人信息
5. 顯示所有聯系人信息
6. 清空所有聯系人
7. 以名字排序所有聯系人**
1、linkman.h(頭文件)
3、程序運行結果部分示範:
Ⅵ c語言編寫一個程序計算長途電話費。電話費根據以下費率計算: 1)周一到周五,上午八點到下午六點之間
#include <stdio.h>
int main()
{
char str[2];
int b,c,d,flag=0;
double e=0;
scanf("%s %d %d %d",&str,&b,&c,&d);
if((str[0]=='m' ||str[0]=='M') &&(str[1]=='O' ||str[1]=='o'))
flag=1;
if((str[0]=='t' ||str[0]=='T') &&(str[1]=='u' ||str[1]=='U'))
flag=1;
if((str[0]=='w' ||str[0]=='W') &&(str[1]=='e' ||str[1]=='E'))
flag=1;
if((str[0]=='T' ||str[0]=='t') &&(str[1]=='H' ||str[1]=='h'))
flag=1;
if((str[0]=='f' ||str[0]=='F') &&(str[1]=='r' ||str[1]=='R'))
flag=1;
if((str[0]=='S' ||str[0]=='s') &&(str[1]=='A' ||str[1]=='a'))
flag=2;
if((str[0]=='s' ||str[0]=='S') &&(str[1]=='u' ||str[1]=='U'))
flag=2;
while(str!="\0")
{
if(flag==2)
e=d*0.15;
if(flag==1 && (60*b+c>=0 && 60*b+c<=480 && 60*b+c+d<=480 ))
e=d*0.25;
if(flag==1 && (60*b+c>=1080 && 60*b+c<=1440 && 60*b+c+d<=1440 ))
e=d*0.25;
if(flag==1 && (60*b+c>480 && 60*b+c<1080 && 60*b+c+d<1080 ))
e=d*0.4;
if(flag==1 && (60*b+c>=0 && 60*b+c<=480 && 60*b+c+d>=480 && 60*b+c+d<=1080 ))
e=(480-(60*b+c))*0.25+(d-(480-(60*b+c)))*0.4;
if(flag==1 && (60*b+c>=0 && 60*b+c<=480 && 60*b+c+d>=1080 && 60*b+c+d<=1440 ))
e=(480-(60*b+c))*0.25+(1080-480)*0.4+(d-(480-(60*b+c))-(1080-480))*0.25;
if(flag==1 && (60*b+c>480 && 60*b+c<1080 && 60*b+c+d>=1080 && 60*b+c+d<=1440 ))
e=(1080-(60*b+c))*0.4+(d-(1080-(60*b+c)))*0.25;
printf("%lf\n",e);
scanf("%s %d %d %d",&str,&b,&c,&d);
}
return 0;
}
Ⅶ C語言,編寫一個簡單的通訊錄管理系統
實現一個通訊錄管理系統;
通訊錄管理系統可以用來存儲1000個人的信息,每個人的信息包括:
姓名、性別、年齡、電話、住址
**提供方法:
1. 添加聯系人信息
2. 刪除指定聯系人信息
3. 查找指定聯系人信息
4. 修改指定聯系人信息
5. 顯示所有聯系人信息
6. 清空所有聯系人
7. 以名字排序所有聯系人**
1、linkman.h(頭文件)
3、程序運行結果部分示範:
Ⅷ C語言題目 計算電話費
這個問題使用簡單的判斷if語句就可以完成了。
#include<stdio.h>
int main()
{ int a,b,c,n,y;
scanf("%d",&n);
while(n--)
{ scanf("%d%d",&a,&b);
c=a+b;
if(c<=300)y=3*a+6*b;
else if(c<=500)y=0.9*3*a+6*b;
else if(c<=1000)y=0.75*3*a+0.9*6*b;
else y=0.5*3*a+0.75*6*b;
printf("%d\n",y);
}
return 0;
}
Ⅸ c語言編程題 設計一個機房收費管理系統,實現對學生上機收費的管理。 功能描述如下: (1)輸入功能
你好!這是一個機房收費管理系統截圖,基本可以滿足你的要求
Ⅹ c語言 電話簿管理系統
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <iostream>
//主函數
int main()
{
LinkQueue Q;
initAddressBook(Q);
int flag=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(flag<1||flag>8)
{
printf("輸入錯誤請重新輸入!\n");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加聯系人成功!\n");
else
printf("增加聯系人失敗!\n");
break;
case 2:
if(delPerson(Q))
printf("刪除聯系人成功!\n");
else
printf("聯系人刪除失敗!\n");
break;
case 3:
if(update(Q))
printf("修改聯系人成功!\n");
else
printf("修改聯系人失敗!\n");
break;
case 4:
if(clearAddressBook(Q))
printf("通訊錄已清空!\n");
else
printf("通訊錄清空失敗!\n");
break;
case 5:
findByName(Q);
break;
case 6:
findByGroup(Q);
break;
case 7:
disAll(Q);
break;
case 8:
system("cls");
break;
}
}
}
printf("※※※※※感謝您使用本系統!※※※※※※\n");
return 0;
}
//初始化通訊錄
void initAddressBook(LinkQueue &Q)
{
Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));
if(!Q.front)
exit(1);
else
Q.front->next=NULL;
}
//清空通訊錄
bool clearAddressBook(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);
}
return true;
}
//通訊錄當前人數
int addressBookLength(LinkQueue &Q)
{
int i=0;
QNode *p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p->next;
i++;
}
}
return i;
}
//刪除聯系人
bool delPerson(LinkQueue &Q)
{
char _name[20];
system("cls");
printf("請輸入要刪除的聯系人的姓名:\n");
scanf("%s",_name);
QNode *p,*q;
if(Q.front==Q.rear)
{
printf("通訊錄為空!\n");
return false;
}
else
{
p=Q.front;
q=Q.front->next;
while(q!=Q.rear){
if(strcmp(q->name,_name)==0)
{
p->next=q->next;
free(q);//刪除節點
return true;
}
else
{
p=p->next;
q=q->next;
}
}
if((strcmp(q->name,_name)==0))
{
free(q);
Q.front=Q.rear;
return true;
}
else
{
printf("無此聯系人!\n");
return false;
}
}
}
//查找聯系人
bool findByName(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
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);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s 號碼:%s 分組:%s\n",p->name,p->tel,p->group);
return true;
}
else
{
printf("查無此人!\n");
return false;
}
}
}
//按組顯示聯系人
bool findByGroup(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
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);
return true;
}
else
{
printf("無此分組!\n");
return false;
}
}
}
//增加聯系人
bool enAddressBook(LinkQueue &Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
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;
}
return true;
}
}
//修改聯系人
bool update(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
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);
return true;
}
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);
return true;
}
else
{
printf("查無此人!\n");
return false;
}
}
}
//顯示所有聯系人
void disAll(LinkQueue &Q)
{
system("cls");
int i=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;
}
}
}