编制一个C语言成绩记录簿,每个学生信息包括:学号,姓名,C语言成绩.具体功能:

作者&投稿:严广 (若有异议请与网页底部的电邮联系)
编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能: (1)创建信息链表~

数据描述:学号 姓名 班级 高数 英语 总分

程序完成功能:

(1) 浏览数据 (2) 增加数据 (3) 修改数据

(4) 查询数据(按姓名,按总分) (5) 退出
*/

#include
#include
#include
using namespace std;

class student
{
public:
student(int , string ,int ,int ,int );
string getName(){return _name;};
int getID(){return _ID;};
void setID(int i){_ID=i;};
void setName(string);
void setClass(int c){_class=c;};
void setMath(int m){_math=m;_total=_math+_english;};
void setEnglish(int e){_english=e;_total=_math+_english;}
void print();

static int _stNum;
private:
int _ID;
string _name;
int _class;
int _math;
int _english;
int _total;
};
int student::_stNum=0;
student::student(int id, string name, int iclass, int ma, int en)
{
_ID=id;
_name=name;
_class=iclass;
_math=ma;
_english=en;
_total=_math+_english;
_stNum++;
};



void student::setName(string s)
{
_name=s;
};

void student::print()
{

cout<<_ID
<<""<< _name
<<""<<_class
<<""<<_math
<<""<<_english
<<""<<_total <<endl;

}


void printMenu(void);
void printHead(void);
void printTail(int);



void main()
{
int tmp_ID;
string tmp_name;
int tmp_class;
int tmp_math;
int tmp_english;
int order=0;
vector stvec;


printMenu();
cin>>order;

while(order!=5)
{
switch(order)
{
case 1:
if (stvec.size()==0)
{
coutNo data in the system!"<<endl<<endl;
printMenu();
cin>>order;
break;
}
else
{
vector::iterator iter=stvec.begin();
vector::iterator iter_end=stvec.end();
printHead();
for(;iter!=iter_end;iter++)
{

(*iter).print();
}
printTail(stvec.size());
printMenu();
cin>>order;


break;
}


case 2:
coutID:";
cin>>tmp_ID;
coutName:";
cin>>tmp_name;
coutClass:";
cin>>tmp_class;
coutMark of Math:";
cin>>tmp_math;
coutMark of English:";
cin>>tmp_english;
stvec.push_back(student(tmp_ID,tmp_name,tmp_class,tmp_math,tmp_english));

printMenu();
cin>>order;
break;

case 3:
{
string search_name;
bool isFind=false;
coutName:";
cin>>search_name;
vector::iterator iter=stvec.begin();
vector::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
isFind=true;
coutID:";
cin>>tmp_ID;
coutName:";
cin>>tmp_name;
coutClass:";
cin>>tmp_class;
coutMark of Math:";
cin>>tmp_math;
coutMark of English:";
cin>>tmp_english;

(*iter).setID(tmp_ID);
(*iter).setName(tmp_name);
(*iter).setClass(tmp_class);
(*iter).setMath(tmp_math);
(*iter).setEnglish(tmp_english);
}
}
if(!isFind)
{
cout<<"There no student named "<<search_name<<endl;
}
printMenu();
cin>>order;
break;
}
case 4:
string search_name;
int search_ID;
int name_ID=0;
bool isFind=false;
cout<<"-----------"<<endl;
cout<<"1.Name:"<<endl;
cout<<"2.ID:"<<endl;
cout<<"-----------"<<endl;
cin>>name_ID;

if (name_ID==1)
{
coutname:"<<endl;
cin>>search_name;
vector::iterator iter=stvec.begin();
vector::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
if(!isFind)
{
cout<<endl<<"Your search:"<<endl;
printHead();
}
(*iter).print();
isFind=true;
}
}
if(isFind){ cout<<"-------------------------------------------------"<<endl;}
if(!isFind)
{
cout<<"There no student named :"<<search_name<<endl;
}
printMenu();
cin>>order;
break;
}

if (name_ID==2)
{
coutID:"<<endl;
cin>>search_ID;
vector::iterator iter=stvec.begin();
vector::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getID()==search_ID)
{
if(!isFind)
{cout<<endl<<"Your search:"<<endl; printHead();}
(*iter).print();
isFind=true;
}
}
if(isFind){ cout<<"-------------------------------------------------"<<endl;}
if(!isFind)
{
cout<<"There no student ID :"<<search_name<<endl;
}
printMenu();
cin>>order;
break;

}
}
}
}

void printMenu(void)
{
cout<<endl<<"*************Make**your**choice***************"<<endl;
cout<<"1. View the data"<<endl;
cout<<"2. ADD the data"<<endl;
cout<<"3. Update the data"<<endl;
cout<<"4. Search the data"<<endl;
cout<<"5. Quit"<<endl;
cout<<"********************************************"<<endl<<endl;
}


void printHead(void)
{
cout<<"-------------------------------------------------"<<endl;
cout<<"IDNameClassMathEnglishTotal"<<endl;
}

void printTail(int i)
{
cout<<"There are total ";
if (i ==1)
{cout<< i<<" student"<<endl;}
else if(i >1)
{cout<<i<<" students"<<endl;}
cout<<"-------------------------------------------------"<<endl;
}

// 某班级学生C语言第一次正考的成绩存于数据文件score.dat中,记录了学生学号、姓名和考试成绩,bk.dat文件中记录了补考学生的学号、姓名和补考成绩,编写程序以链式存储结构实现以下要求:// 1、对该班级按成绩降序排序并统计成绩平均分及每个分数段的人数,结果写入到result.dat中。// 2、再根据补考成绩修改原成绩,修改成绩后仍按成绩降序写在result.dat的后面。成绩修改原则:// 1)补考成绩大于等于60,原成绩以60分记;2)补考成绩小于60,取两次成绩中最高值记。#include#include#include#define MAX 50typedef struct {int xh; //学生学号、姓名和考试成绩char na[MAX];float cj;}datatype;typedef struct Node{datatype data;struct Node* next;} Seqlist;void print(Seqlist* l);void initList(Seqlist *lp);/*置一个空表*/void createList(Seqlist *lp, char strname[]);/*建立成绩顺序表 */void save(Seqlist *lp, char strname[]);/*保存学生顺序表到指定文件*/void sort_cj(Seqlist *lp); /*降序排序*/void average(Seqlist *lp); /*算平均分并写入文件 */void bandscore(Seqlist *lp);/*划分分数段及写入 */void changescore(Seqlist *lp, Seqlist *bk); /*修改成绩*/int main(){Seqlist lp, bk;initList(&lp); initList(&bk);createList(&lp, "score.dat");createList(&bk, "bk.dat");sort_cj(&lp);save(&lp, "result.dat");average(&lp);bandscore(&lp);changescore(&lp, &bk);sort_cj(&lp);save(&lp, "result.dat");return 0;}/*置一个空表*/void initList(Seqlist *lp){lp->next = 0;lp->data.xh =0;lp->data.na[0]='\0';lp->data.cj = 0;}void print(Seqlist*l){Seqlist* p = l->next;while (p){printf("%d %s %f
", p->data.xh, p->data.na,p->data.cj);p = p->next;}}/*建立成绩顺序表 */void createList(Seqlist *lp, char strname[]){FILE *fp;int xh;float cj;Seqlist*p,*tail=lp;if ((fp = fopen(strname, "rb")) == NULL){printf("file open error
");exit(0);}while (!feof(fp)){p = (Seqlist*)malloc(sizeof(Seqlist));fscanf(fp, "%d%s%f", &p->data.xh, p->data.na, &p->data.cj);tail->next = p;tail = p;}tail->next = NULL; print(lp);fclose(fp);}/*降序排序*/void sort_cj(Seqlist* head){Seqlist* tail = NULL;while (tail != head->next){Seqlist* pre = head;Seqlist* cur = pre->next;while (cur != tail && cur->next != tail){if (cur->data.cjnext->data.cj){//交换当前节点和后一个节点pre->next = cur->next;cur->next = cur->next->next;pre->next->next = cur;}pre = pre->next;cur = pre->next;}tail = cur;}}/*保存学生顺序表到文件(追加)*/void save(Seqlist *l, char strname[]){FILE *fp;Seqlist *lp= l->next;int i;if ((fp = fopen(strname, "ab")) == NULL){printf("file open error
");exit(0);}while (lp){fprintf(fp, "%d %s %.2f
", lp->data.xh, lp->data.na, lp->data.cj);lp = lp->next;}fprintf(fp, "
");fclose(fp);}/*算平均分并写入文件 */void average(Seqlist *l){FILE *fp;int i,num=0;Seqlist *lp = l->next;float s = 0, a;while (lp){num++;s += lp->data.cj;lp = lp->next;}if (num)a = s / num;if ((fp = fopen("result.dat", "ab")) == NULL){printf("file open error
");exit(0);}fprintf(fp, "平均分为%.2f
", a);fprintf(fp, "
");fclose(fp);}/*分数段及写入 */void bandscore(Seqlist *l){FILE *fp;if ((fp = fopen("result.dat", "ab")) == NULL){printf("file open error
");exit(0);}Seqlist*lp = l->next;int i, a = 0, q = 0, w = 0, e = 0, r = 0, t = 0, y = 0;while (lp){a = lp->data.cj / 10;lp = lp->next;switch (a){case 10:q++; break;case 9:w++; break;case 8:e++; break;case 7:r++; break;case 6:t++; break;default:y++; break;}}fprintf(fp, "成绩为100有%d人
", q);fprintf(fp, "成绩为90~99有%d人
", w);fprintf(fp, "成绩为80~89有%d人
", e);fprintf(fp, "成绩为70~79有%d人
", r);fprintf(fp, "成绩为60~69有%d人
", t);fprintf(fp, "不及格的有%d人
", y);fprintf(fp, "
");fclose(fp);}/*修改成绩*/void changescore(Seqlist *lp, Seqlist *bk){int i, j;Seqlist*la = lp->next, *lb = bk->next;while (lb){while (la){if (lb->data.xh == la->data.xh){if (lb->data.cj >= 60)la->data.cj = 60;else if (lb->data.cj > la->data.cj) la->data.cj = lb->data.cj;break;}la = la->next;}lb = lb->next;}print(lp);}

我以前做过的一个,
你看看,

/*
数据描述:学号 姓名 班级 高数 英语 总分

程序完成功能:

(1) 浏览数据 (2) 增加数据 (3) 修改数据

(4) 查询数据(按姓名,按总分) (5) 退出
*/

#include<iostream>
#include<string>
#include<vector>
using namespace std;

class student
{
public:
student(int , string ,int ,int ,int );
string getName(){return _name;};
int getID(){return _ID;};
void setID(int i){_ID=i;};
void setName(string);
void setClass(int c){_class=c;};
void setMath(int m){_math=m;_total=_math+_english;};
void setEnglish(int e){_english=e;_total=_math+_english;}
void print();

static int _stNum;
private:
int _ID;
string _name;
int _class;
int _math;
int _english;
int _total;
};
int student::_stNum=0;
student::student(int id, string name, int iclass, int ma, int en)
{
_ID=id;
_name=name;
_class=iclass;
_math=ma;
_english=en;
_total=_math+_english;
_stNum++;
};

void student::setName(string s)
{
_name=s;
};

void student::print()
{

cout<<_ID
<<"\t"<< _name
<<"\t"<<_class
<<"\t"<<_math
<<"\t"<<_english
<<"\t"<<_total <<endl;

}

void printMenu(void);
void printHead(void);
void printTail(int);

void main()
{
int tmp_ID;
string tmp_name;
int tmp_class;
int tmp_math;
int tmp_english;
int order=0;
vector<student> stvec;

printMenu();
cin>>order;

while(order!=5)
{
switch(order)
{
case 1:
if (stvec.size()==0)
{
cout<<"ERR:---->No data in the system!"<<endl<<endl;
printMenu();
cin>>order;
break;
}
else
{
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
printHead();
for(;iter!=iter_end;iter++)
{

(*iter).print();
}
printTail(stvec.size());
printMenu();
cin>>order;

break;
}

case 2:
cout<<"Insert-->ID:";
cin>>tmp_ID;
cout<<"Insert-->Name:";
cin>>tmp_name;
cout<<"Insert-->Class:";
cin>>tmp_class;
cout<<"Insert-->Mark of Math:";
cin>>tmp_math;
cout<<"Insert-->Mark of English:";
cin>>tmp_english;
stvec.push_back(student(tmp_ID,tmp_name,tmp_class,tmp_math,tmp_english));

printMenu();
cin>>order;
break;

case 3:
{
string search_name;
bool isFind=false;
cout<<"\nOrignal_Update-->Name:";
cin>>search_name;
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
isFind=true;
cout<<"New_Update-->ID:";
cin>>tmp_ID;
cout<<"New_Update-->Name:";
cin>>tmp_name;
cout<<"New_Update-->Class:";
cin>>tmp_class;
cout<<"New_Update-->Mark of Math:";
cin>>tmp_math;
cout<<"New_Update-->Mark of English:";
cin>>tmp_english;

(*iter).setID(tmp_ID);
(*iter).setName(tmp_name);
(*iter).setClass(tmp_class);
(*iter).setMath(tmp_math);
(*iter).setEnglish(tmp_english);
}
}
if(!isFind)
{
cout<<"There no student named "<<search_name<<endl;
}
printMenu();
cin>>order;
break;
}
case 4:
string search_name;
int search_ID;
int name_ID=0;
bool isFind=false;
cout<<"-----------"<<endl;
cout<<"1.Name:"<<endl;
cout<<"2.ID:"<<endl;
cout<<"-----------"<<endl;
cin>>name_ID;

if (name_ID==1)
{
cout<<"\nSearch-->name:"<<endl;
cin>>search_name;
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
if(!isFind)
{
cout<<endl<<"Your search:"<<endl;
printHead();
}
(*iter).print();
isFind=true;
}
}
if(isFind){ cout<<"-------------------------------------------------"<<endl;}
if(!isFind)
{
cout<<"There no student named :"<<search_name<<endl;
}
printMenu();
cin>>order;
break;
}

if (name_ID==2)
{
cout<<"\nSearch-->ID:"<<endl;
cin>>search_ID;
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getID()==search_ID)
{
if(!isFind)
{cout<<endl<<"Your search:"<<endl;
printHead();}
(*iter).print();
isFind=true;
}
}
if(isFind){ cout<<"-------------------------------------------------"<<endl;}
if(!isFind)
{
cout<<"There no student ID :"<<search_name<<endl;
}
printMenu();
cin>>order;
break;

}
}
}
}

void printMenu(void)
{
cout<<endl<<"*************Make**your**choice***************"<<endl;
cout<<"1. View the data"<<endl;
cout<<"2. ADD the data"<<endl;
cout<<"3. Update the data"<<endl;
cout<<"4. Search the data"<<endl;
cout<<"5. Quit"<<endl;
cout<<"********************************************"<<endl<<endl;
}

void printHead(void)
{
cout<<"-------------------------------------------------"<<endl;
cout<<"ID\tName\tClass\tMath\tEnglish\tTotal"<<endl;
}

void printTail(int i)
{
cout<<"There are total ";
if (i ==1)
{cout<< i<<" student"<<endl;}
else if(i >1)
{cout<<i<<" students"<<endl;}
cout<<"-------------------------------------------------"<<endl;
}

我大三了 。话说为什么要大一学这么难的东西,我真是报警了。至少涉及到数据结构的问题吧!哎

百度 C语言 结构体 保存文件

~
~
~
~
~

由于代码量超过了百度知道答题的字数上限,下面只给出了部分代码,完整代码我已上传到百度网盘,请自行下载。下载链接:(点击下载)成绩管理程序。

30个学生的数据要手动输入,我已手动输入,测试通过。下面是测试结果。你自己测试的时候需要重新输入!输入学号的时候可以不按顺序输,这样更能体现程序的排序功能。排序的算法是简单的,也就是说效率不怎么样,但对新手来说,到这个程度就好。

#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
#include <conio.h>

#define mcr__stu_name_max_len     30
#define mcr__stu_inf_file_name    ("stu_inf.dat") //保存学生信息的文件
#define mcr__new(data_type)       (data_type*)malloc(sizeof(data_type))

typedef struct _Student
{
  unsigned long    ulng_stu_num; //学号
  char             chr1_stu_name[mcr__stu_name_max_len + 1]; //学生姓名
  int              int_scores;   //C语言成成绩
  struct _Student* next;
} Student;

typedef struct _RankStudent
{
  Student              stu_inf;
  int                  ranking;  //该学生的排名
  struct _RankStudent* next;
} RankStudent;

void SwapRankStudent(RankStudent* p_1, RankStudent* p_2)
{
 char chr1_name[mcr__stu_name_max_len + 1];
 int scores, ranking;
 unsigned long stu_num;
 strcpy(chr1_name, p_1->stu_inf.chr1_stu_name);
 strcpy(p_1->stu_inf.chr1_stu_name, p_2->stu_inf.chr1_stu_name);
 strcpy(p_2->stu_inf.chr1_stu_name, chr1_name);
 scores = p_1->stu_inf.int_scores;
 p_1->stu_inf.int_scores = p_2->stu_inf.int_scores;
 p_2->stu_inf.int_scores = scores;
 stu_num = p_1->stu_inf.ulng_stu_num;
 p_1->stu_inf.ulng_stu_num = p_2->stu_inf.ulng_stu_num;
 p_2->stu_inf.ulng_stu_num = stu_num;
 ranking = p_1->ranking;
 p_1->ranking = p_2->ranking;
 p_2->ranking = ranking;
}

long GetStudentDataSize()
{
 return sizeof(unsigned long) + (sizeof(char) * (mcr__stu_name_max_len + 1)) + sizeof(int);
}

void ClearScreen() //清屏
{
 system("cls");
}

void Pause() //暂停
{
 _getch();
}

void RealseMemory(Student* p_stu_head) //释放动态申请的内存
{
 Student* p_stu_remove;
 while (p_stu_head)
 {
   p_stu_remove = p_stu_head;
   p_stu_head = p_stu_head->next;
   free(p_stu_remove);
 }
}
void RealseMemory_2(RankStudent* p_stu_head)
{
 RankStudent* p_stu_remove;
 while (p_stu_head)
 {
   p_stu_remove = p_stu_head;
   p_stu_head = p_stu_head->next;
   free(p_stu_remove);
 }
}
/* 处理文件的部分 */
int AppendStuInfToFile(Student* p_stu_head) //向文件尾部追加若干数据,返回0表示操作失败。
{
 if (p_stu_head == NULL)
 {
   return 0;
 }
 FILE* p_file = fopen(mcr__stu_inf_file_name, "a");
 if (p_file == NULL)
 {
   return 0;
 }
 while (p_stu_head)
 {
   fwrite(&p_stu_head->ulng_stu_num, sizeof(unsigned long), 1, p_file);
   fwrite(p_stu_head->chr1_stu_name, sizeof(char), mcr__stu_name_max_len + 1, p_file);
   fwrite(&p_stu_head->int_scores, sizeof(int), 1, p_file);
   p_stu_head = p_stu_head->next;
 }
 fclose(p_file);
 return 1;
}

RankStudent* GetStuInfFromFile() //参数返回获取的学生信息的数目
{
 FILE* p_file = fopen(mcr__stu_inf_file_name, "r");
 if (p_file == NULL)
 {
   printf("文件打开失败,按任意键返回主菜单!");
   Pause();
   ClearScreen();
   return NULL;
 }
 RankStudent *p_stu_head = NULL, *p_stu_cur, *p_stu_new;
 p_stu_new = p_stu_cur = p_stu_head = mcr__new(RankStudent);
 p_stu_new->next = NULL;
 fread(&p_stu_new->stu_inf.ulng_stu_num, sizeof(unsigned long), 1, p_file);
 fread(p_stu_new->stu_inf.chr1_stu_name, sizeof(char), mcr__stu_name_max_len + 1, p_file);
 fread(&p_stu_new->stu_inf.int_scores, sizeof(int), 1, p_file);
 while (1)
 {
   p_stu_new = mcr__new(RankStudent);
   p_stu_new->next = NULL;
   fread(&p_stu_new->stu_inf.ulng_stu_num, sizeof(unsigned long), 1, p_file);
   fread(p_stu_new->stu_inf.chr1_stu_name, sizeof(char), mcr__stu_name_max_len + 1, p_file);
   if (fread(&p_stu_new->stu_inf.int_scores, sizeof(int), 1, p_file) <= 0)
   {
     break;
   }
   p_stu_cur->next = p_stu_new;
   p_stu_cur = p_stu_new;
 }
 fclose(p_file);
 return p_stu_head;
}
/* 界面 */
int MainUI() //主界面
{
 printf("              C语言成绩管理


");
 printf("              1.增加新信息
");
 printf("              2.修改信息
");
 printf("              3.查询信息
");
 printf("              4.显示60分以下学生的信息
");
 printf("              5.显示分数在60至79之间的学生的信息
");
 printf("              6.显示分数在80至89之间的学生的信息
");
 printf("              7.显示90分以上学生的信息
");
 printf("              8.显示及格率和平均分,最高分和最低分
");
 printf("              9.显示所有学生排名(按学号排序)
");
 printf("              10.退出

");
 printf(" 输入对应的序号来选择相应的选项: ");
 int num = 9;
 scanf("%d", &num);
 return num;
}
void AppendInfUI() //增加新信息界面
{
 int count; //将要输入的信息条数
 printf("你要输入多少条学生信息?在此输入数目: ");
 scanf("%d", &count);
 if (count <= 0)
 {
   printf("输入数目不能小于或等于0!输入错误,按任意键返回主菜单。");
   Pause();
   ClearScreen();
   return; //输入不合理的数目,将退出该界面。
 }
 Student *p_stu_new, *p_stu_head, *p_stu_cur;
 int count_tmp = 1;
 printf("共要输入%d条信息,这是第%d条
", count, count_tmp);
 p_stu_cur = p_stu_head = p_stu_new = mcr__new(Student);
 p_stu_new->next = NULL;
 printf("姓名: ");
 scanf("%s", p_stu_new->chr1_stu_name);
 printf("学号: ");
 scanf("%d", &p_stu_new->ulng_stu_num);
 printf("分数: ");
 scanf("%d", &p_stu_new->int_scores);
 ClearScreen();
 for (++ count_tmp; count_tmp <= count; count_tmp ++)
 {
   printf("共要输入%d条信息,这是第%d条
", count, count_tmp);
   p_stu_new = mcr__new(Student);
   p_stu_new->next = NULL;
   printf("姓名: ");
   scanf("%s", p_stu_new->chr1_stu_name);
   printf("学号: ");
   scanf("%lu", &p_stu_new->ulng_stu_num);
   printf("分数: ");
   scanf("%d", &p_stu_new->int_scores);
   p_stu_cur->next = p_stu_new;
   p_stu_cur = p_stu_new;
   ClearScreen();
 }
 if (AppendStuInfToFile(p_stu_head)) //返回真,表示保存成功。
 {
   printf("数据已保存,按任意键回主菜单!");
 }
 else
 {
   printf("数据保存失败,按任意键回主菜单!");
 }
 RealseMemory(p_stu_head);
 Pause();
 ClearScreen();
}
/* 
 * 修改信息界面。如果开放按姓名修改信息的方法,
 * 那么如果有重名的学生,界面将更加复杂。所以
 * 没必要按姓名修改。其实在查询信息的界面开放
 * 了“按姓名查找”;可以在修改数据之前,先去按
 * 姓名查找一下,以得到学号,然后再去修改信息。
 */
void ModifyInfUI()
{
 unsigned long stu_num;
 printf("请输入你要修改的学生的信息的学号: ");
 scanf("%lu", &stu_num); //输入unsigned long的格式为 %lu
 FILE* p_file = fopen(mcr__stu_inf_file_name, "r+"); //可读可写方式打开文件
 if (p_file == NULL)
 {
   printf("文件打开失败,按任意键返回主菜单!");
   Pause();
   ClearScreen();
   return;
 }
 long stu_data_size = GetStudentDataSize();
 Student stu;
 while (!feof(p_file))
 {
   fread(&stu.ulng_stu_num, sizeof(unsigned long), 1, p_file);
   fread(stu.chr1_stu_name, sizeof(char), mcr__stu_name_max_len + 1, p_file);
   fread(&stu.int_scores, sizeof(int), 1, p_file);
   if (stu.ulng_stu_num == stu_num)
   {
     printf("学号为%lu的学生的信息如下
", stu_num);
     printf("姓名: %s
", stu.chr1_stu_name);
     printf("学号: %lu
", stu.ulng_stu_num);
     printf("分数: %d

", stu.int_scores);
     printf("请输入新的信息,如果不想修改某项内容,那么将原来的内容填上即可。
");
     printf("新姓名: ");
     scanf("%s", stu.chr1_stu_name);
     printf("新学号: ");
     scanf("%lu", &stu.ulng_stu_num);
     printf("新分数: ");
     scanf("%d", &stu.int_scores);
     fseek(p_file, -1 * stu_data_size, SEEK_CUR); //跑到该数据之前
     //用新数据覆盖旧数据
     fwrite(&stu.ulng_stu_num, sizeof(unsigned long), 1, p_file);
     fwrite(stu.chr1_stu_name, sizeof(char), mcr__stu_name_max_len + 1, p_file);
     fwrite(&stu.int_scores, sizeof(int), 1, p_file);
     fclose(p_file);
     printf("修改成功,按任意键返回主菜单。");
     Pause();
     ClearScreen();
     return;
   }
 }
 fclose(p_file);
 printf("当前没有找到学号为%lu的学生的信息,按任意键返回主菜单。
", stu_num);
 Pause();
 ClearScreen();
}
void SearchInfUI() //查询信息界面
{
 int num = 1;
 printf("1.按学号查找。

");
 printf("2.按姓名查找。

");
 printf("请在此输入你的选择: ");
 scanf("%d", &num);
 if (num == 1) //按学号查找
 {
   unsigned long stu_num;
   printf("请输入你要查找的学生的信息的学号: ");
   scanf("%lu", &stu_num); //输入unsigned long的格式为 %lu
   FILE* p_file = fopen(mcr__stu_inf_file_name, "r");
   if (p_file == NULL)
   {
     printf("文件打开失败,按任意键返回主菜单!");
     Pause();
     ClearScreen();
     return;
   }
   long stu_data_size = GetStudentDataSize();
   Student stu;
   while (!feof(p_file))
   {
     fread(&stu.ulng_stu_num, sizeof(unsigned long), 1, p_file);
     fread(stu.chr1_stu_name, sizeof(char), mcr__stu_name_max_len + 1, p_file);
     fread(&stu.int_scores, sizeof(int), 1, p_file);
     if (stu.ulng_stu_num == stu_num)
     {
       printf("学号为%lu的学生的信息如下
", stu_num);
       printf("姓名: %s
", stu.chr1_stu_name);
       printf("学号: %lu
", stu.ulng_stu_num);
       printf("分数: %d

", stu.int_scores);
       printf("按任意键返回主菜单。");
       Pause();
       ClearScreen();
       return;
     }
   }
   fclose(p_file);
   printf("当前没有找到学号为%lu的学生的信息,按任意键返回主菜单。
", stu_num);
   Pause();
   ClearScreen();
 }
 else if (num == 2)//按姓名查找
 {
   char chr1_name[mcr__stu_name_max_len + 1];
   int count = 0;
   printf("请输入你要查找的学生的信息的姓名: ");
   scanf("%s", chr1_name);
   FILE* p_file = fopen(mcr__stu_inf_file_name, "r");
   if (p_file == NULL)
   {
     printf("文件打开失败,按任意键返回主菜单!");
     Pause();
     ClearScreen();
     return;
   }
   long stu_data_size = GetStudentDataSize();
   Student stu;
   while (1) //用!feof(p_file)作判断会多跑一次
   {
     fread(&stu.ulng_stu_num, sizeof(unsigned long), 1, p_file);
     fread(stu.chr1_stu_name, sizeof(char), mcr__stu_name_max_len + 1, p_file);
     if (fread(&stu.int_scores, sizeof(int), 1, p_file) <= 0)
     {
       break;
     }
     if (strcmp(stu.chr1_stu_name, chr1_name) == 0)
     {
       printf("姓名: %s
", stu.chr1_stu_name);
       printf("学号: %lu
", stu.ulng_stu_num);
       printf("分数: %d

", stu.int_scores);
       count ++;
     }
   }
   fclose(p_file);
   printf("共找到%d个结果,按任意键返回主菜单。", count);
   Pause();
   ClearScreen();
 }
 else
 {
   printf("没有这个选项,按任意键返回主菜单。");
   Pause();
   ClearScreen();
 }
}
void ScoresUI(int min, int max) //显示分数在min到max之间的学生的信息
{
 int count = 0;
 FILE* p_file = fopen(mcr__stu_inf_file_name, "r");
 if (p_file == NULL)
 {
   printf("文件打开失败,按任意键返回主菜单!");
   Pause();
   ClearScreen();
   return;
 }



编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩...
编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩。具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或... 编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩。具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件...

编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩...
\/\/ 某班级学生C语言第一次正考的成绩存于数据文件score.dat中,记录了学生学号、姓名和考试成绩,bk.dat文件中记录了补考学生的学号、姓名和补考成绩,编写程序以链式存储结构实现以下要求:\/\/ 1、对该班级按成绩降序排序并统计成绩平均分及每个分数段的人数,结果写入到result.dat中。\/\/ 2、再根据补...

编制一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩...
编制一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩.具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号... 编制一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩. 具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有...

怎么用C语言编一个学生成绩记录簿?
FILE *fp;char *filePath = "C:\/StudentInfo.txt";void initSeqList(SeqList *L){ L->length = 0;} void insertSeqList(SeqList *L, int i, StudentInfo info)å{ int j;for(j = L->length; j > i; j--)L->arr[j] = L->arr[j-1];L->arr[j] = info;L->len...

用C语言编一个成绩记录簿
成绩记录簿编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按... 成绩记录簿 编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能: (1)创建信息链表并以磁盘文件保存; (2)...

成绩记录簿 编制一个C语言成绩记录簿,
if(c==1){ printf("Enter the new ID: ");scanf("%s",p->id);} else if(c==2){ printf("Enter the new name: ");scanf("%s",p->name);} else if(c==3){ printf("Enter the new score: ");scanf("%d",&(p->score));} else return;printf("The edited record:\\n")...

1、用C语言编写一个程序计算自己的期末考试成绩的总分。(要求各科成 ...
include<stdio.h> int main(){ int n,i,s=0,x;printf("考了几门功课?\\n");scanf("%d",&n);printf("请输入%d门功课的成绩: \\n");for(i=0; i<n; i++){ scanf("%d",&x);s+=x;} printf("总分是:%d\\n",s);return 0;} ...

用c语言设计一个程序统计一个班的学生成绩
if (id == -1) { break; } printf("请输入学生成绩:");scanf_s("%lf", &score);Student[len].id = id;Student[len].score = score;len++;} printf("信息导入完毕!\\n");} int main() { input();printf("全班总分为:%.2lf\\n", getsum());printf("全班平均分为:%.2lf\\n...

用C语言编写一个歌唱比赛成绩统计程序
int i,Max=-1,Min=999,Score,x,y;double Sum=0,a[10],Max2=-1,Min2=999,z;printf("练习30题_6:歌星比赛评分:\\n");for(i=1;i<=10;i++){ printf("第%d位评委打分:\\n",i);scanf("%d",&Score);a[i]=Score;Sum+=Score;if(Score>Max)Max=Score;if(Score<Min)Min=Score...

c语言课程设计:成绩记录簿,望高手帮忙!!!
基本要求如下:编制一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩.具体功能如下:1.创建信息链表并以磁盘文件保存.2.读取磁盘文件并显示输出所有学生的成绩.3.按学号或姓名... 基本要求如下: 编制一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩.具体功能如下: 1.创建信息链表并以磁盘文件...

双鸭山市15131033458: 编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩.具体功能: (1)创建信息 -
欧阳蝶复方: 我以前做过的一个, 你看看,/* 数据描述:学号 姓名 班级 高数 英语 总分程序完成功能:(1) 浏览数据 (2) 增加数据 (3) 修改数据(4) 查询数据(按姓名,按总分) (5) 退出 */#include #include #include using namespace std;...

双鸭山市15131033458: 编制一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩. -
欧阳蝶复方: /*students.c*/ #include <stdio.h> #include <string.h> #include <stdlib.h> #include "students.h"struct list //结构体 {int sno;char sname[2];int sage;char sprof[2];int sclass;struct list *next; }; stud *Create(int n) {stud *p,*c,*h;p=(stud *) malloc (...

双鸭山市15131033458: 编制一个C语言成绩记录簿 -
欧阳蝶复方: 设计要求: 成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分.在程序中可以输入新的成绩记录,可以按学号或姓名查询一个学生的所有成绩,和已完成的总学分.也可以按课程编号查出一个班的成绩表,班成绩表后面要统计平均分,和及格率. 2. 提高水平 在程序中增加将数据写入文本文件和从文件中读入数据的功能,文件名由用户输入. 3. 提示 在没有使用文件时,数据可以保存在一个大的数组中,要注意的数据项的类型. 知识范围;C程序设计第三版谭浩强

双鸭山市15131033458: 成绩记录薄的程序怎么写?? 编制一个C语言成绩记录薄,每个学生信息包括:学号、姓名、C语言成绩.具体功能:⑴创建信息链表并以磁盘文件保存;⑵读取磁盘文件并显示输出所有学生的成绩;⑶按学号或姓 -
欧阳蝶复方: /******头文件(.h)***********/ #include "stdio.h" /*I/O函数*/ #include "stdlib.h" /*其它说明*/ #include "string.h" /*字符串函数*/ #include "conio.h" /*屏幕操作函数*/ #include "mem.h" /*内存操作函数*/ #include "ctype.h" /*字符操作函数*...

双鸭山市15131033458: c语言编程《成绩记录簿》
欧阳蝶复方: #include "stdio.h" #include "stdlib.h" #include "string.h" int shoudsave=0; // struct student { char num[10];//学号 char name[20]; int cgrade; char neartime[10];//最近更新时间 }; typedef struct node { struct student data; struct node *next; }...

双鸭山市15131033458: 用C语言设计一个学生成绩记录薄
欧阳蝶复方: #include <stdio.h>#include <stdlib.h>#include <string.h> struct student{ char name[60]; char ID[7]; int score;}; int dq(struct student st[]);void xianshi();void bc(struct student st[]);void add(); void select();void zz();void chazhao();void xhcz();void xmcz();...

双鸭山市15131033458: 用C语言编一个成绩记录簿 -
欧阳蝶复方: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 1000 typedef struct Lesson //定义课程结构体 { int Lesson_Num; char Lesson_Name[50]; int Lesson_Mark; int Lesson_Credit; }Lesson; typedef struct Student //定义学生的结构...

双鸭山市15131033458: 9、基本要求如下: 编制一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩. 具体功能如下: -
欧阳蝶复方: 你看看能不能运行#include<iostream> #include<cstdlib>#include<cstddef>#include<string>#include<iomanip>#include<fstream>using namespace std;struct xueshengguanli{ string name; string xibie; string banbie; string sex; int num; float ...

双鸭山市15131033458: 请把算法给我,谢了!急求!!! 编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言平时 -
欧阳蝶复方: 给一个我以前写过的吧,功能应该差不多 #include #include #include #include #include #include #include #include #include using namespace std; /*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网