学生成绩管理系统c
① 学生成绩管理系统 C语言
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct stud
{
long num;
char name[20];
double score;
};
typedef struct stucode
{
struct stud student ;
struct stucode *next;
}L;
void menu();
void createlist(struct stucode **r);
void out(struct stucode *r);
void search1(struct stucode *r);
void search2(struct stucode *r);
void del(struct stucode **r);
void insert(struct stucode **r);
void sort(struct stucode **r);
void main()
{
char choose;
int flag=1;
struct stucode *r=NULL;
while(flag)
{
system("cls");
menu();
choose=getchar();
switch(choose)
{
case '1':
createlist(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '2':
search1(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '3':
search2(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '4':
del(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '5':
insert(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '6':
sort(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;
case '7':
out(r);
printf("Testing function 7\nPress any key to continue\n");
getchar();
getchar();
break;
case '0':
flag=0;
printf("The end.\n");
break;
default: printf("\nWrong Selection!(选择错误,请重选!)\n");getchar();getchar();
}
}
}
void createlist(struct stucode **r)
{
struct stucode *p,*t;
long n;
char a[20];
double s;
if(*r) *r=NULL;
printf(" \n请输入:\n 学号(请按学号升序排列) 姓名 分数 (若要结束请输入三个为零)
\n");
scanf("%ld%s%lf",&n,a,&s);
if(n==0) return;
p=(L *)malloc(sizeof(L));
p->student.num=n;
strcpy(p->student.name,a);
p->student.score=s;
p->next=NULL;
*r=p;
scanf("%ld%s%lf",&n,a,&s);
while(n)
{
t=p;
p=(L *)malloc(sizeof(L));
p->student.num=n;
strcpy(p->student.name,a);
p->student.score=s;
p->next=NULL;
t->next=p;
scanf("%ld%s%lf",&n,a,&s);
}
}
void search1(struct stucode *r)
{
long x;
if(!r)
{
printf("没有学生信息可查询!\n");
return ;
}
printf(" 请输入要查询的学生信息的学生学号:\n");
scanf("%ld",&x);
while(r&&r->student.num!=x)
r=r->next;
if(r==NULL)
printf("Error! No such student !\n");
else
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);
}
void search2(struct stucode *r)
{
char m[20];
if(!r)
{
printf("没有学生信息可查询!\n");
return ;
}
printf(" 请输入要查询的学生信息的学生姓名:\n");
scanf("%s",m);
while(r&&strcmp(r->student.name,m))
r=r->next;
if(r==NULL)
printf("Error! No such student !\n");
else
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);
}
void del(struct stucode **r)
{
long k;
struct stucode *p=*r,*t;
if(!(*r))
{
printf("没有学生信息可删除 !\n");
return ;
}
printf(" 请输入要删除的学生信息的学生学号:\n");
scanf("%ld",&k);
if(p->student.num==k)
*r=(*r)->next,free(p);
else
{
while(p->next&&p->next->student.num!=k)
p=p->next;
if(p->next==NULL)
printf("Error! No such student !\n");
else
{
t=p->next;
p->next=p->next->next;
free(t);
}
}
}
void insert(struct stucode **r)
{
long n;
char a[20];
double s;
L *p,*t,*k;
printf(" 请输入要插入的学生信息的学生学号 姓名 分数:\n");
scanf("%ld%s%lf",&n,a,&s);
p=(L *)malloc(sizeof(L));
p->student.num=n;
p->student.score=s;
strcpy(p->student.name,a);
if(!(*r))
{
*r=p;
(*r)->next=NULL;
return ;
}
if(p->student.num<(*r)->student.num)
p->next=(*r),(*r)=p;
else
{
t=*r;
k=t;
while(t->next&&t->next->student.num<=p->student.num)
t=t->next;
p->next=t->next;
t->next=p;
*r=k;
}
}
void sort(struct stucode **r)
{
struct stucode *t,*p,*q,*z;
if(!r)
{
printf("没有学生信息可排序!\n");
return ;
}
if(!(*r)||!(*r)->next)
return;
t=*r;
p=t->next;
t->next=NULL;
while(p)
{
q=p->next;
if(p->student.score>t->student.score)
{
p->next=t;
t=p;
}
else
{
z=t;
while(z->next&&z->next->student.score>=p->student.score)
z=z->next;
p->next=z->next;
z->next=p;
}
p=q;
}
*r=t;
}
void out(struct stucode *r)
{
printf("\n\n");
if(!r)
{
printf("没有学生信息可输出!\n");
return ;
}
while(r)
{
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);
r=r->next;
}
printf("\n\n");
}
void menu()
{
printf("\n 学生信息管理系统\n");
printf("\n 菜单\n\n");
printf("\n 1建立链表并显示\n");
printf("\n 2查找某学号的学生信息\n");
printf("\n 3查找某姓名的学生信息\n");
printf("\n 4删除某学号的学生信息\n");
printf("\n 5插入新的学生信息\n");
printf("\n 6按分数降序排列输出\n");
printf("\n 7输出\n");
printf("\n 0退出\n");
printf("\n 请选择您要执行的选项:\n");
}
② 学生成绩管理系统c语言
用C语言程序编写一个学生成绩管理系统,界面用菜单进行设计。菜单功能可用函数实现。
# include <iostream>
# include <fstream>
# include <string.h>
#include <conio.h>//用getch();
using namespace std;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Student
{
public:
char name[20];
char Id[20];
int Cnum; //C++课程得分
int Mnum; //汇编课程得分
int Enum; //嵌入式操作系统课程得分
int sum; //总分
Student * Next;
void Input()
{
cout<<"\t\t请输入学生的姓名:"; cin>>name;
cout<<"\t\t请输入学生的学号:"; cin>>Id;
cout<<"\t\t请输入C++课程的成绩:"; cin>>Cnum;
cout<<"\t\t请输入汇编课程的成绩:"; cin>>Mnum;
cout<<"\t\t请输入嵌入式操作系统课程的成绩:"; cin>>Enum;
sum=Cnum+Mnum+Enum;
}
void ReadFile(istream & in)
{
in>>name>>Id>>Cnum>>Mnum>>Enum>>sum;
}
void Show()
{
cout<<"姓名:"<<name<<endl<<"学号:"<<Id<<endl<<"C++:"<<Cnum<<endl
<<"汇编:"<<Mnum<<endl<<"嵌入式操作系统:"<<Enum<<endl<<"总成绩:"<<sum<<endl<<endl<<endl;
}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Studentmassage
{
public:
Studentmassage();
~Studentmassage();
void ShowMenu();
void Find();
void Save();
void ModifyItem();
void RemoveItem();
void Swap(Student *,Student *);
void Sort();
//void Unpass();
int ListCount();
//void Average();
void Display()
{
for(Student * p=Head->Next;p!=End;p=p->Next)
p->Show();
cout<<"输入任意字符!继续……";
getch();
}
void AddItem()
{
End->Input();
End->Next=new Student;
End=End->Next;
cout<<"添加成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
private:
Student * Head,* End;
ifstream in;
ofstream out;
Student *FindItem(char * name)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p->Next->name,name))return p;
return NULL;
}
Student *FindID(char * Id)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p->Next->Id,Id))return p;
return NULL;
}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::Studentmassage()
{
Head=new Student;
Head->Next=new Student;
End=Head->Next;
in.open("sort.txt");
if(!in)
cout<<"这是一个新系统,无学生信息。请先输入。"<<endl;
else
{
while(!in.eof())
{
End->ReadFile(in);
if(End->name[0]=='\0')break;
End->Next=new Student;
End=End->Next;
}
in.close();
cout<<"\t\t读取学生信息成功!"<<endl;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::~Studentmassage()
{
Save();
for(Student * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ShowMenu()
{
cout<<"********************************************************************************"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 学 生 成 绩 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.显示学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序统计成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.删除学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.修改学生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"\n\t\t\n\t\t请选择:";
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Find()
{
char name[20] ,Id[10];
int x;
Student * p=NULL;
cout<<"\n\t\t*********************************\n";
cout<<"\t\t※ 1.按学生的姓名查找\n\t\t※ 2.按学生学号查找";
cout<<"\n\t\t*********************************\n请选择:";
cin>>x;
switch(x)
{
case 1:{cout<<"\t\t请输入要查找的学生的姓名:";cin>>name;
if(p=FindItem(name))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该姓名的学生!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
case 2:
{
cout<<"\t\t请输入要查找的学生的学号:";cin>>Id;
if(p=FindID(Id))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该学好的学生!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ModifyItem() //修改信息
{
char name[20];
Student * p=NULL;
cout<<"\t\t请输入要修改的人的姓名:";cin>>name;
if(p=FindItem(name))
{
cout<<"\t\t已找到学生的信息,请输入新的信息!"<<endl;
p->Next->Input();
cout<<"修改成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::RemoveItem() // 删除信息
{
char name[20];
Student * p=NULL,*temp=NULL;
cout<<"\t\t请输入要删除的学生的姓名:"<<endl;cin>>name;
if(p=FindItem(name))
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"\t\t删除成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Swap(Student *p1, Student *p2)//交换两个combox变量的数据域
{
Student *temp=new Student;
strcpy(temp->name,p1->name);
strcpy(temp->Id,p1->Id);
temp->Cnum=p1->Cnum;
temp->Mnum=p1->Mnum;
temp->Enum=p1->Enum;
temp->sum=p1->sum;
strcpy(p1->name,p2->name);
strcpy(p1->Id,p2->Id);
p1->Cnum=p2->Cnum;
p1->Mnum=p2->Mnum;
p1->Enum=p2->Enum;
p1->sum=p2->sum;
strcpy(p2->name,temp->name);
strcpy(p2->Id,temp->Id);
p2->Cnum=temp->Cnum;
p2->Mnum=temp->Mnum;
p2->Enum=temp->Enum;
p2->sum=temp->sum;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int Studentmassage::ListCount()//统计当前链表的记录总数,返回一个整数
{
if(! Head)
return 0;
int n=0;
for(Student * p=Head->Next;p!=End;p=p->Next)
{
n++;
}
return n;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Sort()//对当前链表进行排序
{
cout <<"Sorting..."<<endl;
Student *p=NULL,*p1=NULL,*k=NULL;
int n=Studentmassage::ListCount();
if(n<2)
return;
for(p=Head->Next;p!=End;p=p->Next)
for(k=p->Next;k!=End;k=k->Next)
{
if(p->sum>k->sum)
{
Studentmassage::Swap(p,k);
}
}
cout <<"排序完成!"<<endl;
getch();
return;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Save()
{
out.open("sort.txt");
for(Student *p=Head->Next;p!=End;p=p->Next)
out<<p->name<<"\t"<<p->Id<<"\t"<<p->Cnum<<"\t"
<<p->Mnum<<"\t"<<p->Enum<<"\t"<<p->sum<<'\n';
out.close();
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int main()
{
int x,i=0;
bool quit=false;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t◎★★★★【 欢迎进入学生成绩管理系统 】★★★★◎"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl;;
Studentmassage Grade;
cout<<"按任意键开始……";
getch();
while(!quit)
{
system("cls");
Grade.ShowMenu();
cin>>x;
switch(x)
{
case 0:quit=true;break;
case 1:Grade.AddItem();break;
case 2:Grade.Display();break;
case 3:Grade.Sort();break;
case 4:Grade.Find();break;
case 5:Grade.RemoveItem();break;
case 6:Grade.ModifyItem();break;
}
}
return 0;
}
③ c语言学生成绩管理系统c
以前帮别人写的 你可以看看 呵呵 不是很符合条件
********************************学生管理系统****************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct stu1
{
int num;
char name[20];
char sex[5];
char age[3];
char phone[20];
}stu1;
typedef struct stu2
{
//char num[20];
//char name[20];
int proj1;
int proj2;
int proj3;
int proj4;
int proj5;
int proj6;
}stu2;
void welcome();
int check_key(char key[]);
int m_can_do();
int m_class_can_do();
void manage_class();
void add_class();
void del_class();
void change_proj();
int m_stu_can_do();
void manage_stu();
void log_stu();
void change_stu();
void read_stu1(char clas[], stu1 stu[]);
int find_stu(stu1 stu[], int num);
void del_stu();
void read_stu2(char clas1[], stu2 stud[]);
void log_score();
void change_score();
void del_clas_stu();
int m_find_can_do();
void find();
void find_clas_basic();
void find_clas_score();
void find_stu_basic();
void find_stu_all();
//void chane_stu();
int main(){
int does;
char key[20];
int result;
welcome();
printf("请输入密码:");
scanf("%s", key);
printf("\n\n");
result = check_key(key);
while(result)
{
printf("您输入的密码有误,请重新输入:");
scanf("%s", key);
result = check_key(key);
printf("\n\n");
}
does = m_can_do();
while(true)
{
if(1 == does)
{
manage_class();
does = m_can_do();
}
if(2 == does)
{
manage_stu();
does = m_can_do();
}
if(3 == does)
{
find();
does = m_can_do();
}
if(4 == does)
{
exit(0);
}
}
return 0;
}
/****************************************************函数***********************************/
void welcome()
{
printf("欢迎使用本学生管理系统。\n\n");
}
int check_key(char key[])
{
FILE * fp;
char right_key[20];
int result;
fp = fopen("key", "r");
fscanf(fp, "%s", right_key);
result = strcmp(key, right_key);
return result;
}
int m_can_do()
{
int d;
printf("您可以进行的操作为:\n\n");
printf("1 班级管理 2 学生管理 3 查询 4 退出\n\n请输入:");
scanf("%d", &d);
printf("\n\n");
while(1 != d && 2 != d && 3 != d && 4 != d)
{
printf("您的书有误,请重新输入:");
scanf("%d", &d);
printf("\n\n");
}
return d;
}
/************************************班级办理部分***************************/
int m_class_can_do()
{
int d;
printf("请输入您想要进行的操作:\n\n");
printf("1 添加班级 2 删除班级 3 更改科目\n\n4 返回上一层 5 退出\n\n");
printf("请输入:");
scanf("%d", &d);
printf("\n\n");
while(1 != d && 2 != d && 3 != d && 4 != d && 5 != d)
{
printf("您的输入有误,请重新输入:");
scanf("%d", & d);
printf("\n\n");
}
return d;
}
void manage_class()
{
int does;
does = m_class_can_do();
while(true)
{
if(1 == does)
{
add_class();
does = m_class_can_do();
}
if(2 == does)
{
del_class();
does = m_class_can_do();
}
if(3 == does)
{
change_proj();
does = m_class_can_do();
}
if(4 == does)
{
return;
}
if(5 == does)
{
exit(0);
}
}
}
void add_class()
{
FILE * fp;
char name[20], name1[20];
printf("请输入您想要添加的班级的名字:");
scanf("%s", name);
printf("\n\n");
while((fp = fopen(name, "r")))
{
fclose(fp);
printf("您输入的班级已经存在,请重新输入:");
scanf("%s", name);
printf("\n\n");
}
// fclose(fp);
sprintf(name1, "%s_score", name);
fp = fopen(name, "w");
fclose(fp);
fp = fopen(name1, "w");
fclose(fp);
printf("\n\n");
printf("*************************************************************\n");
printf(" 班级添加成功。 \n");
printf("**************************************************************\n");
}
void del_class()
{
FILE * fp;
char name[20], name1[20];
printf("请输入您想删除的班级名:");
scanf("%s", name);
printf("\n\n");
while(!(fp = fopen(name, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", name);
printf("\n\n");
}
fclose(fp);
sprintf(name1, "%s_score", name);
remove(name);
remove(name1);
printf("**************************************************************\n");
printf(" 班级删除成功。 \n");
printf("**************************************************************\n\n");
}
void change_proj()
{
FILE * fp;
char proj[6][20];
printf("现在的科目信息为:\n\n");
fp = fopen("proj", "r");
fscanf(fp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
//fclose(fp);
// fclose(fp);
printf("%s %s %s %s %s %s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
printf("\n\n");
printf("请输入您修改后的科目:\n\n");
//getchar();
scanf( "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
printf("\n\n");
fp = fopen("proj", "w");
fprintf(fp, "%s %s %s %s %s %s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(fp);
printf("**************************************************************\n");
printf(" 科目修改成功。 \n");
printf("**************************************************************\n\n");
}
/**************************************************************************学生管理***********************************/
int m_stu_can_do()
{
int d;
printf("您可以进行的操作有:\n\n");
printf("1 登记 2 修改 3 删除某个学生 4 删除某班学生\n\n5 登记分数 6 修改分数 7 返回上一层\n\n8 退出\n\n");
printf("请您输入:");
scanf("%d", &d);
printf("\n\n");
while(1 != d && 2 != d && 3 != d && 4 != d && 5 != d && 6 != d && 7 != d)
{
printf("您的输入有误,请重新输入:");
scanf("%d", &d);
printf("\n\n");
}
return d;
}
void manage_stu()
{
int does;
does = m_stu_can_do();
while(true)
{
if(1 == does)
{
log_stu();
does = m_stu_can_do();
}
if(2 == does)
{
change_stu();
does = m_stu_can_do();
}
if(3 == does)
{
del_stu();
does = m_stu_can_do();
}
if(4 == does)
{
del_clas_stu();
does = m_stu_can_do();
}
if(5 == does)
{
log_score();
does = m_stu_can_do();
}
if(6 == does)
{
change_score();
does = m_stu_can_do();
}
if(7 == does)
{
return;
}
if(8 == does)
{
exit(0);
}
}
}
void log_stu()
{
FILE * fp, * p;
char clas[20], clas1[20];
stu1 add[200];
int i = 0;
printf("请输入您所要添加学生所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
printf("请按下面提示输入(输入0结束):\n\n");
printf("学号 姓名 性别 年龄 电话\n\n");
scanf("%d", & add[i]. num);
while(add[i]. num != 0)
{
scanf("%s%s%s%s", add[i]. name, add[i]. sex, add[i]. age, add[i]. phone);
i ++;
printf("\n");
scanf("%d", & add[i]. num);
}
i = 0;
fp = fopen(clas, "a");
p = fopen(clas1, "a");
while(add[i]. num != 0)
{
fprintf(fp, "%d %s %s %s %s\n\n", add[i]. num, add[i]. name, add[i]. sex, add[i]. age, add[i]. phone);
fprintf(p, "0 0 0 0 0 0\n\n");
i++;
}
fclose(fp);
fclose(p);
printf("**************************************************************\n");
printf(" 添加成功。 \n");
printf("**************************************************************\n\n");
}
void change_stu()
{
FILE * fp;
char clas[20];
int num, result, i;
stu1 stu[200];
//sstu2 stud[200];
printf("请输入他所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
// sprintf(clas1"%s_score", clas);
read_stu1(clas, stu);
//read_stud(cls1, stud);
printf("请输入该学生学号:");
scanf("%d", &num);
printf("\n\n");
result = find_stu(stu, num);
if(-1 == result)
{
printf("您输入的学生不存在,请重新输入:");
scanf("%d", & num);
printf("\n\n");
result = find_stu(stu, num);
}
printf("请按下面格式重新输入该学生信息:\n\n");
printf("学号 姓名 性别 年龄 电话\n\n");
scanf("%d%s%s%s%s", & stu[result]. num, stu[result]. name, stu[result]. sex, stu[result]. age, stu[result]. phone);
i = 0;
fp = fopen(clas, "w");
while(0 != stu[i]. num)
{
fprintf(fp, "%d %s %s %s %s\n\n", stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
i++;
}
fclose(fp);
printf("**************************************************************\n");
printf(" 修改成功。 \n");
printf("**************************************************************\n\n");
}
void read_stu1(char clas[], stu1 stu[])
{
int i = 0;
FILE * fp;
fp = fopen(clas, "r");
while(!feof(fp))
{
fscanf(fp, "%d%s%s%s%s", &stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
i++;
}
fclose(fp);
stu[i-1]. num = 0;
}
int find_stu(stu1 stu[], int num)
{
int i = 0;
while(stu[i]. num != 0)
{
if(stu[i]. num == num)
{
break;
}
i++;
}
if(stu[i]. num == num)
{
return i;
}
else
{
return -1;
}
}
void del_stu()
{
FILE * fp, * p;
char clas[20], clas1[20];
int num, result, i = 0;
stu1 stu[200];
stu2 stud[200];
printf("请输入他所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
read_stu2(clas1, stud);
printf("请输入该学生学号:");
scanf("%d",& num);
printf("\n\n");
result = find_stu(stu, num);
if(-1 == result)
{
printf("您输入的学生不存在,请重新输入:");
scanf("%d", & num);
printf("\n\n");
result = find_stu(stu, num);
}
fp = fopen(clas, "w");
p = fopen(clas1, "w");
while(stu[i]. num != 0)
{
if(stu[i]. num == num)
{
i++;
}
if(stu[i]. num != 0)
{
fprintf(fp, "%d %s %s %s %s\n\n", stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
fprintf(p, "%d %d %d %d %d %d\n\n", stud[i]. proj1, stud[i]. proj2, stud[i]. proj3, stud[i]. proj4, stud[i]. proj5, stud[i]. proj6);
i++;
}
}
fclose(fp);
fclose(p);
printf("**************************************************************\n");
printf(" 删除成功。 \n");
printf("**************************************************************\n\n");
}
void read_stu2(char clas1[], stu2 stud[])
{
int i = 0;
FILE * fp;
fp = fopen(clas1, "r");
while(!feof(fp))
{
fscanf(fp, "%d%d%d%d%d%d",&stud[i]. proj1, &stud[i]. proj2, &stud[i]. proj3, &stud[i]. proj4, &stud[i]. proj5, &stud[i]. proj6);
i++;
}
stud[i-1]. proj1 = -1;
fclose(fp);
}
void log_score()
{
FILE * fp, * p, * tp;
stu1 stu[200];
stu2 stud;
char clas[20], clas1[20], proj[6][20];
int i = 0;
printf("请输入要登分的班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
tp = fopen("proj", "r");
fscanf(tp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(tp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
fp = fopen(clas, "r");
p = fopen(clas1, "w");
printf("请输入:\n\n");
printf("学号 姓名 %s %s %s %s %s %s\n\n", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
while(0 != stu[i]. num)
{
printf("%d %s ", stu[i]. num, stu[i]. name);
scanf("%d%d%d%d%d%d", &stud. proj1, &stud. proj2, &stud. proj3, &stud. proj4, &stud. proj5, &stud. proj6);
fprintf(p, "%d %d %d %d %d %d\n\n", stud.proj1 ,stud.proj2 ,stud.proj3 ,stud.proj4 ,stud.proj5 ,stud.proj6);
i++;
}
fclose(fp);
fclose(p);
printf("**************************************************************\n");
printf(" 该班所有学生成绩已登记完毕。 \n");
printf("**************************************************************\n\n");
}
void change_score()
{
FILE * fp, * temp;
char clas[20], clas1[20], proj[6][20];
int num, result, i = 0;
stu1 stu[200];
stu2 stud[200];
printf("请输入他所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
//read_stu2(cls1, stud);
printf("请输入该学生学号:");
scanf("%d",& num);
printf("\n\n");
result = find_stu(stu, num);
if(-1 == result)
{
printf("您输入的学生不存在,请重新输入:");
scanf("%d", & num);
printf("\n\n");
result = find_stu(stu, num);
}
temp = fopen("proj", "r");
fscanf(temp, "%s%s%s%s%s%s", proj[1], proj[2], proj[3], proj[4], proj[5], proj[6]);
fclose(temp);
fp = fopen(clas1, "w");
printf("请输入:\n\n");
printf("学号 姓名 %s %s %s %s %s %s", proj[1], proj[2], proj[3], proj[4], proj[5], proj[6]);
printf("%d %s ", stu[result]. num, stu[result]. name);
scanf("%d%d%d%d%d%d", &stud[result]. proj1, &stud[result]. proj2, &stud[result]. proj3, &stud[result]. proj4, &stud[result]. proj5, &stud[result]. proj6);
while(0 != stud[i]. proj1)
{
fprintf(fp,"%d %d %d %d %d %d\n\n", stud[i]. proj1, stud[i]. proj2, stud[i]. proj3, stud[i]. proj4, stud[i]. proj5, stud[i]. proj6);
i++;
}
printf("**************************************************************\n");
printf(" 成绩修改成功。 \n");
printf("**************************************************************\n\n");
}
void del_clas_stu()
{
FILE * fp;
char clas[20], clas1[20];
printf("请输入您想要操作的班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("不存在%s班,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
sprintf(clas1, "%s_score", clas);
fp = fopen(clas, "w");
fclose(fp);
fp = fopen(clas1, "w");
fclose(fp);
printf("*************************************************************\n");
printf(" 删除成功。 \n");
printf("*************************************************************\n\n");
}
/**********************************************查询**********************************************************/
int m_find_can_do()
{
int d;
printf("您可以进行的操作为:\n\n1 查看某班基本信息 2 查看某班成绩 3 查看学生基本信息\n\n4 查看学生全部信息 5 返回上一层 6 退出\n\n请您输入:");
scanf("%d", &d);
printf("\n\n");
while(1 != d && 1 != d && 2 != d && 3 != d && 4 != d && 5 != d && 6 != d)
{
printf("您的输入有误,请重新输入:");
scanf("%d", &d);
printf("\n\n");
}
return d;
}
void find()
{
int does;
does = m_find_can_do();
while(true)
{
if(1 == does)
{
find_clas_basic();
does = m_find_can_do();
}
if(2 == does)
{
find_clas_score();
does = m_find_can_do();
}
if(3 == does)
{
find_stu_basic();
does = m_find_can_do();
}
if(4 == does)
{
find_stu_all();
does = m_find_can_do();
}
if(5 == does)
{
return ;
}
if(6 == does)
{
exit(0);
}
}
}
void find_clas_basic()
{
FILE * fp;
stu1 stu[200];
char clas[20];
int i = 0, d;
printf("请输入您想要查看的班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fscanf(fp, "%d", &d);
if(feof(fp))
{
printf("**************************************************************\n");
printf(" 您查看的班级没有学生。 \n");
printf("**************************************************************\n");
fclose(fp);
return ;
}
read_stu1(clas, stu);
printf("学号 姓名 性别 年龄 电话\n\n");
while(0 != stu[i]. num)
{
printf("%d %s %s %s %s\n\n", stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
i++;
}
}
void find_clas_score()
{
FILE * fp, * temp;
stu1 stu[200];
stu2 stud[200];
char clas[20], clas1[20], proj[6][20];
int i = 0, d;
printf("请输入您想要查看的班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fscanf(fp, "%d", &d);
if(feof(fp))
{
printf("**************************************************************\n");
printf(" 您查看的班级没有学生。 \n");
printf("**************************************************************\n\n");
fclose(fp);
return ;
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
read_stu2(clas1, stud);
temp = fopen("proj", "r");
fscanf(temp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(temp);
printf("学号 姓名 %s %s %s %s %s %s\n\n", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
while(0 != stu[i]. num)
{
printf("%d %s ", stu[i]. num, stu[i]. name);
printf("%d %d %d %d %d %d\n\n", stud[i].proj1, stud[i].proj2, stud[i].proj3, stud[i].proj4, stud[i].proj5, stud[i].proj6);
i++;
}
}
void find_stu_basic()
{
stu1 stu[200];
int result, num;
char clas[20];
FILE * fp;
printf("请输入他所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
read_stu1(clas, stu);
printf("请输入该学生学号:");
scanf("%d", & num);
printf("\n\n");
result = find_stu(stu, num);
while(-1 == result)
{
printf("该学生不存在,请重新输入:");
scanf("%d", &num);
printf("\n\n");
}
printf("该学生信息为:\n\n学号 姓名 性别 年龄 电话\n\n");
printf("%d %s %s %s %s\n\n", stu[result]. num, stu[result]. name, stu[result]. sex, stu[result]. age, stu[result]. phone);
}
void find_stu_all()
{
stu1 stu[200];
stu2 stud[200];
int result, num;
char clas[20], clas1[20], proj[6][20];
FILE * fp, * temp;
printf("请输入他所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
read_stu2(clas1, stud);
printf("请输入该学生学号:");
scanf("%d", & num);
printf("\n\n");
result = find_stu(stu, num);
while(-1 == result)
{
printf("该学生不存在,请重新输入:");
scanf("%d", &num);
printf("\n\n");
}
temp = fopen("proj", "r");
fscanf(temp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(temp);
printf("该学生全部信息如下:\n\n");
printf("该学生信息为:\n\n学号 姓名 性别 年龄 电话\n\n");
printf("%d %s %s %s %s\n\n", stu[result]. num, stu[result]. name, stu[result]. sex, stu[result]. age, stu[result]. phone);
printf("成绩:\n\n");
printf("%s %s %s %s %s %s\n\n", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
printf("%d %d %d %d %d %d\n\n", stud[result]. proj1, stud[result]. proj2, stud[result]. proj3, stud[result]. proj4, stud[result]. proj5, stud[result]. proj6);
}
④ 学生成绩管理系统C语言代码
#include"stdio.h"
#include<string.h>
#include<stdlib.h>
#define N 30
struct student
{
int num;
char name[20];
int age;
int Math;
int English;
int Physical;
long int sum;
}stu[N];
enter()
{int i,n;
printf("How many students(1-%d)?:",N);
scanf("%d",&n);
printf("\nEnter data now\n\n");
for(i=0;i<n;i++)
{printf("\n Input %dth student record.\n",i+1);
input(i);
}
if(i!=0) save(n);
printf_back(); /* browse or back */
}
add()
{int i,n,m,k;
FILE *fp;
n=load();
printf("How many students are you want to add(1-%d)?:",N-n);
scanf("%d",&m);
k=m+n;
for(i=n;i<k;i++)
{printf("\n Input %dth student record.\n",i+1);
input(i);
}
if((fp=fopen("score.txt","ab"))==NULL)
{printf("Cannot open file.\n");
}
for(i=n;i<k;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error.\n");
fclose(fp);
printf_back();
}
/* insert()
{int n,c;
struct student s;
n=load();
puts("\n Input one data.\n");
do
{input(n);
printf_face();
printf_one(n);
printf("\n\nAre you sure?\n\n\t 1.Sure\t2.cancel and again\t3.Back without save [ ]\b\b");
scanf("%d",&c);
if(c==1)
{
save(n+1);
printf_back();
}
else if(c!=2) menu();
}
while(c==2);
} */
modify()
{struct student s;
FILE *fp;
int i,n,k,w0=1,w1,w2=0;
n=load();
do
{
k=-1;
printf_face();
for(i=0;i<n;i++)
{if((i!=0)&&(i%10==0))
{printf("\n\nRemember NO.031073- which needed modify.Pass any key to continue ...");
getch();
puts("\n\n");
}
printf_one(i);
printf("\n");
}
do
{printf("\n\nEnter NO.031073- that you want to modify! NO.:031073-");
scanf("%d",&s.num);
for(i=0;i<n;i++)
if(s.num==stu[i].num)
{k=i;
s=stu[i]; /* chengji beifei */
}
if(k==-1) printf("\n\nNO exist!please again");
}
while(k==-1);
printf_face();
printf_one(k);
w1=modify_data(k,n);
if(w1==1)
{printf("\nSuccessful ^_^.\n\nAre you modify another?\n\n\t1.Yes2.Back with save\t[ ]\b\b");
scanf("%d",&w0);
w2=1;
}
else
{w0=0; /* end */
if(w2==1)
stu[k]=s;
}
if(w0!=1&&w2==1) save(n); /* w0!=1 return w2==1 modify */
}
while(w0==1);
menu();
}
delete()
{struct student s;
FILE *fp;
int i,n,k,w0=1,w1,w2=0;
n=load();
do
{
k=-1;
printf_face();
for(i=0;i<n;i++)
{if((i!=0)&&(i%10==0))
{printf("\n\nRemember NO.031073- which needed delete.Pass any key to continue ...");
getch();
puts("\n\n");
}
printf_one(i);
printf("\n");
}
do
{printf("\n\nEnter NO.031073- that you want to delete! NO.:031073-");
scanf("%d",&s.num);
for(i=0;i<n;i++)
if(s.num==stu[i].num)
{k=i;
s=stu[i]; /* chengji beifei */
}
if(k==-1) printf("\n\nNO exist!please again");
}
while(k==-1);
printf_face();
printf_one(k);
printf("\nAre you sure?\n\n\t1.Sure2.Back without save in this time [ ]\b\b");
scanf("%d",&w1);
if(w1==1)
{
stu[k].sum=0;
printf("\nSuccessful ^_^.\n\nAre you delete another?\n\n\t1.Yes2.Back with save\t[ ]\b\b");
scanf("%d",&w0);
w2=1;
}
else
{w0=0; /* end */
if(w2==1)
stu[k]=s;
}
if(w0!=1&&w2==1) save(n);
}
while(w0==1);
menu();
}
modify_score()
{struct student s;
FILE *fp;
int i,n,k,w0=1,w1,w2=0;
n=load();
do
{
k=-1;
printf_face();
for(i=0;i<n;i++)
{if((i!=0)&&(i%10==0))
{printf("\n\nRemember NO.031073 which score needed modify.Pass any key to continue ...");
getch();
puts("\n\n");
}
printf_one(i);
printf("\n");
}
do
{printf("\n\nEnter NO.031073- that you want to modify! NO.:031073-");
scanf("%d",&s.num);
for(i=0;i<n;i++)
if(s.num==stu[i].num)
{k=i;
s=stu[i]; /* chengji beifei */
}
if(k==-1) printf("\n\nNO exist!please again");
}
while(k==-1);
printf_face();
printf_one(k);
w1=modify_score1(k);
if(w1==1)
{printf("\nSuccessful ^_^.\n\nAre you modify another score?\n\n\t1.Yes2.Back with save\t[ ]\b\b");
scanf("%d",&w0);
w2=1;
}
else
{w0=0; /* end */
if(w2==1)
stu[k]=s;
}
if(w0!=1&&w2==1) save(n); /* w0!=1 return w2==1 modify */
}
while(w0==1);
menu();
}
order()
{int i,j,k,n;
struct student s;
n=load();
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(stu[j].num<stu[k].num) k=j;
s=stu[i];stu[i]=stu[k];stu[k]=s;
}
save(n);
puts("\n\n");
printf_back();
}
browse()
{int i,j,n;
n=load();
printf_face();
for(i=0;i<n;i++)
{if((i!=0)&&(i%10==0))
{printf("\n\nPass any key to contiune ...");
getch();
puts("\n\n");
}
printf_one(i);
printf("\n");
}
printf("\tThere are %d record.\n",n);
printf("\nPass any key to back...");
getch();
menu();
}
save(int n)
{FILE *fp;
int i;
if((fp=fopen("score.txt","wb"))==NULL)
{printf("\nCannot open file\n");
return NULL;
}
for(i=0;i<n;i++)
if(stu[i].sum!=0)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
load()
{FILE *fp;
int i;
if((fp=fopen("score.txt","rb"))==NULL)
{printf("\nCannot open file\n");
return NULL;
}
for(i=0;!feof(fp);i++)
fread(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}
no_input(int i,int n)
{int k,w1;
do
{w1=0;
printf("NO.:031073-");
scanf("%d",&stu[i].num);
if(stu[i].num<1 || stu[i].num>N)
{puts("Input error! Only be made up of(1-N).Please reinput!\n");
w1=1;
}
if(w1!=1)
for(k=0;k<n;k++)
if(k!=i&&(stu[k].num==stu[i].num))
{puts("This record is exist. Please reinput!\n");
w1=1;break;
}
}
while(w1==1);
}
enter_score(int i)
{printf("Math English Physical");
scanf("%d %d %d",&stu[i].Math,&stu[i].English,&stu[i].Physical);
}
sum(int i)
{
stu[i].sum=stu[i].Math+stu[i].English+stu[i].Physical;
}
input(int i)
{no_input(i,i);
printf("name: age:");
scanf("%s %d",stu[i].name,&stu[i].age);
enter_score(i);
sum(i);
}
modify_score1(int i)
{int c,w1;
do
{
puts("\nmodify by=>\n\n 1.Math 2.English 3.Physical4.all score 5.cancel and back");
printf("Which you needed?:[ ]\b\b");
scanf("%d",&c);
if(c>5||c<1)
{puts("\nChoice error! Please again!");
getchar();
}
}
while(c>5||c<1);
do
{switch(c)
{
case 1:printf("Math:");scanf("%d",&stu[i].Math);break;
case 2:printf("English:");scanf("%d",&stu[i].English);break;
case 3:printf("Physical:");scanf("%d",&stu[i].Physical);break;
case 4:enter_score(i);break;
case 5:break;
}
if(c>0&&c<5) sum(i);
puts("\nNow:\n");
printf_face();
printf_one(i);
printf("\nAre you sure?\n\n\t1.Sure 2.No and remodify3.Back without save in this time [ ]\b\b");
scanf("%d",&w1);
}
while(w1==2);
return(w1);
}
modify_data(int i,int n)
{int c,w1;
do
{
puts("\nmodify by=>\n\n 1.NO. 2.name 3.age 4.Math 5.English 6.Physical7.all score 8.all data 9.cancel and back");
printf("Which you needed?:[ ]\b\b");
scanf("%d",&c);
if(c>9||c<1)
{puts("\nChoice error! Please again!");
getchar();
}
}
while(c>9||c<1);
do
{switch(c)
{case 1:no_input(i,n);break;
case 2:printf("name:");scanf("%s",stu[i].name);break;
case 3:printf("age:");scanf("%d",&stu[i].age);break;
case 4:printf("Math:");scanf("%d",&stu[i].Math);break;
case 5:printf("English:");scanf("%d",&stu[i].English);break;
case 6:printf("Physical:");scanf("%d",&stu[i].Physical);break;
case 7:enter_score(i);break;
case 8:input(i);break;
case 9:break;
}
if(c>3&&c<8) sum(i);
puts("\nNow:\n");
printf_face();
printf_one(i);
printf("\nAre you sure?\n\n\t1.Sure 2.No and remodify3.Back without save in this time [ ]\b\b");
scanf("%d",&w1);
}
while(w1==2);
return(w1);
}
printf_face()
{printf("\nNO.031073 name age Math English Physical sum\n");
}
printf_one(int i)
{
printf("%6d %8s %4d",stu[i].num,stu[i].name,stu[i].age);
printf("%5d %5d %8d %10d",stu[i].Math,stu[i].English,stu[i].Physical,stu[i].sum);
}
printf_back()
{int k,w;
printf("\n\n\tSuccessful.^_^\n\n");
printf("What do you want to do?\n\n\t1.Browse all now\t2.Back:[ ]\b\b");
scanf("%d",&w);
if(w==1) browse();
else menu();
}
menu()
{int w1;
char n;
do
{
puts("\t\t****************MENU****************\n\n");
puts("\t\t\t\tA.Enter new data");
puts("\t\t\t\tB.Addition data");
puts("\t\t\t\tC.Modify data");
puts("\t\t\t\tD.Delete data");
puts("\t\t\t\tE.Modify score");
puts("\t\t\t\tF.Order by number");
puts("\t\t\t\tG.Browse all");
puts("\t\t\t\tH.Exit");
puts("\n\n\t\t************************************\n");
printf("Choice your number(A-H):[ ]\b\b");
n=getchar();
printf("\n");
if(n<'A'||n>'H')
w1=1;
else w1=0;
}
while(w1==1);
switch(n)
{case 'A':enter();break;
case 'B':add();break;
case 'C':modify();break;
case 'D':delete();break;
case 'E':modify_score();break;
case 'F':order();break;
case 'G':browse();break;
case 'H':exit(0);
}
}
char password[7]="123456";
main()
{
char s[7];
printf("\t\t请输入密码:\n\t\t\n\t\t");
scanf("%s",s);
if(!strcmp(s,password))
{
printf("\n\t\t恭喜你进入学生成绩管理系统\n");
menu();
}
else
{
printf("\t\t 密码错误\n\n");
main();
}
}
⑤ 学生成绩管理系统C语言编程
||#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
int score; /*成绩*/
}Student;
Student stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
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]为清除多余的数据所用*/
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++) /*循环输入*/
{
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) /*每十个暂停*/
{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;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); /*调用排序函数*/
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:"); /*交互式问寻*/
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) /*查找并显示一个记录*/
{ 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); /*输出该学生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成绩平均值*/
for(i=0;i<n;i++) /*循环输入判断*/
{
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); /*总共记录数*/
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) /*从文件中读入数据*/
{ 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) /*打开文件*/
{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读入总记录量*/
while(i<num) /*循环读入数据*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
printf("\t\t\tSuccessed!\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\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) /*打开文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*关闭文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函数*/
{
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); /*按学号排序*/
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); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,输出统计信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,输出统计信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循环写入数据*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
四、函数调用关系图
注:“→”代表调用
Input函数
打印链表记录
Display函数
输入若干条记录
menu_select()函数
选择菜单
Sort_by_num函数
显示所有记录
Delete_a_record函数
按姓名查找,删除一条记录
Query_a_record查找并显示一条记录
Statistic函数
输出统计信息 (新增)
AddfromText函数
从正文中添加数据到结构体数组中
Main函数
Insert_a_record插入一条记录
WritetoText函数 将所有数据写入文件中
退出程序
Reverse(head)函数
按学号排序
五、设计测试流程
1、进入界面
2、输入选项1,回车;
按提示输入数据:
3、回到主菜单;
输入选项7,回车;
输入文件名:data.txt,回车;
出现成功提示,则读入文件操作成功。
4、回到主菜单,输入2,回车
每10个暂停显示数据
5、回到主菜单,输入3,回车
出现排序成功信息。
6、回到主菜单,输入4,回车
按提示插入一组数据
7、回到主菜单,输入5,回车
按提示输入姓名,删除数据
出现删除成功的信息
8、回到主菜单,输入6,回车
输入姓名进行查询
9、回到主菜单,输入7,回车
出现统计信息
10、回到主菜单,输入9,回车
输入result.txt,回车
出现成功写入文件的信息
11、回到主菜单,输入0,回车退出系统
回答者:kingkey001 - 试用期 一级 7-14 22:38
修改答复: kingkey001,您要修改的答复如下: 积分规则 关闭
C语言课程设计报告-------学生成绩简单管理程序
一、系统菜单的主要功能
(1)输入若干条记录
(2)显示所有记录
(3)按学号排序
(4)插入一条记录
(5)按姓名查找,删除一条记录
(6)查找并显示一条记录
(7)输出统计信息 (新增)
(8)从正文中添加数据到结构体数组中
(9)将所有数据写入文件中
(0)退出程序
二、题目分析
该题主要考察学生对结构体,指针,文件的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。
菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧,下面就各个子程序中的功能进行说明:
功能1和4的算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets将所有的多余的字符,回车读去,否则就会出错。
功能2是显示所有的记录,通过循环输出,格式也比较重要。
功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp,strcpy等函数。
功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。
功能6的算法在5中就已经体现了,输入姓名,一一比较。
功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。
功能8和9是对文件的操作,提前准备好数据。
三、程序正文部分
#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
int score; /*成绩*/
}Student;
Student stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
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]为清除多余的数据所用*/
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++) /*循环输入*/
{
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) /*每十个暂停*/
{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;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); /*调用排序函数*/
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:"); /*交互式问寻*/
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) /*查找并显示一个记录*/
{ 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); /*输出该学生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成绩平均值*/
for(i=0;i<n;i++) /*循环输入判断*/
{
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); /*总共记录数*/
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) /*从文件中读入数据*/
{ 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) /*打开文件*/
{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读入总记录量*/
while(i<num) /*循环读入数据*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
printf("\t\t\tSuccessed!\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\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) /*打开文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*关闭文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函数*/
{
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); /*按学号排序*/
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); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,输出统计信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,输出统计信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循环写入数据*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
四、函数调用关系图
注:“→”代表调用
Input函数
打印链表记录
Display函数
输入若干条记录
menu_select()函数
选择菜单
Sort_by_num函数
显示所有记录
Delete_a_record函数
按姓名查找,删除一条记录
Query_a_record查找并显示一条记录
Statistic函数
输出统计信息 (新增)
AddfromText函数
从正文中添加数据到结构体数组中
Main函数
Insert_a_record插入一条记录
WritetoText函数 将所有数据写入文件中
退出程序
Reverse(head)函数
按学号排序
五、设计测试流程
1、进入界面
2、输入选项1,回车;
按提示输入数据:
3、回到主菜单;
输入选项7,回车;
输入文件名:data.txt,回车;
出现成功提示,则读入文件操作成功。
4、回到主菜单,输入2,回车
每10个暂停显示数据
5、回到主菜单,输入3,回车
出现排序成功信息。
6、回到主菜单,输入4,回车
按提示插入一组
⑥ 学生成绩管理系统c
#include "stdio.h"
#include<conio.h>
#include<string.h>
#include<stdlib.h>
struct book{
char number[21];
char shuming[30];
int shuliang;
int jiage;
char zhuanye[20];
char zuozhe[26];
char chubanshe[20];
char beizhu[100];
struct book *next;
};
struct book *creat() /*创建链表*/
{
struct book *p,*head,*end;
head=end=p=(struct book *)malloc(sizeof(struct book));
printf("输入教材编号为0结束输入,每项信息都必须输入内容。\n");
do
{
printf("\n教材编号:");
gets(p->number);
if(strcmp(p->number,"0")==0){ end->next=NULL; return head;}
end=p;
printf("\n教材名称:");
gets(p->shuming);
printf("\n教材数量:");
scanf("%d",&p->shuliang);
printf("\n教材价格:");
scanf("%d",&p->jiage);
getchar();
printf("\n教材专业:");
gets(p->zhuanye);
printf("\n教材作者:");
gets(p->zuozhe);
printf("\n教材出版社:");
gets(p->chubanshe);
printf("\n备注:");
gets(p->beizhu);
p=(struct book *)malloc(sizeof(struct book));
end->next=p;
}while(1);
}
void save(struct book *head) /*保存链表*/
{FILE *fp;
struct book *p;
char filename[30];
int ch;
printf("请输入“文件名.后缀”:");
scanf("%s",filename);
if((fp=fopen(filename,"r"))!=NULL)
{
printf("\n该文件已存在,是否覆盖?1,是 2,否");
scanf("%d",&ch);
if(ch!=1)
return;
}
if((fp=fopen(filename,"w"))==NULL) { printf("\n文件保存失败");getchar();return;}
p=head;
do{
fprintf(fp,"\n%s",p->number);
fprintf(fp,"\n%s",p->shuming);;
fprintf(fp,"\n%d",p->shuliang);
fprintf(fp,"\n%d",p->jiage);
fprintf(fp,"\n%s",p->zhuanye);
fprintf(fp,"\n%s",p->zuozhe);
fprintf(fp,"\n%s",p->chubanshe);
fprintf(fp,"\n%s",p->beizhu);
p=p->next;
}while(p!=NULL);
fprintf(fp," over");
printf("\n成功保存");
getchar();
getchar();
fclose(fp);
}
void print(struct book *head) /*输出链表*/
{
struct book *p;
p=head;
if(p==NULL) { printf("未打开任何文件,无法显示"); getch();return;}
do{
printf("\n\n教材编号:%s",p->number);
printf("\n教材名称:%s",p->shuming);;
printf("\n数量:%d",p->shuliang);
printf("\n价格:%d",p->jiage);
printf("\n专业:%s",p->zhuanye);
printf("\n作者:%s",p->zuozhe);
printf("\n出版社:%s",p->chubanshe);
printf("\n备注:%s",p->beizhu);
p=p->next;
}while(p!=NULL);
}
struct book *openfile() /*打开文件*/
{struct book *p,*f,*head;
FILE *fp;
char filename[20];
printf("\n请输入路径,文件名,和后缀):");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL){ printf("\n文件找不到,请检查是否有该文件和路径是否正确");getchar();return NULL;}
head=f=p=(struct book *)malloc(sizeof(struct book));
fscanf(fp,"%s%s%d%d%s%s%s%s",p->number,p->shuming,&p->shuliang,&p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
while(!feof(fp))
{ p=(struct book *)malloc(sizeof(struct book));
f->next=p;
fscanf(fp,"%s%s%d%d%s%s%s%s",p->number,p->shuming,&p->shuliang,&p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
if(strcmp(p->number,"over")==0){ f->next=NULL; printf("\n文件打开成功,可以显示此信息");getchar(); return head; }
f=p;
}
return head;
}
void namesort(struct book *head) /*按教材名称排序*/
{ struct book *p,*t,*f,*h;
char ch[20];
int i;
h=t=f=p=head;
if(head==NULL) {printf("未打开任何文件");getchar();return; };
f=p->next;
for(p=head;p->next!=NULL;p=p->next)
{
for(t=head,f=t->next;t->next!=NULL;f=f->next,t=t->next)
{
if(strcmp(t->shuming,f->shuming)>0)
{
strcpy(ch,t->number );
strcpy(t->number,f->number);
strcpy(f->number,ch);
strcpy(ch,t->shuming );
strcpy(t->shuming,f->shuming);
strcpy(f->shuming,ch);
i=t->shuliang ;
t->shuliang=f->shuliang;
f->shuliang=i;
i=t->jiage ;
t->jiage=f->jiage;
f->jiage=i;
strcpy(ch,t->zhuanye);
strcpy(t->zhuanye,f->zhuanye);
strcpy(f->zhuanye,ch);
strcpy(ch,t->zuozhe);
strcpy(t->zuozhe,f->zuozhe);
strcpy(f->zuozhe,ch);
strcpy(ch,t->chubanshe);
strcpy(t->chubanshe,f->chubanshe);
strcpy(f->chubanshe,ch);
strcpy(ch,t->beizhu);
strcpy(t->beizhu,f->beizhu);
strcpy(f->beizhu,ch);
}
}
}
print(h);
}
void chubanshesort(struct book *head) /*按出版社排序*/
{ struct book *p,*t,*f,*h;
char ch[20];
int i;
h=t=f=p=head;
if(head==NULL) {printf("未打开任何文件");getchar();return; }
f=p->next;
for(p=head;p->next!=NULL;p=p->next)
{
for(t=head,f=t->next;t->next!=NULL;f=f->next,t=t->next)
{
if(strcmp(t->chubanshe,f->chubanshe)>0)
{
strcpy(ch,t->number );
strcpy(t->number,f->number);
strcpy(f->number,ch);
strcpy(ch,t->shuming );
strcpy(t->shuming,f->shuming);
strcpy(f->shuming,ch);
i=t->shuliang ;
t->shuliang=f->shuliang;
f->shuliang=i;
i=t->jiage ;
t->jiage=f->jiage;
f->jiage=i;
strcpy(ch,t->zhuanye);
strcpy(t->zhuanye,f->zhuanye);
strcpy(f->zhuanye,ch);
strcpy(ch,t->zuozhe);
strcpy(t->zuozhe,f->zuozhe);
strcpy(f->zuozhe,ch);
strcpy(ch,t->chubanshe);
strcpy(t->chubanshe,f->chubanshe);
strcpy(f->chubanshe,ch);
strcpy(ch,t->beizhu);
strcpy(t->beizhu,f->beizhu);
strcpy(f->beizhu,ch);
}
}
}
print(h);
}
void shumingsearch(struct book *head) /*按教材名称查找*/
{ struct book *p;
char name[20];
int c;
if(head==NULL) {printf("未打开任何文件");getchar();return;}
printf("1,查找专业 2,查找教材名称:");
scanf("%d",&c);
getchar();
if(c==2)
printf("请输入要查找的教材名称:");
else printf("请输入要查找的专业:");
gets(name);
p=head;
do{ if(c==2)
if(strcmp(p->shuming,name)==0)
{
printf("教材编号:%s\n教材名称:%s\n数量:%d\n价格:%d\n专业:%s\n作者:%s\n出版社:%s\n备注:%s\n",p->number,p->shuming,p->shuliang,p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
}
if(c==1)
if(strcmp(p->zhuanye,name)==0)
{
printf("教材编号:%s\n教材名称:%s\n数量:%d\n价格:%d\n专业:%s\n作者:%s\n出版社:%s\n备注:%s\n",p->number,p->shuming,p->shuliang,p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
}
p=p->next;
}while(p!=NULL);
printf("查找完成");
return;
}
struct book *add(struct book *head) /*增加记录*/
{ struct book *p,*e,*f,*h;
if(head==NULL) {printf("未打开任何文件");getchar(); return NULL;}
h=f=e=head;
p=(struct book *)malloc(sizeof(struct book));
printf("\n教材编号:");
gets(p->number);
printf("\n教材名称:");
gets(p->shuming);
printf("\n数量:");
scanf("%d",&p->shuliang);
printf("\n价格:");
scanf("%d",&p->jiage);
getchar();
printf("\n专业:");
gets(p->zhuanye);
printf("\n作者:");
gets(p->zuozhe);
printf("\n出版社:");
gets(p->chubanshe);
printf("\n备注:");
gets(p->beizhu);
if(strcmp(f->number,p->number)>0) { p->next=f;h=p;printf("\n添加成功");return h;}
if(f->next==NULL) { f->next=p;p->next=NULL;printf("\n添加成功");return h;}
do{
if(f->next!=NULL)
if(strcmp(f->number,p->number)>0)
{
e->next=p;p->next=f;printf("\n添加成功");return h;
}
if(f->next==NULL)
{
f->next=p;
p->next=NULL;
printf("\n添加成功");
return h;
}
f=f->next;
e=e->next;
}while(1);
}
struct book *delet(struct book *head) /*删除记录*/
{ struct book *p,*e;
char num[20];
if(head==NULL) {printf("未打开任何文件");getchar();return NULL;}
printf("请输入要删除的教材编号:");
scanf("%s",num);
p=e=head;
if(strcmp(p->number,num)==0) { head=head->next; print(head);return head;}
else p=p->next;
do{
if(strcmp(p->number,num)==0)
{
if(p->next!=NULL)
e->next=p->next;
if(p->next==NULL) e->next=NULL;
print(head);
return head;
}
p=p->next;
e=e->next;
}while(p!=NULL);
printf("搜索完毕,未找到该记录");
return head;
}
struct book *change(struct book *head) /*修改记录*/
{ struct book *p;
char num[20];
if(head==NULL) {printf("未打开任何文件");getchar();return NULL;}
printf("请输入要修改的教材编号:");
scanf("%s",num);
getchar();
p=head;
do{
if(strcmp(p->number,num)==0)
{
printf("教材编号:%s\n教材名称:%s\n数量:%d\n价格:%d\n专业:%s\n作者:%s\n出版社:%s\n备注:%s\n",p->number,p->shuming,p->shuliang,p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
printf("\n教材编号:");
gets(p->number);
printf("\n教材名称:");
gets(p->shuming);
printf("\n数量:");
scanf("%d",&p->shuliang);
printf("\n价格:");
scanf("%d",&p->jiage);
getchar();
printf("\n专业:");
gets(p->zhuanye);
printf("\n作者:");
gets(p->zuozhe);
printf("\n出版社:");
gets(p->chubanshe);
printf("\n备注:");
gets(p->beizhu);
printf("修改成功");
return head;
}
p=p->next;
}while(p!=NULL);
printf("未找到要修改的记录");
return head;
}
int mima()
{ FILE *fp;
char mima1[20],mima2[20];
if((fp=fopen("mima","r"))==NULL)
{ printf("尚未设置密码请输入:");
scanf("%s",mima1);
printf("请再次输入密码:");
scanf("%s",mima2);
if(strcmp(mima1,mima2)!=0) { printf("两次密码不一样");return 0;}
else {
fp=fopen("mima","w");
fprintf(fp,"%s",mima1);
printf("密码设置成功");
return 1;
}
}
printf("请输入初始化密码:");
scanf("%s",mima1);
fscanf(fp,"%s",mima2);
if(strcmp(mima1,mima2)==0)
{
printf("密码正确");
printf("请输入要删除的文件名:");
scanf("%s",mima1);
if(remove(mima1)==0)
{
printf("删除成功");
getchar();
return 1;
}
else {
printf("删除失败,请检查是否存在该文件或路径是否正确");
getchar();
return 0;
}
}
else {
printf("密码错误");
getchar();
return 0;
}
}
void main()
{
struct book *head=NULL;
char i;
printf(" 88888888888 \n");
printf(" d88888888888b \n");
printf(" d88888 88888b \n");
printf(" d88P 88b \n");
printf(" 888' `88b \n");
printf(" 88P Y88 \n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 ,aa. ,aa. 88 \n");
printf(" 88 d88b d88b 88 \n");
printf(" ,=88 Y88P Y88P 88=, \n");
printf(" ,d88P' `' _aa_ `' `Y88b, \n");
printf(" 88P' (8888) `Y88 ad88888b \n");
printf(" 88 ~^^~ 88 d88Y Y8b\n");
printf(" Yb._ _.d8 d8Y 88\n");
printf(" d88888888ba888=,. .,=8888 d88 88 \n");
printf(" ★☆88P Y88~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~★☆\n");
printf(" ★☆ 88 88 ★☆\n");
printf(" ★☆88 88 欢迎使用本教材系统,按任意键进入系统 ★☆\n");
printf(" ★☆ 8b,___,d8 ★☆\n");
printf(" ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n");
getch();
system("cls");
do{
printf(" ☆★☆★☆★ 教材管理系统 ☆★☆★☆★\n");
printf("m--菜单 h--帮助");
printf("\n请输入命令:");
i=getch();
if(i=='h')
{ printf("\n1,录入教材信息的时候,每一个项目都必须输入相应的内容。\n2,修改,增加,删除,查找记录前必须先打开一个文件,修改完后必须记得保存教材信息。\n3,必须使用正确的路径打开文件,建议保存文件时候不用输入路径(此时是默认路径,即保存在程序目录下。)");
getch();
break;
}
if(i=='m')
break;
system("cls");
}while(i!='m'||i!='h');
system("cls");
do{
printf(" ☆★☆★☆★ 教材管理系统 ☆★☆★☆★\n");
printf("┌————-———┐\n");
printf("│1,录入教材信息│\n│2,显示教材信息│\n│3,打开一个记录│\n│4,编辑一个记录│\n│5,保存教材信息│\n│6,查找记录 │\n│s,初始化系统 │\n│e,退出系统 │\n");
printf("└———————-┘\n");
printf("\n请输入功能编号:");
i=getch();
system("cls");
switch(i)
{
case '1': head=creat();save(head);break;
case '2': print(head);break;
case '3': head=openfile();break;
case '4': system("cls");
printf("┌————-———┐\n");
printf("│1,增加一个记录│\n");
printf("│2,删除一个记录│\n");
printf("│3,修改一个记录│\n");
printf("└———————-┘\n");
i=getch();
switch(i)
{
case '1':
head=add(head);break;
case '2':
head=delet(head);break;
case '3': head=change(head);break;
default: break;
}
break;
case '5': save(head);break;
case '6': shumingsearch(head);break;
case 's': mima();break;
case 'e': exit(0);
default :break;
}
system("cls");
}while(1);
}
我想这个程序包含了你那个成绩管理系统的全部要求,但我这个是教材管理系统我想改一下就可以了,具体如何改就要看楼主的天赋咯,呵呵。参考一下吧
⑦ 学生成绩管理系统c语言代码
这个成绩统计系统,不是1个小时就能写完的。要占用回答者数小时时间,不多给点金币?或是其它的?
⑧ 学生成绩管理系统(C语言)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#define NUM_SUBJECT 4
typedef struct zl
{
char no[5]; /*学号*/
char name[6]; /*姓名*/
int score[NUM_SUBJECT]; /*各门学科成绩*/
float total; /*总分*/
float average; /*平均分*/
int order; /*名次*/
}STUDENT;
int REC_NUM=0; /*学生记录数*/
char*subject[]={"数学","电脑","物理","电工学"};
char*menu[]={"**************MENU***************",
"1. Enter new record",
"2. Display record",
"3. Search record",
"4. Modify record",
"5. Delete a record to list",
"6. Add a record to list",
"7. Sort to make new file",
"8. Save the file",
"9. Load the file",
"10. Quit"};
STUDENT records[10];
void newRec();
void showTable();
void showTable2(Iint);
void display();
void searchRec();
void modifyRec();
void deleteRec();
void addRec();
void orderRec();
void sortRec();
void saveRec();
void loadRec();
void Rec(STUDENT*,STUDENT*);
void quit();
int menu_select();
int findRec(char*,int,int);
void main()
{
system("cls");
for(;;)
{
switch(menu_select())
{
case 1: newRec();break;
case 2: display();break;
case 3: searchRec();break;
case 4: modifyRec();break;
case 5: deleteRec();break;
case 6: addRec();break;
case 7: sortRec();break;
case 8: saveRec();break;
case 9: loadRec();break;
case 10: quit();
}
}
}
int menu_select()
{
char s[3];
int c,i;
for(i=0;i<11;i++)
{
printf("%s",menu[i]);
}
window(1,1,80,25);
do
{
printf(" Enter you choice(1-10):");
scanf("%s",s);
c=atoi(s);
}while(c<0||c>11);
return c;
}
void showTable1()
{
system("cls");
printf("*****************STUDENT INFORMATION****************");
printf("????D?D?D?D?D?D?D?D?D?D???\n");
printf("|Rec | No | Name | Computer | Physics | English | total | Average | Order\n");
printf("?¨¤?¨¤?¨¤?¨¤?¨¤?¨¤?¨¤?¨¨\n");
}
void showTable2(int n)
{
if(n==0)n=1;
if(REC_NUM==0)n=-1;
printf("??????????????????\n");
}
void quit()
{
char str[5];
printf("Save records?(Y/N)");
scanf("%s",str);
if(str[0]=='Y'||str[0]=='y')
saveRec();
exit(0);
}
void newRec()
{
int i, j, sum;
system("cls");
printf("Please input the REC_NUM:");
scanf("%d",&REC_NUM);
for(i=0;i<REC_NUM;i++)
{
system("cls");
sum=0;
for(j=0;j<NUM_SUBJECT;j++);
{
scanf("%d",&records[i].score[j]);
sum=sum+records[i].score[j];
}
records[i].total=sum;
records[i].average=records[i].total/NUM_SUBJECT;
records[i].order=0;
}
}
void display()
{
int i=0;
showTable1();
for(i=0;i<REC_NUM;i++)
{
printf("|%2d |%4s |6s?%4d | %4d | %4d | %5.1f | %5.1f | %2d \n",i+1,records[i].no,records[i].name,records[i].score[0],records[i].score[1],records[i].score[2],records[i].score[3],records[i].total,records[i].average,records[i].order);
}
showTable2(i);
printf("Press any key to return!");
getch();
}
void saveRec()
{
FILE*fp1,*fp2;
if((fp1=fopen("d:\\cjt\\tc\\lianxiti\\keshe\\keshe.dat","wb"))==NULL)
{
printf("Cannot open this file!");
exit(1);
}
if((fp2=fopen("d:\\cjt\\tc\\lianxiti\\keshe\\keshe.dat","wb"))==NULL)
{
printf("Cannot open this file!");
exit(1);
}
printf("\nSaving file......\n");
fwrite(&REC_NUM,sizeof(REC_NUM),1,fp2);
fwrite(records,sizeof(STUDENT),REC_NUM,fp1);
fclose(fp1);fclose(fp2);
printf("n\Save success!!\n");delay(1000);
printf("\nPress any key to return!");
getch();
}
void loadRec()
{
FILE*fp1,*fp2;
if((fp1=fopen("d:\\cjt\\tc\\lianxiti\\keshe\\keshe.dat","rb"))==NULL)
{
printf("Cannot open this file!");
exit(1);
}
if((fp2=fopen("d:\\cjt\\tc\\lianxiti\\keshe\\keshe.dat","rb"))==NULL)
{
printf("Cannot open this file!");
exit(1);
}
system("cls");
printf("\nLoading file.....\n");
fread(&REC_NUM,sizeof(REC_NUM),1,fp2);
fread(records,sizeof(STUDENT),REC_NUM,fp1);
fclose(fp1);fclose(fp2);
delay(2000);
printf("\nYou have success read date from file!!!\n");
printf("\press any key to return!");
getch();
}
void searchRec()
{
char str[20];
int i;
system("cls");
printf("Please input the number you want to get:");
scanf("%s",str);
i=findRec(str,1,0);
if(i!=-1)
{
printf("|%2d |%4s | 6s| %4d | %4d | %4d | %4d| %5.1f | %5.1f | %2d \n",i+1,records[i].no,records[i].name,records[i].score[0],records[i].score[1],records[i].score[2],records[i].score[3],records[i].total,records[i].average,records[i].order);
showTable2(0);
}
else printf("Not find!\n");
printf("Press any key to return!");
getch();
}
void deleteRec()
{
int i, j;
char str[20];
system("cls");
printf("Please input the number you want to delete:");
scanf("%S",str);
i=findRec(str,1,0);
for(j=i;j<REC_NUM;j++)
records[j]=records[j+1];
REC_NUM--;
saveRec();
}
void Rec(STUDENT*src,STUDENT*dest)
{
int i;
strcpy(dest->no,src->no);
strcpy(dest->name,src->name);
for(i=0;i<NUM_SUBJECT;i++)
dest->score[i]=src->score[i];
dest->total=src->total;
dest->average=src->average;
dest->order=src->order;
}
void orderRec()
{
int i;
records[0].order=1;
for(i=1;i<REC_NUM;i++)
if(records[i].total==records[i-1].total)
records[i].order=records[i-1].order;
else
records[i].order=i+1;
}
void sortRec()
{
int i,j,flag;
STUDENT t;
system("cls");
printf("\nsorting file\n");
for(i=0;i<REC_NUM;i++)
{
flag=0;
for(j=REC_NUM-1;j>i;j--)
if(records[j].total>records[j-1].total)
{
Rec(&records[j],&t);
Rec(&records[j-1],&records[j]);
Rec(&t,&records[j-1]);
flag=1;
}
if(!flag) break;
}
orderRec();
delay(2000);
printf("\nsorting success\n");
saveRec();
}
int findRec(char *target,int tarType,int from)
{
int i;
for(i=from;i<REC_NUM;i++)
{
if((tarType==1&&strcmp(target,records[i].no)==0)
||tarType==2&&strcmp(target,records[i].name)==0)
return(i);
}
return(-1);
}
void modifyRec()
{
int i,j,sum;
char no[20],str[8];
system("cls");
printf("Please input the number you want to modify:");
scanf("%s",no);
i=findRec(no,1,0);
showTable1();
printf("| %2d | %4s | 6s |%4d |%4d | %4d | %4d | %5.1f | %5.1f|%2d |\n",i+1,records[i].no,records[i].name,records[i].score[0],records[i].score[1],records[i].score[2],records[i].score[3],records[i].total,records[i].average,records[i].order);
showTable2(0);
printf("Do you wang to modify this student(Y/N):");
scanf("%s",str);
if(str[0]=='y'||str[0]=='Y')
{
printf("enter number:");scanf("%s",records[i].no);
printf("enter name:");scanf("%s",records[i].name);
sum=0;
for(j=0;j<NUM_SUBJECT;j++)
{
printf("%s:",subject[j]);
scanf("%d",&records[i].score[j]);
sum=sum+records[i].score[j];
}
records[i].total=sum;
records[i].average=records[i].total/NUM_SUBJECT;
records[i].order=0;
}
printf("Press any key to return!");
getch();
}
void addRec()
{
int i,j,sum=0;
char no[20],str[8];
for(;;)
{
system("cls");
printf("Please input the number you want to add:");
scanf("%s",str);
i=findRec(str,1,0);
if(i==-1)break;
else printf("This number is exist!\n");
getch();
}
strcpy(records[REC_NUM].no,str);
printf("enter name:");scanf("%s",records[REC_NUM].name);
for(j=0;j<NUM_SUBJECT;j++)
{
printf("%s:",subject[j]);
scanf("%d",&records[REC_NUM].score[j]);
sum=sum+records[REC_NUM].score[j];
}
records[REC_NUM].total=sum;
records[REC_NUM].average=records[REC_NUM].total/NUM_SUBJECT;
records[REC_NUM].order=0;
REC_NUM++;
saveRec();
}
⑨ 用C语言设计一个学生成绩管理系统
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#defineMAX1000
/*定义学生成绩信息结构*/
struct stu
{
char id[8];
char name[8];
(9)学生成绩管理系统c扩展阅读:
short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)
long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
signed:修饰整型数据,有符号数据类型。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)
复杂类型关键字
struct:结构体声明。(K&R时期引入)
union:联合体声明。(K&R时期引入)
enum:枚举声明。(C89标准新增)
typedef:声明类型别名。(K&R时期引入)
sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)
inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)
⑩ 学生成绩管理系统 c语言
两年前做的,现在都不会C语言了。
下面的代码应该是对的。没有注释,但应该能看的懂,起名字也很不规范。只有信息输入、和查询,还有平均成绩。不求得分,只是拿出来共享一下,提供个参考。
#include<stdio.h>
#include<string.h>
#define pl 64
void fine(int size[][6],char xh[][5],char name[][9])
{
int i,a,b;
char d[5];
for(;;)
{
printf("请输入要查找的学号或姓名:");
scanf("%s",d);
for(i=0;i<pl;i++)
if(strcmp(d,xh[i])==0||strcmp(d,name[i])==0)
{
printf("学号:%s\t",xh[i]);
printf("姓名:%s\n",name[i]);
printf("成绩:");
for(a=0;a<5;a++)
{
printf("%d ",size[i][a]);
}
printf("\n平均成绩:%d\n\n",size[i][5]);
}
}
}
void main()
{
int size[pl][6],a,i;
char b, name[pl][9], xh[pl][5];
for(i=0;i<pl;i++)
{
printf("学号:");
scanf("%s",xh[i]);
printf("姓名:");
scanf("%s",name[i]);
printf("成绩:");
size[i][5]=0;
for(a=0;a<5;a++)
{
scanf("%d",&size[i][a]);
size[i][5]+=size[i][a];
}
size[i][5]/=5;
}
for(i=0;i<pl;i++)
{
printf("学号:%s\t",xh[i]);
printf("姓名:%s\n",name[i]);
printf("成绩:");
for(a=0;a<5;a++)
{
printf("%d ",size[i][a]);
}
printf("\n平均成绩:%d\n",size[i][5]);
}
fflush(stdin);
printf("是否要查找:y or n:\n");
scanf("%c",&b);
if(b=='y'||b=='Y')
fine(size,xh,name);
}