最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言版學(xué)生信息管理系統(tǒng)

 更新時間:2020年12月22日 15:07:57   作者:喜歡薄荷味  
這篇文章主要為大家詳細(xì)介紹了C語言版學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言版學(xué)生信息管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

一.題目分析

1.功能概述

1)查詢學(xué)生信息
2)添加學(xué)生信息
3)修改學(xué)生信息
4)刪除學(xué)生信息
5)刷新學(xué)生信息
6)保存學(xué)生信息
7)輸出當(dāng)前學(xué)生信息

2.題目要求:

1)使用結(jié)構(gòu)體建立學(xué)生信息體制
2)實(shí)現(xiàn)七大基本功能
3)采用文件存儲學(xué)生信息

二.算法構(gòu)造

1.難點(diǎn)解析----對文件的操作

1.1文件讀取

FILE * fp;
 if ((fp = fopen(filename, "r")) == NULL) return 0;
 //從文件讀取信息 
 while (fscanf(fp, "%s %s %s %d %d %d %d ", &stu[j].StudentId, &stu[j].StudentName, &stu[j].StudentAge, &stu[j].StudentSex, &stu[j].score[0], &stu[j].score[1], &stu[j].score[2]) == 7) {
 j++;
 }

1.2文件寫入

FILE * fp;
fp = fopen(filename, "w");
 for (i = 0; i < n; i++){
 fprintf(fp, "%s%s%d%c%.lf%.lf%.lf\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex,
 stu[i].score[0], stu[i].score[1], stu[i].score[2]);
 }

2.流程圖

3.七大基本功能----函數(shù)實(shí)現(xiàn)

3.1菜單函數(shù):通過菜單建立用戶與程序之間的交流

void menu()/* 界面*/
{
 int num;
 printf(" \n\n  \n\n");
 printf(" ******************************************************\n\n");
 printf(" * 學(xué)生信息管理系統(tǒng)  *\n \n");
 printf(" ******************************************************\n\n");
 printf("*********************系統(tǒng)功能菜單************************* \n");
 printf(" ---------------------- ---------------------- \n");
 printf(" ********************************************* \n");
 printf(" * 0.系統(tǒng)幫助及說明 * * 1.刷新學(xué)生信息 * \n");
 printf(" ********************************************* \n");
 printf(" * 2.查詢學(xué)生信息 * * 3.修改學(xué)生信息 * \n");
 printf(" ********************************************* \n");
 printf(" * 4.增加學(xué)生信息 * * 5.按學(xué)號刪除信息 * \n");
 printf(" ********************************************* \n");
 printf(" * 6.顯示當(dāng)前信息 * * 7.保存當(dāng)前學(xué)生信息* \n");
 printf(" ********************** ********************** \n");
 printf(" * 8.退出系統(tǒng) *  \n");
 printf(" **********************  \n");
 printf(" ---------------------- ----------------------  \n");
 printf("請選擇菜單編號:");
 scanf("%d", &num);
 switch (num)
 {
 case 0:help(); break;
 case 1:flush(); break;
 case 2:seek(); break;
 case 3:modify(); break;
 case 4:insert(); break;
 case 5:del(); break;
 case 6:display(); break;
 case 7:save(); break;
 case 8:
 k = 0; 
 printf("即將退出程序!\n");
 break;
 default:printf("請在0-8之間選擇\n");
 }
}

3.2系統(tǒng)幫助與說明函數(shù):適用于初次接觸學(xué)生信息管理系統(tǒng)的用戶參考

void help()
{
 printf("\n0.歡迎使用系統(tǒng)幫助!\n");
 printf("\n1.初次進(jìn)入系統(tǒng)后,請先選擇增加學(xué)生信息;\n");
 printf("\n2.按照菜單提示鍵入數(shù)字代號;\n");
 printf("\n3.增加學(xué)生信息后,切記保存;\n");
 printf("\n4.謝謝您的使用!\n");
}

3.3刷新學(xué)生信息函數(shù)

功能:調(diào)用刷新信息函數(shù)后,文件中再無學(xué)生信息

int flush(){
 char filename[LEN + 1];
 int i = 0;
 printf("請輸入要刷新學(xué)生信息的文件名:\n");
 scanf("%s", filename);
 int j = 0;
 FILE * fp;
 if ((fp = fopen(filename, "r")) == NULL) return 0;
 //從文件讀取信息 
 while (fscanf(fp, "%s %s %s %d %d %d %d ", &stu[j].StudentId, &stu[j].StudentName, &stu[j].StudentAge, &stu[j].StudentSex, &stu[j].score[0], &stu[j].score[1], &stu[j].score[2]) == 7) {
 j++;
 }
 n = j;
 printf("刷新成功!!!");
 return n;
}

3.4查詢學(xué)生信息函數(shù)

功能:通過輸入要查詢的學(xué)生學(xué)號或者姓名,與系統(tǒng)中的學(xué)生信息進(jìn)行對比,若相等,則輸出該學(xué)生的基本信息;反之,則輸出該學(xué)生在該管理系統(tǒng)中不存在

查詢方式:

1)按照學(xué)號查詢
2)按照姓名查詢

void seek() /*查找*/
{
 int i, item, flag;
 char s1[21]; /* 以姓名和學(xué)號最長長度+1為準(zhǔn)*/
 printf("------------------\n");
 printf("-----1.按學(xué)號查詢-----\n");
 printf("-----2.按姓名查詢-----\n");
 printf("-----3.退出本菜單-----\n");
 printf("------------------\n");
 while (1)
 {
 printf("請選擇子菜單編號:");
 scanf("%d", &item);
 flag = 0;
 switch (item)
 {
 case 1:
 printf("請輸入要查詢的學(xué)生的學(xué)號:\n");
 scanf("%s", s1);
 for (i = 0; i<n; i++)
 if (strcmp(s1,stu[i].StudentId) == 0)
 {
 flag = 1;
 printf("學(xué)生學(xué)號\t學(xué)生姓名\t年齡\t性別\tC語言成績\t高等數(shù)學(xué)\t大學(xué)英語成績\n");
 printf("--------------------------------------------------------------------\n");
 printf("%s\t%s\t%d\t%6\t%.1f\t%.1f\t%.1f\n", stu[i].StudentId,stu[i].StudentName,stu[i].StudentAge,stu[i].StudentSex,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
 }
 if (0 == flag)
 printf("該學(xué)號不存在!\n"); break;
 case 2:
 printf("請輸入要查詢的學(xué)生的姓名:\n");
 scanf("%s", s1);
 for (i = 0; i<n; i++)
 if (strcmp(stu[i].StudentName, s1) == 0)
 {
 flag = 1;
 printf("學(xué)生學(xué)號\t學(xué)生姓名\t年齡\t性別\tC語言成績\t高等數(shù)學(xué)\t大學(xué)英語成績\n");
 printf("--------------------------------------------------------------------\n");
 printf("%s\t%s\t%d\t%c\t%.1f\t%.1f\t%.1f\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
 }
 if (0 == flag)
 printf("該姓名不存在!\n"); break;
 case 3:return;
 default:printf("請在1-3之間選擇\n");
 }
 }
}

3.5修改學(xué)生信息

功能:通過輸入學(xué)號來選擇要修改的該學(xué)號學(xué)生的信息內(nèi)容,從而完成修改信息操作;

//修改學(xué)生信息
void modify() /*修改信息*/
{
 int i, item, num = -1;
 char sex1, s1[LEN + 1], s2[LEN + 1]; /* 以姓名和學(xué)號最長長度+1為準(zhǔn)*/
 float score1;
 printf("請輸入要要修改的學(xué)生的學(xué)號:\n");
 scanf("%s", s1);
 for (i = 0; i < n; i++){
 if (strcmp(stu[i].StudentId, s1) == 0){/*比較字符串是否相等*/
 num = i;
 printf("------------------\n");
 printf("1.修改姓名\n");
 printf("2.修改年齡\n");
 printf("3.修改性別\n");
 printf("4.修改C語言成績\n");
 printf("5.修改高等數(shù)學(xué)成績\n");
 printf("6.修改大學(xué)英語成績\n");
 printf("7.退出本菜單\n");
 printf("------------------\n");
 while (1)
 {
 printf("請選擇子菜單編號:");
 scanf("%d", &item);
 switch (item)
 {
 case 1:
 printf("請輸入新的姓名:\n");
 scanf("%s", s2);
 strcpy(stu[num].StudentName, s2);
 break;
 case 2:
 printf("請輸入新的年齡:\n");
 scanf("%d", stu[num].StudentAge);
 break;
 case 3:
 printf("請輸入新的性別:\n");
 scanf("%s", &sex1);
 stu[i].StudentSex = sex1;
 break;
 case 4:
 printf("請輸入新的C語言成績:\n");
 scanf("%f", &score1);
 stu[num].score[0] = score1;
 break;
 case 5:
 printf("請輸入新的高等數(shù)學(xué)成績:\n");
 scanf("%f", &score1);
 stu[num].score[1] = score1;
 break;
 case 6:
 printf("請輸入新的大學(xué)英語成績:\n");
 scanf("%f", &score1);
 stu[num].score[2] = score1;
 break;
 case 7: return;
 default:printf("請在1-7之間選擇\n");
 }
 }
 printf("修改完畢!請及時保存!\n");
 }
 else{
 printf("沒有該學(xué)生學(xué)號!!!");
 }
 }
}

3.6添加學(xué)生信息函數(shù)

功能:添加學(xué)生信息,并保存至文件中

//添加學(xué)生信息函數(shù)
void insert() /*插入函數(shù)*/
{
 int i = n, j, flag;
 printf("請輸入待增加的學(xué)生數(shù):\n");
 scanf("%d", &m);
 if (m > 0){
 do
 {
 flag = 1;
 while (flag)
 {
 flag = 0;
 printf("請輸入第%d位學(xué)生的學(xué)號:\n", i + 1);
 scanf("%s", stu[i].StudentId);
 for (j = 0; j < i; j++){
 if (strcmp(stu[i].StudentId, stu[j].StudentId) == 0){
 printf("該學(xué)號已存在,請重新輸入!\n");
 flag = 1;
 break;
 }
 }
 }
 printf("請輸入第%d 個學(xué)生的姓名:\n", i+1);
 scanf("%s", stu[i].StudentName);
 printf("請輸入第%d 個學(xué)生的年齡:\n", i+1);
 scanf("%d", &stu[i].StudentAge);
 printf("請輸入第%d 個學(xué)生的性別:\n", i+1);
 scanf(" %c", &stu[i].StudentSex);
 printf("請輸入第%d 個學(xué)生的C語言成績\n",i+1);
 scanf("%f", &stu[i].score[0]);
 printf("請輸入第%d 個學(xué)生的高等數(shù)學(xué)成績:\n", i+1);
 scanf("%f", &stu[i].score[1]);
 printf("請輸入第%d 個學(xué)生的大學(xué)英語成績:\n", i+1);
 scanf("%f", &stu[i].score[2]);
 if (0 == flag){
 i++;
 }
 } while (i<n + m);
 }
 n += m;
 printf("學(xué)生信息增加完畢!??!\n");
 system("pause");
}

3.7刪除學(xué)生信息函數(shù)

功能:通過輸入要刪除學(xué)生信息的學(xué)號,刪除該學(xué)生在該管理系統(tǒng)中的所有信息;

//刪除學(xué)生信息函數(shù)
void del()
{
 int i, j, flag = 0;
 char s1[LEN + 1];
 printf("請輸入要刪除學(xué)生的學(xué)號:\n");
 scanf("%s", s1);
 for (i = 0; i < n; i++){
 if (strcpy(stu[i].StudentId, s1) == 0){
 flag = 1;
 //要刪除學(xué)生后面的學(xué)生往前移一位
 for (j = i; j < n - 1; j++){
 stu[j] = stu[j + 1];
 }
 }
 }
 //查找失敗
 if (0 == flag){
 printf("該學(xué)號不存在!!!\n");
 }
 if (1 == flag){
 printf("刪除成功!??!");
 //刪除成功,學(xué)生人數(shù)減1
 n--;
 }
 system("pause");
}

3.8顯示當(dāng)前學(xué)生信息

功能:可以輸出進(jìn)行多種操作后的學(xué)生信息管理系統(tǒng)中的所有學(xué)生信息;

//顯示全部數(shù)據(jù)信息
void display()
{
 int i;
 printf("共有%d位學(xué)生的信息:\n", n);
 if (0 != n)
 {
 printf("學(xué)生學(xué)號 \t學(xué)生姓名 \t年齡 \t性別 \tC語言成績\t高等數(shù)學(xué) \t大學(xué)英語成績\n");
 printf("--------------------------------------------------------------------\n");
 for (i = 0; i<n; i++)
 {
 printf("%s \t%s \t%d \t%c \t%.1f\t%.1f \t%.1f\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex, stu[i].score[0],stu[i].score[1],stu[i].score[2]);
 }
 }
 system("pause");
}

3.8保存學(xué)生信息

功能:將進(jìn)行某些操作后的學(xué)生信息保存到指定文件中

void save(){
 int i;
 FILE *fp;
 char filename[LEN + 1];
 printf("請輸入要保存的文件名:\n");
 scanf("%s", filename);
 fp = fopen(filename, "w");
 for (i = 0; i < n; i++){
 fprintf(fp, "%s%s%d%c%.lf%.lf%.lf\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex,
 stu[i].score[0], stu[i].score[1], stu[i].score[2]);
 }
 printf("保存成功!?。n");
 fclose(fp);
 system("pause");
}

三.源程序代碼

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h> /*I/O函數(shù)*/
#include<stdlib.h> /*其它說明*/
#include<string.h> /*字符串函數(shù)*/

#define LEN 15 /* 學(xué)號和姓名最大字符數(shù),實(shí)際請更改*/
#define N 50 /* 最大學(xué)生人數(shù),實(shí)際請更改*/

int k = 1, n = 0, m = 0;/* n代表當(dāng)前記錄的學(xué)生人數(shù)*/

//函數(shù)聲明
void readfile();
void seek();
void modify();
void insert();
void del();
void display();
void save();
void menu();

//結(jié)構(gòu)體保存學(xué)生信息
struct student{
 char StudentId[LEN+1];
 char StudentName[LEN+1];
 int StudentAge;
 char StudentSex;
 float score[3];
}stu[N];

//主函數(shù)
int main()
{
 while (k)
 {
 menu();
 }
 system("pause");
 return 0;
}

//系統(tǒng)幫助函數(shù)
void help()
{
 printf("\n0.歡迎使用系統(tǒng)幫助!\n");
 printf("\n1.初次進(jìn)入系統(tǒng)后,請先選擇增加學(xué)生信息;\n");
 printf("\n2.按照菜單提示鍵入數(shù)字代號;\n");
 printf("\n3.增加學(xué)生信息后,切記保存;\n");
 printf("\n4.謝謝您的使用!\n");
}

//刷新文件
int flush(){
 char filename[LEN + 1];
 int i = 0;
 printf("請輸入要刷新學(xué)生信息的文件名:\n");
 scanf("%s", filename);
 int j = 0;
 FILE * fp;
 if ((fp = fopen(filename, "r")) == NULL) return 0;
 //從文件讀取信息 
 while (fscanf(fp, "%s %s %s %d %d %d %d ", &stu[j].StudentId, &stu[j].StudentName, &stu[j].StudentAge, &stu[j].StudentSex, &stu[j].score[0], &stu[j].score[1], &stu[j].score[2]) == 7) {
 j++;
 }
 n = j;
 printf("刷新成功!!!");
 return n;
}

//查找學(xué)生信息
void seek() /*查找*/
{
 int i, item, flag;
 char s1[21]; /* 以姓名和學(xué)號最長長度+1為準(zhǔn)*/
 printf("------------------\n");
 printf("-----1.按學(xué)號查詢-----\n");
 printf("-----2.按姓名查詢-----\n");
 printf("-----3.退出本菜單-----\n");
 printf("------------------\n");
 while (1)
 {
 printf("請選擇子菜單編號:");
 scanf("%d", &item);
 flag = 0;
 switch (item)
 {
 case 1:
 printf("請輸入要查詢的學(xué)生的學(xué)號:\n");
 scanf("%s", s1);
 for (i = 0; i<n; i++)
 if (strcmp(s1,stu[i].StudentId) == 0)
 {
 flag = 1;
 printf("學(xué)生學(xué)號\t學(xué)生姓名\t年齡\t性別\tC語言成績\t高等數(shù)學(xué)\t大學(xué)英語成績\n");
 printf("--------------------------------------------------------------------\n");
 printf("%s\t%s\t%d\t%6\t%.1f\t%.1f\t%.1f\n", stu[i].StudentId,stu[i].StudentName,stu[i].StudentAge,stu[i].StudentSex,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
 }
 if (0 == flag)
 printf("該學(xué)號不存在!\n"); break;
 case 2:
 printf("請輸入要查詢的學(xué)生的姓名:\n");
 scanf("%s", s1);
 for (i = 0; i<n; i++)
 if (strcmp(stu[i].StudentName, s1) == 0)
 {
 flag = 1;
 printf("學(xué)生學(xué)號\t學(xué)生姓名\t年齡\t性別\tC語言成績\t高等數(shù)學(xué)\t大學(xué)英語成績\n");
 printf("--------------------------------------------------------------------\n");
 printf("%s\t%s\t%d\t%c\t%.1f\t%.1f\t%.1f\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
 }
 if (0 == flag)
 printf("該姓名不存在!\n"); break;
 case 3:return;
 default:printf("請在1-3之間選擇\n");
 }
 }
}

//修改學(xué)生信息
void modify() /*修改信息*/
{
 int i, item, num = -1;
 char sex1, s1[LEN + 1], s2[LEN + 1]; /* 以姓名和學(xué)號最長長度+1為準(zhǔn)*/
 float score1;
 printf("請輸入要要修改的學(xué)生的學(xué)號:\n");
 scanf("%s", s1);
 for (i = 0; i < n; i++){
 if (strcmp(stu[i].StudentId, s1) == 0){/*比較字符串是否相等*/
 num = i;
 printf("------------------\n");
 printf("1.修改姓名\n");
 printf("2.修改年齡\n");
 printf("3.修改性別\n");
 printf("4.修改C語言成績\n");
 printf("5.修改高等數(shù)學(xué)成績\n");
 printf("6.修改大學(xué)英語成績\n");
 printf("7.退出本菜單\n");
 printf("------------------\n");
 while (1)
 {
 printf("請選擇子菜單編號:");
 scanf("%d", &item);
 switch (item)
 {
 case 1:
 printf("請輸入新的姓名:\n");
 scanf("%s", s2);
 strcpy(stu[num].StudentName, s2);
 break;
 case 2:
 printf("請輸入新的年齡:\n");
 scanf("%d", stu[num].StudentAge);
 break;
 case 3:
 printf("請輸入新的性別:\n");
 scanf("%s", &sex1);
 stu[i].StudentSex = sex1;
 break;
 case 4:
 printf("請輸入新的C語言成績:\n");
 scanf("%f", &score1);
 stu[num].score[0] = score1;
 break;
 case 5:
 printf("請輸入新的高等數(shù)學(xué)成績:\n");
 scanf("%f", &score1);
 stu[num].score[1] = score1;
 break;
 case 6:
 printf("請輸入新的大學(xué)英語成績:\n");
 scanf("%f", &score1);
 stu[num].score[2] = score1;
 break;
 case 7: return;
 default:printf("請在1-7之間選擇\n");
 }
 }
 printf("修改完畢!請及時保存!\n");
 }
 else{
 printf("沒有該學(xué)生學(xué)號!!!");
 }
 }
}

void sort()//按學(xué)號排序
{
 int i, j, k, *p, *q, s;
 char temp[LEN + 1], ctemp;
 float ftemp;
 for (i = 0; i<n - 1; i++)
 {
 for (j = n - 1; j>i; j--)
 if (strcmp(stu[j - 1].StudentId, stu[j].StudentId)>0)
 {
 strcpy(temp, stu[j - 1].StudentId);
 strcpy(stu[j - 1].StudentId, stu[j].StudentId);
 strcpy(stu[j].StudentId, temp);
 strcpy(temp, stu[j - 1].StudentName);
 strcpy(stu[j - 1].StudentName, stu[j].StudentName);
 strcpy(stu[j].StudentName, temp);
 ctemp = stu[j - 1].StudentSex;
 stu[j - 1].StudentSex = stu[j].StudentSex;
 stu[j].StudentSex = ctemp;
 p = &stu[j - 1].StudentAge;
 q = &stu[j].StudentAge;
 s = *q;
 *q = *p;
 *p = s;
 for (k = 0; k<3; k++)
 {
 ftemp = stu[j - 1].score[k];
 stu[j - 1].score[k] = stu[j].score[k];
 stu[j].score[k] = ftemp;
 }
 }
 }
}

//添加學(xué)生信息函數(shù)
void insert() /*插入函數(shù)*/
{
 int i = n, j, flag;
 printf("請輸入待增加的學(xué)生數(shù):\n");
 scanf("%d", &m);
 if (m > 0){
 do
 {
 flag = 1;
 while (flag)
 {
 flag = 0;
 printf("請輸入第%d位學(xué)生的學(xué)號:\n", i + 1);
 scanf("%s", stu[i].StudentId);
 for (j = 0; j < i; j++){
 if (strcmp(stu[i].StudentId, stu[j].StudentId) == 0){
 printf("該學(xué)號已存在,請重新輸入!\n");
 flag = 1;
 break;
 }
 }
 }
 printf("請輸入第%d 個學(xué)生的姓名:\n", i+1);
 scanf("%s", stu[i].StudentName);
 printf("請輸入第%d 個學(xué)生的年齡:\n", i+1);
 scanf("%d", &stu[i].StudentAge);
 printf("請輸入第%d 個學(xué)生的性別:\n", i+1);
 scanf(" %c", &stu[i].StudentSex);
 printf("請輸入第%d 個學(xué)生的C語言成績\n",i+1);
 scanf("%f", &stu[i].score[0]);
 printf("請輸入第%d 個學(xué)生的高等數(shù)學(xué)成績:\n", i+1);
 scanf("%f", &stu[i].score[1]);
 printf("請輸入第%d 個學(xué)生的大學(xué)英語成績:\n", i+1);
 scanf("%f", &stu[i].score[2]);
 if (0 == flag){
 i++;
 }
 } while (i<n + m);
 }
 n += m;
 printf("學(xué)生信息增加完畢?。。n");
 system("pause");
}

//刪除學(xué)生信息函數(shù)
void del()
{
 int i, j, flag = 0;
 char s1[LEN + 1];
 printf("請輸入要刪除學(xué)生的學(xué)號:\n");
 scanf("%s", s1);
 for (i = 0; i < n; i++){
 if (strcpy(stu[i].StudentId, s1) == 0){
 flag = 1;
 //要刪除學(xué)生后面的學(xué)生往前移一位
 for (j = i; j < n - 1; j++){
 stu[j] = stu[j + 1];
 }
 }
 }
 //查找失敗
 if (0 == flag){
 printf("該學(xué)號不存在!!!\n");
 }
 if (1 == flag){
 printf("刪除成功?。?!");
 //刪除成功,學(xué)生人數(shù)減1
 n--;
 }
 system("pause");
}

//顯示全部數(shù)據(jù)信息
void display()
{
 int i;
 printf("共有%d位學(xué)生的信息:\n", n);
 if (0 != n)
 {
 printf("學(xué)生學(xué)號 \t學(xué)生姓名 \t年齡 \t性別 \tC語言成績\t高等數(shù)學(xué) \t大學(xué)英語成績\n");
 printf("--------------------------------------------------------------------\n");
 for (i = 0; i<n; i++)
 {
 printf("%s \t%s \t%d \t%c \t%.1f\t%.1f \t%.1f\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex, stu[i].score[0],stu[i].score[1],stu[i].score[2]);
 }
 }
 system("pause");
}

void save(){
 int i;
 FILE *fp;
 char filename[LEN + 1];
 printf("請輸入要保存的文件名:\n");
 scanf("%s", filename);
 fp = fopen(filename, "w");
 for (i = 0; i < n; i++){
 fprintf(fp, "%s%s%d%c%.lf%.lf%.lf\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex,
 stu[i].score[0], stu[i].score[1], stu[i].score[2]);
 }
 printf("保存成功?。?!\n");
 fclose(fp);
 system("pause");
}

void menu()/* 界面*/
{
 int num;
 printf(" \n\n  \n\n");
 printf(" ******************************************************\n\n");
 printf(" * 學(xué)生信息管理系統(tǒng)  *\n \n");
 printf(" ******************************************************\n\n");
 printf("*********************系統(tǒng)功能菜單************************* \n");
 printf(" ---------------------- ---------------------- \n");
 printf(" ********************************************* \n");
 printf(" * 0.系統(tǒng)幫助及說明 * * 1.刷新學(xué)生信息 * \n");
 printf(" ********************************************* \n");
 printf(" * 2.查詢學(xué)生信息 * * 3.修改學(xué)生信息 * \n");
 printf(" ********************************************* \n");
 printf(" * 4.增加學(xué)生信息 * * 5.按學(xué)號刪除信息 * \n");
 printf(" ********************************************* \n");
 printf(" * 6.顯示當(dāng)前信息 * * 7.保存當(dāng)前學(xué)生信息* \n");
 printf(" ********************** ********************** \n");
 printf(" * 8.退出系統(tǒng) *  \n");
 printf(" **********************  \n");
 printf(" ---------------------- ----------------------  \n");
 printf("請選擇菜單編號:");
 scanf("%d", &num);
 switch (num)
 {
 case 0:help(); break;
 case 1:flush(); break;
 case 2:seek(); break;
 case 3:modify(); break;
 case 4:insert(); break;
 case 5:del(); break;
 case 6:display(); break;
 case 7:save(); break;
 case 8:
 k = 0; 
 printf("即將退出程序!\n");
 break;
 default:printf("請在0-8之間選擇\n");
 }
}

四.調(diào)試、測試以及實(shí)驗(yàn)結(jié)果

1.調(diào)試:

2.測試:

輸入數(shù)據(jù)類型與定義時不符合,程序運(yùn)行過程中會出現(xiàn)錯誤

3.實(shí)驗(yàn)結(jié)果:

(1)~(9)是一個連續(xù)的運(yùn)行實(shí)驗(yàn)結(jié)果

(1)運(yùn)行菜單

(2)添加學(xué)生信息

(3)保存學(xué)生信息

(4)顯示全部信息

(5)修改學(xué)生信息

(6)顯示修改后全部信息

(7)刷新學(xué)生信息

(8)保存學(xué)生信息

(9)顯示刷新后的全部信息

五、總結(jié)

編寫一個功能齊全的、方便用戶操作的學(xué)生管理系統(tǒng),需要長期的實(shí)踐與積累。
實(shí)踐時檢驗(yàn)的好辦法,學(xué)到的知識經(jīng)過實(shí)踐的檢驗(yàn),才能更好的被自身吸收。文件的操作的程序編寫應(yīng)用對我來說,是一個沒有經(jīng)過多次實(shí)踐的問題,所以我在寫這部分程序時,還是有些難度。該程序中還存在一個問題就是,當(dāng)輸入一個與定義時不符的數(shù)據(jù),程序在運(yùn)行過程中會出現(xiàn)錯誤,修改辦法還在思考,歡迎大家來與我互相共勉。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言實(shí)現(xiàn)文件版通訊錄的代碼分享

    C語言實(shí)現(xiàn)文件版通訊錄的代碼分享

    這篇文章主要為大家詳細(xì)介紹了如何利用C語言實(shí)現(xiàn)一個文件版通訊錄,主要運(yùn)用了結(jié)構(gòu)體,一維數(shù)組,函數(shù),分支與循環(huán)語句等等知識,需要的可以參考一下
    2023-01-01
  • C++實(shí)現(xiàn)的分布式游戲服務(wù)端引擎KBEngine詳解

    C++實(shí)現(xiàn)的分布式游戲服務(wù)端引擎KBEngine詳解

    這篇文章主要詳細(xì)介紹了C++實(shí)現(xiàn)的分布式游戲服務(wù)端引擎KBEngine的概念以及使用方法,非常的實(shí)用,有需要的小伙伴可以參考下
    2015-03-03
  • Windows下sentry接入C/C++程序的詳細(xì)過程

    Windows下sentry接入C/C++程序的詳細(xì)過程

    sentry作為一個開源的軟件,發(fā)展至今,已經(jīng)非常成熟。它支持的平臺眾多,甚至于針對不同的工作者(后臺、前端、客戶端)都有相應(yīng)的內(nèi)容,這篇文章主要介紹了Windows下sentry接入C/C++程序,需要的朋友可以參考下
    2022-09-09
  • C++報錯:Id?returned?1exit?status的解決辦法

    C++報錯:Id?returned?1exit?status的解決辦法

    最近剛學(xué)c語言,不止一次遇到了同一種報錯,經(jīng)過總結(jié)分享給大家,下面這篇文章主要給大家介紹了關(guān)于C++報錯:Id?returned?1exit?status的解決辦法,需要的朋友可以參考下
    2023-04-04
  • c++ 虛繼承,多繼承相關(guān)總結(jié)

    c++ 虛繼承,多繼承相關(guān)總結(jié)

    這篇文章主要介紹了c++虛繼承,多繼承相關(guān)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-03-03
  • Qt實(shí)現(xiàn)線程與定時器的方法

    Qt實(shí)現(xiàn)線程與定時器的方法

    本文主要介紹了Qt實(shí)現(xiàn)線程與定時器的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 可能是全網(wǎng)最詳細(xì)的Qt連接MySQL數(shù)據(jù)庫教程

    可能是全網(wǎng)最詳細(xì)的Qt連接MySQL數(shù)據(jù)庫教程

    QT眾所周知是一個開源的,以C++為底層的可視化工具庫,下面這篇文章主要給大家介紹了關(guān)于最詳細(xì)的Qt連接MySQL數(shù)據(jù)庫教程的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • 關(guān)于define與C 的內(nèi)存

    關(guān)于define與C 的內(nèi)存

    本文主要介紹了C語言中#define到底存在程序的哪個區(qū),以及工作流程和效率與普通函數(shù)的區(qū)別,希望能幫助需要的小伙伴
    2016-07-07
  • C++版圖書管理系統(tǒng)

    C++版圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++版圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++從序列容器中刪除元素的四種方法

    C++從序列容器中刪除元素的四種方法

    刪除元素的方法在序列容器和關(guān)聯(lián)容器之間是非常不同的,在序列容器中,vector 和 string 是最常用的,但這里也會介紹 deque 和 list 以供全面了解,盡管在一般情況下可能不會使用它們,本文將詳細(xì)給大家介紹一下C++從序列容器中刪除元素的四種方法,需要的朋友可以參考下
    2025-03-03

最新評論

五台县| 永定县| 防城港市| 丰县| 彩票| 肇源县| 长治县| 舒兰市| 衡南县| 宝丰县| 贡山| 江都市| 扎囊县| 江川县| 喜德县| 靖州| 神池县| 健康| 舞钢市| 大安市| 墨玉县| 延川县| 定日县| 岳池县| 从化市| 龙胜| 临颍县| 东平县| 巴东县| 酉阳| 平凉市| 田东县| 洞头县| 自贡市| 荣成市| 西平县| 大庆市| 余江县| 宣武区| 洛浦县| 西乌|