當前位置:編程學習大全網 - 編程語言 - C語言程序設計--班級檔案管理系統

C語言程序設計--班級檔案管理系統

給,已經編譯運行確認了:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<conio.h>

#define N 10

int M=0;

struct student

{

char num[13];

char name[20];

char sex;

char address[30];

int age;

};

typedef struct LB

{

struct student XINXI;

struct LB *next;

}LB_1,*LB_2;

void CAIDANG()

{

printf(" \t \t \t (歡迎使用本班級檔案管理系統)\t\t\t\t\n");

printf("★*★*★*★*★*★*★*★*★*★ 歡迎進入我們的系統 ★*★*★*★*★*★*★*★*★*★\n\n");

printf("1.錄入學生資料\t\t\t\t\t4.查詢學生信息\n\n");

printf("2.修改學生信息\t\t\t\t\t5.刪除學生信息\n\n");

printf("3.保存學生信息\t\t\t\t\t0.退出檔案系統\n\n");

printf(" \n");

printf("★*★*★*★*★*★*★*★*★*★ 歡迎進入本系統 ★*★*★*★*★*★*★*★*★*★\n");

}

/*文本顏色*/

void color()

{

textbackground(8);

textcolor(9);

clrscr();

}

void Wrong()

{

printf("\n對不起您的輸入錯誤!\n");

}

void SORRY()

{

printf("\n對不起該同學現沒有任何信息!\n");

}

void printe(LB_1 *p)/* 本函數用於輸出英文 */

{

printf(" %-2s %s\t %s\t%s\t %d\t \n",p->XINXI.num,p->XINXI.name,p->XINXI.sex,p->XINXI.address,p->XINXI.age);

}

/* 該函數用於定位鏈表中符合要求的接點,並返回該指針 */

LB_1 *Locate(LB_2 l,char findmess[],char nameornum[])

{

LB_1 *r;

if(strcmp(nameornum,"num")==0) /* 按學號查詢 */

{

r=l->next;

while(r!=NULL)

{

if(strcmp(r->XINXI.num,findmess)==0)

return r;

r=r->next;

}

}

else if(strcmp(nameornum,"name")==0) /* 按姓名查詢 */

{

r=l->next;

while(r!=NULL)

{

if(strcmp(r->XINXI.name,findmess)==0)

return r;

r=r->next;

}

} return 0;

}

/*以下是增加學生信息的函數*/

void TIANJIA(LB_2 l)

{

LB_1 *p,*r,*s;

char num[13];

r=l; s=l->next;

while(r->next!=NULL) /*些處循環壹直到最後*/

r=r->next;

while(1)

{

printf(" 請輸入添加的學生學號(輸入'0'返回上壹級菜單:)");

scanf("%s",num);

if(strcmp(num,"0")==0)

break;

while(s)

{

if(strcmp(s->XINXI.num,num)==0)

{

printf("(必看提示):學號為'%s'的學生已有信息,若要修改請妳輸入'2 修改'!\n",num);

printe(s);

printf("\n");

return;

}

s=s->next;

} p=(LB_1 *)malloc(sizeof(LB_1));

strcpy(p->XINXI.num,num);

printf(" 請妳輸入學號:");

scanf("%s",p->XINXI.num);

getchar();

printf(" 請妳輸入姓名:");

scanf("%s",p->XINXI.name);

getchar();

printf(" 請妳輸入性別:");

scanf("%s",p->XINXI.sex);

getchar();

printf(" 請妳輸入地址:");

scanf("%s",p->XINXI.address);

getchar();

printf(" 請妳輸入年齡:");

scanf("%d",&p->XINXI.age);

getchar();

/* 下面是把指針變量轉到鏈表的下壹個結點中以便循環的時候使用 */

p->next=NULL;

r->next=p;

r=p; M=1;

}

}

/*以下是刪除學生信息的函數*/

void SHANCHU(LB_2 l)

{

int sel;

LB_1 *p,*r;

char findmess[20];

if(!l->next)

{

printf("\n******(必看提示):對不起,現文件中沒有信息:所以您不能查詢!\n");

return;

}

printf("\n <必看提示> <以學號刪除請輸入1\n> <以姓名刪除請輸入2\n> PLEASE:");

scanf("%d",&sel);

if(sel==1)

{

printf("請輸入要刪除的學生的學號PLEASE:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{ r=l;

while(r->next!=p)

r=r->next;

r->next=p->next;

free(p);

printf("\n*******(必看提示):該學生的信息已完全刪除成功!\n");

M=1;

}

else

SORRY();

}

else if(sel==2)

{

printf("請輸入要刪除的學生的姓名PLEASE:");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{ r=l;

while(r->next!=p)

r=r->next;

r->next=p->next;

free(p);

printf("\n******(必看提示):該學生信息已成功刪除!\n");

M=1;

}

else

SORRY();

}

else

Wrong();

}

/*以下是查詢學生信息*/

void CHAXIONG(LB_2 l)

{ int sel;

char findmess[20];

LB_1 *p;

if(!l->next)

{ printf("\n******(必看提示):對不起,現文件中沒有信息:所以您不能查詢!\n");

return;

}

printf("\n以學號查詢請輸入1:\n以姓名查詢請輸入2:\n以性別查詢請輸入3:\n以性別查詢請輸入4:\n PLEASE:");

scanf("%d",&sel);

if(sel==1)/*輸入學號查詢*/

{

printf("請妳輸入要查找的學號:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{ printf("\t\t\t\t查找結果\n");

printf(" 學號:%s\n姓名:%s\n性別:%s\n地址:%s\n年齡:%d\n",p->XINXI.num,p->XINXI.name,p->XINXI.sex,p->XINXI.address,p->XINXI.age);

}

else

SORRY();

}

if(sel==2) /* 輸入姓名查詢 */

{

printf("請妳輸入要查找的姓名:");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{ printf("\t\t\t\t查找結果\n");

printf(" 學號:%s\n姓名:%s\n性別:%s\n地址:%s\n年齡:%d\n",p->XINXI.num,p->XINXI.name,p->XINXI.sex,p->XINXI.address,p->XINXI.age);

}

else

SORRY();

}

else

Wrong();

}

/*以下是修改學生信息的函數*/

void XIUGEI(LB_2 l)

{

LB_1 *p;

long int i,j;

char findmess[20];

if(!l->next)

{ printf("\n(必看提示):對不起,現文件中沒有信息:所以您不能查詢!\n");

return;

}

for(i=1;i<=2;i++)

{

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

printf("請輸入密碼:");

scanf("%s",&j);

if(j==2007)break;

else

{if(j!=2007)

return(CAIDANG());

}

}

printf("請妳輸入要修改的學生學號:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{ printf("請妳輸入新學號(原來是%s):",p->XINXI.num);

scanf("%s",p->XINXI.num);

printf("請妳輸入新姓名(原來是%s):",p->XINXI.name);

scanf("%s",p->XINXI.name);

printf("請妳輸入新性別(原來是%s):",p->XINXI.sex);

scanf("%s",p->XINXI.sex);

printf("請妳輸入新地址(原來是%s):",p->XINXI.address);

scanf("%s",p->XINXI.address);

printf("請妳輸入新年齡(原來是%d):",p->XINXI.age);

scanf("%s",p->XINXI.age);

getchar();

M=1;

}

else

SORRY();

}

/*保存在文件中*/

void BAOCONG(LB_2 l)

{

FILE* fp;

LB_1 *p;

int flag=1,count=0;

fp=fopen("c:\\lyg","wr");

if(fp==NULL)

{

printf("\n=====>提示:重新打開文件時發生錯誤!\n");

exit(1);

}

p=l->next;

while(p)

{

if(fwrite(p,sizeof(LB_1),1,fp)==1)

{ p=p->next;

count++;

}

else

{ flag=0;

break;

}

}

if(flag)

{ printf("\n 提示;正在保存文件 ***保存了%d條信息\n",count);M=0;

}

fclose(fp);

}

/*以下是主函數*/

void main()

{

LB_2 l;/* 連表 */

FILE *fp; /* 文件指針 */

int sel;long i,j,d;

char ch;

char jian;

int count=0;

LB_1 *p,*r;

color();

clrscr();

l=(LB_1*)malloc(sizeof(LB_1));

l->next=NULL;

r=l;

fp=fopen("C:\\lyg","rb");

if(fp==NULL)

{

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

printf("\n");

printf(" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"

" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"

" Welcome to come to our system!!! \n"

" You can only inquire your own messages! If you want to see about other \n"

" students' messages,you need first to send inquirment to them,asking for \n"

" agreement,then you can visit his/her messages! \n"

" Have a good time! now you can come in!!! \n"

" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"

" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"

" 註意:系統啟動碼為 : ILOVEMYSCHOOLVERYMUCH !!! \n"

" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"

" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n");

printf("歡迎使用,本系統中現沒有任何記錄,您要先創建文件請按以下操做進行PLEASE:\n");

printf("\n 提示:文件還不存在,是否創建?(y/n)請做選擇--\n");

printf("\n");

scanf("%c",&jian);

if(jian=='y'||jian=='Y')

{fp=fopen("C:\\lyg","wb");

clrscr();

}

{for(i=1;i<=2;i++)

{

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

printf("請輸入密碼:");

scanf("%ld",&j);

if(j==2007)break;

else

{if(j!=2007)return;

}

}

}

exit(0);clrscr();

}

while(!feof(fp))

{

p=(LB_1*)malloc(sizeof(LB_1));

if(fread(p,sizeof(LB_1),1,fp)) /* 將文件的內容放入鏈表中 */

{

p->next=NULL;

r->next=p;

r=p; /*把該結點放入鏈表中*/

count++;

}

}

fclose(fp); /* 關閉文件 */

while(1)

{

CAIDANG();

printf("請妳選擇操作:");

scanf("%d",&sel);

clrscr();

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

if(sel==0)

{

if(M==1)

{ getchar();

printf("\n(必看提示):鏈表中的信息已經改動,如果確認把改動保存在文件中請做選擇(y/n)?\n");

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

BAOCONG(l);

}

break;clrscr();

}

switch(sel)

{

case 1: TIANJIA(l);break;

case 4: CHAXIONG(l);break;

case 3: BAOCONG(l);break;

case 2: XIUGEI(l);break;

case 5: SHANCHU(l);break;

default: getchar();break;

}

} end:

getchar();

}

  • 上一篇:長治機電報考大專有什麽學校
  • 下一篇:給我介紹壹本內涵的書本人女生想提升內涵氣質
  • copyright 2024編程學習大全網