當前位置:編程學習大全網 - 編程語言 - 各位c語言大神來看看這道編程題!!

各位c語言大神來看看這道編程題!!

以前做的成績管理系統,懶得改了,妳要的功能都有

/*引入頭文件*/

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define MAXSIZE 100 /*定義學生人數*/

#define MAXSUB 4 /*定義課程數目*/

int length; /*定義學生的實際人數*/

/*定義學生結構體*/

typedef struct tagStudent_t

{

char no[11]; /*學號*/

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

int score[MAXSUB];/*各科成績*/

int sum; /*總分*/

float average; /*平均分*/

}Student;

/*函數聲明(有分號,定義沒有)*/

char menu_select();

void input(Student stuArray[]);

void output(Student stuArr[]);

void search(Student stuAray[]);

int searchByNo(Student stuArr[]);

void searchByName(Student stuArr[]);

void update(Student stuArray[]);

void delete(Student stuArray[]);

/*此程序的指責為程序的入口,主函數 */

void main()

{

Student stus[MAXSIZE];

while(1)

{

switch(menu_select())

{

case '1':

input(stus);

break;

case '2':

update(stus);

printf("按任意鍵繼續…");

fflush(stdin);

getchar();

break;

case '3':

search(stus);

printf("按任意鍵繼續…");

fflush(stdin);

getchar();

break;

case '4':

delete(stus);

printf("按任意鍵繼續…");

fflush(stdin);

getchar();

break;

case '5':

output(stus);

printf("按任意鍵繼續…");

fflush(stdin);

getchar();

break;

case '0':

printf("\n 謝謝使用!\n");

exit(0);

}

}

}

/*此程序的指責為各函數的定義*/

/*菜單選擇*/

char menu_select()

{

char MenuItem;

printf("\n ");

printf(" | *********學生成績管理系統********* | \n");

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

printf(" | 主菜單項 | \n");

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

printf(" | 1 --- 錄入學生信息 | \n");

printf(" | 2 --- 修改學生信息 | \n");

printf(" | 3 --- 查詢學生信息 | \n");

printf(" | 4 --- 刪除學生成績 | \n");

printf(" | 5 --- 顯示學生信息 | \n");

printf(" | 6 --- 統計學生成績 | \n");

printf(" | 0 --- 退出系統 | \n");

do

{

printf("\n 請輸入選項(0-5):");

fflush(stdin);

scanf("%c",&MenuItem);

getchar();

}while(MenuItem<'0'||MenuItem>'5');

return MenuItem;

}

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

輸入學生信息

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

void input(Student stuArray[])

{

int i,j,k;

char cContinue;

int flag=1;

fflush(stdin);

for(i=length;i<MAXSIZE-1;i++)

{

printf("請輸入第%d名學生的學號:",i+1);

scanf("%s",&stuArray[i].no);

if(i>0)

{

for(k=0;k<length;k++)

if(strcmp(stuArray[k].no,stuArray[i].no)==0)

break;

if(k<length)

{

i--;

printf("學號不能重復,請重新輸入!");

continue;

}

}

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

scanf("%s",&stuArray[i].name);

for(j=0;j<MAXSUB;j++)

{

printf("請輸入第%d門成績:",j+1);

scanf("%d",&stuArray[i].score[j]);

if(stuArray[i].score[j]>100||stuArray[i].score[j]<0)

{

printf("錯誤數據,請重新輸入!");

j--;

}

}

stuArray[i].sum=0;

for(j=0;j<MAXSUB;j++)

stuArray[i].sum+=stuArray[i].score[j];

stuArray[i].average=(float)stuArray[i].sum/MAXSUB;

length++;

do

{

flag=1;

fflush(stdin);

printf("需要繼續錄入嗎?(Y/N)");

scanf("%c",&cContinue);

getchar();

switch(cContinue)

{

case 'Y':

case 'y':

flag=0;

break;

case 'N':

case 'n':

return;

}

}while(flag);

}

}

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

*Function Name:output

*Description:輸出學生信息

*Date:07/11/28

*parameter:stuArray[MAXSIZE]

*Author:Wen He

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

void output(Student stuArray[])

{

int i,j;

printf("| 學號 | 姓名 | 成績1 | 成績2 | 成績3 | 成績4 | 總分 | 平均分 |\n");

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

for(i=0;i<length;i++)

{

printf("|%-6s|%-14s|", stuArray[i].no,stuArray[i].name);

for(j=0;j<MAXSUB;j++)

printf("%7d|", stuArray[i].score[j]);

printf("%7d%7.2f\n",stuArray[i].sum, stuArray[i].average); /*輸出數組中當前學生的信息*/

}

}

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

*Function Name:search

*Description:查詢學生信息

*Date:07/11/28

*parameter:stuArray[MAXSIZE]

*Author:Wen He

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

void search(Student stuArray[])

{

char menuItem;

printf("\n\n\n"); /*輸出三個空行*/

/*---------輸出菜單界面開始-----------*/

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

printf(" | 查詢子菜單項 |\n");

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

printf(" | 1---學號查詢 |\n");

printf(" | 2---姓名查詢 |\n");

printf(" | 0---返回主菜單 |\n");

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

/*----------菜單界面輸出結束-----------*/

do

{

printf("\n 請輸入菜單項數字(0~2):");

fflush(stdin);

scanf("%c",&menuItem);

getchar();

}while(menuItem<'0'||menuItem>'2');

switch(menuItem)

{

case '1':

searchByNo(stuArray);

break;

case '2':

searchByName(stuArray);

break;

}

return;

}

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

*Function Name:searchByNo

*Description:按學號查詢學生信息

*Date:07/11/28

*parameter:stuArray[MAXSIZE]

*Author:Wen He

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

int searchByNo(Student stuArray[])

{

char no[20];

int i;

printf("\n請輸入學生的學號:");

scanf("%s",no);

for(i=0;i<length;i++)

if(strcmp(stuArray[i].no,no)==0)

break;

if(i==length)

printf("您輸入的學號不存在!\n");

else

{

printf("| 學號 | 姓名 | 成績1 | 成績2 | 成績3 | 成績4 | 總分 | 平均分 |\n");

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

printf("|%-6s|%-14s|%7d|%7d|%7d|%7d|%7d|%7.2f|\n", stuArray[i].no,stuArray[i].name,

stuArray[i].score[0], stuArray[i].score[1], stuArray[i].score[2], stuArray[i].score[3],

stuArray[i].sum, stuArray[i].average); /*輸出數組中當前學生的信息*/

}

return i;

}

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

*Function Name:searchByName

*Description:按姓名查詢學生信息

*Date:07/11/28

*parameter:stuArray[MAXSIZE]

*Author:Wen He

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

void searchByName(Student stuArray[])

{

Student stu[10];

char searchName[20];

int i,j,k;

printf("\n請輸入要查詢學生的姓名:");

scanf("%s",searchName);

for(i=0,j=0;i<length;i++)

if(strcmp(stuArray[i].name,searchName)==0)

{

strcpy(stu[j].no,stuArray[i].no);

strcpy(stu[j].name,searchName);

for(k=0;k<4;k++)

stu[j].score[k]=stuArray[i].score[k];

stu[j].sum=stuArray[i].sum;

stu[j].average=stuArray[i].average;

j++;

}

if(j==0)

printf("您輸入的姓名不存在!\n");

else

{

printf("| 學號 | 姓名 | 成績1 | 成績2 | 成績3 | 成績4 | 總分 | 平均分 |\n");

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

for(i=0;i<j;i++)

printf("|%-6s|%-14s|%7d|%7d|%7d|%7d|%7d|%7.2f|\n", stu[i].no,stu[i].name,

stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3],

stu[i].sum, stu[i].average); /*輸出數組中當前學生的信息*/

}

}

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

*Function Name:update

*Description:修改學生信息

*parameter:stuArray[MAXSIZE]

*Date:07/11/28

*Author:Wen He

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

void update(Student stuArray[])

{

char answer;

int i,j;

i=searchByNo(stuArray);

if(i<length)

{

do

{

printf("您要修改的是以上記錄嗎?(Y/N)");

fflush(stdin);

scanf("%c",&answer);

getchar();

}while(answer!='Y'&&answer!='N'&&answer!='y'&&answer!='n');

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

{

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

scanf("%s",stuArray[i].name);

stuArray[i].sum=0;

for(j=0;j<MAXSUB;j++)

{

printf("請輸入第%d門課程的成績:",j+1);

scanf("%d",&stuArray[i].score[j]);

stuArray[i].sum+=stuArray[i].score[j];

}

stuArray[i].average=(float)stuArray[i].sum/MAXSUB;

printf("您修改後的信息如下:\n");

printf("| 學號 | 姓名 | 成績1 | 成績2 | 成績3 | 成績4 | 總分 | 平均分 |\n");

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

printf("|%-6s|%-14s|%7d|%7d|%7d|%7d|%7d|%7.2f|\n", stuArray[i].no,stuArray[i].name,

stuArray[i].score[0], stuArray[i].score[1], stuArray[i].score[2], stuArray[i].score[3],

stuArray[i].sum, stuArray[i].average); /*輸出數組中當前學生的信息*/

}

}

}

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

*Function Name:delete

*Description:刪除學生信息

*Date:07/11/28

*parameter:stuArray[MAXSIZE]

*Author:Wen He

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

void delete(Student stuArray[])

{

char answer;

int i,j;

i=searchByNo(stuArray);

if(i<length)

{

do

{

printf("您要刪除的是以上記錄嗎?(Y/N)");

fflush(stdin);

scanf("%c",&answer);

getchar();

}while(answer!='Y'&&answer!='N'&&answer!='y'&&answer!='n');

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

{

for(j=i;j<=length-1;j++)

stuArray[j]=stuArray[j+1];

printf("刪除成功!");

length--;

}

}

}

  • 上一篇:與足球有關的音樂(英文)
  • 下一篇:我國教育改革的基本趨勢有哪些?
  • copyright 2024編程學習大全網