c語言writetotext的簡單介紹

本文目錄一覽:

c語言學生管理系統源代碼

頭文件:::

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#include “stdio.h”

#include “string.h”

#include “malloc.h”

#define LEN sizeof(struct message_student) /*一個結構體數組元素的長度*/

#define numsubs 5 /*學科數目*/

typedef struct message_student /*結構體定義*/

{

char number[6];

char name[20];

char sex[4];

float subject[numsubs];

float score;

float average;

int index;

}student;

extern int numstus; /*學生數目*/

extern student *pointer; /*指向結構體數組*/

extern int lens;

int menu_select(); /*函數聲明*/

int openfile(student stu[]);

int findrecord(student stud[]);

int writetotext(student stud[]);

void welcome();

void display1();

void showtable();

void sort(student stu[]);

void deleterecord(student stu[],int i);

void addrecord(student stud[]);

void display(student stud[],int n1,int n2);

void amendrecord(student stud[]);

void count(student stud[]);

void sortnum(student stud[]);

void sortnum2(student stud[]);

void sortname(student stud[]);

void sortname2(student stud[]);

void sortcount(student stud[]);

void sortcount2(student stud[]);

void statistic(student stud[]);

void display1();

#endif

#include “head.h”

int menu_select()

{

char c;

printf(“\n\n”);

printf(” | 1. 增加學生記錄 5.統計信息 |\n”);

printf(” | 2. 查詢學生記錄 6.打開文件 |\n”);

printf(” | 3. 修改學生記錄 7.保存文件 |\n”);

printf(” | 4. 學生紀錄排序 8.顯示記錄 |\n”);

printf(” | 0.退出系統 |\n”);

printf(“\n\n”);

printf(“請選擇(0-8):”);

c=getchar();

getchar();

return (c-‘0’);

}

#include “head.h”

int findrecord(student stud[]) /*查找信息*/

{

char str[2];

int i,num;

if(numstus==0)

{

printf(“沒有可被查找的記錄\n”);

return -1;

}

else

{

printf(“以何種方式查找?\n1.學號\t2.姓名\t3.名次\n”);

gets(str);

if(str[0]==’1′) /*按學號查找*/

{

printf(“請輸入學號:”);

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].number)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]==’2′) /*按姓名查找*/

{

printf(“請輸入姓名:”);

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].name)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]==’3′) /*按名次查找*/

{

printf(“請輸入名次:”);

scanf(“%d”,num);

getchar();

for(i=0;i=numstus;i++)

if(num==stud[i].index)

{

display(stud,i,i);

break;

}

else continue;

}

if(inumstus)

{

printf(“沒有查找所要的信息。\n”);

return -1;

}

return i;

}

}

#include”head.h”

int openfile(student stu[])

{

int i=0,j;

FILE *fp;

char filename[20],str[2];

if(numstus!=0)

{

printf(“已經有記錄存在,是否保存?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

writetotext(stu);

}

printf(“請輸入文件名:”);

gets(filename);

numstus=0;

if((fp=fopen(filename,”rb+”))==NULL)

{

printf(“無法打開該文件\n”);

return(-1);

}

fscanf(fp,”%d”,numstus);

fgetc(fp);

while(inumstus)

{

fscanf(fp,”%s”,stu[i].number);

fscanf(fp,”%s”,stu[i].name);

fscanf(fp,”%s”,stu[i].sex);

for(j=0;jnumsubs;j++)

fscanf(fp,”%f”,stu[i].subject[j]);

fscanf(fp,”%f”,stu[i].score);

fscanf(fp,”%f”,stu[i].average);

fscanf(fp,”%d”,stu[i].index);

i++;

}

fclose(fp);

printf(“文件讀取成功\n”);

printf(“是否顯示紀錄?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

display(stu,0,numstus-1);

return(0);

}

#include “head.h”

void sort(student stud[])

{

int i,j=0;

char str[5];

student *p;

p=stud;

if(numstus==0)

{

printf(“沒有可供查詢的記錄!”);

}

while(1)

{

for(i=0;;i++)

{

printf(” 請輸入查詢方式:”);

printf(“(直接輸入回車則結束查詢操作)\n”);

printf(“1.按照學號\t”);

printf(“2.按照姓名\t”);

printf(“3.按照名次\n”);

gets(str);

if(strlen(str)==0) break;

if(str[0]==’1′)

{

printf(“請輸入排序次序:\n”);

printf(“1.升序排列\t”);

printf(“2.降序排列\n”);

gets(str);

if(str[0]==’1′)

sortnum2(p);

else

sortnum(p);

display(stud,0,numstus-1);

}

else if(str[0]==’2′)

{

printf(“請輸入排序次序:\n”);

printf(“1.升序排列\t”);

printf(“2.降序排列\n”);

gets(str);

if(str[0]==’1′)

sortname2(p);

else

sortname(p);

display(stud,0,numstus-1);

}

else if(str[0]==’3′)

{

printf(“請輸入排序次序:\n”);

printf(“1.升序排列\t”);

printf(“2.降序排列\n”);

gets(str);

if(str[0]==’1′)

sortcount2(p);

else

sortcount(p);

display(stud,0,numstus-1);

}

else printf(“請輸入1~3”);

printf(“是否退出排序?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’) break;

}

return;

}

}

void sortnum(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].number,stud[j].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortnum2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].number,stud[j+1].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].name,stud[j].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].name,stud[j+1].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j+1].indexstud[j].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j].indexstud[j+1].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

#include”head.h”

void statistic(student stud[]) /*新增功能,輸出統計信息*/

{

int i,j=0,k=0;

char c1,str[2];

float average[numsubs],sum=0;

if(numstus==0)

printf(“沒有可被查找的記錄\n”);

else

{

while(1)

{

printf(“下面將統計考試成績\n”);

printf(“請選擇你要統計哪科的成績 1.A\t2.B\t3.C\t4.D\t5.E\n”);

c1=getchar();

printf(“\t一共有個%d記錄\n”,numstus); /*總共記錄數*/

switch(c1)

{

case ‘1’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[0];

if(stud[k].subject[0]stud[i].subject[0]) k=i;

if(stud[j].subject[0]stud[i].subject[0]) j=i;

}

average[0]=sum/numstus;

printf(“\t科目A的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[0]);

printf(“\t科目A的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[0]);

printf(“\t科目A的平均分是 %5.2f\n”,average[0]); /*平均分*/

break;

case ‘2’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[1];

if(stud[k].subject[1]stud[i].subject[1]) k=i;

if(stud[j].subject[1]stud[i].subject[1]) j=i;

}

average[1]=sum/numstus;

printf(“\t科目B的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[1]);

printf(“\t科目B的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[1]);

printf(“\t科目B的平均分是 %5.2f\n”,average[1]); /*平均分*/

break;

case ‘3’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[2];

if(stud[k].subject[2]stud[i].subject[2]) k=i;

if(stud[j].subject[2]stud[i].subject[2]) j=i;

}

average[2]=sum/numstus;

printf(“\t科目C的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[2]);

printf(“\t科目C的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[2]);

printf(“\t科目C的平均分是 %5.2f\n”,average[2]); /*平均分*/

break;

case ‘4’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[3];

if(stud[k].subject[3]stud[i].subject[3]) k=i;

if(stud[j].subject[3]stud[i].subject[3]) j=i;

}

average[3]=sum/numstus;

printf(“\t科目D的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[3]);

printf(“\t科目D的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[3]);

printf(“\t科目D的平均分是 %5.2f\n”,average[3]); /*平均分*/

break;

case ‘5’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[4];

if(stud[k].subject[4]stud[i].subject[4]) k=i;

if(stud[j].subject[4]stud[i].subject[4]) j=i;

}

average[4]=sum/numstus;

printf(“\t科目E的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[4]);

printf(“\t科目E的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[4]);

printf(“\t科目E的平均分是 %5.2f\n”,average[4]); /*平均分*/

break;

default:printf(“輸入錯誤!請輸入1~5之間的數\n”);

}

sum=0;

getchar();

printf(“是否繼續進行統計?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’) ;

else break;

}

}

}

#include”head.h”

int writetotext(student stud[]) /*將所有記錄寫入文件*/

{

int i=0,j;

FILE *fp;

char filename[20];

printf(“輸入文件名稱:”);

gets(filename);

fp=fopen(filename,”w”);

fprintf(fp,”%d\n”,numstus);

while(inumstus)

{

fprintf(fp,”%s %s %s “,stud[i].number,stud[i].name,stud[i].sex);

for(j=0;jnumsubs;j++)

fprintf(fp,”%f “,stud[i].subject[j]);

fprintf(fp,”%f %f %d “,stud[i].score,stud[i].average,stud[i].index);

i++;

}

fclose(fp);

printf(“已成功存儲!\n”);

display(stud,0,numstus-1);

numstus=0;

return 0;

}

#include”head.h”

void welcome()

{

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

printf(“\t\t\t\t這是一個學生成績管理系統\n\t\t\t\t 傾情奉獻 歡迎使用!\n”);

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

}

void showtable()

{

printf(“—————————————————————————————\n”);

printf(“學號\t姓名\t性別\tA\tB\tC\tD\tE\t總分\t平均分\t名次\n”);

printf(“—————————————————————————————\n”);

}

void display(student stud[],int n1,int n2)

{

int i;

showtable(); /*顯示錶頭*/

for(i=n1;i=n2;i++)

printf(“%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n”,stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index);

/*通過循環輸出數據*/

}

void display1()

{

printf(“\t\t本系統由計應精英一組親情製作\n\n”);

printf(“\t\t製作人員列表: (按比劃)\n”);

printf(“\t\t王慶斌\t\t\t張威\n\t\t李智\t\t\t周在峰\n\t\t楊凱\t\t\t胡楊\n”);

printf(“\n\n”);

getchar();

}

#include”head.h”

#includestring.h

void amendrecord(student stud[])

{

char str[5]; /*供用戶輸入*/

int i=-1,j;

if(numstus==0) /*沒有記錄返回*/

printf(“沒有可供修改的記錄!”);

while(i0)

{

i=findrecord(stud);

if(i=0)

{

printf(“要刪除這個學生的信息嗎?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

{

deleterecord(stud,i);

count(stud);

}

else

{

printf(“確定要修改這個學生的信息嗎?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

{

printf(“下面請重新輸入學生的信息:\n”);

printf(“請輸入學號:”);

gets(stud[i].number);

printf(“請輸入姓名:”);

gets(stud[i].name);

printf(“請輸入性別(男/女 1/0):”);

gets(str);

if(str[0]==’0′)

strcpy(stud[i].sex,”女”);

else

strcpy(stud[i].sex,”男”);

stud[i].score=0;

printf(“請按順序輸入成績:”);

for(j=0;jnumsubs;j++)

{

scanf(“%f”,stud[i].subject[j]);

stud[i].score+=stud[i].subject[j];

}

getchar();

stud[i].average=stud[i].score/numsubs;

}

count(stud);

}

display(stud,0,numstus-1);

}

printf(“是否繼續進行其他修改?(y/n)\n”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

i=-1;

else i=1;

}

}

void deleterecord(student stu[],int i) /*刪除信息*/

{

int j;

while(i=0)

{

for(j=i;jnumstus;j++)

stu[j]=stu[j+1];

numstus–;

printf(“刪除成功!\n”);

}

}

void count(student stud[])

{

int i,j;

for(i=0;inumstus;i++)

{

stud[i].index=1;

for(j=0;jnumstus;j++)

if(stud[j].scorestud[i].score)

stud[i].index++;

}

}

#include “head.h”

void addrecord(student stud[])

{

int i=0,j,num;

char str[5];

if(numstus!=0)

{

printf(“已有記錄存在是否覆蓋?(y/n)\n”);

gets(str);

if(str[0]==’Y’||str[0]==’y’)

i=0;

else i=numstus;

}

printf(“請輸入增加的學生信息條目數:”);

scanf(“%d”,num);

if(i==0)

numstus=num;

else numstus+=num;

if(numstuslens)

{

lens+=50;

pointer=(student *)realloc(pointer,lens*LEN);

}

printf(“請輸入學生信息:\n”);

for(;inumstus;i++)

{

getchar();

printf(“請輸入學號:”);

gets(pointer[i].number);

printf(“請輸入姓名:”);

gets(pointer[i].name);

printf(“請輸入性別(男/女 1/0):”);

gets(pointer[i].sex);

if(pointer[i].sex[0]==’0′) strcpy(pointer[i].sex,”女”);

else strcpy(pointer[i].sex,”男”);

printf(“請輸入各科成績:(按ABCDE的順序):”);

stud[i].score=0;

for(j=0;jnumsubs;j++)

{

scanf(“%f”,stud[i].subject[j]); /*計算總分*/

stud[i].score+=stud[i].subject[j];

}

stud[i].average=stud[i].score/numsubs; /*計算平均分*/

}

count(stud); /*附名次*/

display(stud,0,numstus-1);

getchar();

}#include “head.h”

int numstus;

int lens;

student *pointer;

void main()

{

int i=1;

char str[2];

lens=100;

pointer=(student *)malloc(lens*LEN); /*分配內存*/

numstus=0;

welcome(); /*歡迎界面*/

while(i0)

{

i=menu_select(); /*控制菜單*/

switch(i)

{

case 1:addrecord(pointer);break; /*增加學生信息*/

case 2:findrecord(pointer);break; /*查詢學生信息*/

case 3:amendrecord(pointer);break; /*修改學生信息*/

case 4:sort(pointer);break; /*學生信息排序*/

case 5:statistic(pointer);break; /*統計信息*/

case 6:openfile(pointer);break; /*打開文件*/

case 7:writetotext(pointer);break; /*保存文件*/

case 8:display(pointer,0,numstus-1);break; /*顯示記錄*/

case 0:

if(numstus!=0) printf(“是否保存當前記錄?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

writetotext(pointer);

i=-1;break; /*退出系統*/

default:printf(“請輸入數字0~8:\n”);i=1; /*輸入錯誤*/

}

}

printf(“\t\t歡迎再次使用本系統。\n\n”);

display1();

}

自己一改就能用,給我加分哈!

打字不易,如滿意,望採納。

c語言解釋一下什麼意思

這是一個基本的switch case函數 函數執行的操作是巡檢對象A 滿足條件就執行操作B 然後跳出 比如 switch 人 case 美女 就執行 多看幾眼 然後繼續做別的 case 討厭的人 就執行 翻白眼 然後再繼續干別的

for ; ; 一般在對象是數組的時候每個分號都要寫入參數 如果不加參數 就這麼寫的話 就是巡檢這個數組

C語言 通訊錄源代碼 無鏈表 無指針

#includestdio.h /*引用庫函數*/

#includestdlib.h

#includectype.h

#includestring.htypedef struct /*定義結構體數組*/

{

char num[10]; /*學號*/

char name[20]; /*姓名*/

char sushe[20];/*宿舍*/

char tel[20];/*電話*/

char qq[20];/*QQ號碼*/

char email[20];/*電子郵箱*/

}Student;

Student stu[80]; /*結構體數組變量*/ int menu_select() /*菜單函數*/

{

char c;

do{

system(“cls”); /*運行前清屏*/

printf(“\t\t |☆☆☆☆☆☆通訊錄信息管理系統☆☆☆☆☆\n”); /*菜單選擇*/

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

printf(“\t\t |******** 1. 輸入學生信息 ***************|\n”);

printf(“\t\t |******** 2. 查看完整信息 ***************|\n”);

printf(“\t\t |******** 3. 按學號進行排列 *************|\n”);

printf(“\t\t |******** 4. 修改通訊錄信息 *************|\n”);

printf(“\t\t |******** 5. 刪除通訊錄信息 *************|\n”);

printf(“\t\t |******** 6. 按姓名檢索信息 *************|\n”);

printf(“\t\t |******** 7. 讀取文件 *******************|\n”);

printf(“\t\t |******** 8. 保存文件 *******************|\n”);

printf(“\t\t |******** 0. 退出系統 *******************|\n”);

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

printf(“\t\t |***製作人:QIANG *****|\n”);

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

printf(“\t\t (*^__^*) 您好,請選擇(*^__^*)→→→(0-8):”);

c=getchar(); /*讀入選擇*/

}while(c’0’||c’9′);

return(c-‘0’); /*返回選擇*/

}

int Input(Student stud[],int n) /*輸入若干條記錄*/

{

int i=0,p=0;

char sign,f,x[10]; /*x[10]為清除多餘的數據所用*/

while(sign!=’n’sign!=’N’) /*判斷*/

{

printf(“\t\t\t請輸入學號:”); /*交互輸入*/

scanf(“\t\t\t%s”,stud[n+i].num);

for(p=0;p=n;p++)

{

if(strcmp(stud[p].num,stud[n+i].num)==0)

{

printf(“\t\t\t學號已經存在!\n”);

system(“pause”);

return(n);

}

}

printf(“\t\t\t請輸入姓名:”);

scanf(“\t\t\t%s”,stud[n+i].name);

printf(“\t\t\t請輸入住址:”);

scanf(“\t\t\t%s”,stud[n+i].sushe);

printf(“\t\t\t請輸入電話號碼:”);

scanf(“\t\t\t%s”,stud[n+i].tel);

printf(“\t\t\t請輸入QQ:”);

scanf(“\t\t\t%s”,stud[n+i].qq);

printf(“\t\t\t請輸入電子郵箱:”);

scanf(“\t\t\t%s”,stud[n+i].email);

gets(x); /*清除多餘的輸入*/

printf(“\t\t\tany more records?(Y/N)”);

scanf(“\t\t\t%c”,sign); /*輸入判斷*/

i++;

}

return(n+i);

} void Display(Student stud[],int n) /*顯示所有記錄*/

{

int i;

printf(“——————————————————————————–\n”); /*格式頭*/

printf(“學號 名字 住址 電話號碼 QQ號碼 電子郵箱\n”);

printf(“——————————————————————————–\n”);

for(i=1;in+1;i++) /*循環輸入*/

{

printf(“%-16s%-15s%-15s%-15s%-15s%-15s\n”,stud[i-1].num,stud[i-1].name,stud[i-1].sushe,stud[i-1].tel,stud[i-1].qq,stud[i-

1].email);

if(i1i%10==0) /*每十個暫停*/

{printf(“——————————————————————————–\n”); /*格式*/ br printf(“\t\t\t”); br system(“pause”); br printf(“——————————————————————————–\n”); br }

}

printf(“\t\t\t”);

system(“pause”);

} void Sort_by_num(Student stud[],int n) /*按學號排序*/

{ int i,j;

char t[10];

for(i=0;in-1;i++) /*冒泡法排序*/

for(j=0;jn-1-i;j++)

if(strcmp(stud[j].num,stud[j+1].num)0)

{

strcpy(t,stud[j+1].num);

strcpy(stud[j+1].num,stud[j].num);

strcpy(stud[j].num,t);

strcpy(t,stud[j+1].name);

strcpy(stud[j+1].name,stud[j].name);

strcpy(stud[j].name,t);

strcpy(t,stud[j+1].sushe);

strcpy(stud[j+1].sushe,stud[j].sushe);

strcpy(stud[j].sushe,t);

strcpy(t,stud[j+1].tel);

strcpy(stud[j+1].tel,stud[j].tel);

strcpy(stud[j].tel,t);

strcpy(t,stud[j+1].qq);

strcpy(stud[j+1].qq,stud[j].qq);

strcpy(stud[j].qq,t);

strcpy(t,stud[j+1].email);

strcpy(stud[j+1].email,stud[j].email);

strcpy(stud[j].email,t);

}

} void Query_a_record(Student stud[],int n) /*查找並顯示一個記錄*/

{

char s[20];

int i=0;

printf(“\t\t\t請輸入要查找的人的名字:”); /*交互式輸入*/

scanf(“\t\t\t%s”,s);

while(strcmp(stud[i].name,s)!=0in) i++; /*查找判斷*/

if(i==n)

{

printf(“\t\t\t對不起,查無此人!\n”); /*輸入失敗信息*/

return;

}

printf(“\t\t\t學號:%s\n”,stud[i].num); /*輸出該學生信息*/

printf(“\t\t\t住址:%s\n”,stud[i].sushe);

printf(“\t\t\t電話號碼:%s\n”,stud[i].tel);

printf(“\t\t\tQQ號碼:%s\n”,stud[i].qq);

printf(“\t\t\t電子郵箱:%s\n”,stud[i].email);

}

int Delete_a_record(Student stud[],int n) /*按姓名查找,刪除一條記錄*/

{

char s[20];

int i=0,j;

printf(“\t\t\t請輸入要刪除的人的名字:”); /*交互式問尋*/

scanf(“%s”,s);

while(strcmp(stud[i].name,s)!=0in) i++; /*查找判斷*/

if(i==n)

{

printf(“\t\t\t對不起,查無此人!\n”); /*返回失敗信息*/

return(n);

}

for(j=i;jn-1;j++) /*刪除操作*/

{

strcpy(stud[j].num,stud[j+1].num);

strcpy(stud[j].sushe,stud[j+1].sushe);

strcpy(stud[j].tel,stud[j+1].tel);

strcpy(stud[j].qq,stud[j+1].qq);

strcpy(stud[j].name,stud[j+1].name);

strcpy(stud[j].email,stud[j+1].email);

}

printf(“\t\t\t刪除成功!\n”); /*返回成功信息*/

return(n-1);

}

int AddfromText(Student stud[],int n) /*從文件中讀入數據*/

{

int i=0,num;

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

char filename[20]; /*定義文件名*/

printf(“\t\t\t請您輸入要讀取的文件名:”);

scanf(“\t\t\t%s”,filename); /*輸入文件名*/

if((fp=fopen(filename,”rb”))==NULL) /*打開文件*/

{

printf(“\t\t\t打開文件失敗!\n”); /*打開失敗信息*/

printf(“\t\t\t”);

system(“pause”);

return(n);

}

fscanf(fp,”%d”,num); /*讀入總記錄量*/

while(inum) /*循環讀入數據*/

{

fscanf(fp,”%s%s%s%s%s%s”,stud[n+i].num,stud[n+i].name,stud[n+i].sushe,stud[n+i].tel,stud[n+i].qq,stud[n+i].email);

i++;

}

n+=num;

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

printf(“\t\t\t讀取成功!\n”);

printf(“\t\t\t”);

system(“pause”);

return(n);

} void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/

{

int i=0;

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

char filename[20]; /*定義文件名*/

printf(“\t\t\t保存文件\n”); /*輸入文件名*/

printf(“\t\t\t請您為文件取個名字:”);

scanf(“\t\t\t%s”,filename);

if((fp=fopen(filename,”w”))==NULL) /*打開文件*/

{

printf(“\t\t\t成功!\n”);

system(“pause”);

return;

}

fprintf(fp,”%d\n”,n); /*循環寫入數據*/

while(in)

{

fprintf(fp,”%s %s %s %s %s %s \n”,stud[i].num,stud[i].name,stud[i].sushe,stud[i].tel,stud[i].qq,stud[i].email);

i++;

}

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

printf(“成功!\n”); /*返回成功信息*/

} int Modify_a_record(Student stud[],int n) /*按姓名查找,修改一條記錄*/

{

char s[20];

char newname[20];

char newnum[20];

char newsushe[20];

char newtel[20];

char newqq[20];

char newemail[20];

int i=0;

printf(“\t\t\t輸入要修改人的名字:”); /*交互式問尋*/

scanf(“%s”,s);

while(strcmp(stud[i].name,s)!=0in) i++; /*查找判斷*/

if(i==n)

{

printf(“\t\t\t找不到這個信息!\n”); /*返回失敗信息*/

return(n+1);

}

printf(“請輸入新姓名:”);

scanf(“%s”,newname);

strncpy(stud[i].name,newname,sizeof(stud[i].name));

stud[i].name[sizeof(stud[i].name)-1]=’\0′; printf(“請輸入新學號:”);

scanf(“%s”,newnum);

strncpy(stud[i].num,newnum,sizeof(stud[i].num));

stud[i].num[sizeof(stud[i].num)-1]=’\0′; printf(“請輸入新地址:”);

scanf(“%s”,newsushe);

strncpy(stud[i].sushe,newsushe,sizeof(stud[i].sushe));

stud[i].sushe[sizeof(stud[i].sushe)-1]=’\0′; printf(“請輸入新電話號碼:”);

scanf(“%s”,newtel);

strncpy(stud[i].tel,newtel,sizeof(stud[i].tel));

stud[i].tel[sizeof(stud[i].tel)-1]=’\0′; printf(“請輸入新qq號碼:”);

scanf(“%s”,newname);

strncpy(stud[i].qq,newqq,sizeof(stud[i].qq));

stud[i].qq[sizeof(stud[i].qq)-1]=’\0′; printf(“請輸入新電子郵箱:”);

scanf(“%s”,newemail);

strncpy(stud[i].email,newemail,sizeof(stud[i].email));

stud[i].email[sizeof(stud[i].email)-1]=’\0′; printf(“\t\t\t修改信息成功咯\n”); /*返回成功信息*/

return (n);

}

void main() /*主函數*/

{

int n=0;

system(“color 1A”); //調用dos改背景與前景色

for(;;)

{

switch(menu_select()) /*選擇判斷*/

{

case 1:

printf(“\t\t\t輸入信息\n”); /*輸入若干條記錄*/

n=Input(stu,n);

break;

case 2:

printf(“\t\t\t顯示信息\n”); /*顯示所有記錄*/

Display(stu,n);

break;

case 3:

printf(“\t\t\t按學號排序\n”);

Sort_by_num(stu,n); /*按學號排序*/

printf(“\t\t\t排列成功咯!\n”);

printf(“\t\t\t”);

system(“pause”);

break;

case 4:

printf(“\t\t\t修改學生信息\n”);

n=Modify_a_record(stu,n); /*按姓名查找,修改一條記錄*/

printf(“\t\t\t”);

system(“pause”);

break;

case 5:

printf(“\t\t\t刪除學生信息\n”);

n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/

printf(“\t\t\t”);

system(“pause”);

break;

case 6:

printf(“\t\t\t查找一個信息\n”);

Query_a_record(stu,n); /*查找並顯示一個記錄*/

printf(“\t\t\t”);

system(“pause”);

break;

case 7:

printf(“\t\t\t打開保存過的文件\n”);

n=AddfromText(stu,n); /*新增功能,輸出統計信息*/

break;

case 8:

printf(“\t\t\t保存數據到文件\n”);

WritetoText(stu,n); /*循環寫入數據*/

printf(“\t\t\t”);

system(“pause”);

break;

case 0:

printf(“\t\t\t感謝使用,祝你好運哦!\n”); /*結束程序*/

printf(“\t\t\t”);

system(“pause”);

exit(0);

}

}

}

用C語言編寫宿舍管理查詢系統

以前給別人寫的,完全原創,已經在VC上編譯運行通過:

#include conio.h

#includestdio.h

#includestdlib.h

#includectype.h

#includestring.h

typedef struct /*定義結構體數組*/

{

char num[10]; /*學號*/

char name[20]; /*姓名*/

int roomID; /*房號*/

}Student;

Student stu[80]; /*結構體數組變量*/

int menu_select() /*菜單函數*/

{

char c;

do{

system(“cls”); /*運行前清屏*/

printf(“\t\t************宿舍管理查詢系統************\n”); /*菜單選擇*/

printf(“\t\t | 1. 輸入信息 |\n”);

printf(“\t\t | 2. 顯示所有信息 |\n”);

printf(“\t\t | 3. 排序 |\n”);

printf(“\t\t | 4. 查詢信息 |\n”);

printf(“\t\t | 0. Quit |\n”);

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

printf(“\t\t\t請輸入處理種類(0-4):”);

c=getchar(); /*讀入選擇*/

}while(c’0’||c’4′);

return(c-‘0’); /*返回選擇*/

}

int Input(Student stud[],int n) /*輸入若干條記錄*/

{int i=0;

char sign,x[10]; /*x[10]為清除多餘的數據所用*/

while(sign!=’n’sign!=’N’) /*判斷*/

{

printf(“\t\t\t學號:”); /*交互輸入*/

scanf(“\t\t\t%s”,stud[n+i].num);

printf(“\t\t\t姓名:”);

scanf(“\t\t\t%s”,stud[n+i].name);

printf(“\t\t\t房號:”);

scanf(“\t\t\t%d”,stud[n+i].roomID);

gets(x); /*清除多餘的輸入*/

printf(“\t\t\t還需要繼續輸入嗎?(Y/N)”);

scanf(“\t\t\t%c”,sign); /*輸入判斷*/

i++;

}

return(n+i);

}

void Display(Student stud[],int n) /*顯示所有記錄*/

{

int i;

printf(“\t\t\t———————————–\n”); /*格式頭*/

printf(“\t\t\t學號\t\t姓名\t\t房號\n”);

printf(“\t\t\t———————————–\n”);

for(i=1;in+1;i++) /*循環輸入*/

{

printf(“\t\t\t%-16s%-15s%d\n”,stud[i-1].num,stud[i-1].name,stud[i-1].roomID);

if(i1i%10==0) /*每十個暫停*/

{

printf(“\t\t\t———————————–\n”); /*格式*/

printf(“\t\t\t”);

system(“pause”);

printf(“\t\t\t———————————–\n”);

}

}

printf(“\t\t\t”);

system(“pause”);

}

void Sort_by_num(Student stud[],int n) /*按學號排序*/

{ int i,j,*p,*q,s;

char t[10];

for(i=0;in-1;i++) /*冒泡法排序*/

for(j=0;jn-1-i;j++)

if(strcmp(stud[j].num,stud[j+1].num)0)

{strcpy(t,stud[j+1].num);

strcpy(stud[j+1].num,stud[j].num);

strcpy(stud[j].num,t);

strcpy(t,stud[j+1].name);

strcpy(stud[j+1].name,stud[j].name);

strcpy(stud[j].name,t);

p=stud[j+1].roomID;

q=stud[j].roomID;

s=*p;

*p=*q;

*q=s;

}

Display(stu,n);

}

void Sort_by_name(Student stud[],int n) /*按姓名排序*/

{ int i,j,*p,*q,s;

char t[10];

for(i=0;in-1;i++) /*冒泡法排序*/

for(j=0;jn-1-i;j++)

if(strcmp(stud[j].name,stud[j+1].name)0)

{strcpy(t,stud[j+1].num);

strcpy(stud[j+1].num,stud[j].num);

strcpy(stud[j].num,t);

strcpy(t,stud[j+1].name);

strcpy(stud[j+1].name,stud[j].name);

strcpy(stud[j].name,t);

p=stud[j+1].roomID;

q=stud[j].roomID;

s=*p;

*p=*q;

*q=s;

}

Display(stu,n);

}

void Sort_by_room(Student stud[],int n) /*按房號排序*/

{ int i,j,*p,*q,s;

char t[10];

for(i=0;in-1;i++) /*冒泡法排序*/

for(j=0;jn-1-i;j++)

if(stud[j].roomIDstud[j+1].roomID)

{strcpy(t,stud[j+1].num);

strcpy(stud[j+1].num,stud[j].num);

strcpy(stud[j].num,t);

strcpy(t,stud[j+1].name);

strcpy(stud[j+1].name,stud[j].name);

strcpy(stud[j].name,t);

p=stud[j+1].roomID;

q=stud[j].roomID;

s=*p;

*p=*q;

*q=s;

}

Display(stu,n);

}

void Query_a_record_by_name(Student stud[],int n) /*查找並顯示一個記錄*/

{

char s[20];

int i=0;

printf(“\t\t\t請輸入姓名:”); /*交互式輸入*/

scanf(“\t\t\t%s”,s);

while(strcmp(stud[i].name,s)!=0in) i++; /*查找判斷*/

if(i==n)

{ printf(“\t\t\t沒有找到相關信息!\n”); /*輸入失敗信息*/

return;

}

printf(“\t\t\this(her) number:%s\n”,stud[i].name);/*輸出該學生信息*/

printf(“\t\t\this(her) number:%s\n”,stud[i].num);

printf(“\t\t\this(her) roomID:%d\n”,stud[i].roomID);

}

void Query_a_record_by_num(Student stud[],int n) /*查找並顯示一個記錄*/

{

char s[20];

int i=0;

printf(“\t\t\t請輸入學號:”); /*交互式輸入*/

scanf(“\t\t\t%s”,s);

while(strcmp(stud[i].num,s)!=0in) i++; /*查找判斷*/

if(i==n)

{ printf(“\t\t\t沒有找到相關信息!\n”); /*輸入失敗信息*/

return;

}

printf(“\t\t\this(her) number:%s\n”,stud[i].name);/*輸出該學生信息*/

printf(“\t\t\this(her) number:%s\n”,stud[i].num);

printf(“\t\t\this(her) roomID:%d\n”,stud[i].roomID);

}

void Query_a_record_by_room(Student stud[],int n) /*查找並顯示一個記錄*/

{

int s;;

int i=0;

printf(“\t\t\t請輸入房號:”); /*交互式輸入*/

scanf(“\t\t\t%d”,s);

while(stud[i].roomID==s) i++; /*查找判斷*/

if(i==n)

{ printf(“\t\t\t沒有找到相關信息!\n”); /*輸入失敗信息*/

return;

}

printf(“\t\t\this(her) number:%s\n”,stud[i].name);/*輸出該學生信息*/

printf(“\t\t\this(her) number:%s\n”,stud[i].num);

printf(“\t\t\this(her) roomID:%d\n”,stud[i].roomID);

}

void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/

{

int i=0;

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

if((fp=fopen(“stu.txt”,”w”))==NULL) /*打開文件*/

{

printf(“\t\t\t文件打開失敗!!\n”);

system(“pause”);

return;

}

fprintf(fp,”%d\n”,n); /*循環寫入數據*/

while(in)

{

fprintf(fp,”%-16s%-15s%d\n”,stud[i].num,stud[i].name,stud[i].roomID);

i++;

}

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

printf(“文件保存完畢!\n”); /*返回成功信息*/

}

void main() /*主函數*/

{

int n=0,i;

for(;;)

{

switch(menu_select()) /*選擇判斷*/

{

case 1:

printf(“\t\t\t輸入相關情報\n”); /*輸入若干條記錄*/

n=Input(stu,n);

break;

case 2:

printf(“\t\t\宿舍狀況一覽\n”); /*顯示所有記錄*/

Display(stu,n);

break;

case 3:

printf(“\t\t\t請輸入按什麼進行排序(1.姓名、2.學號、3.房號)\n\t\t\t”);

scanf(“%d”,i);

while(i)

{

if(i1||i3)

{

printf(“錯誤輸入!!\n”);

printf(“\t\t\t請輸入按什麼進行排序(1.姓名、2.學號、3.房號)\n\t\t\t”);

continue;

}

switch(i)

{

case 1:

Sort_by_name(stu,n);

break;

case 2:

Sort_by_num(stu,n);

break;

case 3:

Sort_by_room(stu,n);

break;

}

break;

}

printf(“\t\t\t排序完畢!\n”);

printf(“\t\t\t”);

WritetoText(stu,n);

system(“pause”);

break;

case 4:

printf(“\t\t\t請輸入按什麼進行查詢(1.姓名、2.學號、3.房號)\n\t\t\t”);

scanf(“%d”,i);

while(i)

{

if(i1||i3)

{

printf(“錯誤輸入!!\n”);

printf(“\t\t\t請輸入按什麼進行查詢(1.姓名、2.學號、3.房號)\n\t\t\t”);

continue;

}

switch(i)

{

case 1:

Query_a_record_by_name(stu,n);

break;

case 2:

Query_a_record_by_num(stu,n);

break;

case 3:

Query_a_record_by_room(stu,n);

break;

}

break;

}

printf(“\t\t\t”);

system(“pause”);

break;

case 0:

printf(“\t\t\t歡迎使用!!\n”); /*結束程序*/

printf(“\t\t\t”);

system(“pause”);

exit(0);

}

}

}

學生成績管理系統 C語言

頭文件::: #ifndef H_STUDENT_HH #define H_STUDENT_HH #include “stdio.h” #include “string.h” #include “malloc.h” #define LEN sizeof(struct message_student) /*一個結構體數組元素的長度*/ #define numsubs 5 /*學科數目*/ typedef struct message_student /*結構體定義*/ { char number[6]; char name[20]; char sex[4]; float subject[numsubs]; float score; float average; int index; }student; extern int numstus; /*學生數目*/ extern student *pointer; /*指向結構體數組*/ extern int lens; int menu_select(); /*函數聲明*/ int openfile(student stu[]); int findrecord(student stud[]); int writetotext(student stud[]); void welcome(); void display1(); void showtable(); void sort(student stu[]); void deleterecord(student stu[],int i); void addrecord(student stud[]); void display(student stud[],int n1,int n2); void amendrecord(student stud[]); void count(student stud[]); void sortnum(student stud[]); void sortnum2(student stud[]); void sortname(student stud[]); void sortname2(student stud[]); void sortcount(student stud[]); void sortcount2(student stud[]); void statistic(student stud[]); void display1(); #endif #include “head.h” int menu_select() { char c; printf(“\n\n”); printf(” | 1. 增加學生記錄 5.統計信息 |\n”); printf(” | 2. 查詢學生記錄 6.打開文件 |\n”); printf(” | 3. 修改學生記錄 7.保存文件 |\n”); printf(” | 4. 學生紀錄排序 8.顯示記錄 |\n”); printf(” | 0.退出系統 |\n”); printf(“\n\n”); printf(“請選擇(0-8):”); c=getchar(); getchar(); return (c-‘0′); } #include “head.h” int findrecord(student stud[]) /*查找信息*/ { char str[2]; int i,num; if(numstus==0) { printf(“沒有可被查找的記錄\n”); return -1; } else { printf(“以何種方式查找?\n1.學號\t2.姓名\t3.名次\n”); gets(str); if(str[0]==’1′) /*按學號查找*/ { printf(“請輸入學號:”); gets(str); for(i=0;i=numstus;i++) if(strcmp(str,stud[i].number)==0) { display(stud,i,i); break; } else continue; } else if(str[0]==’2′) /*按姓名查找*/ { printf(“請輸入姓名:”); gets(str); for(i=0;i=numstus;i++) if(strcmp(str,stud[i].name)==0) { display(stud,i,i); break; } else continue; } else if(str[0]==’3′) /*按名次查找*/ { printf(“請輸入名次:”); scanf(“%d”,num); getchar(); for(i=0;i=numstus;i++) if(num==stud[i].index) { display(stud,i,i); break; } else continue; } if(inumstus) { printf(“沒有查找所要的信息。\n”); return -1; } return i; } } #include”head.h” int openfile(student stu[]) { int i=0,j; FILE *fp; char filename[20],str[2]; if(numstus!=0) { printf(“已經有記錄存在,是否保存?(y/n)”); gets(str); if(str[0]==’y’||str[0]==’Y’) writetotext(stu); } printf(“請輸入文件名:”); gets(filename); numstus=0; if((fp=fopen(filename,”rb+”))==NULL) { printf(“無法打開該文件\n”); return(-1); } fscanf(fp,”%d”,numstus); fgetc(fp); while(inumstus) { fscanf(fp,”%s”,stu[i].number); fscanf(fp,”%s”,stu[i].name); fscanf(fp,”%s”,stu[i].sex); for(j=0;jnumsubs;j++) fscanf(fp,”%f”,stu[i].subject[j]); fscanf(fp,”%f”,stu[i].score); fscanf(fp,”%f”,stu[i].average); fscanf(fp,”%d”,stu[i].index); i++; } fclose(fp); printf(“文件讀取成功\n”); printf(“是否顯示紀錄?(y/n)”); gets(str); if(str[0]==’y’||str[0]==’Y’) display(stu,0,numstus-1); return(0); } #include “head.h” void sort(student stud[]) { int i,j=0; char str[5]; student *p; p=stud; if(numstus==0) { printf(“沒有可供查詢的記錄!”); } while(1) { for(i=0;;i++) { printf(” 請輸入查詢方式:”); printf(“(直接輸入回車則結束查詢操作)\n”); printf(“1.按照學號\t”); printf(“2.按照姓名\t”); printf(“3.按照名次\n”); gets(str); if(strlen(str)==0) break; if(str[0]==’1′) { printf(“請輸入排序次序:\n”); printf(“1.升序排列\t”); printf(“2.降序排列\n”); gets(str); if(str[0]==’1′) sortnum2(p); else sortnum(p); display(stud,0,numstus-1); } else if(str[0]==’2′) { printf(“請輸入排序次序:\n”); printf(“1.升序排列\t”); printf(“2.降序排列\n”); gets(str); if(str[0]==’1′) sortname2(p); else sortname(p); display(stud,0,numstus-1); } else if(str[0]==’3′) { printf(“請輸入排序次序:\n”); printf(“1.升序排列\t”); printf(“2.降序排列\n”); gets(str); if(str[0]==’1′) sortcount2(p); else sortcount(p); display(stud,0,numstus-1); } else printf(“請輸入1~3”); printf(“是否退出排序?(y/n)”); gets(str); if(str[0]==’y’||str[0]==’Y’) break; } return; } } void sortnum(student stud[]) { int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i++) for(j=0;jnumstus-i-1;j++) { if(strcmp(stud[j+1].number,stud[j].number)0) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } void sortnum2(student stud[]) { int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i++) for(j=0;jnumstus-i-1;j++) { if(strcmp(stud[j].number,stud[j+1].number)0) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } void sortname(student stud[]) { int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i++) for(j=0;jnumstus-i-1;j++) { if(strcmp(stud[j+1].name,stud[j].name)0) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } void sortname2(student stud[]) { int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i++) for(j=0;jnumstus-i-1;j++) { if(strcmp(stud[j].name,stud[j+1].name)0) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } void sortcount(student stud[]) { int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i++) for(j=0;jnumstus-i-1;j++) { if(stud[j+1].indexstud[j].index) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } void sortcount2(student stud[]) { int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i++) for(j=0;jnumstus-i-1;j++) { if(stud[j].indexstud[j+1].index) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } #include”head.h” void statistic(student stud[]) /*新增功能,輸出統計信息*/ { int i,j=0,k=0; char c1,str[2]; float average[numsubs],sum=0; if(numstus==0) printf(“沒有可被查找的記錄\n”); else { while(1) { printf(“下面將統計考試成績\n”); printf(“請選擇你要統計哪科的成績 1.A\t2.B\t3.C\t4.D\t5.E\n”); c1=getchar(); printf(“\t一共有個%d記錄\n”,numstus); /*總共記錄數*/ switch(c1) { case ‘1’: for(i=0;inumstus;i++) /*循環輸入判斷*/ { sum+=stud[i].subject[0]; if(stud[k].subject[0]stud[i].subject[0]) k=i; if(stud[j].subject[0]stud[i].subject[0]) j=i; } average[0]=sum/numstus; printf(“\t科目A的最高分:\n”); /*最高分*/ printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[0]); printf(“\t科目A的最低分是:\n”); /*最低分*/ printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[0]); printf(“\t科目A的平均分是 %5.2f\n”,average[0]); /*平均分*/ break; case ‘2’: for(i=0;inumstus;i++) /*循環輸入判斷*/ { sum+=stud[i].subject[1]; if(stud[k].subject[1]stud[i].subject[1]) k=i; if(stud[j].subject[1]stud[i].subject[1]) j=i; } average[1]=sum/numstus; printf(“\t科目B的最高分:\n”); /*最高分*/ printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[1]); printf(“\t科目B的最低分是:\n”); /*最低分*/ printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[1]); printf(“\t科目B的平均分是 %5.2f\n”,average[1]); /*平均分*/ break; case ‘3’: for(i=0;inumstus;i++) /*循環輸入判斷*/ { sum+=stud[i].subject[2]; if(stud[k].subject[2]stud[i].subject[2]) k=i; if(stud[j].subject[2]stud[i].subject[2]) j=i; } average[2]=sum/numstus; printf(“\t科目C的最高分:\n”); /*最高分*/ printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[2]); printf(“\t科目C的最低分是:\n”); /*最低分*/ printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[2]); printf(“\t科目C的平均分是 %5.2f\n”,average[2]); /*平均分*/ break; case ‘4’: for(i=0;inumstus;i++) /*循環輸入判斷*/ { sum+=stud[i].subject[3]; if(stud[k].subject[3]stud[i].subject[3]) k=i; if(stud[j].subject[3]stud[i].subject[3]) j=i; } average[3]=sum/numstus; printf(“\t科目D的最高分:\n”); /*最高分*/ printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[3]); printf(“\t科目D的最低分是:\n”); /*最低分*/ printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[3]); printf(“\t科目D的平均分是 %5.2f\n”,average[3]); /*平均分*/ break; case ‘5’: for(i=0;inumstus;i++) /*循環輸入判斷*/ { sum+=stud[i].subject[4]; if(stud[k].subject[4]stud[i].subject[4]) k=i; if(stud[j].subject[4]stud[i].subject[4]) j=i; } average[4]=sum/numstus; printf(“\t科目E的最高分:\n”); /*最高分*/ printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[4]); printf(“\t科目E的最低分是:\n”); /*最低分*/ printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[4]); printf(“\t科目E的平均分是 %5.2f\n”,average[4]); /*平均分*/ break; default:printf(“輸入錯誤!請輸入1~5之間的數\n”); } sum=0; getchar(); printf(“是否繼續進行統計?(y/n)”); gets(str); if(str[0]==’y’||str[0]==’Y’) ; else break; } } } #include”head.h” int writetotext(student stud[]) /*將所有記錄寫入文件*/ { int i=0,j; FILE *fp; char filename[20]; printf(“輸入文件名稱:”); gets(filename); fp=fopen(filename,”w”); fprintf(fp,”%d\n”,numstus); while(inumstus) { fprintf(fp,”%s %s %s “,stud[i].number,stud[i].name,stud[i].sex); for(j=0;jnumsubs;j++) fprintf(fp,”%f “,stud[i].subject[j]); fprintf(fp,”%f %f %d “,stud[i].score,stud[i].average,stud[i].index); i++; } fclose(fp); printf(“已成功存儲!\n”); display(stud,0,numstus-1); numstus=0; return 0; } #include”head.h” void welcome() { printf(“\t*************************************************************\n”); printf(“\t\t\t\t這是一個學生成績管理系統\n\t\t\t\t 傾情奉獻 歡迎使用!\n”); printf(“\t*************************************************************\n”); } void showtable() { printf(“—————————————————————————————\n”); printf(“學號\t姓名\t性別\tA\tB\tC\tD\tE\t總分\t平均分\t名次\n”); printf(“—————————————————————————————\n”); } void display(student stud[],int n1,int n2) { int i; showtable(); /*顯示錶頭*/ for(i=n1;i=n2;i++) printf(“%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n”,stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index); /*通過循環輸出數據*/ } void display1() { printf(“\t\t本系統由計應精英一組親情製作\n\n”); printf(“\t\t製作人員列表: (按比劃)\n”); printf(“\t\t王慶斌\t\t\t張威\n\t\t李智\t\t\t周在峰\n\t\t楊凱\t\t\t胡楊\n”); printf(“\n\n”); getchar(); } #include”head.h” #includestring.h void amendrecord(student stud[]) { char str[5]; /*供用戶輸入*/ int i=-1,j; if(numstus==0) /*沒有記錄返回*/ printf(“沒有可供修改的記錄!”); while(i0) { i=findrecord(stud); if(i=0) { printf(“要刪除這個學生的信息嗎?(y/n)”); gets(str); if(str[0]==’y’||str[0]==’Y’) { deleterecord(stud,i); count(stud); } else { printf(“確定要修改這個學生的信息嗎?(y/n)”); gets(str); if(str[0]==’y’||str[0]==’Y’) { printf(“下面請重新輸入學生的信息:\n”); printf(“請輸入學號:”); gets(stud[i].number); printf(“請輸入姓名:”); gets(stud[i].name); printf(“請輸入性別(男/女 1/0):”); gets(str); if(str[0]==’0′) strcpy(stud[i].sex,”女”); else strcpy(stud[i].sex,”男”); stud[i].score=0; printf(“請按順序輸入成績:”); for(j=0;jnumsubs;j++) { scanf(“%f”,stud[i].subject[j]); stud[i].score+=stud[i].subject[j]; } getchar(); stud[i].average=stud[i].score/numsubs; } count(stud); } display(stud,0,numstus-1); } printf(“是否繼續進行其他修改?(y/n)\n”); gets(str); if(str[0]==’y’||str[0]==’Y’) i=-1; else i=1; } } void deleterecord(student stu[],int i) /*刪除信息*/ { int j; while(i=0) { for(j=i;jnumstus;j++) stu[j]=stu[j+1]; numstus–; printf(“刪除成功!\n”); } } void count(student stud[]) { int i,j; for(i=0;inumstus;i++) { stud[i].index=1; for(j=0;jnumstus;j++) if(stud[j].scorestud[i].score) stud[i].index++; } } #include “head.h” void addrecord(student stud[]) { int i=0,j,num; char str[5]; if(numstus!=0) { printf(“已有記錄存在是否覆蓋?(y/n)\n”); gets(str); if(str[0]==’Y’||str[0]==’y’) i=0; else i=numstus; } printf(“請輸入增加的學生信息條目數:”); scanf(“%d”,num); if(i==0) numstus=num; else numstus+=num; if(numstuslens) { lens+=50; pointer=(student *)realloc(pointer,lens*LEN); } printf(“請輸入學生信息:\n”); for(;inumstus;i++) { getchar(); printf(“請輸入學號:”); gets(pointer[i].number); printf(“請輸入姓名:”); gets(pointer[i].name); printf(“請輸入性別(男/女 1/0):”); gets(pointer[i].sex); if(pointer[i].sex[0]==’0′) strcpy(pointer[i].sex,”女”); else strcpy(pointer[i].sex,”男”); printf(“請輸入各科成績:(按ABCDE的順序):”); stud[i].score=0; for(j=0;jnumsubs;j++) { scanf(“%f”,stud[i].subject[j]); /*計算總分*/ stud[i].score+=stud[i].subject[j]; } stud[i].average=stud[i].score/numsubs; /*計算平均分*/ } count(stud); /*附名次*/ display(stud,0,numstus-1); getchar(); }#include “head.h” int numstus; int lens; student *pointer; void main() { int i=1; char str[2]; lens=100; pointer=(student *)malloc(lens*LEN); /*分配內存*/ numstus=0; welcome(); /*歡迎界面*/ while(i0) { i=menu_select(); /*控制菜單*/ switch(i) { case 1:addrecord(pointer);break; /*增加學生信息*/ case 2:findrecord(pointer);break; /*查詢學生信息*/ case 3:amendrecord(pointer);break; /*修改學生信息*/ case 4:sort(pointer);break; /*學生信息排序*/ case 5:statistic(pointer);break; /*統計信息*/ case 6:openfile(pointer);break; /*打開文件*/ case 7:writetotext(pointer);break; /*保存文件*/ case 8:display(pointer,0,numstus-1);break; /*顯示記錄*/ case 0: if(numstus!=0) printf(“是否保存當前記錄?(y/n)”); gets(str); if(str[0]==’y’||str[0]==’Y’) writetotext(pointer); i=-1;break; /*退出系統*/ default:printf(“請輸入數字0~8:\n”);i=1; /*輸入錯誤*/ } } printf(“\t\t歡迎再次使用本系統。\n\n”); display1(); } 自己一改就能用,給我加分哈!

c語言程序學生成績管理系統源代碼

頭文件:::

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#include “stdio.h”

#include “string.h”

#include “malloc.h”

#define LEN sizeof(struct message_student) /*一個結構體數組元素的長度*/

#define numsubs 5 /*學科數目*/

typedef struct message_student /*結構體定義*/

{

char number[6];

char name[20];

char sex[4];

float subject[numsubs];

float score;

float average;

int index;

}student;

extern int numstus; /*學生數目*/

extern student *pointer; /*指向結構體數組*/

extern int lens;

int menu_select(); /*函數聲明*/

int openfile(student stu[]);

int findrecord(student stud[]);

int writetotext(student stud[]);

void welcome();

void display1();

void showtable();

void sort(student stu[]);

void deleterecord(student stu[],int i);

void addrecord(student stud[]);

void display(student stud[],int n1,int n2);

void amendrecord(student stud[]);

void count(student stud[]);

void sortnum(student stud[]);

void sortnum2(student stud[]);

void sortname(student stud[]);

void sortname2(student stud[]);

void sortcount(student stud[]);

void sortcount2(student stud[]);

void statistic(student stud[]);

void display1();

#endif

#include “head.h”

int menu_select()

{

char c;

printf(“\n\n”);

printf(” | 1. 增加學生記錄 5.統計信息 |\n”);

printf(” | 2. 查詢學生記錄 6.打開文件 |\n”);

printf(” | 3. 修改學生記錄 7.保存文件 |\n”);

printf(” | 4. 學生紀錄排序 8.顯示記錄 |\n”);

printf(” | 0.退出系統 |\n”);

printf(“\n\n”);

printf(“請選擇(0-8):”);

c=getchar();

getchar();

return (c-‘0’);

}

#include “head.h”

int findrecord(student stud[]) /*查找信息*/

{

char str[2];

int i,num;

if(numstus==0)

{

printf(“沒有可被查找的記錄\n”);

return -1;

}

else

{

printf(“以何種方式查找?\n1.學號\t2.姓名\t3.名次\n”);

gets(str);

if(str[0]==’1′) /*按學號查找*/

{

printf(“請輸入學號:”);

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].number)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]==’2′) /*按姓名查找*/

{

printf(“請輸入姓名:”);

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].name)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]==’3′) /*按名次查找*/

{

printf(“請輸入名次:”);

scanf(“%d”,num);

getchar();

for(i=0;i=numstus;i++)

if(num==stud[i].index)

{

display(stud,i,i);

break;

}

else continue;

}

if(inumstus)

{

printf(“沒有查找所要的信息。\n”);

return -1;

}

return i;

}

}

#include”head.h”

int openfile(student stu[])

{

int i=0,j;

FILE *fp;

char filename[20],str[2];

if(numstus!=0)

{

printf(“已經有記錄存在,是否保存?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

writetotext(stu);

}

printf(“請輸入文件名:”);

gets(filename);

numstus=0;

if((fp=fopen(filename,”rb+”))==NULL)

{

printf(“無法打開該文件\n”);

return(-1);

}

fscanf(fp,”%d”,numstus);

fgetc(fp);

while(inumstus)

{

fscanf(fp,”%s”,stu[i].number);

fscanf(fp,”%s”,stu[i].name);

fscanf(fp,”%s”,stu[i].sex);

for(j=0;jnumsubs;j++)

fscanf(fp,”%f”,stu[i].subject[j]);

fscanf(fp,”%f”,stu[i].score);

fscanf(fp,”%f”,stu[i].average);

fscanf(fp,”%d”,stu[i].index);

i++;

}

fclose(fp);

printf(“文件讀取成功\n”);

printf(“是否顯示紀錄?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

display(stu,0,numstus-1);

return(0);

}

#include “head.h”

void sort(student stud[])

{

int i,j=0;

char str[5];

student *p;

p=stud;

if(numstus==0)

{

printf(“沒有可供查詢的記錄!”);

}

while(1)

{

for(i=0;;i++)

{

printf(” 請輸入查詢方式:”);

printf(“(直接輸入回車則結束查詢操作)\n”);

printf(“1.按照學號\t”);

printf(“2.按照姓名\t”);

printf(“3.按照名次\n”);

gets(str);

if(strlen(str)==0) break;

if(str[0]==’1′)

{

printf(“請輸入排序次序:\n”);

printf(“1.升序排列\t”);

printf(“2.降序排列\n”);

gets(str);

if(str[0]==’1′)

sortnum2(p);

else

sortnum(p);

display(stud,0,numstus-1);

}

else if(str[0]==’2′)

{

printf(“請輸入排序次序:\n”);

printf(“1.升序排列\t”);

printf(“2.降序排列\n”);

gets(str);

if(str[0]==’1′)

sortname2(p);

else

sortname(p);

display(stud,0,numstus-1);

}

else if(str[0]==’3′)

{

printf(“請輸入排序次序:\n”);

printf(“1.升序排列\t”);

printf(“2.降序排列\n”);

gets(str);

if(str[0]==’1′)

sortcount2(p);

else

sortcount(p);

display(stud,0,numstus-1);

}

else printf(“請輸入1~3”);

printf(“是否退出排序?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’) break;

}

return;

}

}

void sortnum(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].number,stud[j].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortnum2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].number,stud[j+1].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].name,stud[j].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].name,stud[j+1].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j+1].indexstud[j].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j].indexstud[j+1].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

#include”head.h”

void statistic(student stud[]) /*新增功能,輸出統計信息*/

{

int i,j=0,k=0;

char c1,str[2];

float average[numsubs],sum=0;

if(numstus==0)

printf(“沒有可被查找的記錄\n”);

else

{

while(1)

{

printf(“下面將統計考試成績\n”);

printf(“請選擇你要統計哪科的成績 1.A\t2.B\t3.C\t4.D\t5.E\n”);

c1=getchar();

printf(“\t一共有個%d記錄\n”,numstus); /*總共記錄數*/

switch(c1)

{

case ‘1’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[0];

if(stud[k].subject[0]stud[i].subject[0]) k=i;

if(stud[j].subject[0]stud[i].subject[0]) j=i;

}

average[0]=sum/numstus;

printf(“\t科目A的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[0]);

printf(“\t科目A的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[0]);

printf(“\t科目A的平均分是 %5.2f\n”,average[0]); /*平均分*/

break;

case ‘2’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[1];

if(stud[k].subject[1]stud[i].subject[1]) k=i;

if(stud[j].subject[1]stud[i].subject[1]) j=i;

}

average[1]=sum/numstus;

printf(“\t科目B的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[1]);

printf(“\t科目B的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[1]);

printf(“\t科目B的平均分是 %5.2f\n”,average[1]); /*平均分*/

break;

case ‘3’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[2];

if(stud[k].subject[2]stud[i].subject[2]) k=i;

if(stud[j].subject[2]stud[i].subject[2]) j=i;

}

average[2]=sum/numstus;

printf(“\t科目C的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[2]);

printf(“\t科目C的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[2]);

printf(“\t科目C的平均分是 %5.2f\n”,average[2]); /*平均分*/

break;

case ‘4’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[3];

if(stud[k].subject[3]stud[i].subject[3]) k=i;

if(stud[j].subject[3]stud[i].subject[3]) j=i;

}

average[3]=sum/numstus;

printf(“\t科目D的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[3]);

printf(“\t科目D的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[3]);

printf(“\t科目D的平均分是 %5.2f\n”,average[3]); /*平均分*/

break;

case ‘5’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[4];

if(stud[k].subject[4]stud[i].subject[4]) k=i;

if(stud[j].subject[4]stud[i].subject[4]) j=i;

}

average[4]=sum/numstus;

printf(“\t科目E的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[4]);

printf(“\t科目E的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[4]);

printf(“\t科目E的平均分是 %5.2f\n”,average[4]); /*平均分*/

break;

default:printf(“輸入錯誤!請輸入1~5之間的數\n”);

}

sum=0;

getchar();

printf(“是否繼續進行統計?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’) ;

else break;

}

}

}

#include”head.h”

int writetotext(student stud[]) /*將所有記錄寫入文件*/

{

int i=0,j;

FILE *fp;

char filename[20];

printf(“輸入文件名稱:”);

gets(filename);

fp=fopen(filename,”w”);

fprintf(fp,”%d\n”,numstus);

while(inumstus)

{

fprintf(fp,”%s %s %s “,stud[i].number,stud[i].name,stud[i].sex);

for(j=0;jnumsubs;j++)

fprintf(fp,”%f “,stud[i].subject[j]);

fprintf(fp,”%f %f %d “,stud[i].score,stud[i].average,stud[i].index);

i++;

}

fclose(fp);

printf(“已成功存儲!\n”);

display(stud,0,numstus-1);

numstus=0;

return 0;

}

#include”head.h”

void welcome()

{

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

printf(“\t\t\t\t這是一個學生成績管理系統\n\t\t\t\t 傾情奉獻 歡迎使用!\n”);

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

}

void showtable()

{

printf(“—————————————————————————————\n”);

printf(“學號\t姓名\t性別\tA\tB\tC\tD\tE\t總分\t平均分\t名次\n”);

printf(“—————————————————————————————\n”);

}

void display(student stud[],int n1,int n2)

{

int i;

showtable(); /*顯示錶頭*/

for(i=n1;i=n2;i++)

printf(“%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n”,stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index);

/*通過循環輸出數據*/

}

void display1()

{

printf(“\t\t本系統由計應精英一組親情製作\n\n”);

printf(“\t\t製作人員列表: (按比劃)\n”);

printf(“\t\t王慶斌\t\t\t張威\n\t\t李智\t\t\t周在峰\n\t\t楊凱\t\t\t胡楊\n”);

printf(“\n\n”);

getchar();

}

#include”head.h”

#includestring.h

void amendrecord(student stud[])

{

char str[5]; /*供用戶輸入*/

int i=-1,j;

if(numstus==0) /*沒有記錄返回*/

printf(“沒有可供修改的記錄!”);

while(i0)

{

i=findrecord(stud);

if(i=0)

{

printf(“要刪除這個學生的信息嗎?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

{

deleterecord(stud,i);

count(stud);

}

else

{

printf(“確定要修改這個學生的信息嗎?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

{

printf(“下面請重新輸入學生的信息:\n”);

printf(“請輸入學號:”);

gets(stud[i].number);

printf(“請輸入姓名:”);

gets(stud[i].name);

printf(“請輸入性別(男/女 1/0):”);

gets(str);

if(str[0]==’0′)

strcpy(stud[i].sex,”女”);

else

strcpy(stud[i].sex,”男”);

stud[i].score=0;

printf(“請按順序輸入成績:”);

for(j=0;jnumsubs;j++)

{

scanf(“%f”,stud[i].subject[j]);

stud[i].score+=stud[i].subject[j];

}

getchar();

stud[i].average=stud[i].score/numsubs;

}

count(stud);

}

display(stud,0,numstus-1);

}

printf(“是否繼續進行其他修改?(y/n)\n”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

i=-1;

else i=1;

}

}

void deleterecord(student stu[],int i) /*刪除信息*/

{

int j;

while(i=0)

{

for(j=i;jnumstus;j++)

stu[j]=stu[j+1];

numstus–;

printf(“刪除成功!\n”);

}

}

void count(student stud[])

{

int i,j;

for(i=0;inumstus;i++)

{

stud[i].index=1;

for(j=0;jnumstus;j++)

if(stud[j].scorestud[i].score)

stud[i].index++;

}

}

#include “head.h”

void addrecord(student stud[])

{

int i=0,j,num;

char str[5];

if(numstus!=0)

{

printf(“已有記錄存在是否覆蓋?(y/n)\n”);

gets(str);

if(str[0]==’Y’||str[0]==’y’)

i=0;

else i=numstus;

}

printf(“請輸入增加的學生信息條目數:”);

scanf(“%d”,num);

if(i==0)

numstus=num;

else numstus+=num;

if(numstuslens)

{

lens+=50;

pointer=(student *)realloc(pointer,lens*LEN);

}

printf(“請輸入學生信息:\n”);

for(;inumstus;i++)

{

getchar();

printf(“請輸入學號:”);

gets(pointer[i].number);

printf(“請輸入姓名:”);

gets(pointer[i].name);

printf(“請輸入性別(男/女 1/0):”);

gets(pointer[i].sex);

if(pointer[i].sex[0]==’0′) strcpy(pointer[i].sex,”女”);

else strcpy(pointer[i].sex,”男”);

printf(“請輸入各科成績:(按ABCDE的順序):”);

stud[i].score=0;

for(j=0;jnumsubs;j++)

{

scanf(“%f”,stud[i].subject[j]); /*計算總分*/

stud[i].score+=stud[i].subject[j];

}

stud[i].average=stud[i].score/numsubs; /*計算平均分*/

}

count(stud); /*附名次*/

display(stud,0,numstus-1);

getchar();

}#include “head.h”

int numstus;

int lens;

student *pointer;

void main()

{

int i=1;

char str[2];

lens=100;

pointer=(student *)malloc(lens*LEN); /*分配內存*/

numstus=0;

welcome(); /*歡迎界面*/

while(i0)

{

i=menu_select(); /*控制菜單*/

switch(i)

{

case 1:addrecord(pointer);break; /*增加學生信息*/

case 2:findrecord(pointer);break; /*查詢學生信息*/

case 3:amendrecord(pointer);break; /*修改學生信息*/

case 4:sort(pointer);break; /*學生信息排序*/

case 5:statistic(pointer);break; /*統計信息*/

case 6:openfile(pointer);break; /*打開文件*/

case 7:writetotext(pointer);break; /*保存文件*/

case 8:display(pointer,0,numstus-1);break; /*顯示記錄*/

case 0:

if(numstus!=0) printf(“是否保存當前記錄?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

writetotext(pointer);

i=-1;break; /*退出系統*/

default:printf(“請輸入數字0~8:\n”);i=1; /*輸入錯誤*/

}

}

printf(“\t\t歡迎再次使用本系統。\n\n”);

display1();

}

自己一改就能用,給我加分哈!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/239497.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:16
下一篇 2024-12-12 12:16

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的“畫筆”在窗口中繪製…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論