C语言课程设计学生信息管理系统.docx
- 文档编号:25725099
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:22
- 大小:214.12KB
C语言课程设计学生信息管理系统.docx
《C语言课程设计学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生信息管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
C语言课程设计学生信息管理系统
C程序设计
报告书
系部名称
:
电子工程学院
学生姓名
:
专业名称
:
电子信息工程
班级
:
学号
:
时间
:
2010年6月21日至2010年7月2日
实验题目
学生信息管理系统
实验目的:
了解利用c语言进行程序设计,通过利用模块化利用数组设计程序的方法,培养能够熟练应用该方法进行程序的设计,进而提高运用c语言编辑程序的能力。
一、实验内容
通过c语言为主体,编写了一套学生成绩管理系统,该系统具有7项主要功能:
分别为输入、显示、排列、修改、删除、添加、查询。
利用改程序可以在实际中处理问题,减少人工操作中的失误,以方便在实际工作可以利用此程序进行信息处理。
二、需求分析
本程序将用到文件系统,list.txt文件内容作为数据源,其中单行内容代表一张纸条。
程序运行后首先将文件系统的原始数据读取并保存到程序的结构体数组当中,所以应提供文件输入的操作;由于纸条数据零散,所以要对原始数据进行分类操作并提供一个数组用于保存分类信息;在程序中要进行统计工作,所以要提供显示、排序等操作;另外应提供键盘式选择菜单实现功能选择对所开发系统功能的描述,想要实现的目标,测试数据等。
四、概要设计
(1、方案设计对系统进行分析,给出结构图2、模块功能说明对各个模块进行功能的描述)
2.各功能模块说明:
1、学生信息录入功能(学生信息用文件保存)--输入;
2、修改,删除,添加学生信息;
3、从文件中读取学生信息,查询学生信息,可按照学号查询;
4、从文件中读取学生信息,按储存量输出信息;
5、按照成绩给学生排序;
五、详细设计及运行结果
1.学生管理系统模块图
2.程序可以满足以下功能:
1.各模块间通过菜单切换和调用
2.主函数通过调用菜单函数实现对各功能模块的调用,各功能模块间根据需要可相互调用。
3.程序能够保证各模块功能的独立和数据共享。
4.相近功能以级联菜单的形式集成。
六、调试情况,设计技巧及体会
两周的课程设计,通过学习,创建模块,到组织成为一个系统,让我受益匪浅,在其中,也遇到过许多问题,其中有些经过多次的调试仍不见效,让我也感到很头疼。
现举例进行分析:
例如本系统中通过该系统可以对学生信息进行“添加,删除,查询,排序打印,修改”,我对每个功能都分块编写的,各自成独立的函数,可是在主函数连续调用中,学生的人数是会变得,必须把人数当实参进行传递,程序才可以顺利进行。
在编程中需要把录入信息写到文件中,由于对文件不熟悉,掌握得不好,在往文件中写信息时总写不进去,浪费了很多时间和精力。
这次课程设计让我体会不少,让我有了机会能将课本的知识通过实践化为自己所有,在设计的过程中,虽然不断地遇到问题,但是经过分析和不断地调试最后能通过,也大大的提高了自己独立分析问题的能力,让我明白将知识运用到实践是多么地重要,同时也让我深刻地体会到软件设计的复杂和精妙,可想而知。
作为一个软件工程师是多么地难。
学习总是从易到难,回想当初刚学C语言时的连连叫苦,到今天自己能独立做完一个小型应用程序而沾沾自喜,这种体会让我对今后的学习产生了极大的兴趣,在今后的学习生活中,也会不断地遇到类似问题,不过相信通过这次设计,能让自己充实不少,能够冷静思考问题。
所以在以后的生活中,不管是做人还是做事,都要小心仔细,要脚踏实地,不断地吸收他人的精华,巩固自己,充实自己,相信胜利就在不远处。
七、源程序清单
(#include
#include
#include
#defineMAX100
/*日期结构体类型*/
typedefstruct
{
intyear;/*年*/
intmonth;/*月*/
intday;/*日*/
}DATE;
/*学生结构体类型*/
typedefstruct
{
intnum;/*学生学号*/
charname[20];/*学生姓名*/
charsex[4];/*学生性别*/
intage;/*学生年龄*/
DATEbirthday;/*学生出生日期*/
charaddr[31];/*学生户籍*/
}STU;
intread_file(STUst[])
{
FILE*fp;
inti=0;
if((fp=fopen("students.txt","rt"))==NULL)
{printf("\n*****文件不存在!
请重建*****\n");
return0;
}
while(fread(&st[i],sizeof(STU),1,fp)==1)
{
if(st[i].num==0)
break;
else
i++;
}
fclose(fp);
returni;
}
voidsave_file(STUst[],intsum)
{
FILE*fp;
inti;
if((fp=fopen("students.txt","wb"))==NULL)
{
printf("读文件错误!
\n");
return;
}
for(i=0;i if(fwrite(&st[i],sizeof(STU),1,fp)! =1) printf("写文件错误\n! "); fclose(fp); } /*设置密码模块*/ intmima() { charpassword[20]; printf("请输入密码: \n"); gets(password); if(strcmp(password,"xueji")==0) { printf("密码正确,请进行下一步操作! \n"); return1; } else { printf("密码错误,无法继续操作! \n"); return0; } } /*输入模块*/ intinput(STUst[]) {inti; flushall(); printf("\n\n录入学生信息(最多%d个)\n",MAX); printf("--------------------\n"); for(i=0;i { printf("\n第%d个学生",i+1); printf("\n学生学号: "); scanf("%d",&st[i].num); if(st[i].num==0)break; printf("\n学生姓名: "); scanf("%s",st[i].name); printf("\n学生性别: "); scanf("%s", st[i].sex); printf("\n学生年龄: "); scanf("%d",&st[i].age); printf("\n学生出生日期(年-月-日): "); scanf("%d-%d-%d",&st[i].birthday.year,&st[i].birthday.month,&st[i].birthday.day); printf("\n学生户籍: "); scanf("%s",st[i].addr); } printf("\n******%d个学生信息输入完毕! ******\n",i); printf("\n按任意键返回主菜单! "); getch(); returni; } /*输出模块*/ voidoutput(STUst[],intsum) { inti; system("cls"); printf("\n\n--学生信息表--"); printf("****************************************************************************\n"); printf("\n\n学生学号--学生姓名--学生性别--学生年龄--学生出生日期(年-月-日)--学生户籍\n"); for(i=0;i { if(st[i].num! =0) printf("%8d%6s%6s%4d%15d-%2d-%2d%20s\n",st[i].num,st[i].name,st[i].sex, st[i].age,st[i].birthday.year,st[i].birthday.month,st[i].birthday.day, st[i].addr); } printf("\n按任意键返回主菜单! "); getch(); flushall(); } append(STUst[],intsum)/*添加信息模块*/ { intt,i; system("cls"); printf("\n请输入要添加的学生的个数: "); scanf("%d",&t); for(i=sum;i { printf("学生学号\n"); scanf("%d",&st[i].num); printf("学生姓名\n"); scanf("%s",st[i].name); printf("学生性别\n"); scanf("%s",st[i].sex); printf("学生年龄\n"); scanf("%d",&st[i].age); printf("学生出生日期(年-月-日)\n"); scanf("%d-%d-%d",&st[i].birthday.year,&st[i].birthday.month,&st[i].birthday.day); printf("学生户籍\n"); scanf("%s",st[i].addr); } printf("\n按任意键返回主菜单! "); getch(); flushall(); returni; } voidmodify(STUst[],intsum)/*修改信息模块*/ { inti,modify_num,choice,flag; do { system("cls"); printf("\n请输入要修改的学生学号: "); scanf("%d",&modify_num); for(i=0;i if(st[i].num==modify_num) { printf("\n--学生信息--\n"); printf("学生学号--学生姓名--学生性别--学生年龄--学生出生日期(年-月-日)--学生户籍\n"); printf("***************************************************************\n"); printf("%8d%6s%6s%4d%15d-%2d-%2d%20s\n",st[i].num,st[i].name,st[i].sex, st[i].age,st[i].birthday.year,st[i].birthday.month,st[i].birthday.day, st[i].addr); printf("\n您要修改哪一项? \n"); printf("\n1.姓名: \n"); printf("\n2.性别: \n"); printf("\n3.年龄: \n"); printf("\n4.出生日期: \n"); printf("\n5.户籍: \n"); printf("请选择(1-5): "); scanf("%d",&choice); switch(choice) { case1: printf("\n输入修改后的姓名: "); scanf("%s",st[i].name);break; case2: printf("\n修改后的性别: "); scanf("%s",st[i].sex);break; case3: printf("\n修改后的年龄: "); scanf("%d",&st[i].age);break; case4: printf("\n修改后的出生日期: "); scanf("%d-%d-%d",&st[i].birthday.year,&st[i].birthday.month, &st[i].birthday.day);break; case5: printf("\n修改后的户籍: "); scanf("%s",st[i].addr);break; } printf("\n--学生信息--\n"); printf("学生学号--学生姓名--学生性别--学生年龄--学生出生日期(年-月-日)--学生户籍\n"); printf("***************************************************************\n"); printf("%8d%6s%6s%4d%15d-%2d-%2d%20s\n",st[i].num,st[i].name,st[i].sex, st[i].age,st[i].birthday.year,st[i].birthday.month,st[i].birthday.day, st[i].addr); break; } printf("\n\n继续修改吗? (Y/N)"); choice=getch(); if(choice=='Y'||choice=='y') { flag=1; printf("\n继续! \n"); } elseflag=0; }while(flag==1); printf("\n按任意键返回主菜单! "); getch(); flushall(); } del(STUst[],intsum)/*删除信息模块*/ { inti,j,del_num,choice,flag; do { system("cls"); printf("\n请输入要删除的学生学号: "); scanf("%d",&del_num); for(i=0;i if(st[i].num==del_num) { for(j=i;j { st[j]=st[j+1]; } sum--; printf("删除成功! \n"); } printf("\n\n继续删除吗? (Y/N)"); choice=getch(); if(choice=='Y'||choice=='y') { flag=1; printf("\n继续! \n"); } elseflag=0; }while(flag==1); printf("\n按任意键返回主菜单! "); getch(); flushall(); returnsum; } voidinquire(STUst[],intsum)/*查询信息模块*/ { inti,inquire_num,choice,flag; do { printf("\n请输入要查询的学生学号: "); scanf("%d",&inquire_num); for(i=0;i if(st[i].num==inquire_num) { printf("\n--学生信息--\n"); printf("学生学号--学生姓名--学生性别--学生年龄--学生出生日期(年-月-日)--学生户籍\n"); printf("***************************************************************\n"); printf("%8d%6s%6s%4d%15d-%2d-%2d%20s\n",st[i].num,st[i].name,st[i].sex, st[i].age,st[i].birthday.year,st[i].birthday.month,st[i].birthday.day, st[i].addr); break; } printf("\n\n继续查询吗? (Y/N)"); choice=getch(); if(choice=='Y'||choice=='y') { flag=1; printf("\n继续! \n"); } elseflag=0; }while(flag==1); printf("\n按任意键返回主菜单! "); getch(); flushall(); } voidsort(STUst[],intsum)/*信息整理模块*/ { STUt; inti,j; for(i=0;i for(j=i+1;j if(st[i].num>st[j].num) { t=st[i]; st[i]=st[j]; st[j]=t; } output(st,sum); flushall(); } voidmain() { STUst[MAX]; intchoice,sum; if(mima()==1) { sum=read_file(st); if(sum==0) { printf("\n********************录入基本学生信息! ***********************\n"); getch(); sum=input(st); } while(choice! =0) { system("cls"); printf("\n\n\n************学生学籍管理系统************\n\n"); printf("1.添加学生信息\n\n"); printf("2.修改学生信息\n\n"); printf("3.删除学生信息\n\n"); printf("4.查询学生信息\n\n"); printf("5.按学号整理学生信息\n\n"); printf("6.打印学生信息\n\n"); printf("0.退出系统\n\n"); printf("请选择(0-6): "); scanf("%d",&choice); switch(choice) { case1: sum=append(st,sum);break; case2: modify(st,sum);break; case3: sum=del(st,sum);break; case4: inquire(st,sum);break; case5: sort(st,sum);break; case6: output(st,sum);break; case0: break; } } save_file(st,sum); } else printf("很抱歉! 您未经许可使用此系统! ! ! "); } 八、参考文献 1.王曙燕主编,C语言程序设计,科学出版社,2008年 2.谭浩强,《C程序设计》,清华大学出版社2002年
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 信息管理 系统