本文目录一览:
- 1、用c语言设计一个学生信息管理系统,急啊.谢谢
- 2、学生信息管理系统C语言编程
- 3、用标准C语言编写学生信息管理系统
- 4、c语言编写学生信息管理系统
- 5、如何用C语言编写学生信息管理系统
- 6、求C语言学生信息管理系统的需求分析和设计小结
用c语言设计一个学生信息管理系统,急啊.谢谢
#includenbsp;“stdio.h“#definenbsp;SIZEnbsp;50intnbsp;sum=0;staticnbsp;charnbsp;*str[]={“C“,“Math“,“English“};structnbsp;studentnbsp;nbsp;{nbsp;intnbsp;n;nbsp;nbsp;nbsp;nbsp;longnbsp;num;nbsp;nbsp;nbsp;nbsp;charnbsp;name[10];nbsp;nbsp;nbsp;nbsp;intnbsp;age;nbsp;nbsp;nbsp;nbsp;charnbsp;addr[10];nbsp;nbsp;nbsp;nbsp;intnbsp;score[3];nbsp;nbsp;nbsp;nbsp;floatnbsp;avr;nbsp;nbsp;}nbsp;stu[SIZE];/*nbsp;1--Inputnbsp;*/voidnbsp;fin(){nbsp;intnbsp;i,j,s;charnbsp;f;nbsp;nbsp;FILEnbsp;*fp;nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Warring!nbsp;Input?nbsp;(nbsp;y/nnbsp;)nbsp;:nbsp;777“);nbsp;nbsp;f=getchar();f=getchar();nbsp;nbsp;if(f!=‘y‘)nbsp;nbsp;nbsp;nbsp;return;nbsp;nbsp;fp=fopen(“fstu“,“wb“);nbsp;nbsp;for(i=0;iamp;lt;SIZE;i++)nbsp;nbsp;nbsp;nbsp;{nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;i=%dnbsp;Inputnbsp;No.nbsp;(i=-1,return)nbsp;i=?nbsp;“,i+1);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;scanf(“%d“,amp;j);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;ifnbsp;(j==-1)nbsp;{nbsp;printf(“
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;Pressnbsp;anynbsp;keynbsp;return!nbsp;*nbsp;*nbsp;*
“,j);nbsp;nbsp;nbsp;fclose(fp);getch();return;nbsp;}nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;elsenbsp;{nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;num,name,age,addrnbsp;:nbsp;“);nbsp;nbsp;nbsp;stu[i].n=i+1;nbsp;nbsp;nbsp;scanf(“%ld%s%d%s“,amp;stu[i].num,stu[i].name,amp;stu[i].age,stu[i].addr);nbsp;nbsp;nbsp;s=0;nbsp;nbsp;nbsp;for(j=0;jamp;lt;3;j++)nbsp;nbsp;nbsp;nbsp;{nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;%-7snbsp;scorenbsp;:nbsp;“,str[j]);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;scanf(“%d“,amp;stu[i].score[j]);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;if(stu[i].score[j]amp;gt;100)nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;{nbsp;j--;continue;}nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;s+=stu[i].score[j];nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;nbsp;stu[i].avr=s/3.0;nbsp;nbsp;nbsp;fwrite(amp;stu[i],sizeof(structnbsp;student),1,fp);nbsp;}nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;fclose(fp);}/*nbsp;2--Findnbsp;*/voidnbsp;ffind(){nbsp;intnbsp;i,j;nbsp;nbsp;FILEnbsp;*fp;nbsp;nbsp;fp=fopen(“fstu“,“rb“);nbsp;nbsp;for(i=0;fread(amp;stu[i],sizeof(structnbsp;student),1,fp)!=0;i++);nbsp;nbsp;sum=i;nbsp;nbsp;rewind(fp);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;Findnbsp;studentnbsp;datanbsp;*nbsp;*nbsp;*
“);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;n=1nbsp;--nbsp;%dnbsp;:nbsp;“,sum);nbsp;nbsp;scanf(“%d“,amp;j);nbsp;nbsp;fseek(fp,(j-1)*sizeof(structnbsp;student),0);nbsp;nbsp;printf(“
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Displaynbsp;studentnbsp;%dnbsp;datanbsp;:nbsp;
“,j);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*
“);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;No.nbsp;Numnbsp;nbsp;nbsp;nbsp;Namenbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Agenbsp;Addrnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Cnbsp;nbsp;Mathnbsp;En.nbsp;Aver.
“);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;-----------------------------------------------------
“);nbsp;nbsp;fread(amp;stu[i],sizeof(structnbsp;student),1,fp);nbsp;nbsp;printf(“%12d%7
学生信息管理系统C语言编程
#includestdio.h /*I/O函数*/
#includestdlib.h /*其它说明*/
#includestring.h /*字符串函数*/
#define BUFLEN 100 /* 缓冲区最大字符数 */
#define LEN 15 /* 学号和姓名最大字符数,实际请更改 */
#define N 100 /* 最大学生人数,实际请更改*/
struct record /*结构体*/
{
char code[LEN+1]; /* 学号 */
char name[LEN+1]; /* 姓名 */
int age; /* 年龄 */
char sex[3]; /* 性别 */
char time[LEN+1]; /* 出生年月 */
char add[30]; /* 家庭地址 */
char tel[LEN+1]; /* 电话号码 */
char mail[30]; /* 电子邮件地址 */
}stu[N];
int k=1,n,m; /* 定义全局变量 */
void readfile();/* 函数声明 */
void seek();
void modify();
void insert();
void del();
void display();
void save();
void menu();
int main()
{
while(k)
menu();
system("pause");
return 0;
}
void help()
{
printf("\n0.欢迎使用系统帮助!\n");
printf("\n1.进入系统后,先刷新学生信息,再查询;\n");
printf("\n2.按照菜单提示键入数字代号;\n");
printf("\n3.增加学生信息后,切记保存按7;\n");
printf("\n4.谢谢您的使用!\n");
}
void readfile()/* 建立信息 */
{
char *p="student.txt";
FILE *fp;
int i=0;
if ((fp=fopen("student.txt","r"))==NULL)
{
printf("Open file %s error! Strike any key to exit!",p);
system("pause");
exit(0);
}
while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)
{
i++;
i=i;
}
fclose(fp);
n=i;
printf("录入完毕!\n");
}
void seek() /*查找*/
{
int i,item,flag;
char s1[21]; /* 以姓名和学号最长长度+1为准 */
printf("------------------\n");
printf("-----1.按学号查询-----\n");
printf("-----2.按姓名查询-----\n");
printf("-----3.退出本菜单-----\n");
printf("------------------\n");
while(1)
{
printf("请选择子菜单编号:");
scanf("%d",item);
flag=0;
switch(item)
{
case 1:
printf("请输入要查询的学生的学号:\n");
scanf("%s",s1);
for(i=0;in;i++)
if(strcmp(stu[i].code,s1)==0)
{
flag=1;
printf("学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
printf("--------------------------------------------------------------------\n");
printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf("该学号不存在!\n"); break;
case 2:
printf("请输入要查询的学生的姓名:\n");
scanf("%s",s1);
for(i=0;in;i++)
if(strcmp(stu[i].name,s1)==0)
{
flag=1;
printf("学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
printf("--------------------------------------------------------------------\n");
printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf("该姓名不存在!\n"); break;
case 3:return;
default:printf("请在1-3之间选择\n");
}
}
}
void modify() /*修改信息*/
{
int i,item,num;
char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准 */
printf("请输入要要修改的学生的学号:\n");
scanf("%s",s1);
for(i=0;in;i++)
if(strcmp(stu[i].code,s1)==0) /*比较字符串是否相等*/
num=i;
printf("------------------\n");
printf("1.修改姓名\n");
printf("2.修改年龄\n");
printf("3.修改性别\n");
printf("4.修改出生年月\n");
printf("5.修改地址\n");
printf("6.修改电话号码\n");
printf("7.修改E-mail地址\n");
printf("8.退出本菜单\n");
printf("------------------\n");
while(1)
{
printf("请选择子菜单编号:");
scanf("%d",item);
switch(item)
{
case 1:
printf("请输入新的姓名:\n");
scanf("%s",s2);
strcpy(stu[num].name,s2); break;
case 2:
printf("请输入新的年龄:\n");
scanf("%d",stu[num].age);break;
case 3:
printf("请输入新的性别:\n");
scanf("%s",sex1);
strcpy(stu[num].sex,sex1); break;
case 4:
printf("请输入新的出生年月:\n");
scanf("%s",s2);
strcpy(stu[num].time,s2); break;
case 5:
printf("请输入新的地址:\n");
scanf("%s",s2);
strcpy(stu[num].add,s2); break;
case 6:
printf("请输入新的电话号码:\n");
scanf("%s",s2);
strcpy(stu[num].tel,s2); break;
case 7:
printf("请输入新的E-mail地址:\n");
scanf("%s",s2);
strcpy(stu[num].mail,s2); break;
case 8:return;
default:printf("请在1-8之间选择\n");
}
}
}
void sort()/*按学号排序*/
{
int i,j,*p,*q,s;
char temp[10];
for(i=0;in-1;i++)
{
for(j=n-1;ji;j--)
if(strcmp(stu[j-1].code,stu[j].code)0)
{
strcpy(temp,stu[j-1].code);
strcpy(stu[j-1].code,stu[j].code);
strcpy(stu[j].code,temp);
strcpy(temp,stu[j-1].name);
strcpy(stu[j-1].name,stu[j].name);
strcpy(stu[j].name,temp);
strcpy(temp,stu[j-1].sex);
strcpy(stu[j-1].sex,stu[j].sex);
strcpy(stu[j].sex,temp);
strcpy(temp,stu[j-1].time);
strcpy(stu[j-1].time,stu[j].time);
strcpy(stu[j].time,temp);
strcpy(temp,stu[j-1].add);
strcpy(stu[j-1].add,stu[j].add);
strcpy(stu[j].add,temp);
strcpy(temp,stu[j-1].tel);
strcpy(stu[j-1].tel,stu[j].tel);
strcpy(stu[j].tel,temp);
strcpy(temp,stu[j-1].mail);
strcpy(stu[j-1].mail,stu[j].mail);
strcpy(stu[j].mail,temp);
p=stu[j-1].age;
q=stu[j].age;
s=*q;
*q=*p;
*p=s;
}
}
}
void insert() /*插入函数*/
{
int i=n,j,flag;
printf("请输入待增加的学生数:\n");
scanf("%d",m);
do
{
flag=1;
while(flag)
{
flag=0;
printf("请输入第 %d 个学生的学号:\n",i+1);
scanf("%s",stu[i].code);
for(j=0;ji;j++)
if(strcmp(stu[i].code,stu[j].code)==0)
{
printf("已有该学号,请检查后重新录入!\n");
flag=1;
break; /*如有重复立即退出该层循环,提高判断速度*/
}
}
printf("请输入第 %d 个学生的姓名:\n",i+1);
scanf("%s",stu[i].name);
printf("请输入第 %d 个学生的年龄:\n",i+1);
scanf("%d",stu[i].age);
printf("请输入第 %d 个学生的性别:\n",i+1);
scanf("%s",stu[i].sex);
printf("请输入第 %d 个学生的出生年月:(格式:年.月)\n",i+1);
scanf("%s",stu[i].time);
printf("请输入第 %d 个学生的地址:\n",i+1);
scanf("%s",stu[i].add);
printf("请输入第 %d 个学生的电话:\n",i+1);
scanf("%s",stu[i].tel);
printf("请输入第 %d 个学生的E-mail:\n",i+1);
scanf("%s",stu[i].mail);
if(flag==0)
{
i=i;
i++;
}
}
while(in+m);
n+=m;
printf("录入完毕!\n\n");
sort();
}
void del()
{
int i,j,flag=0;
char s1[LEN+1];
printf("请输入要删除学生的学号:\n");
scanf("%s",s1);
for(i=0;in;i++)
if(strcmp(stu[i].code,s1)==0)
{
flag=1;
for(j=i;jn-1;j++)
stu[j]=stu[j+1];
}
if(flag==0)
printf("该学号不存在!\n");
if(flag==1)
{
printf("删除成功,显示结果请选择菜单6\n");
n--;
}
}
void display()
{
int i;
printf("所有学生的信息为:\n");
printf("学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
printf("--------------------------------------------------------------------\n");
for(i=0;in;i++)
{
printf("%6s %7s %5d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
}
void save()
{
int i;
FILE *fp;
fp=fopen("student.txt","w"); /*写入*/
for(i=0;in;i++)
{
fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
fclose(fp);
}
void menu()/* 界面 */
{
int num;
printf("*********************系统功能菜单************************ \n");
printf("友情提醒:查询前请先刷新系统! \n");
printf(" ---------------------- ---------------------- \n");
printf(" ********************************************* \n");
printf(" * 0.系统帮助及说明 * * 1.刷新学生信息 * \n");
printf(" ********************************************* \n");
printf(" * 2.查询学生信息 * * 3.修改学生信息 * \n");
printf(" ********************************************* \n");
printf(" * 4.增加学生信息 * * 5.按学号删除信息 * \n");
printf(" ********************************************* \n");
printf(" * 6.显示当前信息 * * 7.保存当前学生信息* \n");
printf(" ********************** ********************** \n");
printf(" * 8.退出系统 * \n");
printf(" ********************** \n");
printf(" ---------------------- ---------------------- \n");
printf("请选择菜单编号:");
scanf("%d",num);
switch(num)
{
case 0:help();break;
case 1:readfile();break;
case 2:seek();break;
case 3:modify();break;
case 4:insert();break;
case 5:del();break;
case 6:display();break;
case 7:save();break;
case 8:k=0;break;
default:printf("请在0-8之间选择\n");
}
用标准C语言编写学生信息管理系统
把我之前做的给你吧,差不多的
#includestdio.h
#includestdlib.h
#includestring.h
#include"conio.h"
#define N 50 //定义符号常量,代表学生人数最大值
int count=0; //全局变量,用于记录数组的当前位置
struct student //定义结构体类型,代表学生信息*/
{
char name[9];
char number[10];
float math;
float english;
float physics;
float computer;
};
void input(struct student *arr); //函数声明,输入学生信息*/
void sort(struct student *arr); //函数声明,按总分排序*/
void find(struct student *arr); //函数声明,查找某位学生信息*/
void main()
{
char selmenu; //定义局部变量,用于记录用户选择的功能编号*/
struct student stud[N]; //定义结构体数组,用于记录学生信息*/
do //利用循环显示界面*/
{
system("cls"); //清屏函数*/
printf("\n\n");
printf("欢迎使用学生管理系统\n");
printf("------------------------\n");
printf("学生成绩管理系统 \n\n");
printf("1.输入学生信息 \n");
printf("2.按总分进行排榜 \n");
printf("3.查找相应的学生信息 \n");
printf("4.退出学生成绩管理系统 \n\n");
printf("请输入功能选择编号:");
fflush(stdin); //清空输入缓冲区
scanf("%c",selmenu); //接受用户选择的功能编号
switch(selmenu) //输入不同功能编号调用相应函数来完成功能
{
case'1':
input(stud); //调用输入学生信息函数,参数为学生信息数组名
break;
case'2':
sort(stud); //调用按总分排榜函数,参数是数组名
break;
case'3':
find(stud); //调用按学号和姓名查找学生信息函数
break;
}
}while(selmenu!='4'); //判断是否退出
printf("*^-^* 谢谢使用 *^-^*\n"); //输出告别词
printf(" 任务完成 ");
getch();
}
void input(struct student *arr) //定义输入学生信息函数
{
char ch; //用于接收用户指令
do //利用循环,由用户控制输入学生成绩
{
system("cls");
printf("\n输入第%d个学生的信息:\n输入学生姓名:",count+1);
scanf("%s",arr[count].name);
printf("\n输入学生学号:");
scanf("%s",arr[count].number);
printf("\n输入数学成绩:");
scanf("%f",arr[count].math);
printf("\n输入英语成绩:");
scanf("%f",arr[count].english);
printf("\n输入物理成绩:");
scanf("%f",arr[count].physics);
printf("\n输入计算机成绩:");
scanf("%f",arr[count].computer);
count++; //记录当前输入的学生资料的个数
printf("\n是否继续输入(y/n)\n");
fflush(stdin); //清空输入缓冲区
ch=getchar();
}while(ch=='y'||ch=='Y'); //判断用户指令,是否继续输入
}
void sort(struct student *arr) //定义按总分排榜函数
{
int i,j,k; //定义循环变量i,j,最小数位置k
struct student t; //定义交换临时变量
if(count==0) //判断数组中学生成绩是否存在
printf("无学生成绩,请先录入学生信息\n");
else
{
for(i=0;icount-1;i++) //用选择法按总分对学生成绩排序
{
k=i;
for(j=i+1;jcount;j++) //k为arr[i]到arr[count-1]中最小数的位置
if((arr[k].math+arr[k].english+arr[k].physics+arr[k].computer)(arr[j].math+arr[j].english+arr[j].physics+arr[j].computer))
k=j;
if(k!=i) //如果最小数不是比较数列中第一个,对调
{
t=arr[k];
arr[k]=arr[i];
arr[i]=t;
}
}
printf("\n总分排榜版:\n\n");
printf("\t姓名\t学号\t数学\t英语\t物理\t计算机\t总分\t名次\n");
for(j=0;jcount;j++) //输出按总分排榜后的学生成绩和名次
printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-5d\n",
arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].physics,arr[j].computer,arr[j].math+arr[j].english,j+1);
}
printf("\n回车键返回主程序\n");
fflush(stdin);
getchar();
}
void find(struct student *arr) //定义查找函数
{
int j;
char name[9]; //用于接收用户输入的学生姓名
char number[10]; //用于接收用户输入的学生学号
system("cls"); //清屏函数
printf("\n请输入要查找的学生资料:\n");
printf("\n学生姓名:");
scanf("%s",name);
printf("\n学生学号:");
scanf("%s",number);
for(j=0;jcount;j++) //使用字符串比较函数查找兵书出符合条件的学生成绩
{
if((strcmp(name,arr[j].name)==0)(strcmp(number,arr[j].number)==0))
{
printf("\n\t姓名\t学号\t数学\t英语\t物理\t计算机\t总分\n");
printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\n",
arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].physics,arr[j].computer,arr[j].math+arr[j].english);
break;
}
}
if(j=count) //如果没找到,会从循环条件退出
printf("\n未找到该学生纪录,请核对后重新查找!\n");
fflush(stdin); //清空输入缓冲区
printf("\n回车键返回\n");
getchar();
}
c语言编写学生信息管理系统
/*好吧,其实你可以上网看看,那么多的,你可以自己修改下*/
#include stdio.h
#include malloc.h
#include string.h
#include stdlib.h
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
char name[20];
long int num;
char sex[4];
int age;
char address[30];
double tele_num;
char aihao[20];
struct student *next;
};//定义一个结构题
int TOTAL_NUM = 0;//学生总数
struct student *head = NULL;
void welcome (); //欢迎界面
void mainmenu (); //主界面
void record (); //记录数据
void insert(struct student *stu); //插入数据
void display(struct student *stu); //显示一个学生的信息
void displayAll (); //显示所有学生的信息
void query_by_num (); //按学号查询学生信息
void readData (); //读取文件里学生的信息
void writeData (); //向文件写入学生信息
void freeAll (); //清空链表内容
void del (); //删除学生信息
void change (); //更改学生信息
void devise (struct student *p); //选择更改内容
int main (void)
{
welcome ();
//显示主菜单
mainmenu ();
return 0;
}
//显示欢迎信息
void welcome ()
{
printf ("+----------------------------------------------------+\n");
printf ("| |\n");
printf ("| 欢迎使用网络工程学院信息安全092班学生信息管理系统 |\n");
printf ("| |\n");
printf ("+----------------------------------------------------+\n");
}
//系统主菜单
void mainmenu ()
{
int choice;
choice = -1;
readData ();
printf ("\n温馨提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");
do
{
printf ("\n\n\n");
printf ("\t\t\t--------------------------------------------\n");
printf ("\t\t\t+ 信息安全092班学生信息管理系统 |\n");
printf ("\t\t\t--------------------------------------------\n");
printf ("\t\t\t+ [1]----录入学生信息 |\n");
printf ("\t\t\t+ [2]----浏览学生信息 |\n");
printf ("\t\t\t+ [3]----查询学生信息 |\n");
printf ("\t\t\t+ [4]----删除学生信息 |\n");
printf ("\t\t\t+ [5]----修改学生信息 |\n");
printf ("\t\t\t+ [0]----退出系统 |\n");
printf ("\t\t\t+*·*·*·*·*·*·*·*·*·*·*·*·*·*·*|\n");
printf ("\t\t\t--------------------------------------------\n");
printf ("请输入您的选择:");
scanf ("%d", choice);
switch (choice)
{
case 0:
writeData ();
freeAll ();
exit (0);
case 1:
record ();
break;
case 2:
displayAll ();
break;
case 3:
query_by_num ();
break;
case 4:
del ();
break;
case 5:
change ();
break;
default:
printf ("\n无效选项!");
break;
}
}
while (choice != 0);
}
//录入学生信息
void record ()
{
struct student *p0;
p0 = (struct student *)malloc(LEN);
printf ("请输入学生的姓名:");
scanf ("%s",p0-name);
printf ("请输入学生的学号:");
scanf ("%ld",p0-num);
printf ("请输入学生的性别:");
scanf ("%s",p0-sex);
printf ("请输入学生的年龄:");
scanf ("%d",p0-age);
printf ("请输入学生的地址:");
scanf ("%s",p0-address);
printf ("请输入学生的电话:");
scanf ("%lf",p0-tele_num);
printf ("请输入学生的爱好:");
scanf ("%s",p0-aihao);
insert (p0);
printf ("该学生的信息为:\n");
printf ("-------------------------------------------------------------------------------\n");
printf ("姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
display (p0);
}
void insert (struct student *stu)
{
struct student *p0, *p1, *p2;
p1 = head;
p0 = stu;
if (head == NULL)
{
head = p0;
p0-next = NULL;
}
else
{
while ((p0-num p1-num)(p1-next != NULL))
{
p2 = p1;
p1 = p1-next;
}
if (p0-num = p1-num)
{
if (head == p1)
head = p0;
else
p2-next = p0;
p0-next = p1;
}
else
{
p1-next = p0;
p0-next = NULL;
}
}
TOTAL_NUM++;
}
void display (struct student *p)
{
printf ("%s\t%ld\t%d\t%s\t%s\t\t%.0f\t%s\n", p-name, p-num, p-age, p-sex, p-address, p-tele_num, p-aihao);
}
//浏览学生信息
void displayAll()
{
struct student *p;
printf("学生总数:%d\n", TOTAL_NUM);
p = head;
if (head != NULL)
{
printf("\n姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
printf("-------------------------------------------------------------------------------\n");
do
{
display(p);
p = p-next;
}
while(p != NULL);
}
printf ("\n");
}
//按学号查询学生信息
void query_by_num ()
{
int num;
struct student *p1;
printf("请输入学生的学号:");
scanf("%ld", num);
if(head==NULL)
{
printf("无学生记录!\n");
return;
}
p1 = head;
while (num!=p1-num p1-next!=NULL)
p1 = p1-next;
if (num == p1-num)
{
printf ("姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
printf ("-------------------------------------------------------------------------------\n");
display (p1);
}
else
printf ("没有该学生记录,请核对!");
}
//写入文件
void writeData ()
{
FILE* fp;//文件指针
struct student *p;
fp = fopen("1.txt", "w");
if (!fp)
{
printf("文件打开错误!");
return;
}
fprintf(fp,"%d\n", TOTAL_NUM);
for(p = head; p!= NULL; p= p-next)
{
fprintf(fp,"%s\t%ld\t%s\t%d\t%s\t%.0f\t%s\n", p-name, p-num, p-sex, p-age, p-address, p-tele_num, p-aihao);
}
fclose (fp);
}
void freeAll ()
{
struct student *p1, *p2;
p1 = p2=head;
while(p1)
{
p2=p1-next;
free (p1);
p1 = p2;
}
}
//读取文件
void readData ()
{
FILE* fp;//文件指针
struct student *p1, *p2;
fp = fopen("1.txt", "r");
if (!fp)
{
printf("文件打开错误!");
return;
}
fscanf(fp,"%d\n", TOTAL_NUM);
head = p1 = p2 = (struct student *)malloc(LEN);
fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n", p1-name, p1-num, p1-sex, p1-age, p1-address, p1-tele_num, p1-aihao);
while(!feof(fp))
{
p1 = (struct student *)malloc(LEN);
fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n", p1-name, p1-num, p1-sex, p1-age, p1-address, p1-tele_num, p1-aihao);
p2-next = p1;
p2 = p1;
}
p2-next = NULL;
fclose(fp);
}
//删除学生信息
void del ()
{
struct student *p1, *p2;
long int num;
if (head == NULL)
{
printf("无学生记录!\n");
return;
}
printf("请输入您要删除的学生的学号:");
scanf("%ld", num);
p1 = head;
while (num != p1-num p1-next != NULL)
{
p2 = p1;
p1 = p1-next;
}
if(num == p1-num)
{
if(p1 == head)
head = p1-next;
else p2-next = p1-next;
free(p1);
TOTAL_NUM--;
}
else
printf("没有该学生记录,请核对!\n");
}
//修改学生信息
void change ()
{
struct student *p1, *p2;
long int num;
if (head == NULL)
{
printf ("无学生记录!\n");
return;
}
printf ("请输入您要修改的学生的学号:");
scanf ("%ld", num);
p1 = head;
while (num != p1-num p1-next != NULL)
{
p2 = p1;
p1 = p1-next;
}
if(num == p1-num)
devise (p1);
else
printf("没有该学生记录,请核对!\n");
}
void devise (struct student *p)
{
int choice;
choice = -1;
do
{
printf("请选择您要修改的学生的信息内容:\n");
printf("+----------------------+\n");
printf("| 姓名 请按 1 |\n");
printf("| 学号 请按 2 |\n");
printf("| 性别 请按 3 |\n");
printf("| 年龄 请按 4 |\n");
printf("| 地址 请按 5 |\n");
printf("| 电话 请按 6 |\n");
printf("| 爱好 请按 7 |\n");
printf("| 取消 请按 0 |\n");
printf("+----------------------+\n");
printf("请输入您的选择:");
scanf("%d", choice);
switch (choice)
{
case 0:
return;
case 1:
printf("请输入新姓名:");
scanf("%s", p-name);
break;
case 2:
printf("请输入新学号:");
scanf("%d", p-num);
break;
case 3:
printf("请输入新性别:");
scanf("%s", p-sex);
break;
case 4:
printf("请输入新年龄:");
scanf("%s", p-age);
break;
case 5:
printf("请输入新地址:");
scanf("%s", p-address);
break;
case 6:
printf("请输入新电话:");
scanf("%lf", p-tele_num);
break;
case 7:
printf("请输入新爱好:");
scanf("%s", p-aihao);
break;
default:
printf("\n无效选项!");
break;
}
}
while(choice != 0);
}
如何用C语言编写学生信息管理系统
参考如下学生信息管理系统的C源代码吧。
#include stdio.h
#include string.h
/*定义学生结构体*/
struct Student
{
char ID[20];
char Name[20];
float Mark1;
float Mark2;
float Mark3;
float Average;
};
/*声明学生数组及学生数量*/
struct Student students[1000];
int num=0;
/*求平均值*/
float Avg(struct Student stu)
{
return (stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通过学号返回数组下标*/
int Student_SearchByIndex(char id[])
{
int i;
for (i=0;inum;i++)
{
if (strcmp(students[i].ID,id)==0)
{
return i;
}
}
return -1;
}
/*通过姓名返回数组下标*/
int Student_SearchByName(char name[])
{
int i;
for (i=0;inum;i++)
{
if (strcmp(students[i].Name,name)==0)
{
return i;
}
}
return -1;
}
/*显示单条学生记录*/
void Student_DisplaySingle(int index)
{
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入学生信息*/
void Student_Insert()
{
while(1)
{
printf("请输入学号:");
scanf("%s",students[num].ID);
getchar();
printf("请输入姓名:");
scanf("%s",students[num].Name);
getchar();
printf("请输入成绩:");
scanf("%f",students[num].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",students[num].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",students[num].Mark3);
getchar();
students[num].Average=Avg(students[num]);
num++;
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*修改学生信息*/
void Student_Modify()
{
//float mark1,mark2,mark3;
while(1)
{
char id[20];
int index;
printf("请输入要修改的学生的学号:");
scanf("%s",id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要修改的学生信息为:\n");
Student_DisplaySingle(index);
printf("-- 请输入新值--\n");
printf("请输入学号:");
scanf("%s",students[index].ID);
getchar();
printf("请输入姓名:");
scanf("%s",students[index].Name);
getchar();
printf("请输入成绩:");
scanf("%f",students[index].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",students[index].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*删除学生信息*/
void Student_Delete()
{
int i;
while(1)
{
char id[20];
int index;
printf("请输入要删除的学生的学号:");
scanf("%s",id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要删除的学生信息为:\n");
Student_DisplaySingle(index);
printf("是否真的要删除?(y/n)");
if (getchar()=='y')
{
for (i=index;inum-1;i++)
{
students[i]=students[i+1];//把后边的对象都向前移动
}
num--;
}
getchar();
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*按姓名查询*/
void Student_Select()
{
while(1)
{
char name[20];
int index;
printf("请输入要查询的学生的姓名:");
scanf("%s",name);
getchar();
index=Student_SearchByName(name);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要查询的学生信息为:\n");
Student_DisplaySingle(index);
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*按平均值排序*/
void Student_SortByAverage()
{
int i,j;
struct Student tmp;
for (i=0;inum;i++)
{
for (j=1;jnum-i;j++)
{
if (students[j-1].Averagestudents[j].Average)
{
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}
/*显示学生信息*/
void Student_Display()
{
int i;
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("-------------------------------------------------------------\n");
for (i=0;inum;i++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}
/*将学生信息从文件读出*/
void IO_ReadInfo()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fread(num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;inum;i++)
{
fread(students[i],sizeof(struct Student),1,fp);
}
}
fclose(fp);
}
/*将学生信息写入文件*/
void IO_WriteInfo()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fwrite(num,sizeof(int),1,fp)!=1)
{
printf("写入文件错误!\n");
}
for (i=0;inum;i++)
{
if (fwrite(students[i],sizeof(struct Student),1,fp)!=1)
{
printf("写入文件错误!\n");
}
}
fclose(fp);
}
/*主程序*/
void main()
{
int choice;
IO_ReadInfo();
while(1)
{
/*主菜单*/
printf("\n------ 学生成绩管理系统------\n");
printf("1. 增加学生记录\n");
printf("2. 修改学生记录\n");
printf("3. 删除学生记录\n");
printf("4. 按姓名查询学生记录\n");
printf("5. 按平均成绩排序\n");
printf("6. 退出\n");
printf("请选择(1-6):");
scanf("%d",choice);
getchar();
switch(choice)
{
case 1:
Student_Insert();
break;
case 2:
Student_Modify();
break;
case 3:
Student_Delete();
break;
case 4:
Student_Select();
break;
case 5:
Student_SortByAverage();
Student_Display();
break;
case 6:
exit(0);
break;
}
IO_WriteInfo();
}
}
求C语言学生信息管理系统的需求分析和设计小结
一、需求分析
当代大学生是一个特殊的团体,他们具有较高知识修养和较强综合素质,但是他们中的大部分却不具有与他们能力相符的动手能力与就业竞争能力。大学毕业生是新兴劳动力的组成部分,提高大学毕业生就业工作发展水平,事关我国经济社会可持续发展的进程 ,高校作为培养大学生的摇篮,必须责无旁贷地承担起提高大学生就业能力的重任。提高大学生的就业能力,不仅需要教师付出辛勤的劳动,还需要一套科学完善的制度作为保障,而高校毕业生基本情况数据库管理系统无疑是一个很好的尝试。本文设计的这套数据库管理系统,是综合日常管理、实践考核、科目成绩统计、就业管理等等的综合性数据库系统。设计学生管理这样一个系统,可以涉及到大多数与c数据库的重要数据库对象、重要功能和特性,例如:视图、触发器和存储过程等。由此,通过这个课程设计可以加深学生对与C数据库知识的学习、理解,使学生掌握使用应用软件开发工具开发数据库管理系统的基本方法。在实用性方面,学生管理系统是很普遍的一种应用,选择该系统作为课程设计也可以为学生以后可能遇到的实际开发提供借鉴。
课程设计小结
以前,我对计算机方面的了解少之甚少,而且对编程没有什么兴趣,认为它十分的枯燥乏味。但是自从接受了C语言这门课程的学习之后,我的态度大有改观。不仅从中了解到了C语言是国内外广泛使用的语言,而且还知道了它的功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高等特点。特别的适合于编写系统软件。通过独立自主的完成每一次作业,我从中体会到了程序调试成功后的喜悦,并且对已学知识有了进一步的了解。总之,我正在改变,从不感兴趣向喜欢这门课程有了很大的改变。
在编此程序的过程中,我遇到了一些问题,在刚刚编完时,出现了许多错误,其中最主要的便是函数的形参和实参类型不匹配,经过几次改写,最终将形参——结构体指针改为了结构体数组,使得错误减少了许多。同时还出现了一些因马虎而产生的错误,不过最后经过仔细检查都解决了。最难找的的要数逻辑错误了,在对成绩进行计算的时候,忘了对数组进行处理,结果进行完运算后并没有得到预期结果。还有,在编写删除和添加函数时对覆盖前面的成绩没有把握,但经过参考一些资料后,确定了我的想法还是行的通的。总体而言,程序编写中遇到的错误还是比较小的,经过自己的努力还是给克服了。