链表c语言学生管理系统(用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别,还有三门课比如语,数,外的成绩)

本文目录
- 用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别,还有三门课比如语,数,外的成绩
- 要求用C语言并结合数据结构链表编写一个学生信息管理系统
- 参加一个c语言比赛,写个项目,学生成绩管理系统,用单项链表写的,有什么功能,很出彩
- c语言学生管理系统
- C语言算法链表学生系统
- C语言 学生成绩管理系统 用单链表
用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别,还有三门课比如语,数,外的成绩
/*
用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别,还有三门课比如语,数,外的成绩
*/
//FileName: stuinfo.c
#include 《stdio.h》
#include 《stdlib.h》
#include 《string.h》
#define SERIALLEN 20
#define COURSENUM 3
typedef struct
{
char course;
float score;
}_courseInfo;
typedef struct _stuinfo
{
char serial;
char name;
char sex;
_courseInfo courseInfo;
struct _stuinfo *next;
}stuinfo;
int main(int argc, char **argv)
{
stuinfo *head=NULL,*ptr=NULL,*s=NULL;
char str;
int cycle=1;
int i=0;
memset(str,0,SERIALLEN);
printf("建立学生信息:\n");
head=(stuinfo *)calloc(1,sizeof(stuinfo));
if(!head)
{
perror("申请空间失败,没有足够内存。");
return -1;
}
ptr=head;
while(cycle)
{
puts("输入学生学号(0退出):");
scanf("%s",str);
if(strcmp(str,"0")) //如果学号为0,则退出链表的创建
{
s=(stuinfo *)calloc(1,sizeof(stuinfo));
if(!ptr)
{
perror("申请空间失败,没有足够内存。");
return -1;
}
memset(s-》serial,0,SERIALLEN);
strcpy(s-》serial,str);
memset(s-》name,0,SERIALLEN);
puts("输入姓名:");
scanf("%s",s-》name);
memset(s-》sex,0,SERIALLEN);
puts("输入性别:");
scanf("%s",s-》sex);
for(i=0;i《COURSENUM;i++)
{
memset(s-》courseInfo.course,0,SERIALLEN);
puts("输入课程名称:");
scanf("%s",s-》courseInfo.course);
s-》courseInfo.score=0.0f;
puts("输入课程分数:");
scanf("%f",&(s-》courseInfo.score));
}
ptr-》next=s;
ptr=s;
}
else cycle=0;
}
ptr-》next=NULL;
ptr=head;
head=head-》next;
free(ptr);
//head=linkSort(head);
ptr=head;
printf("学号\t姓名\t性别");
for(i=0;i《COURSENUM;i++)
printf("\t课程",i);
printf("\n");
while(ptr!=NULL)
{
printf("%s\t%s\t%s",ptr-》serial,ptr-》name,ptr-》sex);
for(i=0;i《COURSENUM;i++)
printf("\t%s.score);
printf("\n");
ptr=ptr-》next;
}
return 0;
}
C:\mypro》gcc -g -Wall student.c -o student
C:\mypro》student
建立学生信息:
输入学生学号(0退出):
007
输入姓名:
zxsh
输入性别:
male
输入课程名称:
chinese
输入课程分数:
99
输入课程名称:
phy
输入课程分数:
100
输入课程名称:
english
输入课程分数:
98
输入学生学号(0退出):
002
输入姓名:
pipal
输入性别:
female
输入课程名称:
chem
输入课程分数:
98
输入课程名称:
math
输入课程分数:
97
输入课程名称:
chinese
输入课程分数:
100
输入学生学号(0退出):
0
学号 姓名 性别 课程
007 zxsh male chinese
002 pipal female chem
C:\mypro》
要求用C语言并结合数据结构链表编写一个学生信息管理系统
//xieai999
#include 《stdio.h》
typedef struct study
{
int a;
char b;
int c;
int total;
double pg;
}LT;
typedef struct edu
{
LT *e;
int top;
}LY;
void creat(LY **s)
{
(*s)=(LY *)malloc(sizeof(LY));
(*s)-》top=-1;
}
void pop(LT **s)
{
(*s)=(LT *)malloc(sizeof(LT));
printf("学号:");
int s1;
scanf("%d",&s1);
(*s)-》a=s1;
printf("姓名:");
char s2;
scanf("%s",&(*s)-》b);
int i=0,m=0;
for(i;i《5;i++)
{
printf("科%d:",i+1);
int x;
scanf("%d",&x);
(*s)-》c=x;
m=m+x;
}
(*s)-》total=m;
(*s)-》pg=(*s)-》total/5.0;
}
void print(LT *s)
{
printf("学号:%d ",s-》a);
printf("姓名: %s ",s-》b);
int i=0;
for(i;i《5;i++)
printf("科%d:%d ",i+1,s-》c);
printf("\n总分: %d",s-》total);
printf("平均分: %.01f\n",s-》pg);
}
void IN(LY *s,LT *a)
{
pop(&a);
s-》top++;
s-》e=a;
}
void Delete(LY *s,int a)
{
int i=0;
for(i;i《=s-》top;i++)
{
if(s-》e-》a==a)
{
LT *x;
if(i!=s-》top)
{
x=s-》e;
s-》e;
s-》e=x;
}
s-》top--;
break;
}
}
}
void paishu(LY *s)
{
printf("1,按学好升序\n2,按总分降序\n");
int x1;
int i,j;
scanf("%d",&x1);
switch(x1)
{
case 1:
for(i=0;i《=s-》top;i++)
{
for(j=0;j《s-》top-i;j++)
{
LT *x;
if(s-》e-》a)
{
x=s-》e;
s-》e;
s-》e=x;
}
}
}
break;
case 2:
for(i=0;i《=s-》top;i++)
{
for(j=0;j《s-》top-i;j++)
{
LT *x;
if(s-》e-》total)
{
x=s-》e;
s-》e;
s-》e=x;
}
}
}
break;
}
}
main()
{
int k=0,j=0;
LY *A;
creat(&A);
LT *r={NULL};
for(k; ;k++)
{
printf("1,新建学生数据\n2,输出学生数据\n3,增加学生数据\n4,删除学生数据\n5,排序\n6,查询\n7,按其他数字键退出\n");
int x,i=0,n,m=0;
scanf("%d",&x);
switch(x)
{
case 1:
IN(A,r);
j++;
break;
case 2:
for(i=A-》top;i》-1;i--)
print(A-》e);
break;
case 3:
IN(A,r);
j++;
break;
case 4:
scanf("%d",&n);
Delete(A,n);
break;
case 5:
paishu(A);
break;
case 6:
printf("暂时无此功能\n");
break;
default:
m=1;
break;
}
if(m==1)
break;
}
return 0;
}
第六项功能你自己加吧 我有事情要做了
参加一个c语言比赛,写个项目,学生成绩管理系统,用单项链表写的,有什么功能,很出彩
#include 《string.h》
#include 《stdio.h》
#include 《stdlib.h》
#define _COURSES 3//定义科目数
#define _LEN sizeof(student)//定义结构体大小
//枚举返回值情况
enum status {
OVERFLOW = -1,//内存(溢出)问题
DONE = 0,//成功
NOFOUND = 1,//不存在
OPENFAIL = 2,//打开(文件)失败
BACK = 3//返回
};
typedef struct StudentInfo {
//数据域
unsigned int num;//学号
char name;//姓名
float scores;//各科成绩
//指针域
struct StudentInfo *next;//存放下一节点的地址
}student;
//end
student *head = NULL;//声明链表头结点
student *curr = NULL;//声明指向当前节点的指针
int total = 0;//声明当前节点个数
int init();//初始化链表
int add_stu();//添加新节点
int show_all();//显示所有学生信息
int find_stu();//查找指定信息节点
int modify_stu();//修改指定信息节点
int remove_stu();//删除指定信息节点
int sort_list();//对链表排序
int save_to_file();//将所有信息保存至文件
int read_from_file();//从文件中读取信息
void about();//关于
int quit();//释放所有节点空间
int entering(student *input);//录入学生信息
void show_stu(student *show, int serial);//显示指定学生信息
void start();//程序开始界面
void change(student *former, student *latter, student *temp);
void main() {
int choice = 0;
init();
while(1) {
system("cls");
start();
printf("请选择:");
scanf("%d",&choice);
fflush(stdin);//清空缓冲区
switch (choice) {
case 1:add_stu();break;
case 2: show_all(); break;
case 3:find_stu(); break;
case 4: modify_stu(); break;
case 5:remove_stu(); break;
case 6: sort_list(); break;
case 7:save_to_file(); break;
case 8:read_from_file(); break;
case 9:about(); break;
case 0:quit(); exit(0); break;
default: break;
}
system("pause");
}
}
int init() {
head = (student *)malloc(_LEN);//为头结点申请空间
if (!head) {//如果申请空间失败,返回
return OVERFLOW;
}
head-》next = NULL;//指向下一节点(空)
curr = head-》next;//当前节点指针指向第一个结点
total = 0;//当前节点个数初始化为0(头结点不计算在内)
return DONE;
}
int add_stu() {
student *add = (student *)malloc(_LEN);
curr = head-》next;//当前节点指针指向第一个节点
printf("\t====当前已存入 %d 个同学\n",total);
printf("请输入第 %d 个学生的信息\n",total + 1);
if (BACK == entering(add)) {
free(add);
return BACK;
}
head-》next = add;//头结点指针域指向新建的节点
add-》next = curr;//新建节点指针域指向第一个节点
curr = add; //当前节点指向新建的节点
total += 1; //更新学生总人数
return DONE;
}
int show_all() {
if(0 == total) {
printf("\t====没有可供显示的学生信息!\n");
return NOFOUND;
}
curr = head-》next;//当前节点指针指向第一个节点
printf("\t%4s%12s%12s","序号","学号","姓名");
for(int m = 0; m 《_COURSES; m++) {
printf("%7s","科目");
}
printf("\n");
printf("\t-------------------------------------------------------------\n");
for(int i = 1; i《=total; i++) {
show_stu(curr,i);
curr = curr-》next;//当前节点指针后移
}
printf("\t-------------------------------------------------------------\n");
return DONE;
}
int find_stu() {
char stu_name;
int flag=1;
printf("请输入要查找的学生姓名:");
scanf("%s",stu_name);
curr = head-》next;//指向第一个节点
while (curr != NULL) {
if (strcmp(stu_name,curr-》name) == 0) {
printf("\t%4s%12s%12s","序号","学号","姓名");
for (int m=0; m《 _COURSES; m++) {
printf("%7s","科目");
}
printf("\n");
printf("\t-------------------------------------------------------------\n");
show_stu(curr,flag);
return DONE;
}
curr = curr-》next;
++flag;
}
printf("\t====没有找到 %s !请仔细核对姓名再查找\n",stu_name);
return NOFOUND;
}
int modify_stu() {
char stu_name;
int flag = 1;
curr = head-》next;//指向第一个节点
printf("请输入要修改的学生的姓名:");
scanf("%s",stu_name);
while(curr != NULL) {
if(strcmp(stu_name,curr-》name) == 0) {
printf("\t%4s%12s%12s","序号","学号","姓名");
for(int m = 0; m 《 _COURSES; m++) {
printf("%7s","科目");
}
printf("\n");
printf("\t-------------------------------------------------------------\n");
show_stu(curr,flag);
entering(curr);
printf("\t====成功修改了 %s 的所有信息!\n",stu_name);
return DONE;
}
curr = curr-》next;
++flag;
}
printf("\t====没有找到 %s !请仔细核对姓名\n",stu_name);
return NOFOUND;
}
int remove_stu() {
student *pre=head;
char stu_name;
curr = head-》next;//指向第一个节点
printf("请输入要删除的学生的姓名:");
scanf("%s",stu_name);
while (curr != NULL) {
if (strcmp(stu_name,curr-》name) == 0) {
pre-》next = curr-》next;//
free(curr);//
--total;//
printf("\t====已成功删除\"%s\"\n",stu_name);
return DONE;
}
pre = pre-》next;
curr = curr-》next;
}
printf("\t====没有找到 %s !请仔细核对姓名\n",stu_name);
return NOFOUND;
}
int sort_list() {
student *temp = (student *)malloc(_LEN);
student *curr_i = head-》next;
student *curr_j = NULL;
char choice=’0’;
printf("\t \t1----按学号排序 .\t2----按姓名排序 . \n");
printf("\t \t3----按科目排序 .\t0----退 出 排 序. \n");
printf("请选择:");
scanf("%c",&choice);
fflush(stdin);
switch (choice) {
case ’1’: {
while(curr_i-》next != NULL){
curr_j = curr_i-》next;
while (curr_j != NULL) {
if (curr_i-》num 》 curr_j-》num) {
change(curr_i,curr_j,temp);
}
curr_j = curr_j-》next;
}
curr_i = curr_i-》next;
}
printf("\t====排序成功!\n");
break;
}
case ’2’: {
while(curr_i-》next != NULL){
curr_j = curr_i-》next;
while (curr_j != NULL) {
if (strcmp(curr_i-》name , curr_j-》name) 》 0) {
change(curr_i,curr_j,temp);
}
curr_j = curr_j-》next;
}
curr_i = curr_i-》next;
}
printf("\t====排序成功!\n");
break;
}
case ’3’: {
while(curr_i-》next != NULL){
curr_j = curr_i-》next;
while (curr_j != NULL) {
if (curr_i-》scores) {
change(curr_i,curr_j,temp);
}
curr_j = curr_j-》next;
}
curr_i = curr_i-》next;
}
printf("\t====排序成功!\n");
break;
}
case ’0’: {
free(temp);
return BACK;
}
default: {
printf("\t====输入有误!\n");
break;
}
}
free(temp);
return DONE;
}
int save_to_file() {
curr = head-》next;
if (total == 0) {
printf("\t====目前还没有任何信息,不用保存!\n");
return BACK;
}
FILE *fp;
if((fp=fopen("record.dat","wb"))==NULL) {
printf("\t====文件打开失败!\n");
return OPENFAIL;
}
while (curr != NULL) {
//将数据成块写入文件
fwrite((char *)curr, _LEN, 1, fp);
curr = curr-》next;
}
fclose(fp);
printf("\t====信息已成功保存至文件\"record.dat\"文件中\n");
return DONE;
}
int read_from_file() {
char judge=’y’;
FILE *fp;
if((fp = fopen("record.dat","r")) == NULL) {
printf("文件不存在或者打开失败!\n");
return OPENFAIL;
}
printf("\t====读取文件会覆盖当前信息!是否确定载入文件?(y/n):");
scanf("%c",&judge);
if (judge==’n’ || judge==’N’) {
return BACK;
}
quit();//释放以前所有信息的空间
init();//重新初始化链表
curr = head;//当前节点指针指向头结点
student *add=(student *)malloc(_LEN);//申请空间存放读取的信息
while (fread((char *)add, _LEN, 1, fp)) { //由于存储的信息是最新的信息在前,所以读取的时候将其添加在链表尾
add-》next=curr-》next;
curr-》next=add;
curr=add;
add=(student *)malloc(_LEN);
++total;
}
fclose(fp);
printf("\t====文件载入成功!当前已有%d个学生。\n",total);
return DONE;
}
void about() {
printf("\t#############################################################\n");
printf("\n\t \t欢迎各位用户反馈、提出宝贵的意见和建议 \n");
printf("\t \t联系方式 \n");
printf("\t \t手 机:13815601299 \n");
printf("\t \tE-mail:876929541@QQ.com \n");
printf("\n\t \t\tC语言学生成绩管理系统1.0版\n\n");
printf("\t#############################################################\n");
}
int quit() {
curr =head-》next;
student *temp=curr;
while(curr != NULL) {
temp=curr-》next;
free(curr);
curr=temp;
}
curr=NULL;
temp=NULL;
free(head);//释放头节点
return DONE;
}
int entering(student *input) {
printf("\n请输入学生的学号(输入0退出添加):");
scanf("%d",&input-》num);
if (0 == input-》num) {
return BACK;
}
printf("请输入学生的姓名(五个汉字以内):");
scanf("%s",input-》name);
printf("请输入%d门科目的成绩(用空格隔开):", _COURSES);
for (int i=0; i《_COURSES; i++) {
scanf("%f",&input-》scores);
}
return DONE;
}
void show_stu(student *show, int serial) {
printf("\t%4d%12d%12s",serial,show-》num,show-》name);
for (int i = 0; i 《 _COURSES; i++) {
printf("%7.1f",show-》scores);
}
printf("\n");
}
void start() {
printf("\n");
printf("\t\t\t欢迎使用学生成绩管理系统\n");
printf("\t*************************************************************\n");
printf("\t|\t1----添 加 学 生.\t2----显 示 信 息. |\n");
printf("\t|\t3----查 找 学 生.\t4----修 改 信 息. |\n");
printf("\t|\t5----删 除 学 生.\t6----学 生 排 序. |\n");
printf("\t|\t7----信 息 存 档.\t8----读 取 存 档. |\n");
printf("\t|\t9----关 于.\t0----退 出. |\n");
printf("\t*************************************************************\n");
}
void change(student *former, student *latter,student *temp) {
*temp = *former;
strcpy(former-》name , latter-》name);
strcpy(latter-》name , temp-》name);
former-》num = latter-》num;
latter-》num = temp-》num;
for (int i=0; i《_COURSES; i++) {
former-》scores;
latter-》scores;
}
}
c语言学生管理系统
C 语言学生成绩管理系统
#include《stdio.h》
#include《malloc.h》
#include《conio.h》
#include《string.h》
typedef struct STUDENT
{
char studentNumber;/*学生学号*/
char studentName;/*学生姓名*/
char className;/*班级名称*/
float mark1;/*第1门成绩*/
float mark2;/*第2门成绩*/
float mark3;/*第3门成绩*/
struct STUDENT *next;
}STUDENT;
STUDENT *headLink; /*链表表头指针*/
/*函数声明*/
void ReadInfoFormFile();
void Menu();
void CreateHeadLink();
STUDENT *MallocNode();
void GetInformation(STUDENT *t);
void OutputInformation();
void DesplayInfoBystudentName();
void DesplayInfoBystudentNumber();
void DesplayOneNode(STUDENT *t);
void InsertOneNode(STUDENT *t);
void DeleteNodeBystudentNumber();
void ChangeMarkByName();
void ChangeMarkByNumber();
void SaveLinkToFile();
void paixu();
void DesplayMarkSegment();
int choose;/*用于接受用户的选择*/
/*主函数*/
main()
{
system("color 2a");
printf("\n\t\t欢迎进入***学院***班学生成绩管理系统\n\n\n");
printf("\t\t\t\tO(∩_∩)O\n\n\n\n");
printf("\t\t\t^_^\t\t\t^_^\n\n");
printf("\n\t\t 注意:请按照要求输入相应信息,谢谢!\n\n\n\n\n");
printf("\t\t\t\t\t\t\t\t制作人:***\n\n\n");
printf("\t\t\t 按任意键进入…………");
getch();
system("cls");
CreateHeadLink();
ReadInfoFormFile();
Menu();
}
/*从文件中读学生信息到链表中*/
void ReadInfoFormFile(void)
{
FILE *fp;
STUDENT *p;
fp=fopen("student.txt","r");
if(!fp)
{
printf("\n");
return;
}
p=MallocNode();
while(fscanf(fp,"%s%s%s%f%f%f",p-》studentNumber,p-》studentName,p-》className,&(p-》mark1),&(p-》mark2),&(p-》mark3))》0)
{
InsertOneNode(p);
p=MallocNode();
}
fclose(fp);
}
/*显示菜单,根据用户的输入完成相应的功能*/
void Menu(void)
{
STUDENT *p;
printf("\t\t (^o^)欢迎使用学生成绩管理系统(^o^)\n\n");
printf("\t ※--------------------请选择相应功能---------------------※\n\n");
printf("\t 1: 显示所有学生的信息 |");
printf(" \t 2: 按姓名查询 |\n\n");
printf("\t 3: 按学号查询 |");
printf(" \t\t 4: 增加学生 |\n\n");
printf("\t 5: 删除学生 |");
printf(" \t\t 6: 按姓名修改学生成绩 |\n\n");
printf("\t 7: 按学号修改学生成绩 |");
printf(" \t 8: 保存所有学生信息 |\n\n");
printf("\t 9: 按成绩输出学生信息 |");
printf("\t 10: 显示不及格及优秀学生 |\n\n");
printf("\t 11: 返回主菜单 |");
printf("\t\t 12: 退出 |\n\n");
printf("\t ※----------------------O(∩_∩)O------------------------※\n\n");
printf("\t 请输入对应数字:");
scanf("%d",&choose);/*取得用户的选择*/
switch(choose)
{
case 1:system("cls");
OutputInformation();/*显示所有学生的信息*/
break;
case 2: system("cls");
DesplayInfoBystudentName();
break;
case 3: system("cls");
DesplayInfoBystudentNumber();/*根据用户输入的学号显示该学生的信息*/
break;
case 4: system("cls");
p=MallocNode();/*先申请一个新结点*/
GetInformation(p);/*要求用户输入信息到新结点中*/
InsertOneNode(p);/*将新结点加到链表中*/
break;
case 5: system("cls");
DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/
break;
case 6: system("cls");
ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/
break;
case 7: system("cls");
ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/
break;
case 8: system("cls");
SaveLinkToFile();/*保存数据*/
break;
case 9: system("cls");
paixu();break;
case 10: system("cls");
DesplayMarkSegment();break;
case 11: system("cls");
break;
case 12: system("cls");
SaveLinkToFile();/*保存数据后再退出*/
free(headLink);
exit(1);
break;
default: system("cls"); break;
}
Menu();/*递归调用*/
}
/*建立链表表头*/
void CreateHeadLink(void)
{
STUDENT *p;
p=(STUDENT*)malloc(sizeof(STUDENT));
headLink=p;
p-》next=NULL;
}
/*申请一个新结点,并将其初始化*/
STUDENT *MallocNode(void)
{
STUDENT *p;
int i;
p=(STUDENT*)malloc(sizeof(STUDENT));
if(p==NULL)
return NULL;
for(i=0;i《10;i++)
p-》studentNumber=’\0’;
for(i=0;i《20;i++)
p-》studentName=’\0’;
for(i=0;i《20;i++)
p-》className=’\0’;
p-》mark1=0.0;
p-》mark2=0.0;
p-》mark3=0.0;
p-》next=NULL;
return p;
}
/*取得用户输入的学生信息*/
void GetInformation(STUDENT *t)
{
printf("请输入学生学号:");
scanf("%s",t-》studentNumber);
printf("请输入学生姓名:");
scanf("%s",t-》studentName);
printf("请输入该生所在班级:");
scanf("%s",t-》className);
printf("请输入第1门成绩:");
scanf("%f",&(t-》mark1));
printf("请输入第2门成绩:");
scanf("%f",&(t-》mark2));
printf("请输入第3门成绩:");
scanf("%f",&(t-》mark3));
}
/*在链表的结尾处增加一个结点*/
void InsertOneNode(STUDENT *t)
{
STUDENT *p;
p=headLink;
while(p-》next)
{
p=p-》next;
}
p-》next=t;
}
/*根据用户输入的学生姓名显示该学生的信息*/
void DesplayInfoBystudentName(void)
{
STUDENT *p;
char studentName;
char flag=0;
p=headLink-》next;
printf("请输入学生姓名:");
scanf("%s",studentName);
while(p)
{
if(strcmp(p-》studentName,studentName)==0)
{system("cls");
printf("\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p-》next;
}
if(!flag) {system("cls");
printf("\t 对不起,不存在姓名为 %s 的学生\n",studentName);}
}
/*根据用户输入的学号显示该学生的信息*/
void DesplayInfoBystudentNumber(void)
{
STUDENT *p;
char studentNumber;
char flag=0;
p=headLink-》next;
printf("请输入学生学号:");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p-》studentNumber,studentNumber)==0)
{ system("cls");
printf("\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p-》next;
}
if(!flag) {system("cls");
printf("\t 对不起,不存在学号为 %s 的学生\n",studentNumber);
}}
/*输出一个结点的信息*/
void DesplayOneNode(STUDENT *t)
{
printf("\t%s\t",t-》studentNumber);
printf("%s\t",t-》studentName);
printf("%s\t",t-》className);
printf("%.2f\t",t-》mark1);
printf("%.2f\t",t-》mark2);
printf("%.2f\t",t-》mark3);
printf("%.2f\t",t-》mark1+t-》mark2+t-》mark3);
printf("%.2f\t\n",(t-》mark1+t-》mark2+t-》mark3)/3);
}
/*根据用户输入的学号删除该学生*/
void DeleteNodeBystudentNumber(void)
{
char studentNumber;
STUDENT *p,*q;
char flag=0;
printf("请输入要删除的学生学号:");
scanf("%s",studentNumber);
p=headLink;
q=headLink-》next;
while(q)
{
if(strcmp(q-》studentNumber,studentNumber)==0)
{
p-》next=q-》next;
free(q);
flag=1;
break;
}
p=p-》next;
q=q-》next;
}
if(!flag)
{ system("cls");
printf("\t 不存在该学号的学生\n");
return;
}
system("cls");
printf("\t 成功删除\n");
}
/*显示所有学生的信息*/
void OutputInformation(void)
{
STUDENT *p;
p=headLink-》next;
if(p==NULL)
{
printf("\t 现在没有学生信息,请先输入学生信息\n\n");
return;
}
printf("\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n");
while(p)
{
DesplayOneNode(p);
p=p-》next;
}
}
/*根据输入的姓名修改成绩*/
void ChangeMarkByName(void)
{
STUDENT *p;
char studentName;
char flag=0;
float mark1,mark2,mark3;
p=headLink-》next;
printf("请输入学生姓名:");
scanf("%s",studentName);
while(p)
{
if(strcmp(p-》studentName,studentName)==0)
{
printf("请输入新的第1门成绩:\n");
scanf("%f",&mark1);
printf("请输入新的第2门成绩:\n");
scanf("%f",&mark2);
printf("请输入新的第3门成绩:\n");
scanf("%f",&mark3);
p-》mark1=mark1;
p-》mark2=mark2;
p-》mark3=mark3;
flag=1;
printf("修改成功\n");
break;
}
p=p-》next;
}
if(!flag) {system("cls");
printf("\t 对不起,不存在姓名为 %s 的学生\n",studentName);
} }
/*根据输入的姓名修改成绩*/
void ChangeMarkByNumber(void)
{
STUDENT *p;
char studentNumber;
char flag=0;
float mark1,mark2,mark3;
p=headLink-》next;
printf("请输入学生学号:");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p-》studentNumber,studentNumber)==0)
{
printf("请输入新的第1门成绩:\n");
scanf("%f",&mark1);
printf("请输入新的第2门成绩:\n");
scanf("%f",&mark2);
printf("请输入新的第3门成绩:\n");
scanf("%f",&mark3);
p-》mark1=mark1;
p-》mark2=mark2;
p-》mark3=mark3;
flag=1;
printf("修改成功\n");
break;
}
p=p-》next;
}
if(!flag){system("cls");
printf("\t 对不起,不存在学号为 %s 的学生\n",studentNumber);
}}
/*保存链表数据到文件中*/
void SaveLinkToFile(void)
{
STUDENT *p;
FILE *fp;
p=headLink-》next;
if(p==NULL)
{
printf("\t 现在没有学生信息,请先输入学生信息\n\n");
return;
}
fp=fopen("student.txt","w+");
if(!fp)
{
printf("文件不存在\n");
return;
}
while(p)
{
fprintf(fp,"%s %s %s %f %f %f\n",p-》studentNumber,p-》studentName,p-》className,p-》mark1,p-》mark2,p-》mark3);
p=p-》next;
}
fclose(fp);
}
/*显示优秀和不及格学生成绩*/
void DesplayMarkSegment(void)
{
STUDENT *p;
int count=0;
p=headLink-》next;
printf("\t60分以下(不及格)的学生成绩如下:\n");
printf("\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n\n");
while(p)
{
if((6》((int)(p-》mark1/10)))||(6》((int)(p-》mark2/10)))||(6》((int)(p-》mark3/10))))/*只要有一科不及格就认为该生不及格*/
{
count++;
DesplayOneNode(p);
}
p=p-》next;
}
printf("\t不及格的学生一共有%d人\n",count);
p=headLink-》next;
printf("\t成绩优秀的学生成绩如下:\n");
printf("\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n\n");
count=0;
while(p)
{
if((8《=((int)(p-》mark1/10)))&&(8《=((int)(p-》mark2/10)))&&(8《=((int)(p-》mark3/10))))
{
count++;
DesplayOneNode(p);
}
p=p-》next;
}
printf("\t成绩优秀的学生一共有%d人\n",count);
}
/*按总成绩排序*/
void paixu(void)
{
STUDENT exchange,*r,*p,*q;
r=headLink-》next;
if(r==NULL)
{
printf("\t 现在还没学生信息,请先输入学生信息\n");
return;
}
while(r)/*两层while循环实现排序*/
{
p=r;
q=r-》next;
while(q)
{
if((q-》mark1+q-》mark2+q-》mark3)》(p-》mark1+p-》mark2+p-》mark3))
{
strcpy(exchange.studentNumber,q-》studentNumber);/*先复制q结点信息到exchange*/
strcpy(exchange.studentName,q-》studentName);
strcpy(exchange.className,q-》className);
exchange.mark1=q-》mark1;
exchange.mark2=q-》mark2;
exchange.mark3=q-》mark3;
strcpy(q-》studentNumber,p-》studentNumber);/*再复制p结点信息到q*/
strcpy(q-》studentName,p-》studentName);
strcpy(q-》className,p-》className);
q-》mark1=p-》mark1;
q-》mark2=p-》mark3;
q-》mark3=p-》mark3;
strcpy(p-》studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/
strcpy(p-》studentName,exchange.studentName);
strcpy(p-》className,exchange.className);
p-》mark1=exchange.mark1;
p-》mark2=exchange.mark2;
p-》mark3=exchange.mark3;
}
q=q-》next;
}
r=r-》next;
}
OutputInformation();
}
C语言算法链表学生系统
=================================================================================
链表概述
链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。
=================================================================================
学生管理系统源代码:
#include《stdio.h》
const NAME=20;
const N=10;
//学生信息
static struct student
{
int number;
char name;
int subject;
int average;
}st;
//链表的构造
struct sl
{
struct student st;
int next;
}s;
//信息输入
int input(struct sl *ps);
//信息输出
void output(struct sl *ps);
//信息的查找
int find(int nu, struct sl *ps);
//信息的删除
int delet(int nu, struct sl *ps);
//信息的修改
int amend(int nu, struct sl *ps);
//菜单
void menu();
//输入的学生人数
static int k=0;
//主函数
void main()
{
struct sl *p;
p=s;
printf("#####################################################################\n");
printf("请输入学生的人数:");
scanf("%d", &k);
input(p);
menu();
int sw, nub;
int flag=1;
while(flag)
{
printf("\n菜单选项 (1-5) :");
scanf("%d",&sw);
switch(sw)
{
case 1: printf("检索\n");
printf("number: ");
scanf("%d",&nub);
find(nub,p);
printf("search end!");
break;
case 2: printf("修改\n");
printf("number: ");
scanf("%d",&nub);
amend(nub,p);
printf("modify end!");
break;
case 3: printf("删除\n");
printf("number: ");
scanf("%d",&nub);
delet(nub, p);
printf("delete end!");
break;
case 4: printf("显示\n");
output(p);
break;
case 5: printf("退出\n");
flag=0;
break;
}
}
}
int input(struct sl *ps)
{
ps.next=1;
for(int i=1; i《=k; i++)
{
printf("学号:"); scanf("%d",&ps.st.number);
printf("姓名:");
scanf("%s", ps.st.name);
printf("请输入三门学科的成绩\n");
for(int j=0; j《3; j++)
{
printf("科目%d:",j+1);
scanf("%d", &ps);
}
printf("\n");
ps.next=i+1;
if((ps.next)==k+1)
ps.next=0;
}
printf("输入结束!\n");
return 0;
}
void output(struct sl *ps)
{
struct sl *s;
printf("学生统计显示:\n");
s=ps;
int Next=0, i=1;
do
{
Next=s.next;
printf("学号:%d\t姓名:%s\t", s.st.name);
for(int j=0; j《3; j++)
{
printf("科目%d:%d\t", j+1, s);
}
printf("\n");
i++;
}while(Next!=0 && i《=k);
printf("显示结束!");
}
int find(int nu, struct sl *ps)
{
int Next=1, i=1;
int flag=0;
do
{
if(ps.st.number==nu)
{
flag=1;
break;
}
Next=ps.next;
i++;
}while(i《=k);
if(!flag)
printf("No Find!\n");
else
{ struct sl *s;
s=&ps;
printf("学号:%d\t姓名:%s\t", s-》st.number, s-》st.name);
for(int j=0; j《3; j++)
{
printf("科目%d:%d\t", j+1, s-》st.subject);
}
printf("\n");
}
return flag;
}
int delet(int nu, struct sl *ps)
{
int result;
result=find(nu, ps);
if(result)
{
int Next=0, i=1;
do
{
if(ps.st.number==nu)
{
ps.next;
break;
}
Next=ps.next;
i++;
}while(i《=k);
--k;
return 1;
}
else
return 0;
}
int amend(int nu, struct sl *ps)
{
int Next=1;
int i=1;
if(find(nu, ps))
{ do
{
if(ps.st.number==nu)
break;
Next=ps.next;
i++;
}while(i《=k);
printf("学号:"); scanf("%d", &ps.st.number);
printf("\n");
printf("姓名:");
scanf("%s", ps.st.name);
printf("\n");
printf("三科成绩:"); printf("\n");
for(int j=0; j《3; j++)
{
printf("科目%d:",j+1);
scanf("%d", &ps);printf("\n");
}
} return 1;
}
void menu()
{
printf("******************MENU******************\n");
printf("========================================\n");
printf("1.检索\n");
printf("2.修改\n");
printf("3.删除\n");
printf("4.显示\n");
printf("5.退出\n");
printf("=========================================\n");
}
=================================================================================
上面的程序在VC++中运行成功,由于搂主是初学,所以程序比较简单,只有添加,检索,修改,删除,显示5个功能.这样便于楼主理解.
悉雨辰寂
C语言 学生成绩管理系统 用单链表
/*-------------1-------------*/
#include《bios.h》
#include《dos.h》/*头文件*/
#include《conio.h》
#include《ctype.h》
#include《process.h》
#include《stdlib.h》
#include《stdio.h》
#include《string.h》
#define NULL 0
#define ESC 0x001b /* 退出 */
#define F1 0x3b00 /* 查看帮助信息,调用HelpMassage()函数 */
#define F2 0x3c00 /*输入学生成绩*/
#define F3 0x3d00 /*按学号查找*/
#define F4 0x3e00 /*按姓名查找*/
#define F5 0x3f00 /*列出所有学生成绩*/
#define F6 0x4000 /*统计*/
struct stuType/*定义结构体变量*/
{
char NO;/*学号长度为10*/
char XM;
float CJ;/*包含4门成绩*/
};
/*-------------2-------------*/
int JY_NO(char *stu_num,FILE *fp)/*检验学号的正确性*/
{ struct stuType stud;
int NO;
char*p=stu_num;
if(strcmp(stu_num,"#")==0) return 1;/*若输入"#"返回真值,不再循环输入*/
while(*p!=’\0’)/*学号必须是数字,否则返回重新输入*/
{ NO=(int)*p;
if(NO《48||NO》57)
{ puts("\t\t\t非法学号!请重新输入!\n");
return 0;
}
else p ;/*指针加1*/
}
if(strlen(stu_num)!=10) /*若学号长度不为10,则返回重新输入*/
{ puts("\t\t\t学号长度不对!\n");
return 0;
}
if(getchar()!=’\n’)/*若学号后面的字符不是回车符,则学号长度大于10*/
{ printf("\t\t\t学号长度大于10个!请重新输入!\n");
do{}while(getchar()!=’\n’); /*用getchar接收多余的字符*/
return 0;
}
else
{
rewind(fp);/*使文件指针指向头*/
while(!feof(fp)) /*若文件指针未到结尾,就继续执行下面的循环,feof遇到文件结束符返回非零值,否则返回0*/
{ fread(&stud,sizeof(structstuType),1,fp); /*读取一定长度的数据*/
if(strcmp(stu_num,stud.NO)==0)/*学号的唯一性*/
{ printf("\t\t\t学号重复,请重新输入!\n");
printf("\t\t\t该学生成绩如下:\n");
printf("\t\t\t语文:%.1f\n",stud.CJ);
printf("\t\t\t数学:%.1f\n",stud.CJ);
printf("\t\t\t英语:%.1f\n",stud.CJ);
printf("\t\t\t总评:%.1f\n",stud.CJ);
return 0;
}
}
}
return 1;
}
/*-------------3-------------*/
int JY_NO2(char *stu_num) /*检验学号*/
{ int NO;
char*p=stu_num;
if(strcmp(stu_num,"#")==0)return 1; /*若输入“#”,则返回真值结束*/
if(strlen(stu_num)!=10) /*学号长度为10*/
{ puts("\t\t\t学号长度不对!\n");
return 0;
}
while(*p!=’\0’)/*学号必须用数字,若包含有字母,或其它字符则返回假值重新输入*/
{ NO=(int)*p;
if(NO《48||NO》57)
{ puts("\t\t\t非法学号!请重新输入!\n");
return 0;
}
else p ;/*指针加1*/
}
if(getchar()!=’\n’) /*检验学号长度是否大于10,并把多余的字符去掉*/
{ printf("\t\t\t学号长度大于10个!请重新输入!\n");
do{}while(getchar()!=’\n’);
return 0;
}
return 1;
}
/*-------------4-------------*/
int JY_XM(char *stu_XM)/*检验姓名*/
{ int PD;
char *p;
p=stu_XM;
while(*p!=’\0’)/*姓名只能用中文*/
{
PD=(int)*p;
if(PD》0)
{ puts("\t\t\t姓名只能用中文,请重新输入!\n");
return 0;
}
else p ; /*使指针加1,指向下一汉字*/
}
if(getchar()!=’\n’)/*姓名长度不得大于5个*/
{ printf("\t\t\t姓名长度大于5个!请重新输入!\n");
do{}while(getchar()!=’\n’);
return 0;
}
return 1; /*字符串全为汉字返回真*/
}
/*-------------5-------------*/
int JY_CJ(float stu_CJ)/*学生成绩只能在0~100之间*/
{
if(stu_CJ《0||stu_CJ》100)
{ printf("\t\t\t输入错误,成绩只能在0~100之间!\n");
return 0;
}
return 1;
}
/*-------------6-------------*/
void CreatFile() /*输入文件*/
{ FILE *fp;
structstuType stu,stu0={"","",}; /*对stu0先赋值*/
fp=fopen("stu.dat","wb ");/*打开或创建一个二进制文件,打开时将原来的内容删除*/
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else
{ while(1)
{ stu=stu0;
do{printf("\n\t\t\t请输入学号:");/*输入学号并检验其正确性*/
scanf("s",stu.NO);
}while(!JY_NO(stu.NO,fp));
if(strcmp(stu.NO,"#")==0)break;
do{printf("\n\t\t\t请输入姓名:");/*输入姓名并检验其正确性*/
scanf("s",stu.XM);
}while(!JY_XM(stu.XM));
do{printf("\n\t\t\t请输入语文成绩:"); /*输入成绩并检验其正确性*/
scanf("%f",&stu.CJ);
}while(!JY_CJ(stu.CJ));
do{printf("\n\t\t\t请输入数学成绩:"); /*同上*/
scanf("%f",&stu.CJ);
}while(!JY_CJ(stu.CJ));
do{printf("\n\t\t\t请输入英语成绩:");
scanf("%f",&stu.CJ);
}while(!JY_CJ(stu.CJ));
do{printf("\n\t\t\t请输入总评成绩:");
scanf("%f",&stu.CJ);
}while(!JY_CJ(stu.CJ));
fwrite(&stu,sizeof(struct stuType),1,fp); /*写文件*/
}
}
fclose(fp);/*关闭文件*/
}
/*-------------7-------------*/
void Search_Xuehao() /*按学号查询*/
{ FILE *fp;
int flag;
structstuType stu,stud;
fp=fopen("stu.dat","rb");
if(fp==NULL)/*若文件打不开则输出下面的信息*/
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else
{ do{ puts("\n\t\t\t输入“#”结束查询");
do{ printf("\t\t\t请输入要查询的学号:");
scanf("s",stu.NO);
}while(!JY_NO2(stu.NO));
if(strcmp(stu.NO,"#")==0)break; /*若输入“#”则结束循环*/
flag=0;
rewind(fp);
while(fread(&stud,sizeof(struct stuType),1,fp))/*检查文件指针结束*/
{ if(strcmp(stu.NO,stud.NO)==0) /*比较学号*/
{puts("\t\t\t该学生成绩如下:");
printf("\t\t\t学号:%s\n",stud.NO);
printf("\t\t\t姓名:%s\n",stud.XM);
printf("\t\t\t语文:%.1f\n",stud.CJ);
printf("\t\t\t数学:%.1f\n",stud.CJ);
printf("\t\t\t英语:%.1f\n",stud.CJ);
printf("\t\t\t总评:%.1f\n",stud.CJ);
flag=1; /*记录学号是否查到*/
}
}
if(flag==0)puts("\t\t\t无此学号!");
}while(strcmp(stu.NO,"#")!=0);
}
fclose(fp);/*关闭文件*/
}
/*-------------8-------------*/
void Search_Xingming() /*按姓名查找*/
{ FILE *fp;
int flag=0;
structstuType stu,stud;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else
{ do{
do{ printf("\t\t\t请输入要查询的学生姓名:");
scanf("s",stu.XM);
}while(!JY_XM(stu.XM));
rewind(fp);/*文件指针指向头*/
while(fread(&stud,sizeof(struct stuType),1,fp))
{ if(strcmp(stu.XM,stud.XM)==0) /*比较姓名是否相同*/
{puts("\t\t\t该学生姓名如下:");
printf("\t\t\t学号:%s\n",stud.NO);
printf("\t\t\t姓名:%s\n",stud.XM);
printf("\t\t\t语文:%.1f\n",stud.CJ);
printf("\t\t\t数学:%.1f\n",stud.CJ);
printf("\t\t\t英语:%.1f\n",stud.CJ);
printf("\t\t\t总评:%.1f\n",stud.CJ);
flag=1; /*记录姓名是否被查到*/
}
}
if(flag==0)puts("\n\t\t\t无此学生!");
puts("\t\t\t是否继续(y--继续,其他返回)?");
}while(getch()==’y’);
}
fclose(fp);
/* puts("\t\t\t请按任意键继续...");*/
/* getch();*/
}
/*-------------9-------------*/
int ListFile(void) /*输出文件,列出所有学生成绩*/
{ FILE *fp;
int REC=0;/*记录学生人数*/
structstuType stu;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return 1;
}
else{ printf("\t\t\t学生成绩如下:\n");
printf("\t\t\t学号\t\t姓名\t语文\t数学\t英语\t总评\n");
rewind(fp);
while(fread(&stu,sizeof(struct stuType),1,fp))
{ /*每读取一个长度的数据就输出*/
printf("\t\t\t%s",stu.NO);
printf("\t%s",stu.XM);
printf("\t%.1f",stu.CJ);
printf("\t%.1f",stu.CJ);
printf("\t%.1f",stu.CJ);
printf("\t%.1f",stu.CJ);
printf("\n");
REC ;
if(REC ==0) /*每输出20个学生成绩,停一下*/
{ printf("\t\t\t请按任意键继续...\n");
getch();
}
}
}
fclose(fp);/*关闭文件*/
printf("\t\t\t请按任意键继续...");
getch();
}
/*-------------10-------------*/
void Statistics() /*统计及格和优秀人数*/
{ FILE *fp;
intREC=0,pass={0}; /*REC--记录个数,即人数,pass--及格人数,good--优秀人数*/
floathighest={0}; /*highest--最高分,score--总分*/
structstuType stu;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else { rewind(fp);
while(fread(&stu,sizeof(struct stuType),1,fp))
{ REC ;
score; /*语文*/
if(stu.CJ ;
if(stu.CJ ;
if(highest;
score; /*数学*/
if(stu.CJ ;
if(stu.CJ ;
if(highest;
score; /*英语*/
if(stu.CJ ;
if(stu.CJ ;
if(highest;
score; /*总评*/
if(stu.CJ ;
if(stu.CJ ;
if(highest;
}
if(REC==0) /*可以防止记录为0是REC作除数而造成的错误*/
{ printf("\t\t\t未输入学生记录!按任意键返回...");
getch();
return;
}
else{
printf("\t\t\t\t 语文\t 数学\t 英语\t 总评\n"); /*输出统计信息*/
printf("\t\t\t平均分: %.1f\t%.1f\t %.1f\t%.1f\n",score/REC);
printf("\t\t\t最高分: %.1f\t %.1f\t %.1f\t%.1f\n",highest);
printf("\t\t\t优秀人数:%d\t %d\t %d\t %d\n",good);
printf("\t\t\t及格人数:%d\t %d\t %d\t %d\n",pass);
}
}
fclose(fp);
printf("\n\t\t\t请按任意键继续...");
getch();
}
/*-------------11-------------*/
void HelpMessage()
{ clrscr();
printf("\n\n\n\n\n 此系统是应老师所布置的作业编制而成,该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。\n \n 使用方法:系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓名输入符合中国人的姓名,只能用中文,且最长为5个汉字。\n此程序在Turbo C2.0下运行通过\n\n 由于是初学者,水平有限此系统还有许多不够完整和严密性,敬请指正!");
getch();
}
/*-------------12-------------*/
int GetKey(void) /*此函数返回一个按键的数值*/
{ int key;
key=bioskey(0); /*bioskey为调用BIOS键盘接口*/
if(key《《8)/*位移*/
{
key=key&0x00ff;
}
return key; /*返回按键*/
}
/*-------------13-------------*/
void main()
{ int key;
struct date d; /*定义时间结构体*/
getdate(&d);/*读取系统日期并把它放到结构体d中*/
clrscr();/*清除屏幕*/
printf("\n\n\n\n\n");
printf("\t\t\t****************************\n");/*版本信息*/
printf("\t\t\t 学生成绩管理系统1.0 \n");
printf("\t\t\t****************************\n");
printf("\t\t\t 制作群: 404 1工作室 \n");
printf("\t\t\t 指导老师:--- \n");
printf("\t\t\t 制作时间:2004年5月 \n");
printf("\t\t\t****************************\n");
printf("\t\t\t请按任意键继续...");
/*while(!kbhit());*/
getch();/*从键盘读取一个字符,但不显示于屏幕*/
system("cls"); /*调用DOS的清屏函数,TC中可用clrscr代替*/
while(1)/*主菜单*/
{
printf("\n\n\n\n\n");
printf("\t\t\t************************************\n");
printf("\t\t\t**\tF1 --帮助 **\n");
printf("\t\t\t**\tF2 --输入数据并存入文件 **\n");
printf("\t\t\t**\tF3 --根据学号查询成绩 **\n");
printf("\t\t\t**\tF4 --根据姓名查询成绩 **\n");
printf("\t\t\t**\tF5 --输出文件内容 **\n");
printf("\t\t\t**\tF6 --统计及格和优秀人数 **\n");
printf("\t\t\t**\tESC--退出系统 **\n");
printf("\t\t\t************************************\n");
printf("\n\t\t\t请输入选项\t\t%d年%d月%d日\n\n",d.da_year,d.da_mon,d.da_day);/*提示信息,并显示当前系统日期*/
key=GetKey(); /*调用自定义函数,读取一个键*/
switch(key)
{
case F1:HelpMessage(); break;
case F2:CreatFile(); break;
case F3:Search_Xuehao(); break;
case F4:Search_Xingming();break;
case F5:ListFile(); break;
case F6:Statistics(); break;
caseESC:exit(1);break;
/*default:puts("\t\t\t输入错误选项!");
printf("\t\t\t按任意键返回...");
getch();*/
}
clrscr(); /*每执行完一项功能后,自动清屏*/
}
}

更多文章:
python的源代码(python3.7idle如何测试源代码)
2026年9月5日 22:15
java文件中文乱码怎么解决(java 写入txt文件的中文乱码是怎么回事)
2025年6月12日 11:30
extent和extension的区别(“in some extent”和“to some extent”有什么区别)
2025年10月4日 13:30
statue law(简单点的旅游景点介绍英文 旅游英语介绍景点)
2026年3月17日 02:45
设置 form action(Form表单中的action后面怎么写才能访问到servlet,servlet如何配置已经晕了)
2025年10月15日 04:15
oracle数据库建表的完整步骤(新建Oracle数据库的3种方法)
2025年10月28日 05:15
delphi方法就是让专家在一起(什么是德尔菲技术有什么特点和优点)
2026年8月27日 15:30
intelligent名词形式(intelligent 名词)
2025年9月3日 19:00
linux查看python版本(Linux系统更改默认Python版本)
2026年4月7日 06:15
html焦点图(求助高手在Dreamweaver中怎么做焦点图)
2026年8月8日 12:30
linux安装exe的软件(lunex用什么杀毒软件和怎么装exe文件)
2026年4月7日 05:15












