国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
c語(yǔ)言
 編寫(xiě)一個(gè)菜單驅(qū)動(dòng)的學(xué)生成績(jī)管理程序。要求如下:

1.能輸入并顯示n個(gè)學(xué)生的m門(mén)考試科目的成績(jī)、總分和平均分。

2.按總分由高到低進(jìn)行排序。

3.任意輸入一個(gè)學(xué)號(hào),能顯示該學(xué)生的姓名、各門(mén)功課的成績(jī)
 
 
 
 
 
從鍵盤(pán)輸入若干個(gè)(不多于20個(gè))學(xué)生的學(xué)號(hào)、姓名成績(jī),編程實(shí)現(xiàn):1查找成績(jī)最高和最低學(xué)生的學(xué)號(hào)、姓名、成績(jī)并打印。2計(jì)算所以同學(xué)的總平均成績(jī)。3對(duì)學(xué)生信息按成績(jī)從高到低進(jìn)行排序。
【1】#include <stdio.h>
typedef struct stu{
    char no[20];  /*學(xué)號(hào)*/
    char name[15]; /*姓名*/
    int grade;    /*成績(jī)*/
}stu_inf;
void sort(stu_inf a[],int n)
{
int i, j, k;
stu_inf t;   /*插入排序算法*/
for (i=1; i<n; i++) /*要選擇的次數(shù):1~n-1共n-1次*/
{
  t = a[i]; /*暫存下標(biāo)為i的數(shù)。下標(biāo)從1開(kāi)始*/
  for (j=i-1; j>=0 && t.grade > a[j].grade ; j--) /*在它前面有序列中找插入位置。*/
   a[j+1] = a[j];  /*如果滿(mǎn)足條件就往后挪*/
  a[j+1] = t; /*找到下標(biāo)為i的數(shù)的放置位置*/
 }
}
void main(void)
{
    stu_inf a[20];  /*學(xué)生信息的結(jié)構(gòu)數(shù)組*/
    int i , n , ave = 0; /*ave保存總成績(jī)*/
printf("請(qǐng)輸入學(xué)生的數(shù)量:");
    scanf("%d",&n);
    for( i = 0 ; i < n ; i++)
    {
        printf("請(qǐng)依次輸入學(xué)生的學(xué)號(hào)、姓名、成績(jī):");
        scanf("%s%s%d",a[i].no,a[i].name,&a[i].grade);
    }
    sort(a,n);   /*對(duì)數(shù)組進(jìn)行排序*/
    printf("成績(jī)最好的學(xué)生為%s,學(xué)號(hào)為%s,成績(jī)?yōu)?d\n",a[0].name,a[0].no,a[0].grade);
    printf("成績(jī)最差的學(xué)生為%s,學(xué)號(hào)為%s,成績(jī)?yōu)?d\n",a[n-1].name,a[n-1].no,a[n-1].grade);
    printf("以下為所有學(xué)生的信息\n學(xué)號(hào)\t姓名\t成績(jī)\n");
    for( i = 0 ; i < n ; i++)
{
        printf("%s\t%s\t%d\n",a[i].no,a[i].name,a[i].grade);
  ave += a[i].grade;
}
printf("平均成績(jī)?yōu)?.2f\n", (float)(ave +0.0)/n);  /*除法運(yùn)算加0.0為小數(shù)除法*/
}
【2】#include <stdio.h>
#include <stdlib.h>

#define ARR_SiZE 20

struct Student{
char num[10];
char name[15];
float score;
};
void InsertSort(struct Student* pstu,int n);
int main()
{
int i,n,max,min;
float sum,ave;
struct Student stu[ARR_SiZE];
printf("請(qǐng)輸入學(xué)生數(shù)目 :");
scanf("%d",&n);

printf("請(qǐng)依次輸入 %d 個(gè)學(xué)生的學(xué)號(hào)姓名和分?jǐn)?shù):\n",n);
max=min=0;
sum=0;
for (i=0;i<n;++i)
{
  scanf("%s%s%f",&stu[i].num,&stu[i].name,&stu[i].score);
  sum=sum+stu[i].score;
  if (stu[i].score<stu[min].score)
  {
   min=i;
  }
  else if (stu[i].score>stu[max].score)
  {
   max=i;
  }
}
ave=sum/n;
printf("成績(jī)最高的學(xué)生的信息:\n");
printf("%s\t%s\t%f\n",stu[max].num,stu[max].name,stu[max].score);
printf("成績(jī)最低的學(xué)生的信息:\n");
printf("%s\t%s\t%f\n",stu[min].num,stu[min].name,stu[min].score);
printf("所有同學(xué)的總平均成績(jī)?yōu)?\t%f\t\n",ave);

InsertSort(stu,n);
printf("學(xué)生信息按成績(jī)從高到低為:\n");
for (i=0;i<n;++i)
{
  printf("%s\t%s\t%f\n",stu[i].num,stu[i].name,stu[i].score);
}
return 0;
}
void InsertSort(struct Student* pstu,int n)
{
int i,j;
struct Student temp;
for (i=1;i<n;++i)
{
  j=i-1;
  temp=pstu[i];
  while (j>=0&&pstu[j].score<temp.score)
  {
   pstu[j+1]=pstu[j];
   --j;
  }
  pstu[j+1]=temp;
}
}
【3】#include<stdio.h>
#include<string.h>

struct Student {
char name[20];
int serial;
int scores[5];
};
main()
{
char ch,temp;
FILE *fpstu;
struct Student stu;
int i,sum=0;
float average;
printf("是否進(jìn)行成績(jī)錄入(Y/N):");
ch=getchar();
temp=getchar();
if((fpstu=fopen("students.txt","a+"))==NULL)
  {
   printf("file open students.txt failed!\n");
   system("pause");
   exit(0);
  }
if(ch=='Y' || ch=='y')
{
   printf("姓名:");
   scanf("%s",stu.name);
   printf("學(xué)號(hào):");
   scanf("%d",&stu.serial);
   for(i=0;i<5;i++)
   {
    printf("課程%d分?jǐn)?shù):",i+1);
    scanf("%d",&stu.scores[i]);
   }
   printf("輸入完畢!\n");
   if(fwrite(&stu,sizeof(struct Student),1,fpstu)!=1)
   {
    printf("存盤(pán)失?。n");
    system("pause");
    exit(0);
   }
   else
    printf("存盤(pán)完畢!\n");
}
rewind(fpstu);
printf("姓名\t學(xué)號(hào)\t課程1\t課程2\t課程3\t課程4\t課程5\t總分\t平均\n");
while(!feof(fpstu))
{
  if(fread(&stu,sizeof(struct Student),1,fpstu)!=1)
  {
   printf("讀取完畢!\n");
   system("pause");
   exit(0);
  }
  printf("%s\t%d\t",stu.name,stu.serial);
  sum = 0;
  for (i = 0; i < 5; i++)
  {
   if(stu.scores[i] >= 90)
    temp = 'A';
   else if(stu.scores[i] >= 80)
    temp = 'B';
   else if(stu.scores[i] >= 70)
    temp = 'C';
   else if(stu.scores[i] >= 60)
    temp = 'D';
   else
    temp = 'E';
   printf("%c\t",temp);
   sum += stu.scores[i];
  }
  average = (float)sum / 5;
  printf("%d\t%f\n",sum,average);
}
}
【4】

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

#define STU_NUM   40       /* 最多的學(xué)生人數(shù) */
#define COURSE_NUM 10     /* 最多的考試科目 */

struct student
{
int   number;      /* 每個(gè)學(xué)生的學(xué)號(hào) */
char name[10];              /* 每個(gè)學(xué)生的姓名 */
int   score[COURSE_NUM];   /* 每個(gè)學(xué)生M門(mén)功課的成績(jī) */
int   sum;                   /* 每個(gè)學(xué)生的總成績(jī) */
float average;               /* 每個(gè)學(xué)生的平均成績(jī) */
};
typedef struct student STU;

/* 函數(shù)功能: 向鏈表的末尾添加從鍵盤(pán)輸入學(xué)生的學(xué)號(hào)、姓名和成績(jī)等信息
函數(shù)參數(shù): 結(jié)構(gòu)體指針head,指向存儲(chǔ)學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址
     整型變量n,表示學(xué)生人數(shù)
     整型變量m,表示考試科目
函數(shù)返回值: 無(wú)
*/
void AppendScore(STU *head, int n, int m)
{
int   j;
STU   *p;

for (p=head; p<head+n; p++)
{
   printf("\nInput number:");
   scanf("%d", &p->number);
   printf("Input name:");
   scanf("%s", p->name);  
   for (j=0; j<m; j++)
   {
    printf("Input score%d:", j+1);
    scanf("%d", p->score+j);
   }
}
}

/* 函數(shù)功能: 打印n個(gè)學(xué)生的學(xué)號(hào)、姓名和成績(jī)等信息
函數(shù)參數(shù): 結(jié)構(gòu)體指針head,指向存儲(chǔ)學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址
     整型變量n,表示學(xué)生人數(shù)
     整型變量m,表示考試科目
函數(shù)返回值: 無(wú)
*/
void PrintScore(STU *head, int n, int m)
{
STU *p;
int i;
char str[100] = {'\0'}, temp[3];

strcat(str, "Number     Name ");
for (i=1; i<=m; i++)
{
   strcat(str, "Score");
   itoa(i,temp, 10);
   strcat(str, temp);
   strcat(str, " ");
}
strcat(str,"     sum average");

printf("%s", str);              /* 打印表頭 */
for (p=head; p<head+n; p++) /* 打印n個(gè)學(xué)生的信息 */
{
   printf("\nNo.%3d%8s", p->number, p->name);  
   for (i=0; i<m; i++)
   {
    printf("%7d", p->score[i]);
   }
   printf("%11d%9.2f\n", p->sum, p->average);
}
}

/* 函數(shù)功能: 計(jì)算每個(gè)學(xué)生的m門(mén)功課的總成績(jī)和平均成績(jī)
函數(shù)參數(shù): 結(jié)構(gòu)體指針head,指向存儲(chǔ)學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址
     整型變量n,表示學(xué)生人數(shù)
     整型變量m,表示考試科目
函數(shù)返回值: 無(wú)
*/
void TotalScore(STU *head, int n, int m)
{
STU   *p;
int   i;

for (p=head; p<head+n; p++)
{
   p->sum = 0;
   for (i=0; i<m; i++)
   {
    p->sum = p->sum + p->score[i];
   }  
   p->average = (float)p->sum / m;
}
}

/* 函數(shù)功能: 用選擇法按總成績(jī)由高到低排序
函數(shù)參數(shù): 結(jié)構(gòu)體指針head,指向存儲(chǔ)學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址
     整型變量n,表示學(xué)生人數(shù)
函數(shù)返回值: 無(wú)
*/
void SortScore(STU *head, int n)
{
int i, j, k;
STU temp;

for (i=0; i<n-1; i++)
{
   k = i;
   for (j=i; j<n; j++)
   {
    if ((head+j)->sum > (head+k)->sum)
    {
     k = j;
    }
   }
   if (k != i)
   {
    temp = *(head+k);
    *(head+k) = *(head+i);
    *(head+i) = temp;
   }
   }
}

/* 函數(shù)功能: 查找學(xué)生的學(xué)號(hào)
函數(shù)參數(shù): 結(jié)構(gòu)體指針head,指向存儲(chǔ)學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址
     整型變量num,表示要查找的學(xué)號(hào)
     整型變量n,表示學(xué)生人數(shù)
函數(shù)返回值: 如果找到學(xué)號(hào),則返回它在結(jié)構(gòu)體數(shù)組中的位置,否則返回-1
*/
int SearchNum(STU *head, int num, int n)
{
int i;

for (i=0; i<n; i++)
{
   if ((head+i)->number == num) return i;
}
return -1;
}

/* 函數(shù)功能: 按學(xué)號(hào)查找學(xué)生成績(jī)并顯示查找結(jié)果
函數(shù)參數(shù): 結(jié)構(gòu)體指針head,指向存儲(chǔ)學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址
     整型變量n,表示學(xué)生人數(shù)
     整型變量m,表示考試科目
函數(shù)返回值: 無(wú)
*/
void SearchScore(STU *head, int n, int m)
{
int number, findNo;

printf("Please Input the number you want to search:");
scanf("%d", &number);
findNo = SearchNum(head, number, n);
if (findNo == -1)
{
   printf("\nNot found!\n");
}
else
{
   PrintScore(head+findNo, 1, m);
}
}

/* 函數(shù)功能: 顯示菜單并獲得用戶(hù)鍵盤(pán)輸入的選項(xiàng)
函數(shù)參數(shù): 無(wú)
函數(shù)返回值: 用戶(hù)輸入的選項(xiàng)
*/
char Menu(void)
{
char ch;

printf("\nManagement for Students' scores\n");
printf(" 1.Append record\n");
printf(" 2.List    record\n");
printf(" 3.Search record\n");
printf(" 4.Sort    record\n");
printf(" 0.Exit\n");
printf("Please Input your choice:");
scanf(" %c", &ch); /*在%c前面加一個(gè)空格,將存于緩沖區(qū)中的回車(chē)符讀入*/
return ch;
}

main()                               
{
char ch;
int   m, n;
STU    stu[STU_NUM];

printf("Input student number and course number(n<40,m<10):");
scanf("%d,%d", &n, &m);
while (1)
{
   ch = Menu();         /* 顯示菜單,并讀取用戶(hù)輸入 */
   switch (ch)
   {
    case'1':AppendScore(stu, n, m);/* 調(diào)用成績(jī)添加模塊 */
          TotalScore(stu, n, m);
       break;
    case'2':PrintScore(stu, n, m); /* 調(diào)用成績(jī)顯示模塊 */
       break;
    case'3':SearchScore(stu, n, m);/* 調(diào)用按學(xué)號(hào)查找模塊 */
       break;
    case'4':SortScore(stu, n);      /* 調(diào)用成績(jī)排序模塊 */
       printf("\nSorted result\n");
       PrintScore(stu, n, m); /* 顯示成績(jī)排序結(jié)果 */
       break;   
    case'0':exit(0);                  /* 退出程序 */
       printf("End of program!");
          break;
    default:printf("Input error!");
       break;
   }  
}
}
【5】

C語(yǔ)言課程設(shè)計(jì)——學(xué)生成績(jī)管理系統(tǒng)

(2009-02-25 20:08:10)
標(biāo)簽:

it

                 

摘   

 

 學(xué)生成績(jī)管理系統(tǒng)是一個(gè)教育單位不可缺少的部分,它的內(nèi)容對(duì)于學(xué)校的決策者和管理者來(lái)說(shuō)都至關(guān)重要,所以學(xué)生成績(jī)管理系統(tǒng)應(yīng)該能夠?yàn)橛脩?hù)提供充足的信息和快捷的查詢(xún)手段。但一直以來(lái)人們使用傳統(tǒng)人工的方式管理文件檔案,這種管理方式存在著許多缺點(diǎn)。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類(lèi)社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)學(xué)生信息及成績(jī)進(jìn)行管理,具有手工管理所無(wú)法比擬的優(yōu)點(diǎn).

 

Student result management the system is the part of education unit indispensability, its contents says all to the pass importance for the decision maker of school and the governor, so student the result manage the system should be able to provide ample information and fast search means for customer.But always people use the way management of traditional artificial document file, this management way exists much weakness.Along with science technique of continuously raise, calculator science is gradual maturity, it the strong function have already profoundly known for people, it has already got into mankind's each realm of society to erupt to flick a more and more important function.As a part of the calculator application, usage the calculator carry on a management to student's information and the result and have the handicraft management cans not compare to of advantage.

一.課程設(shè)計(jì)目的

 

1、熟練掌握C語(yǔ)言課程中所學(xué)的理論知識(shí);

     C語(yǔ)言是在國(guó)內(nèi)外廣泛使用的一種計(jì)算機(jī)語(yǔ)言。它既有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫(xiě)工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫(xiě)不依賴(lài)計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛。學(xué)習(xí)使用C語(yǔ)言程序的目的是掌握程序設(shè)計(jì)的思路,學(xué)會(huì)用計(jì)算機(jī)語(yǔ)言編寫(xiě)程序正確處理算法和語(yǔ)法的關(guān)系算法是程序的核心、是靈魂,語(yǔ)法是外殼、是工具。通過(guò)課程設(shè)計(jì),我們要熟練的掌握C語(yǔ)言的算法、語(yǔ)言、函數(shù)的調(diào)用、循環(huán)的使用、數(shù)組的運(yùn)用等。

 

2、通過(guò)綜合C語(yǔ)言的基本知識(shí)來(lái)解決實(shí)際問(wèn)題;

     C語(yǔ)言中與許多的東西,像:數(shù)據(jù)類(lèi)型、運(yùn)算符、表達(dá)式、程序設(shè)計(jì)結(jié)構(gòu)、數(shù)組與函數(shù)調(diào)用。其中C語(yǔ)言最難和最經(jīng)典的地方就是循環(huán),(while和for的嵌套)運(yùn)用WHILE,FOR,SWITCH和if的循環(huán)嵌套,我們可以實(shí)現(xiàn)現(xiàn)實(shí)中課程信息管理、圖書(shū)信息管理、學(xué)生信息管理、商品信息管理等。C語(yǔ)言還具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫(xiě)系統(tǒng)軟件,三維,二維圖形和動(dòng)畫(huà)。它是數(shù)值計(jì)算的高級(jí)語(yǔ)言。

 

3、加強(qiáng)分析和解決問(wèn)題的能力。

通過(guò)這次的課程設(shè)計(jì),能加強(qiáng)我們對(duì)程序設(shè)計(jì)的思考、設(shè)計(jì)、分析、理解和解決問(wèn)題的能力。對(duì)于我們初學(xué)者來(lái)說(shuō),主要是學(xué)習(xí)成長(zhǎng)設(shè)計(jì)的方法,進(jìn)行程序設(shè)計(jì)的基本訓(xùn)練為將來(lái)進(jìn)一步學(xué)習(xí)打下基礎(chǔ)。課程設(shè)計(jì)不能之掌握概念,還要?jiǎng)邮志幊?、上機(jī)調(diào)試運(yùn)行。只有自己動(dòng)手,才能學(xué)的更多。

二.課程設(shè)計(jì)題目描述和要求

 

1.題目:學(xué)生成績(jī)管理系統(tǒng). 在程序設(shè)計(jì)時(shí)將其逐步細(xì)化,每個(gè)模塊由一個(gè)函數(shù)實(shí)現(xiàn),整個(gè)程序通過(guò)函數(shù)調(diào)用聯(lián)系。使用函數(shù)思想編寫(xiě)程序,程序中的每個(gè)模塊都做成函數(shù)形式,由主函數(shù)調(diào)用子函數(shù)。在各個(gè)功能模塊設(shè)計(jì)時(shí)根據(jù)其具體功能使用所學(xué)知識(shí)進(jìn)行設(shè)計(jì),例如:在需要循環(huán)輸出時(shí)可以使用 for循環(huán),需要條件控制時(shí)可以使用if語(yǔ)句,在排序時(shí)可以使用冒泡法等。

 

2.要求:設(shè)計(jì)包含N個(gè)學(xué)生的數(shù)據(jù)信息的學(xué)生成績(jī)管理系統(tǒng),包括以下信息:
學(xué)號(hào) — num[10](字符串)、 姓名(拼音)— name[25](字符串)、
性別 — sex(字符,M或F)、 年齡 — age
三門(mén)課程成績(jī)(高數(shù)、英語(yǔ)、計(jì)算機(jī))— score [3](整型)。

 

三、課程設(shè)計(jì)報(bào)告內(nèi)容、算法分析及調(diào)試

1.設(shè)計(jì)步驟

(1)、需求分析:對(duì)系統(tǒng)的應(yīng)實(shí)現(xiàn)的功能進(jìn)行分析。

(2)、概要設(shè)計(jì):對(duì)系統(tǒng)功能進(jìn)行模塊分解,對(duì)模塊的功能及模塊之間的相互關(guān)系進(jìn)行說(shuō)明(如用到函數(shù),則對(duì)函數(shù)間的接口進(jìn)行說(shuō)明),對(duì)系統(tǒng)使用的數(shù)據(jù)結(jié)構(gòu)(各數(shù)組、主要變量的設(shè)置及其代表的含義)進(jìn)行說(shuō)明。

(3)、詳細(xì)設(shè)計(jì):用流程圖、偽代碼等方法對(duì)各主要算法進(jìn)行描述。

(4)、編寫(xiě)代碼:根據(jù)設(shè)計(jì)編寫(xiě)。源程序要按照程序的格式規(guī)范來(lái)編寫(xiě),要求結(jié)構(gòu)清晰,界面友好,關(guān)鍵部分有必要的注釋。

(5)、調(diào)試分析:準(zhǔn)備充分的測(cè)試數(shù)據(jù)對(duì)系統(tǒng)進(jìn)行調(diào)試(對(duì)錯(cuò)誤的數(shù)據(jù)輸入也要進(jìn)行測(cè)試,保證程序的容錯(cuò)性),并通過(guò)測(cè)試對(duì)系統(tǒng)提出改進(jìn)設(shè)想。

 

 5.調(diào)試

經(jīng)過(guò)我們這個(gè)小組一天的調(diào)試,我們終于把各自的模塊整合起來(lái)了,在這過(guò)程中,我們遇到了很多問(wèn)題,像數(shù)據(jù)不匹配,括號(hào)不配對(duì),賦值重復(fù)等。因?yàn)镃語(yǔ)言的語(yǔ)法限制不太嚴(yán)格,對(duì)變量的類(lèi)型約束不嚴(yán)格,影響程序的安全性,對(duì)數(shù)組下標(biāo)越界不作檢查等原因。但經(jīng)過(guò)我們這小組共同的努力,終于完成了。首先,我們用DO  WHILE循環(huán),使這個(gè)圖書(shū)系統(tǒng)能無(wú)限使用,再次,我們用SWITCH對(duì)各個(gè)模塊功能進(jìn)行了組合,使學(xué)生成績(jī)管理系統(tǒng)的功能更完善,界面更清晰、明了。

 

四.總結(jié)

課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計(jì)算機(jī)應(yīng)用在生活中可以說(shuō)得是無(wú)處不在。因此作為二十一世紀(jì)的大學(xué)來(lái)說(shuō)掌握計(jì)算機(jī)開(kāi)發(fā)技術(shù)是十分重要的。

總的來(lái)說(shuō),本次課程設(shè)計(jì),實(shí)在是受益匪淺。本來(lái)這門(mén)課的知識(shí)學(xué)的就不夠扎實(shí),當(dāng)剛開(kāi)始要設(shè)計(jì)的時(shí)候,還真不知道從哪里下手,結(jié)果第一天的上機(jī),我只是做了一個(gè)下午,什么也沒(méi)干!回去以后,我想,這樣不行,這樣下去還得了!后來(lái)我們這組的組長(zhǎng)把整個(gè)程序的各個(gè)模塊都分配好任務(wù),我主要負(fù)責(zé)查找那一個(gè)模塊的。第二天因?yàn)橛辛舜_實(shí)的任務(wù),所以我就靜下心來(lái)去編程,首先想到的是如何定義類(lèi)型,想用數(shù)組的話(huà)很麻煩,我們也只學(xué)了這么多內(nèi)容,后來(lái)組長(zhǎng)說(shuō)如果用結(jié)構(gòu)體的話(huà)就比較方便,所以我們就決定自己在學(xué)一下結(jié)構(gòu)體那方面的知識(shí)。我選用了順序查找法編寫(xiě)了查找函數(shù),并且通過(guò)編寫(xiě)使該程序可以進(jìn)行多次查找,界面友好,并且輸出的畫(huà)面美觀。在設(shè)計(jì)的過(guò)程中遇到問(wèn)題,可以說(shuō)得是困難重重,這畢竟第一次做的,難免會(huì)遇到過(guò)各種各樣的問(wèn)題,例如編寫(xiě)的程序在計(jì)算機(jī)上識(shí)別的是沒(méi)有錯(cuò)誤的,但是運(yùn)行的結(jié)果確實(shí)不對(duì)的,總是兩個(gè)字符串一起輸出,怎么看我的源程序都沒(méi)有錯(cuò)誤,后來(lái)經(jīng)過(guò)老師的指導(dǎo)才知道字符串輸出是以回車(chē)鍵識(shí)別結(jié)束語(yǔ)句的,解決的辦法是在輸出語(yǔ)句中間加一個(gè)輸入字符語(yǔ)句;后來(lái)在我們團(tuán)隊(duì)的合作下,一一攻破了困難,最后把一個(gè)完整的程序設(shè)計(jì)完成,感覺(jué)特別有成就感的。雖然課程設(shè)計(jì)只有短短的幾天,但是我發(fā)現(xiàn)我學(xué)到的知識(shí)比整整一個(gè)學(xué)期學(xué)到的都多。理論和實(shí)踐的相結(jié)合是學(xué)習(xí)最有效的方法。在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,通過(guò)這次課程設(shè)計(jì)之后,一定把以前所學(xué)過(guò)的知識(shí)重新溫故。

回顧起此次課程設(shè)計(jì),至今我仍感慨頗多,的確,從從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,在整整一個(gè)星期的日子里,可以學(xué)到很多很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。

 

六、附錄的源程序及各模塊說(shuō)明

1、主函數(shù)

定義結(jié)構(gòu)體,對(duì)要調(diào)用的函數(shù)進(jìn)行聲明。通過(guò)輸出控制顯示歡迎界面,通過(guò)函數(shù)getch(),putchar(‘*’)控制密碼的輸入輸出,系統(tǒng)調(diào)用菜單函數(shù)密碼登陸。

#include <stdio.h>

#include <string.h>

#include <conio.h>

#define N 100 

int M=0;

struct student 

 {char num[10];                                               

char name[25];                          

char sex;                             

int age;

float score[3];

}stu[N];

void main()  

{void system();

    void menu();void add();

void del();

void search();

void modify();

void sort();

int k,i;

char str[10];

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

printf("\n");
printf("\n");
printf("  歡迎進(jìn)入學(xué)生成績(jī)管理系統(tǒng)! \n");
printf(" \n");printf("請(qǐng)輸入密碼繼續(xù)!\n");
printf(" \n");
printf(" \n");
for(k=0;;)

{printf("請(qǐng)輸入六位數(shù)密碼:");

for(i=0;(str[i]=getch())!='\r';i++)

putchar('*');

printf("\n");

str[i]='\0';

if(strcmp(str,"123456")!=0)

printf("密碼錯(cuò)誤!\n");                     

else break;                          

}

printf("登陸成功!");              

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

system("cls");

menu();

}

          

2、 菜單函數(shù)

定義菜單函數(shù),通過(guò)輸出函數(shù)顯示系統(tǒng)功能。利用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。

void menu()

{int c;printf("                     歡迎進(jìn)入主菜單!                                        \n");

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

printf("*                                                                          *\n");
printf("*                   1.學(xué)生信息的錄入                                       *\n");
printf("*                                                                          *\n");
printf("*                   2.學(xué)生信息的刪除                                       *\n");
printf("*                                                                          *\n");
printf("*                   3.學(xué)生信息的查找                                       *\n");
 printf("*                                                                          *\n");
printf("*                   4.學(xué)生信息的修改                                       *\n");
printf("*                                                                          *\n");
printf("*                   5.學(xué)生排名的情況                                       *\n");
printf("*                                                                          *\n");
printf("*                   6.退出系統(tǒng)                                             *\n");
printf("*                                                                          *\n");
printf("****************************************************************************\n");

printf("請(qǐng)選擇操作:");     

    scanf("%d",&c);

if(c<1 || c>6)c=0;

switch(c)

{case 0:printf("輸入錯(cuò)誤!\n");break;

case 1: add();break;

case 2: del();break;

case 3: search();break;

case 4: modify();break;

case 5: sort();break;

case 6: break;

 

}}

3、 錄入函數(shù)

多次使用輸入輸出函數(shù)輸入信息,通過(guò)標(biāo)記flag控制多次輸入。

    void add()

    { void system();

   int i=0,flag=1;char k;

system("cls");printf("                     歡迎進(jìn)入學(xué)生信息的錄入!                                     \n");

    while(flag)

    { i++;

printf("請(qǐng)輸入第%d個(gè)學(xué)生的學(xué)號(hào):",i);

scanf("%s",stu[i-1].num);

printf("請(qǐng)輸入第%d個(gè)學(xué)生的姓名:",i);

scanf("%s",stu[i-1].name);

printf("請(qǐng)輸入第%d個(gè)學(xué)生的性別:",i);getchar();

scanf("%c",&stu[i-1].sex);

printf("請(qǐng)輸入第%d個(gè)學(xué)生的年齡:",i);

scanf("%d",&stu[i-1].age);

printf("輸入第%d個(gè)學(xué)生的數(shù)學(xué)成績(jī):",i);

scanf("%f",&stu[i-1].score[0]);

printf("輸入第%d個(gè)學(xué)生的英語(yǔ)成績(jī):",i);

scanf("%f",&stu[i-1].score[1]);

printf("輸入第%d個(gè)學(xué)生的計(jì)算機(jī)成績(jī):",i);

scanf("%f",&stu[i-1].score[2]);

M++;printf("\n\n");

printf("序號(hào): %d\n",i);

printf("學(xué)號(hào):%s\n",stu[i-1].num);

printf("姓名:%s\n",stu[i-1].name);

printf("性別:%c\n",stu[i-1].sex);

printf("數(shù)學(xué):%.2f\n",stu[i-1].score[0]);

printf("英語(yǔ):%.2f\n",stu[i-1].score[1]);

printf("計(jì)算機(jī):%.2f\n",stu[i-1].score[2]); printf("\n\n");

printf("繼續(xù)或退出(y/n):");getchar();scanf("%c",&k);

if(k=='n' || k=='N')

flag=0;}

system("cls");

menu();   

}

4、 刪除函數(shù)

輸入學(xué)號(hào),通過(guò)學(xué)號(hào)找到對(duì)應(yīng)的學(xué)生,從刪除項(xiàng)起后面對(duì)應(yīng)的信息前移。同時(shí),用標(biāo)記flag控制多次刪除。                  

void del()                                      

{void system();                            

 int i,j,flag=1;                                    

char c;                             

system("cls");                         

printf("歡迎進(jìn)入學(xué)生信息的刪除成功。                            \n");                                 

while(flag)                               

{printf("請(qǐng)輸入要?jiǎng)h除的學(xué)號(hào):");                                       

          scanf("%s",str);    

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

if(strcmp(str,stu[i].num)     

==0)                     

        {for(j=i;j<N;j++)

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

 printf("刪除成功!\n");

        M--;  break; }

         if(i==N)

        printf("無(wú)此學(xué)號(hào)!\n");

        printf("繼續(xù)或退出(y/n):");

       getchar();

       scanf("%c",&c);

if(c=='n' || c=='N')flag=0;

}

system("cls");

menu();  

}

5查找函數(shù)

 

                                                                                                                                                                                                                                                                                                                                                 flag=0                                       

void search()                   

 

char str[10];                                        

{void system();                       

int i,flag=1;

char m;

system("cls");

printf("  歡迎進(jìn)入學(xué)生信息的查找!                                     \n");

 while(flag)

 { printf("請(qǐng)輸入要查找的學(xué)號(hào):");

 scanf("%s",str);

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

if (strcmp(str,stu[i].num)==0)

      { printf("學(xué)號(hào)   姓名    性別     年齡    高數(shù)     英語(yǔ)     計(jì)算機(jī)\n");

     printf("%-7s%-10s%2c%7d%10.1f%10.1f%10.1f\n",  

     stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score[0],

     stu[i].score[1],stu[i].score[2]);

      break;  

      }

      if(i==N)printf("無(wú)此學(xué)號(hào)!\n");

      printf("繼續(xù)或退出(Y/N)?"); 

      getchar();

      scanf("%c",&m);

     if (m=='n'||m=='N')

        flag=0;} 

system("cls");

  menu(); 

}

算法:通過(guò)順序查找法,從N=0到N-1循環(huán)順序查找輸入的學(xué)號(hào),再通過(guò)字符串比較函數(shù)找到學(xué)號(hào)的位置i,并通過(guò)結(jié)構(gòu)體數(shù)組輸出學(xué)生i一系列的信息;通過(guò)標(biāo)記flag=1進(jìn)入外層循環(huán),控制多次查找信息。

6、 修改函數(shù)

輸入要修改的學(xué)號(hào),通過(guò)學(xué)號(hào)找到對(duì)應(yīng)的學(xué)生,再修改其信息,同樣,還是利用標(biāo)記flag控制多次修改。

void modify()

{void system();

    char str[10];

  int i,j,flag=1;

  char k;

  system("cls");

printf("                     歡迎進(jìn)入學(xué)生信息的修改!                                     \n");

 while(flag)

  {printf("請(qǐng)輸入要修改的學(xué)號(hào):");

    scanf("%s",str);

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

   if (strcmp(str,stu[i].num)==0)

   printf("ok!\n");

        printf("輸出修改前的信息:\n");

    printf("學(xué)號(hào)   姓名    性別    年齡     高數(shù)      英語(yǔ)      計(jì)算機(jī)\n");

    printf("%-6s%-10s%3c%7d%11.1f%11.1f%11.1f\n",

     stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score[0],

     stu[i].score[1],stu[i].score[2]);

     printf("\n輸入修改的分?jǐn)?shù):\n");

     printf("高數(shù) 英語(yǔ) 計(jì)算機(jī):"); 

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

     scanf("%f",&stu[i].score[j]);

    printf("輸出修改后的信息:\n");

    printf("學(xué)號(hào)   姓名    性別     年齡      高數(shù)      英語(yǔ)      計(jì)算機(jī)\n");

    printf("%-6s%-10s%3c%7d%11.1f%11.1f%11.1f\n",

     stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score[0],

     stu[i].score[1],stu[i].score[2]);

    break;

   }

   if(i==N)

 printf("無(wú)此學(xué)號(hào)!\n");

 printf ("繼續(xù)或退出(Y/N)?");  

 getchar();

 scanf("%c",&k);

 

 if(k=='n'||k=='N')flag=0;

}

system("cls");

menu();  

}

7、 排序函數(shù)

定義結(jié)構(gòu)體變量作為空瓶子,在利用簡(jiǎn)單選擇排序法以后,用k標(biāo)記每一躺的最大值的位置,在交換信息。利用flag控制返回主菜單。

void sort()                                   

 {void system();                   

     struct student t;                 

    float sum[N];                      

float aver[N];                   

float f,g;                              

char c;                                

int i,j,k,p,x,flag=1;                            

system("cls");                                                                                                                                    

printf("歡迎進(jìn)入學(xué)生信息的排序!\n");              

while(flag)                   

 {for(i=0;i<M;i++)           

sum[i]=0;                     

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

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

{sum[i]=sum[i]+                               

stu[i].score[j];  

aver[i]=sum[i]/3; }

      for(k=0;k<M-1;k++)
{x=k;for(p=k+1;p<M;p++)

if(sum[x]<sum[p]) 

               x=p;                

         g=sum[k];sum[k]=sum[x];sum[x]=g;

        t=stu[k];stu[k]=stu[x];stu[x]=t;     

         f=aver[k];aver[k]=aver[x];aver[x]=f;}

    printf("學(xué)號(hào)   姓名    性別     年齡    高數(shù)     英語(yǔ)     計(jì)算機(jī)    總分     平均分\n");

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

    printf("%-7s%-10s%2c%7d%10.1f%10.1f%10.1f%9.1f%9.1f\n",  

     stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score[0],

     stu[i].score[1],stu[i].score[2],sum[i],aver[i]);

   printf("是否返回主菜單(y/n):");

  getchar(); scanf("%c",&c);

 if(c=='y'||c=='Y')    flag=0; }

system("cls");

  menu(); 
 
C、傳統(tǒng) C++
#include <assert.h> //設(shè)定插入點(diǎn)
#include <ctype.h> //字符處理
#include <errno.h> //定義錯(cuò)誤碼
#include <float.h> //浮點(diǎn)數(shù)處理
#include <fstream.h> //文件輸入/輸出
#include <iomanip.h> //參數(shù)化輸入/輸出
#include <iostream.h> //數(shù)據(jù)流輸入/輸出
#include <limits.h> //定義各種數(shù)據(jù)類(lèi)型最值常量
#include <locale.h> //定義本地化函數(shù)
#include <math.h> //定義數(shù)學(xué)函數(shù)
#include <stdio.h> //定義輸入/輸出函數(shù)
#include <stdlib.h> //定義雜項(xiàng)函數(shù)及內(nèi)存分配函數(shù)
#include <string.h> //字符串處理
#include <strstrea.h> //基于數(shù)組的輸入/輸出
#include <time.h> //定義關(guān)于時(shí)間的函數(shù)
#include <wchar.h> //寬字符處理及輸入/輸出
#include <wctype.h> //寬字符分類(lèi)

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

標(biāo)準(zhǔn) C++ (同上的不再注釋?zhuān)?
#include <algorithm> //STL 通用算法
#include <bitset> //STL 位集容器
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex> //復(fù)數(shù)類(lèi)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque> //STL 雙端隊(duì)列容器
#include <exception> //異常處理類(lèi)
#include <fstream>
#include <functional> //STL 定義運(yùn)算函數(shù)(代替運(yùn)算符)
#include <limits>
#include <list> //STL 線(xiàn)性列表容器
#include <map> //STL 映射容器
#include <iomanip>
#include <ios> //基本輸入/輸出支持
#include <iosfwd> //輸入/輸出系統(tǒng)使用的前置聲明
#include <iostream>
#include <istream> //基本輸入流
#include <ostream> //基本輸出流
#include <queue> //STL 隊(duì)列容器
#include <set> //STL 集合容器
#include <sstream> //基于字符串的流
#include <stack> //STL 堆棧容器
#include <stdexcept> //標(biāo)準(zhǔn)異常類(lèi)
#include <streambuf> //底層輸入/輸出支持
#include <string> //字符串類(lèi)
#include <utility> //STL 通用模板類(lèi)
#include <vector> //STL 動(dòng)態(tài)數(shù)組容器
#include <cwchar>
#include <cwctype>
using namespace std;

/******************************/
C99 增加

#include <complex.h> //復(fù)數(shù)處理
#include <fenv.h> //浮點(diǎn)環(huán)境
#include <inttypes.h> //整數(shù)格式轉(zhuǎn)換
#include <stdbool.h> //布爾環(huán)境
#include <stdint.h> //整型環(huán)境
#include <tgmath.h> //通用類(lèi)型數(shù)學(xué)宏
/******************************/
如果有什么疑問(wèn),可以通過(guò)搜索引擎找找再問(wèn),畢竟那樣可能會(huì)有很好的答案.
/******************************/
【6】#include<stdio.h> /*引用庫(kù)函數(shù)*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定義結(jié)構(gòu)體數(shù)組*/
{
 char num[10]; /*學(xué)號(hào)*/
 char name[20]; /*姓名*/
 int score; /*成績(jī)*/
}Student;
Student stu[80]; /*結(jié)構(gòu)體數(shù)組變量*/
int menu_select() /*菜單函數(shù)*/
{
 char c;
 do{
  system("cls"); /*運(yùn)行前清屏*/
  printf("\t\t****Students' Grade Management System****\n"); /*菜單選擇*/
  printf("\t\t | 1. Input Records |\n");
  printf("\t\t | 2. Display All Records |\n");
  printf("\t\t | 3. Sort |\n");
  printf("\t\t | 4. Insert a Record |\n");
  printf("\t\t | 5. Delete a Record |\n");
  printf("\t\t | 6. Query |\n");
  printf("\t\t | 7. Statistic |\n");
  printf("\t\t | 8. Add Records from a Text File|\n");
  printf("\t\t | 9. Write to a Text file |\n");
  printf("\t\t | 0. Quit |\n");
  printf("\t\t*****************************************\n");
  printf("\t\t\tGive your Choice(0-9):");
  c=getchar(); /*讀入選擇*/
 }while(c<'0'||c>'9');
 return(c-'0'); /*返回選擇*/
}
int Input(Student stud[],int n) /*輸入若干條記錄*/
{
 int i=0;
 char sign,x[10]; /*x[10]為清除多余的數(shù)據(jù)所用*/
 while(sign!='n'&&sign!='N') /*判斷*/
 {
  printf("\t\t\tstudent's num:"); /*交互輸入*/
  scanf("\t\t\t%s",stud[n+i].num);
  printf("\t\t\tstudent's name:");
  scanf("\t\t\t%s",stud[n+i].name);
  printf("\t\t\tstudent's score:");
  scanf("\t\t\t%d",&stud[n+i].score);
  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("\t\t\t-----------------------------------\n"); /*格式頭*/
 printf("\t\t\tnumber name score\n");
 printf("\t\t\t-----------------------------------\n");
 for(i=1;i<n+1;i++) /*循環(huán)輸入*/
 {
  printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
  if(i>1&&i%10==0) /*每十個(gè)暫停*/
  {
   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) /*按學(xué)號(hào)排序*/
{
 int i,j,*p,*q,s;
 char t[10];
 for(i=0;i<n-1;i++) /*冒泡法排序*/
  for(j=0;j<n-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].score;
    q=&stud[j].score;
    s=*p;
    *p=*q;
    *q=s;
   }
}
int Insert_a_record(Student stud[],int n) /*插入一條記錄*/
{
 char x[10]; /*清除多余輸入所用*/
 printf("\t\t\tstudent's num:"); /*交互式輸入*/
 scanf("\t\t\t%s",stud[n].num);
 printf("\t\t\tstudent's name:");
 scanf("\t\t\t%s",stud[n].name);
 printf("\t\t\tstudent's score:");
 scanf("\t\t\t%d",&stud[n].score);
 gets(x);
 n++;
 Sort_by_num(stud,n); /*調(diào)用排序函數(shù)*/
 printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
 return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,刪除一條記錄*/
{
 char s[20];
 int i=0,j;
 printf("\t\t\ttell me his(her) name:"); /*交互式問(wèn)尋*/
 scanf("%s",s);
 while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
 if(i==n)
 {
  printf("\t\t\tnot find!\n"); /*返回失敗信息*/
  return(n);
 }
 for(j=i;j<n-1;j++) /*刪除操作*/
 {
  strcpy(stud[j].num,stud[j+1].num);
  strcpy(stud[j].name,stud[j+1].name);
  stud[j].score=stud[j+1].score;
 }
 printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
 return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找并顯示一個(gè)記錄*/
{
 char s[20];
 int i=0;
 printf("\t\t\tinput his(her) name:"); /*交互式輸入*/
 scanf("\t\t\t%s",s);
 while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
 if(i==n)
 {
  printf("\t\t\tnot find!\n"); /*輸入失敗信息*/
  return;
 }
 printf("\t\t\this(her) number:%s\n",stud[i].num); /*輸出該學(xué)生信息*/
 printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,輸出統(tǒng)計(jì)信息*/
{
 int i,j=0,k=0,sum=0;
 float aver; /*成績(jī)平均值*/
 for(i=0;i<n;i++) /*循環(huán)輸入判斷*/
 {
  sum+=stud[i].score;
  if(stud[j].score>stud[i].score) j=i;
  if(stud[k].score<stud[i].score) k=i;
 }
 aver=1.0*sum/n;
 printf("\t\t\tthere are %d records.\n",n); /*總共記錄數(shù)*/
 printf("\t\t\tthe hignest score:\n"); /*最高分*/
 printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
 printf("\t\t\tthe lowest score:\n"); /*最低分*/
 printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
 printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*從文件中讀入數(shù)據(jù)*/
{
 int i=0,num;
 FILE *fp; /*定義文件指針*/
 char filename[20]; /*定義文件名*/
 printf("\t\t\tInput the filename:");
 scanf("\t\t\t%s",filename); /*輸入文件名*/
 if((fp=fopen(filename,"rb"))==NULL) /*打開(kāi)文件*/
 {
  printf("\t\t\tcann't open the file\n"); /*打開(kāi)失敗信息*/
  printf("\t\t\t");
  system("pause");
  return(n);
 }
 fscanf(fp,"%d",&num); /*讀入總記錄量*/
 while(i<num) /*循環(huán)讀入數(shù)據(jù)*/
 {
  fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
  i++;
 }
 n+=num;
 fclose(fp); /*關(guān)閉文件*/
 printf("\t\t\tSuccessed!\n");
 printf("\t\t\t");
 system("pause");
 return(n);
}
void WritetoText(Student stud[],int n) /*將所有記錄寫(xiě)入文件*/
{
 int i=0;
 FILE *fp; /*定義文件指針*/
 char filename[20]; /*定義文件名*/
 printf("\t\t\tWrite Records to a Text File\n"); /*輸入文件名*/
 printf("\t\t\tInput the filename:");
 scanf("\t\t\t%s",filename);
 if((fp=fopen(filename,"w"))==NULL) /*打開(kāi)文件*/
 {
  printf("\t\t\tcann't open the file\n");
  system("pause");
  return;
 }
 fprintf(fp,"%d\n",n); /*循環(huán)寫(xiě)入數(shù)據(jù)*/
 while(i<n)
 {
  fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
  i++;
 }
 fclose(fp); /*關(guān)閉文件*/
 printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函數(shù)*/
{
 int n=0;
 for(;;)
 {
  switch(menu_select()) /*選擇判斷*/
  {
  case 1:
   printf("\t\t\tInput Records\n"); /*輸入若干條記錄*/
   n=Input(stu,n);
   break;
  case 2:
   printf("\t\t\tDisplay All Records\n"); /*顯示所有記錄*/
   Display(stu,n);
   break;
  case 3:
   printf("\t\t\tSort\n");
   Sort_by_num(stu,n); /*按學(xué)號(hào)排序*/
   printf("\t\t\tSort Suceessed!\n");
   printf("\t\t\t");
   system("pause");
   break;
  case 4:
   printf("\t\t\tInsert a Record\n");
   n=Insert_a_record(stu,n); /*插入一條記錄*/
   printf("\t\t\t");
   system("pause");
   break;
  case 5:
   printf("\t\t\tDelete a Record\n");
   n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/
   printf("\t\t\t");
   system("pause");
   break;
  case 6:
   printf("\t\t\tQuery\n");
   Query_a_record(stu,n); /*查找并顯示一個(gè)記錄*/
   printf("\t\t\t");
   system("pause");
   break;
  case 7:
   printf("\t\t\tStatistic\n");
   Statistic(stu,n); /*新增功能,輸出統(tǒng)計(jì)信息*/
   printf("\t\t\t");
   system("pause");
   break;
  case 8:
   printf("\t\t\tAdd Records from a Text File\n");
   n=AddfromText(stu,n); /*新增功能,輸出統(tǒng)計(jì)信息*/
   break;
  case 9:
   printf("\t\t\tWrite to a Text file\n");
   WritetoText(stu,n); /*循環(huán)寫(xiě)入數(shù)據(jù)*/
   printf("\t\t\t");
   system("pause");
   break;
  case 0:
   printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*結(jié)束程序*/
   printf("\t\t\t");
   system("pause");
   exit(0);
  }
 }
}
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C語(yǔ)言的那些小秘密之鏈表(一)
C語(yǔ)言課程設(shè)計(jì)
C語(yǔ)言應(yīng)用——學(xué)生管理系統(tǒng)的制作
編程中國(guó) - 結(jié)構(gòu)體數(shù)組的定義和引用
c語(yǔ)言例題
c語(yǔ)言鏈表基本操作(帶有創(chuàng)建鏈表 刪除 打印 插入)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服