当前位置: 首页>编程笔记>正文

大一c語言程序設計筆記,吉林大學2013級大一下學期程序設計作業:同學通訊錄系統

大一c語言程序設計筆記,吉林大學2013級大一下學期程序設計作業:同學通訊錄系統

《程序設計基礎課程設計》題目(2013級)

?

1、內容簡介

大一c語言程序設計筆記?編寫一個C語言程序,實現同學通訊錄管理功能。其中:

1)至少能夠管理50位同學的個人信息和通訊信息,個人信息和通訊信息需要有較強的糾錯功能(重點考察)。

2)個人信息包括:學號(53開頭的實際學號8位),姓名(至少可以保存4個漢字或8個英文字母),性別,年級班級(可選項,學號中包含相關信息),行政職務(班長、學委、無)。

吉林大學隨機數學B標準化作業答案、3)通訊信息包括:主要手機號(11位),其它手機號(11位),郵箱(30個字符以內的字符串,必須包含一個且只包含一個@字符)。

注:存在重復手機號,即多位同學存儲了相同的手機號;郵箱除@字符外其它格式不限定。

具體功能要求如下:

1)【增加】能夠從多個文件(學生自己提前生成2個文件備用)中錄入多位同學的相關信息(全部信息或部分信息),也能夠隨時增加1位新同學的相關信息(全部信息或部分信息)。需要考慮各種類型的不規范或錯誤數據(重點考察),盡可能考慮重復同學的處理(同一文件多次重復錄入,錄入文件中同學與系統已有同學重復,增加同學與系統已有同學重復)。

2)【修改】能夠隨時修改1位同學的相關信息,包括:對已錄入的信息進行修改或刪除、對未錄入的信息進行添加。

3)【刪除】能夠隨時刪除1位同學的所有信息。

4)【存儲】能夠將當前系統中的所有信息保存到文件中。

5)【某位同學信息】能夠打印某位同學(按照姓名或手機號查找)的所有相關信息。

6)【某個班級信息】能夠按照學號順序打印某班同學的所有相關信息(可選)。

7)【班級干部信息】能夠輸出所有班級干部的相關信息,要求用鏈表實現(重點考察)。

8)【全部信息】能夠按照學號順序打印系統中所有同學的信息。

9)【關聯信息】能夠打印所有包含相同手機號的同學信息,要求用鏈表實現(重點考察)。

10)【其它功能】你認為有用的附加功能,可酌情添加。

2、課程設計要求

按照指導教師的要求進行分組和任務分工,完成指定任務。具體要求如下:

1)保證出勤和紀律,服從指導教師的安排。

2)每組不超過3人,每組提交1份實驗報告,明確標明成員的任務分工和完成情況。

3)所提交的C語言源程序需要含有必要的代碼注釋和1份獨立的程序說明文檔。

4)指導教師按照平時考核、代碼和實驗報告質量、任務分工和完成比例、界面美觀和人性化、個人和團隊答辯情況等環節綜合評定最終成績。

3、成績說明

五分制:優秀15%-20%,良好35%-40%;中等25%-30%;及格和不及格10%-15%。

遲到/早退1次,最高成績為良好;

曠課1次,或遲到/早退2次,最高成績為中等;

曠課1次且遲到/早退1次,或遲到/早退3次,最高成績為及格;

曠課2次,或曠課1次且遲到/早退2次,或遲到/早退4次,取消答辯資格。

4、參考測試示例

學號:53開頭的8位,8位但非53開頭,8位含有其它非數字符號,不足8位,超過8位。

姓名:漢語、英文,過長(如20個字符),其它特殊字符。

性別:男,女,不詳。

年級班級:各種表示形式均可,1個或2個字段,但建議數字形式便于輸入和存儲。

行政職務:至少包含班長、學委,也可擴展其它職務。

手機號:符合常識,138-0431-0519(多2個-),13804310519(正確),0013804310519(多前導0),138 05190159(多個空格),1380519051(少1位)。

郵箱:一個字符串(不含@),含有@(正確),一個字符串(含有2個@)。


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

操作附圖

1.第一次登陸:

2.選擇添加信息.

3.添加信息

4.轉到初始功能選擇界面




5.查詢服務界面(這里選擇5 ---全部查詢)


6.查詢結果:

7.修改服務:

8.修改年級:

9.單人信息查詢:

10..刪除服務:

11.密碼服務:

12.重新登錄時驗證密碼:

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

完成代碼如下:

#include <cstdio>
#include <cstring>
#include <windows.h>typedef long long ll;//由于VC6不支持long long 在使用VC時把 long long 改成 int64struct student
{//個人信息int id;char name[10];int sex;// 1男 2女 0未知int Grade,Class;int Duty;// 0無 1班長 2學委//通訊信息ll phone1,phone2;//電話 這里用ll 是因為電話號有11位char email[35];
};/*********************主要函數聲明************************/int Load(char *inf,student *p);//從文件中讀取信息并儲存在p中int Add(int x,int y,student *p);//添加 返回添加的人數int Change(int x,int y,student *p);//修改(在x~y的范圍內對p進行查找操作 然后修改 下同) 返回添加的人數int Delete(int x,int y,student *p);//刪除 返回添加的人數(***一個負整數***)void Store(int x,int y,student *p,char *inf);//儲存void Printinf(student p);//打印單個人的全部信息(可視)void print(student p);//打印單人信息(不可視)void fprint(student p,FILE*f);//打印單人信息(不可視)void Personinf(int x,int y,student *p);//搜索并打印單人信息void Classinf(int x,int y,student *p);//班級信息void Dutyinf(int x,int y,student *p);//班委信息void Allinf(int x,int y,student *p);//全部信息void Relinf(int x,int y,student *p);//關聯信息void makepassword();//創建或修改密碼
ll getpass(char *ch);
bool is_password();
bool is_pass(char *ch);//這里補充其他功能/************************END-主要函數聲明*************************//*****************數據存儲文件格式說明***************************///數據儲存在 .txl 的文件格式中
//存儲用的 .txl文件名為 base.txl
//base.txl文件的格式如下
//第一行一個整數 n 代表通訊錄中現有的同學數量
//接下來每組數據有9*n行 如下
//學號(53開頭8位)
//姓名(最多9位有效字符(4個漢字)無特殊符號)
//性別(0或1或2)
//年級(正整數)
//班級(正整數)
//職務(0、1、2)
//主要手機號(11位 1開頭的正整數)
//其他手機號(同上)
//電子郵箱(英文字符串只含一個@符)
//
//例:
//1
//53131001
//陶羅
//1
//1
//10
//0
//12312312312(不存在填0)
//13213213212(不存在填0)
//123456789@qq.com(不存在填0)
//
//其他用于錄入信息的文件.txl格式文件如下
//第一行一個整數 n 代表通訊錄中現有的同學數量
//接下來每組數據有9*n行 如下
//學號(一行數據或0(代表未知))
//姓名(一行數據或空行)
//性別(0或1或2)
//年級(一個正整數或0)
//班級(一個正整數或0)
//職務(0或1或2)(0表示未知或無)
//主要手機號(一行數據或0)
//其他手機號(一行數據或0)
//電子郵箱(一行數據或0)
/**注意 base.txl只允許系統登錄時讀取 禁止用戶讀取**//*********************END-數據存儲文件格式說明***************************//*************************main及其相關函數********************************/const int maxn=1000+10;//最多100人char base[10]="base";
/**注意:base在系統第一次讀取時就已經轉換為"base.txl"**/void Search(int x,int y,student *p);//查詢與檢索操作int Operate(int x,int y,student *p);//修改與添加操作void Others(int x,int y,student *p);//其他服務void print(student p)
{printf("%d\n",p.id);printf("%s",p.name);if(p.name[strlen(p.name)-1]!='\n')putchar('\n');printf("%d\n%d\n%d\n%d\n",p.sex,p.Grade,p.Class,p.Duty);printf("%lld\n%lld\n",p.phone1,p.phone2);printf("%s",p.email);if(p.email[strlen(p.email)-1]!='\n')putchar('\n');
}void fprint(student p,FILE*f)
{fprintf(f,"%d\n",p.id);fprintf(f,"%s",p.name);if(p.name[strlen(p.name)-1]!='\n')fprintf(f,"\n");fprintf(f,"%d\n%d\n%d\n%d\n",p.sex,p.Grade,p.Class,p.Duty);fprintf(f,"%lld\n%lld\n",p.phone1,p.phone2);fprintf(f,"%s",p.email);if(p.email[strlen(p.email)-1]!='\n')fprintf(f,"\n");
}int input(int x,int y)
{char ch[50];gets(ch);if(strlen(ch)!=1)return -1;if(ch[0]-'0'>=x&&ch[0]-'0'<=y)return ch[0]-'0';return -1;
}void END()
{puts("---------------------------------------------------------------");puts("---------------------------- ?---------------------------------");puts("----------------------------感---------------------------------");puts("---------------------------- ?---------------------------------");puts("----------------------------謝---------------------------------");puts("---------------------------- ?---------------------------------");puts("----------------------------您---------------------------------");puts("---------------------------- ?---------------------------------");puts("----------------------------的---------------------------------");puts("---------------------------- ?---------------------------------");puts("----------------------------使---------------------------------");puts("---------------------------- ?---------------------------------");puts("----------------------------用---------------------------------");puts("---------------------------------------------------------------");getchar();getchar();
}int main()
{system("color 1A");char pas[20];while(is_password()){puts("請輸入密碼");scanf("%s",pas);getchar();if(is_pass(pas))break;else{puts("密碼錯誤 請從新輸入");continue;}}system("cls");puts("---------------------------------------------------------------");puts("------------歡 迎 來 到 同 學 通 訊 錄 管 理 系 統-------------");puts("---------------------------------------------------------------");student stu[maxn];int num=0;num=Load(base,stu);while(num==0){puts("");puts("檢測到第一次登錄系統或系統中沒有信息\n 是(1)否(0)添加信息?");int key;key=input(0,1);if(key==1)num+=Add(1,num,stu);else if(key==-1)continue;else{system("cls");break;}}while(1){printf("當前系統人數:%d\n",num);puts("----------------請輸入數字選擇功能---------------");puts(" ?1.查詢服務 2.添加或修改 3.其他服務 0.退出程序 ");int key;key=input(0,3);if(key==0) {system("cls");break ;}else if(key==1) Search(1,num,stu);else if(key==2) num=Operate(1,num,stu);else if(key==3) Others(1,num,stu);else if(key==-1)continue;}END();
}void Search(int x,int y,student *p)
{while(1){system("cls");puts("---------------------------------------------------------------");puts("------------------------- 查 詢 服 務 -------------------------");puts("---------------------------------------------------------------");puts("");puts("請輸入想要查詢的內容");puts("1.某位同學信息");puts("2.某個班級信息");puts("3.班級干部信息");puts("4.關聯信息");puts("5.全部信息");puts("0.返回上一層");int key;key=input(0,5);if(key==0) {system("cls");break ;}else if(key==1) Personinf(x,y,p);else if(key==2) Classinf(x,y,p);else if(key==3) Dutyinf(x,y,p);else if(key==4) Relinf(x,y,p);else if(key==5) Allinf(x,y,p);else if(key==-1)continue;}
}int Operate(int x,int y,student *p)
{while(1){system("cls");puts("---------------------------------------------------------------");puts("-------------------------修改與添加服務------------------------");puts("---------------------------------------------------------------");puts("請輸入想要的操作(操作1、2、3后請進行操作4)");puts("1.添加個人全部信息");puts("2.修改或添加個人的部分信息");puts("3.刪除個人信息");puts("4.儲存當前系統中的所有信息");puts("0.返回上一層");int key;key=input(0,4);if(key==0) {system("cls");break ;}else if(key==1) y+=Add(x,y,p);else if(key==2) y+=Change(x,y,p);else if(key==3) y+=Delete(x,y,p);else if(key==4) Store(x,y,p,base);else if(key==-1)continue;}return y-x+1;
}void Others(int x,int y,student *p)
{system("cls");puts("---------------------------------------------------------------");puts("------------------------- 其 他 服 務 -------------------------");puts("---------------------------------------------------------------");while(1){puts("1.為系統設定密碼或修改密碼 0.返回上一層");int key;key=input(0,1);if(key==0) {system("cls");return;}else if(key==1){makepassword();system("cls");}else if(key==-1)continue;}
}/*************************END-main及其相關函數********************************//*************************主要函數實現***************************************//**1.Load**/void Corerr(char *inf);//文件修正函數int Load(char *inf,student *p)
{strcat(inf,".txl");if(strcmp(inf,"base.txl")) Corerr(inf);FILE* in=fopen(inf,"r");if(!in){if(strcmp(inf,"base.txl"))puts("打開文件失敗");return 0;}int num;fscanf(in,"%d",&num);for(int i=1;i<=num;i++){fscanf(in,"%d",&p[i].id);fgets(p[i].name,10,in);//讀空行fgets(p[i].name,10,in);fscanf(in,"%d%d%d%d",&p[i].sex,&p[i].Grade,&p[i].Class,&p[i].Duty);fscanf(in,"%lld%lld",&p[i].phone1,&p[i].phone2);fgets(p[i].email,35,in);//讀空行fgets(p[i].email,35,in);}fclose(in);return num;
}void delpla(char *ch)// 刪除字符串中的空格
{char ret[100];int j=0;for(int i=0;i<strlen(ch);i++)if(ch[i]!=' ')ret[j++]=ch[i];for(int i=0;i<j;i++)ch[i]=ret[i];
}void Corerr(char *inf)
{FILE*in=fopen(inf,"r");student p[maxn];int num;fscanf(in,"%d",&num);char tes[55];fgets(tes,50,in);//printf("%s\n",tes);if(num>=maxn)num=0;for(int i=0;i<num;i++){//學號fgets(tes,50,in);tes[strlen(tes)-1]=0;//刪去讀取的回車 下同for(int i=0;i<strlen(tes);i++)if(tes[i]<'0'||tes[i]>'9'){strcpy(tes,"0");printf("第%d個同學學號錯誤,已更改為0,請用修改功能修改\n",i+1);getchar();}sscanf(tes,"%d",&p[i].id);if(p[i].id/1000000!=53)p[i].id=0;//姓名fgets(tes,50,in);tes[strlen(tes)-1]=0;if(strlen(tes)>9)strcpy(tes,"0");for(int i=0;i<strlen(tes);i++)if(!((tes[i]>='a'&&tes[i]<='z')||(tes[i]>='A'&&tes[i]<='Z')||tes[i]<0))//存在特殊符號{strcpy(tes,"0");printf("第%d個同學姓名錯誤,已更改為0,請用修改功能修改\n",i+1);getchar();}strcpy(p[i].name,tes);//性別fgets(tes,50,in);tes[strlen(tes)-1]=0;if(tes[0]>='0'&&tes[0]<='2')p[i].sex=tes[0]-'0';else p[i].sex=0;//年級 班級fgets(tes,50,in);tes[strlen(tes)-1]=0;for(int i=0;i<strlen(tes);i++)if(tes[i]<'0'||tes[i]>'9'){strcpy(tes,"0");printf("第%d個同學年級錯誤,已更改為0,請用修改功能修改\n",i+1);getchar();}sscanf(tes,"%d",&p[i].Grade);fgets(tes,50,in);tes[strlen(tes)-1]=0;for(int i=0;i<strlen(tes);i++)if(tes[i]<'0'||tes[i]>'9'){strcpy(tes,"0");printf("第%d個同學班級錯誤,已更改為0,請用修改功能修改\n",i+1);getchar();}sscanf(tes,"%d",&p[i].Class);//職務fgets(tes,50,in);tes[strlen(tes)-1]=0;if(tes[0]>='0'&&tes[0]<='2')p[i].Duty=tes[0]-'0';else p[i].Duty=-1;//手機號1fgets(tes,50,in);tes[strlen(tes)-1]=0;if(tes[3]=='-'&&tes[8]=='-'){for(int i=3;i<7;i++)tes[i]=tes[i+1];for(int i=7;i<11;i++)tes[i]=tes[i+2];}delpla(tes);tes[11]=0;sscanf(tes,"%lld",&p[i].phone1);if(p[i].phone1/10000000000!=1){p[i].phone1=0;printf("第%d個同學主要手機號錯誤,已更改為0,請用修改功能修改\n",i+1);getchar();}//手機號2fgets(tes,50,in);tes[strlen(tes)-1]=0;if(tes[3]=='-'&&tes[8]=='-'){for(int i=3;i<7;i++)tes[i]=tes[i+1];for(int i=7;i<11;i++)tes[i]=tes[i+2];}delpla(tes);tes[11]=0;sscanf(tes,"%lld",&p[i].phone2);if(p[i].phone2/10000000000!=1){p[i].phone2=0;printf("第%d個同學其他手機號錯誤,已更改為0,請用修改功能修改\n",i+1);getchar();}//E-mailfgets(tes,50,in);tes[strlen(tes)-1]=0;int is=0;for(int i=0;i<strlen(tes);i++)if(tes[i]=='@')is++;if(is!=1){strcpy(p[i].email,"0");printf("第%d個同學電子郵箱錯誤,已更改為0,請用修改功能修改\n",i+1);getchar();}else strcpy(p[i].email,tes);}fclose(in);FILE*out=fopen(inf,"w");fprintf(out,"%d\n",num);for(int i=0;i<num;i++){fprintf(out,"%d\n",p[i].id);fprintf(out,"%s\n",p[i].name);fprintf(out,"%d\n%d\n%d\n%d\n",p[i].sex,p[i].Grade,p[i].Class,p[i].Duty);fprintf(out,"%lld\n%lld\n",p[i].phone1,p[i].phone2);fprintf(out,"%s\n",p[i].email);}fclose(out);return ;
}/**END-Load**//**2.Add**/bool isrep(int x,int y,student *p,student q)//無重復返回1
{for(int i=x;i<=y;i++){if(p[i].id==q.id&&q.id!=0)return 0;if(q.id==0&&!strcmp(p[i].name,q.name))return 0;}return 1;
}int Add1(int x,int y,student *p,char * inf) //文件添加
{student add[maxn];int num=Load(inf,add);int ret=0;for(int i=1;i<=num;i++){if(isrep(x,y,p,add[i])){p[++y]=add[i];ret++;}}system("cls");return ret;
}int Add2(int x,int y,student *p)//屏幕上添加
{char ch[50];FILE*sto=fopen("regsto.txl","w");fputs("1\n",sto);//getchar();puts("請輸入學號,未知請填0");gets(ch);fputs(ch,sto);fputs("\n",sto);puts("請輸入姓名(不含空格),未知請填0");gets(ch);fputs(ch,sto);fputs("\n",sto);puts("請輸入性別 0.不詳 1.男 2.女");gets(ch);fputs(ch,sto);fputs("\n",sto);puts("請輸入年級(一個整數)");gets(ch);fputs(ch,sto);fputs("\n",sto);puts("請輸入班級(一個整數)");gets(ch);fputs(ch,sto);fputs("\n",sto);puts("請輸入職務(0.無 1.班長 2.學委)");gets(ch);fputs(ch,sto);fputs("\n",sto);puts("請輸入主要電話號");gets(ch);fputs(ch,sto);fputs("\n",sto);puts("請輸入其他電話號");gets(ch);fputs(ch,sto);fputs("\n",sto);puts("請輸入電子郵箱");gets(ch);fputs(ch,sto);fputs("\n",sto);fclose(sto);char str[20]="regsto";return Add1(x,y,p,str);
}int Add(int x,int y,student *p)
{system("cls");puts("請輸入添加方式 1.文件錄入 2.手寫錄入 0.返回上一層");int key;key=input(0,2);system("cls");if(key==1){puts("---------------------------------------------------------------");puts("------------------------ 文件添加服務 -------------------------");puts("---------------------------------------------------------------");char inf[100];puts("請輸入txl的文件名(不用加后綴):");while(scanf("%s",inf),inf[0]=='\n');getchar();return Add1(x,y,p,inf);}else if(key==2){puts("---------------------------------------------------------------");puts("------------------------ 手寫添加服務 -------------------------");puts("---------------------------------------------------------------");return Add2(x,y,p);}else if(key==0){system("cls");return 0;}
}/**END-Add**//**3.Change**/int Searchid(int x,int y,student *p,int id);int Searchname(int x,int y,student *p,char *name);int Change(int x,int y,student *p)
{bool cont=1;int ret=0;while(cont){system("cls");puts("---------------------------------------------------------------");puts("--------------------------- 修改服務 --------------------------");puts("---------------------------------------------------------------");puts("1.按學號查找并修改 2.按姓名查找并修改 0返回上一層");int key=input(0,2);int loc;if(key==1){system("cls");puts("------------------------- 按學號修改 --------------------------");puts("請輸入要修改同學的學號");int id;scanf("%d",&id);loc=Searchid(x,y,p,id);}else if(key==2){system("cls");puts("------------------------- 按姓名修改 --------------------------");puts("請輸入要修改同學的姓名");char name[20];scanf("%s",name);loc=Searchname(x,y,p,name);}else if(key==-1){system("cls");return -ret;}if(loc>=0){puts("請連續輸入想要修改項目的代號,代號間不需要插入回車或空格");puts("1.學號 2.姓名 3.性別 4.年級 5.班級 6.職務");puts("7.主要手機號 8.其他手機號 9.E-mail");ll ky;scanf("%lld",&ky);getchar();while(ky){int poi=ky%10;ky/=10;if(poi==1){puts("請輸入新學號");int nid;while(scanf("%d",&nid),nid/1000000!=53)puts("學號錯誤 請重新輸入");p[loc].id=nid;getchar();}else if(poi==2){puts("請輸入新姓名");char nname[50];while(gets(nname),1){if(strlen(nname)>9){puts("名字過長,請簡寫");continue;}for(int i=0;i<strlen(nname);i++)if(!((nname[i]>='a'&&nname[i]<='z')||(nname[i]>='A'&&nname[i]<='Z')||nname[i]<0)){puts("含有非法字符 請檢查并重新填寫");continue;}strcpy(p[loc].name,nname);break;}}else if(poi==3){puts("請輸入性別 0.不詳 1.男 2.女");int k;while(scanf("%d",&k),!(k>=0&&k<=2))puts("請輸入 0 或 1 或 2 ");p[loc].sex=k;getchar();}else if(poi==4){puts("請輸入年級(一個正整數)");int k;while(scanf("%d",&k)!=1)puts("請重新輸入");p[loc].Grade=k;//getchar();}else if(poi==5){puts("請輸入班級(一個正整數)");int k;while(scanf("%d",&k)!=1)puts("請重新輸入");p[loc].Class=k;getchar();}else if(poi==6){puts("請輸入職務 0.無 1.班長 2.學委");int k;while(scanf("%d",&k),!(k>=0&&k<=2))puts("請輸入 0 或 1 或 2 ");p[loc].Duty=k;getchar();}else if(poi==7||poi==8){puts("請輸入新的手機號");char tes[50];gets(tes);if(tes[3]=='-'&&tes[8]=='-'){for(int i=3;i<7;i++)tes[i]=tes[i+1];for(int i=7;i<11;i++)tes[i]=tes[i+2];}delpla(tes);tes[11]=0;ll k;sscanf(tes,"%lld",&k);if(poi==7){if(k/10000000000==1)p[loc].phone1=k;elseputs("號碼有誤,請從新進入修改號碼功能");}else if(poi==8){if(k/10000000000==1)p[loc].phone2=k;elseputs("號碼有誤,請從新進入修改號碼功能");}}else if(poi==9){puts("請輸入新的E-mail");char nem[50];gets(nem);int ok=0;for(int i=0;i<strlen(nem);i++)if(nem[i]=='@')ok++;if(ok==1)strcpy(p[loc].email,nem);elseputs("E-mail有誤 請重新進入E-mail修改功能");}}}else if(loc<0){puts("不存在此人的信息 是(1)否(0)添加?選是將轉到添加頁面");bool is;scanf("%d",&is);system("cls");if(is)ret+=Add2(x,y,p);}puts("是否從新進入修改系統 0 否 1 是");scanf("%d",&cont);}return ret;
}int Searchid(int x,int y,student *p,int id)
{for(int i=x;i<=y;i++)if(p[i].id==id)return i;return -1;
}int Searchname(int x,int y,student *p,char *name)
{for(int i=x;i<=y;i++)if(!strcmp(name,p[i].name))return i;strcat(name,"\n");for(int i=x;i<=y;i++)if(!strcmp(name,p[i].name))return i;return -1;
}/**END-Change**//**4.Delete**/int Delete(int x,int y,student *p)
{int ret=0;while(1){system("cls");puts("---------------------------------------------------------------");puts("------------------------- 刪 除 服 務 -------------------------");puts("---------------------------------------------------------------");puts("1.通過學號查找并刪除 2.通過姓名查找并刪除 0.返回上一層");int key,loc;key=input(0,2);if(key==1){puts("請輸入學號");int did;scanf("%d",&did);loc=Searchid(x,y,p,did);}else if(key==2){puts("請輸入同學的姓名");char name[20];scanf("%s",name);loc=Searchname(x,y,p,name);}else if(key==0||key==-1)return -ret;if(loc<0)puts("不存在該學生");else{puts("是(1)否(0)確認刪除?");Printinf(p[loc]);scanf("%d",&key);if(key){for(int i=loc;i<y;i++)p[i]=p[i+1]; ? ? //前移y--;//去尾ret++;//返回值+1}}puts("是(1)否(0)繼續刪除?");scanf("%d",&key);system("cls");if(key==1)continue;else return -ret;}return -ret;
}/**END-Delete**//**5.Store**/void Store(int x,int y,student *p,char *inf)
{puts("儲存數據中 請稍后······");FILE*f=fopen(inf,"w");fprintf(f,"%d\n",y-x+1);for(int i=x;i<=y;i++){fprint(p[i],f);}fclose(f);puts("數據儲存完畢! 請按任意鍵返回上一層");getchar();system("cls");
}/**END-Store**//**6.Printinf**/void Printinf(student p)
{if(p.id!=0)printf("學號 : %d\n",p.id);if(p.name[0]!='0'){printf("姓名 : %s",p.name);if(p.name[strlen(p.name)-1]!='\n')putchar('\n');}printf("性別 : ");if(p.sex==0)printf("不詳\n");else if(p.sex==1)printf("男\n");else if(p.sex==2)printf("女\n");if(p.Grade&&p.Class)printf("班級 : %d 年 %d 班\n",p.Grade,p.Class);printf("職務 : ");if(p.Duty==0)printf("無\n");else if(p.Duty==1)printf("班長\n");else if(p.Duty==2)printf("學委\n");if(p.phone1)printf("主要手機號 : %lld\n",p.phone1);if(p.phone2)printf("其他手機號 : %lld\n",p.phone2);if(p.email[0]!='0'){printf("E-mail : %s",p.email);if(p.email[strlen(p.email)-1]!='\n')putchar('\n');}puts("------------------------------------------------------");
}/**7.Personinf**/void Personinf(int x,int y,student *p)
{system("cls");puts("---------------------------------------------------------------");puts("------------------------ 個人信息查詢 -------------------------");puts("---------------------------------------------------------------");puts("請入查詢方式");puts("1.學號 2.姓名 3.電話號 0.返回上一層");int loc,key;scanf("%d",&key);if(key==0)return;else if(key==1){puts("請輸入學號");int sid;scanf("%d",&sid);loc=Searchid(x,y,p,sid);}else if(key==2){puts("請輸入姓名");char name[20];scanf("%s",name);loc=Searchname(x,y,p,name);}if(key==1||key==2){if(loc>=0)Printinf(p[loc]);else puts("未找到該同學");}if(key==3){puts("請輸入手機號");ll sp;bool is=0;scanf("%lld",&sp);for(int i=x;i<=y;i++)if(p[i].phone1==sp||p[i].phone2==sp){Printinf(p[i]);is=1;}if(!is)puts("未找到該同學");}puts("按任意鍵返回上一層(注意 返回上一層會清屏)");getchar();getchar();system("cls");return ;
}/**END-Personinf**//**8.Classinf**/bool cmp(student a,student b)
{if(a.Grade!=b.Grade)return a.Grade>b.Grade;else if(a.Class!=b.Class)return a.Class<b.Class;else return a.id<b.id;
}void swap(student &a,student &b){student t=a;a=b;b=t;}void sort(int x,int y,student *p,bool cmp(student ,student))
{bool flag=1;while(flag){flag=0;for(int i=x;i<y;i++)if(!cmp(p[i],p[i+1])){swap(p[i],p[i+1]);flag=1;}}
}void Classinf(int x,int y,student *p)
{system("cls");puts("---------------------------------------------------------------");puts("------------------------ 班級信息查找 -------------------------");puts("---------------------------------------------------------------");sort(x,y,p,cmp);puts("請輸入想要查找的年級");int g,c;scanf("%d",&g);puts("請輸入查找的班級");scanf("%d",&c);bool is=0;for(int i=x;i<=y;i++)if(p[i].Grade==g&&p[i].Class==c){Printinf(p[i]);is=1;}if(!is)puts("未找到該班級學生");puts("按任意鍵返回上一層(會清屏)");getchar();getchar();system("cls");
}/**END-Classinf**//**9.Allinf**/bool cmpid(student a,student b)
{return a.id<b.id;
}void Allinf(int x,int y,student *p)
{system("cls");puts("---------------------------------------------------------------");puts("------------------------- 全 部 信 息 -------------------------");puts("---------------------------------------------------------------");sort(x,y,p,cmpid);for(int i=x;i<=y;i++)Printinf(p[i]);puts("按任意鍵返回上一層(會清屏)");getchar();system("cls");
}/**END-ALLinf**//**10.Dutyinf**/void Dutyinf(int x,int y,student *p)
{system("cls");puts("---------------------------------------------------------------");puts("------------------------- 班 委 查 詢 -------------------------");puts("---------------------------------------------------------------");int next[maxn];//靜態鏈表 next表示當前班委下一個班委的坐標int j=0;next[j]=-1;for(int i=x;i<=y;i++){if(p[i].Duty){next[j]=i;j=i;next[j]=-1;}}int k=0;while(next[k]>=0){Printinf(p[next[k]]);k=next[k];}puts("按任意鍵返回上一層(會清屏)");getchar();system("cls");
}/**END-Dutyinf**//**11.Relinf**/void phorep(int x,int y,student *p,ll phone,int next[])//判斷是否存在與當前學生相同的電話號碼 next 靜態鏈表的坐標表
{memset(next,0,sizeof(next));next[0]=-1;int j=0;for(int i=x;i<=y;i++){if(phone==p[i].phone1||phone==p[i].phone2){next[j]=i;j=i;next[j]=-1;}}
}bool repphone(ll *num,int n,ll phone){for(int i=0;i<n;i++)if(phone==num[i])return 1;return 0;}void Relinf(int x,int y,student *p)
{system("cls");puts("---------------------------------------------------------------");puts("------------------------- 關 聯 信 息 -------------------------");puts("---------------------------------------------------------------");ll phone[maxn*2];int num=0;for(int i=x;i<=y;i++){if(!repphone(phone,num,p[i].phone1)){phone[num++]=p[i].phone1;}if(!repphone(phone,num,p[i].phone2)){phone[num++]=p[i].phone2;}}for(int i=0;i<num;i++){int next[maxn];phorep(x,y,p,phone[i],next);if(next[next[0]]==-1)continue;//若只有一個人有此號碼 則不輸出else{printf("存有號碼 %lld 同學有\n",phone[i]);puts("------------------------------------------------------");int k=0;while(next[k]>=0){Printinf(p[next[k]]);k=next[k];}puts("------------------------------------------------------");}}puts("按任意鍵返回上一層(會清屏)");getchar();system("cls");
}/**END-Relinf**//**12.password**/
int pasnum[20]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536};
ll getpass(char *ch)
{if(!strcmp(ch,"0"))return 0;ll ret=0;for(int i=0;i<strlen(ch);i++){ret+=ch[i]*pasnum[i%17];ret%=1000000007;}return ret;
}void makepassword()
{FILE*pass=fopen("data.pas","w");char pas[20];system("cls");puts("---------------------------------------------------------------");puts("----------------------- 密碼添加或修改 ------------------------");puts("---------------------------------------------------------------");puts("請輸入密碼 不超過17位 不含空格和回車或制表符\n 刪除密碼請輸入0");while(scanf("%s",pas),strlen(pas)>17);ll password=getpass(pas);fprintf(pass,"%lld\n",password);fclose(pass);puts("密碼修改完成 任意鍵退出");getchar();getchar();system("cls");}
bool is_password()
{FILE*pass=fopen("data.pas","r");if(!pass)return 0;int k;fscanf(pass,"%d",&k);if(k==0)return 0;return 1;
}bool is_pass(char *ch)
{FILE*pass=fopen("data.pas","r");ll k;fscanf(pass,"%lld",&k);if(k==getpass(ch))return 1;return 0;
}/**END-password**/

https://www.nshth.com/bcbj/338841.html
>

相关文章:

  • 大一c語言程序設計筆記
  • 吉林大學隨機數學B標準化作業答案
  • 吉林大學智慧校園教務管理系統
  • 吉林大學計算機臧學柏
  • 數據結構課后答案
  • 吉林大學掛科上限
  • 吉林大學電子校務
  • 吉林大學軟件學院小學期時間
  • pdf翻譯網站,1 Trillion Dollar Refund – How To Spoof PDF Signatures——欺騙PDF簽名
  • 如何創建一個抽象類,創建具體的產品,并繼承產品抽象類
  • 主從庫理論知識-主從同步如何實現?
  • Tomcat環境變量配置,Mybatis的配置文件參數詳解
  • I Am You,POJ 3130 How I Mathematician Wonder What You Are! 半平面交
  • 要學vue需要學什么基礎知識,第一章 Vue基礎入門
  • win7下安裝win10,win10下安裝Ubuntu18.10雙系統
  • vmplayer怎么使用烏邦圖,烏邦圖環境安裝
  • 計算機專業要不要考研——寫的很棒
  • redisson看門狗原理,記錄一次redis漏洞攻擊
  • 任意波形發生器,基于單片機信號波形發生器系統設計-畢設課設
  • 嵌入式驅動,嵌入式Linux驅動大全問世,十年磨一劍,視頻!服務!新老客戶都有大折扣!
  • socket連接器v2下載,Netty(一)基礎socketchannel,Buffer,selector黏包 半包解決 實戰
  • 大一c語言程序設計筆記,吉林大學2013級大一下學期程序設計作業:同學通訊錄系統
  • 暑期小學生計算機培訓班,青島小學生學習編程暑假
  • 熊貓毛小喵喵去哪里了,小西貝、何小喵看熊貓之觀察者設計模式
  • 如何用c語言比較兩個數的大小,如何用C語言求兩個數的較大值
  • 輾轉相除法求最小公倍數的方法,更相減損術--最大公約數
  • 輾轉相除法求最小公倍數的方法,如何求出兩個整數的最大公約數
  • 李新義的書畫藝術,中國現代書畫家——譚奇中、李義象、高俊鵬等
  • 海底撈張勇名言,致張勇先生一封信:海底撈的“七宗罪”!
  • WPF學習(12)動畫
  • ui自動化測試工具,移動端UI自動化之appium的使用(二)
  • 爬蟲網站,Search For Free —— 新聞爬蟲及爬取結果的查詢網站
  • tenda騰達無線設置,騰達F6路由器無線中繼功能設置
  • 斐波那契數列、小青蛙跳臺階
  • OJ每日一練——小青蛙上臺階
  • 小青蛙貝葉斯
  • 小青蛙走臺階問題
  • MySQL數據庫下載,NAVICAT FOR MYSQL存儲過程