當前位置:編程學習大全網 - 源碼下載 - c程序設計3人壹組,類似做小項目,如何分工?求有經驗的大神指導!

c程序設計3人壹組,類似做小項目,如何分工?求有經驗的大神指導!

#include<cstdio>

#include<cstdlib>

#include<cstring>

/************************************************************************/

/**?通訊錄系統*/

/************************************************************************/

#define?name?256?///名字

#define?tele?32?///手機號

#define?birt?32?///生日

#define?stID?32?///學號

typedef?struct?directory

{

char?Name[name];

char?Tele[tele];

char?Birt[birt];

char?StID[stID];

struct?directory?*next,*prior;

}?CONTACTS;

bool?J_T(char?p[])///電話號碼

{

int?len=strlen(p);

if(len!=11||p[0]!='1')?return?0;

for(int?i=1;?i<len;?i++)

{

if(!(p[i]>='0'&&p[i]<='9'))

return?0;

}

return?1;

}

bool?J_L(int?year)?///平/潤年

{

return?(year%4==0&&year%100!=0||year%400==0);

}

bool?J_B(char?p[])?///生日

{

int?len=strlen(p);

if(!(len>=8&&len<=10))?return?0;/**1949/1/1(8)?1949/12/31(10)**/

int?sum=0,Bith[3],k=0;

for(int?i=0;?i<len;?i++)

{

if(!(p[i]>='0'&&p[i]<='9'||p[i]=='/'))///輸入合法

return?0;

}

p[len]='/';

p[len+1]='\0';

for(int?i=0;?i<=len;?i++)

{

if(p[i]!='/')

sum=10*sum+p[i]-'0';

else

{

Bith[k++]=sum;

sum=0;

}

}

p[len]='\0';

if(!(Bith[1]>=1&&Bith[1]<=12))

return?0;

switch(Bith[1])

{

case?1:case?3:case?5:case?7:case?8:case?10:case?12:

if(!(Bith[2]>=1?&&?Bith[2]<=31))?return?0;break;

case?4:case?6:case?9:case?11:

if(!(Bith[2]>=1?&&?Bith[2]<=30))?return?0;break;

case?2:

if(J_L(Bith[0])==1)?{if(!(Bith[2]>=1?&&?Bith[2]<=29))?return?0;}///潤年29天

else?{if(!(Bith[2]>=1?&&?Bith[2]<=28))?return?0;}break;///平年28天

}

return?1;

}

bool?J_I(char?p[])?///學號

{

int?len=strlen(p);

if(len!=11||p[0]==0)?return?0;

for(int?i=1;?i<len;?i++)

{

if(!(p[i]>='0'&&p[i]<='9'))

return?0;

}

return?1;

}

void?Input_(CONTACTS?*head,bool?x)?///1,新錄入;2,添加

{

printf("錄入幾個人?\n");

int?n;

scanf("%d",&n);

getchar();

while(n--)

{

CONTACTS?*p,*pnew=new?CONTACTS;

if(x==0)

p=head->next;

else

p=head->prior;

printf("名字\n");

gets(pnew->Name);

printf("手機號(11位,如果不知道,輸入10000000000)\n");

while(1)

{

gets(pnew->Tele);

if(J_T(pnew->Tele)==1)

break;

else

printf("輸入手機號碼錯誤,請重輸\n");

}

printf("生日(形如,1949/1/1,1949/12/31,如果不知道,輸入0000/1/1)\n");

while(1)

{

gets(pnew->Birt);

if(J_B(pnew->Birt)==1)

break;

else

printf("輸入不正確,請檢查\n");

}

printf("學號(如果不知道,輸入10000000000)\n");

while(1)

{

gets(pnew->StID);

if(J_I(pnew->StID)==1)

break;

else

printf("輸入學號錯誤,請檢查後重新輸入\n");

}

p->next=pnew;

pnew->prior=p;

pnew->next=head;

head->prior=pnew;

}

return?;

}

void?Output_(CONTACTS?*head)///輸出

{

CONTACTS?*p=head->next;

printf("------------------------\n");

while(p!=head)

{

printf("%-8s:%s\n%-8s:%s\n%-8s:%s\n%-8s:%s\n","|?姓名",p->Name,"|?學號",p->StID,"|手機號碼",p->Tele,"|?生日",p->Birt);

if(p->next!=head)

putchar('\n');

p=p->next;

}

printf("------------------------\n");

return?;

}

void?Open_files(CONTACTS?*pHead)///外部倒入數據

{

CONTACTS?*pNew,*pNext;

FILE?*fp;

char?filename[name];

puts("請輸入妳要打開文件的地址");

scanf("%s",filename);

if((fp=fopen(filename,"r"))==NULL)

{

puts("無法打開文件");

fflush(stdin);

}

else

{

pNext=(CONTACTS?*)malloc(sizeof(CONTACTS));

pHead->next=pNext;

pNext->prior=pHead;

fscanf(fp,"%s%s%s%s",pNext->Name,pNext->StID,pNext->Tele,pNext->Birt);

while(!feof(fp))

{

pNew=(CONTACTS?*)malloc(sizeof(CONTACTS));

pNext->next=pNew;

pNew->prior=pNext;

pNext=pNew;

fscanf(fp,"%s%s%s%s",pNext->Name,pNext->StID,pNext->Tele,pNext->Birt);

}

pNext->next=pHead;

pHead->prior=pNext;

puts("導入數據成功!");

fclose(fp);

}

return?;

}

void?Save_files(CONTACTS?*pHead)///保存數據

{

CONTACTS?*p=pHead->next;

FILE?*fp;

char?filename[name];

if(p==pHead)

{

puts("無學生信息,請先錄入學生信息");

}

else

{

while(1)

{

puts("請輸入妳要保存文件的地址");

scanf("%s",filename);

if((fp=fopen(filename,"w"))==NULL)

puts("無法打開文件");

else

{

while(p->next!=pHead)

{

fprintf(fp,"%s\t%s\t%s\t%s\n",p->Name,p->StID,p->Tele,p->Birt);

p=p->next;

}

fprintf(fp,"%s\t%s\t%s\t%s\n",p->Name,p->StID,p->Tele,p->Birt);

puts("保存文件成功!");

fclose(fp);

break;

}

}

}

return?;

}

int?Menu()

{

system("cls");

printf("-----------------------通訊錄-----------------------\n");

printf("|*******\t?1.錄入|\n");

printf("|*******\t?2.添加|\n");

printf("|*******\t?3.查看|\n");

printf("|*******\t?4.保存|\n");

printf("|*******\t?5.打開|\n");

printf("|*******\t?0.退出|\n");

printf("----------------------------------------------------\n");

int?i;

do

{

printf("輸入選項:_\b");

scanf("%d",&i);

}

while(i<0||i>5);

return?i;

}

bool?Loading(int?time)

{

char?admin[20]=?{"1"},passw[20]=?{"1"};

printf("\t\t\t用戶:______\b\b\b\b\b\b");

char?admi[20],pass[20];

scanf("%s",admi);

if(strcmp(admi,admin)==0)

{

printf("\t\t\t密碼:______\b\b\b\b\b\b");

scanf("%s",pass);

if(strcmp(pass,passw)==0)

return?1;

else

{

printf("密碼錯誤\n");

return?0;

}

}

else

{

printf("管理員錯誤\n");

return?0;

}

}

int?main()

{

CONTACTS?*head=(CONTACTS?*)malloc(sizeof(CONTACTS));

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

int?times=5;

printf("\t?----------------------------------------------------------------\n");

printf("\t|*******?通訊錄系統?*******|\n");

printf("\t|*******?註意:妳有%d次機會登陸本系統?*******|\n",times);

printf("\t?----------------------------------------------------------------\n");

while(1)

{

int?sign=Loading(times);

if(sign==1||times==1)

break;

times--;

printf("還有%d次機會\n",times);

}

if(times>1)

{

while(1)

{

switch(Menu())

{

case?1:?Input_(head,0);break;

case?2:?Input_(head,1);break;

case?3:?Output_(head);getchar();break;

case?4:?Save_files(head);getchar();break;

case?5:?Open_files(head);getchar();break;

case?0:?exit(0);break;

}

printf("按任意鍵繼續\n");

getchar();

}

}

else

{

printf("退出系統\n");

}

return?0;

}

  • 上一篇:排名索引源代碼
  • 下一篇:崗位職責簡單描述怎麽寫
  • copyright 2024編程學習大全網