c語言設計?

c語言設計?攝影自學成才2017-05-16 00:27:48

#include #include #include #include “conio。h” #define LEN sizeof(struct student) typedef struct student { char num[10]; char name[10]; int math,english,computer; int total; struct student *next; }student, *LinkList; void Login(); void weixiu(); void menu() ; int Open(LinkList L); void printstart() ; void Wrong() ; void Nofind() ; void printc(); void getinf(LinkList L); void orderbyzongfen(LinkList L); void deleteall(LinkList L); void Developer(); void Sort(LinkList L); void Save(LinkList L); LinkList dingwei(LinkList L,char findmess[],char nameornum[]); LinkList L; int main(void) {

Login();

return 0; }

/*——————————————————————————-輸入學生成績並計算——————————————————————————-*/ void getinf(LinkList L) { LinkList r,s; r=(LinkList )malloc(LEN); printf(“請輸入學號:”); scanf(“%s”,r->num); printf(“請輸入姓名:”); scanf(“%s”,r->name); printf(“請輸入數學成績:”); scanf(“%d”,&r->math); printf(“請輸入英語成績:”); scanf(“%d”,&r->english); printf(“請輸入電腦成績:”); scanf(“%d”,&r->computer); r->total=r->math+r->english+r->computer;

s=L->next; L->next=r; r->next=s; printf(“追加記錄成功!\n”); }

/*————————————————該函式用於定位連表中符合要求的接點,並返回該指標——————————————-*/ LinkList dingwei(LinkList L,char findmess[],char nameornum[]) { LinkList r; if(strcmp(nameornum,“num”)==0) { r=L->next; while(r!=NULL) { if(strcmp(r->num,findmess)==0) return r; r=r->next; } r=NULL; return r; } else if(strcmp(nameornum,“name”)==0) { r=L->next; while(r!=NULL) { if(strcmp(r->name,findmess)==0) return r; r=r->next; } r=NULL; return r; } else return 0; }

/*——————————————————————-刪除記錄——————————————————————————*/ void deleteall(LinkList L) {

char ch;

printf(“確定您要清除檔案裡所有學生的資訊,這樣就無法恢復資料了( Y or N )\n”); getchar(); scanf(“%c”,&ch); if(ch == ‘y’ || ch == ‘Y’) { L->next = NULL; printf(“檔案裡學生成績資訊已經被清除!\n”); } else return; }

/*————————————————————————-排序記錄——————————————————————————————*/ void Sort(LinkList L) { LinkList p,r,s; p = L;

r = p ->next; s = p ->next->next; while(s != NULL) { while(s ->total < p ->next->total) p = p ->next; if(p ->next == s) { printf(“排序已完成!\n”);return; } else { r ->next = s ->next; s ->next = p ->next; p ->next = s; s = r ->next; p = L; } } printf(“排序成功!\n”);

} /*————————————————————————————- 排名——————————————————————————-*/

void orderbyzongfen(LinkList L)

{ LinkList p;

p=L; if(p->next!=NULL) { printstart(); printc(); for (p=p->next;p!=NULL;p=p->next) printf(“%3s\t%3s\t%5d\t%9d\t%5d\t%7d\n”,p->num,p->name,p->math,p->english,p->computer,p->total); printstart();} else Nofind(); }

/*——————————————————————————————-開啟檔案————————————————————————————*/ int Open(LinkList L) { FILE *fp; LinkList p1,p2; char choose; int count=0;

p1=L; p1->next=NULL; fp=fopen(“E:\\student_score”,“rb”); if(fp==NULL) { printf(“\n=====>提示:檔案還不存在,是否建立?(y/n)\n”); scanf(“%c”,&choose); if(choose==‘y’||choose==‘Y’) { fp=fopen(“E:\\student_score”,“wb”); printf(“檔案已建立,請按回車鍵關閉,然後重新開啟軟體\n”);getchar();getchar();exit(0); } else exit(0); }

p2=(LinkList)malloc(LEN); while(fread(p2,LEN,1,fp)) { p2->next=NULL; p1->next=p2; p1=p2; p2=(LinkList)malloc(LEN); count++; } p2->next=NULL; fclose(fp);

return 1; } /*——————————————————————————-儲存檔案——————————————————————————*/ void Save(LinkList L) { FILE *fp; LinkList p1; char choose; if(L ->next == NULL) {printf(“沒有可以儲存的資訊!\n”); return;} printf(“確認儲存?(y/n)\n”); getchar(); scanf(“%c”,&choose); getchar(); if(choose == ‘y’ || choose == ‘Y’) { fp=fopen(“E:\\student_score”,“wb”); p1=L; p1=p1->next;

while(p1) { if(fwrite(p1,LEN,1,fp)==1) { p1=p1->next; } else break; } fclose(fp); printf(“儲存成功!\n”); } else printf(“沒有儲存!\n”); }

void weixiu() { printf(“\n\n\n”); printf(“\n **************************************************************”); printf(“\n ”); printf(“\n 歡迎使用成績管理系統。本系統尚在試用階段,有問題請與我聯絡! ”); printf(“\n ”); printf(“\n 我的qq是 365549735 ”); printf(“\n **************************************************************”); }

/*——————————————————————————介面函式——————————————————————-*/ void Login() { system(“color 5f”); char ch[23]; int i=0; char mima[45]; L=(LinkList)malloc(LEN); int sel,count=0; weixiu(); printf(“\n\n\n”); printf(“\n請選擇您的登陸方式( 1 :管理員 2 :普通使用者 )”); scanf(“%d”,&i); switch(i) { case 1:

system(“cls”); weixiu(); printf(“\t\t\t\t使用者名稱:”); scanf(“%s”,ch); printf(“\t\t密碼:”); scanf(“%s”,mima); if(strcmp(mima,“123456”)==0 && strcmp(ch,“何濤”)==0) { getchar();printf(“\n按回車返回主選單\n”);getchar(); system(“cls”); } else { printf(“您的使用者名稱或密碼有誤,無法登陸!\n”); exit(0);

} menu(); Open(L);

for (scanf(“%d”,&sel);sel!=0;system(“cls”),menu(),scanf(“%d”,&sel)) { switch (sel) { case 1: getinf(L); count++;Save(L);getchar();printf(“\n按回車返回主選單\n”);getchar(); break; case 2:Sort(L);orderbyzongfen(L);getchar();printf(“\n按回車返回主選單\n”);getchar(); break;

case 3: deleteall(L);getchar();printf(“\n按回車返回主選單\n”);getchar(); count——; break;

case 4: Developer();getchar();printf(“\n按回車返回主選單\n”);getchar(); break; case 5: printf(“謝謝使用 !有問題可以與我聯絡\n\t\tqq810097972\n”); exit(0); break; default: Wrong();getchar();printf(“\n按回車返回主選單\n”);getchar(); } } break;

case 2: system(“cls”); Open(L); printf(“\n\t\t\t\t1:按高分排序並顯示\n\t\t\t\t2:製作人員\n\t\t\t\t3:退出系統\n”); printf(“請選擇你要的操作:”);

for (scanf(“%d”,&sel);sel!=0;system(“cls”),menu(),scanf(“%d”,&sel)) { switch (sel) {

case 1:Sort(L);orderbyzongfen(L);getchar();printf(“\n按回車返回主選單\n”);getchar(); break;

case 2: Developer();getchar();printf(“\n按回車返回主選單\n”);getchar(); break; case 3: printf(“謝謝使用 !有問題可以與我聯絡\n\t\tqq810097972\n”); exit(0); break; default: Wrong();getchar();printf(“\n按回車返回主選單\n”);getchar(); } } break; break; }

printf(“\n |************************************************************|”);

} void menu() { printf(“\n\t\t\t\t歡迎進入成績管理系統\t\t\t\n\n\t\t1:輸入學生成績並計算\n\t\t2:按高分排序並顯示\n\t\t3:刪除資料\n\t\t4:製作人員\n\t\t5:退出系統\n\n選擇您要進入的選單,請輸入功能號(0~5):”) ; //主介面)

} void printstart() { printf(“\n——————————————————————————————————-\n”); } void Wrong() { printf(“提示:輸入錯誤!\n”); } void Nofind() { printf(“提示:沒有找到該學生!\n”); }

void Developer() { printf(“\n\n\n\t\t\t\t\t製作人員:\n\t\t\t\t\t\t ————何濤\n\n\n”); }

void printc() { printf(“學號\t姓名\t數學成績 英語成績 電腦成績 總分\n”);