西安邮电大学软件课程设计报告.docx
- 文档编号:15890112
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:23
- 大小:219.70KB
西安邮电大学软件课程设计报告.docx
《西安邮电大学软件课程设计报告.docx》由会员分享,可在线阅读,更多相关《西安邮电大学软件课程设计报告.docx(23页珍藏版)》请在冰点文库上搜索。
西安邮电大学软件课程设计报告
软件课程设计
报告书
院系名称
:
电子工程学院
学生姓名
:
李群
专业名称
:
光信息
班 级
:
1103
学号
:
05113096
时间
:
2012年4月11日至2012年4月20日
实验题目
一、实验目的
让学生综合应用所学的计算机基础知识和所掌握的程序设计语言(C语言),自行设计并实现一个较为完整的小型管理信息系统或小型应用系统的设计与开发。
其主要目的是使学生通过系统分析、系统设计、编程调试,写实验报告等环节,初步掌握软件系统设计的方法和步骤,灵活运用程序设计语言进行软件开发的能力,提高分析问题和解决问题的能力,提高程序设计水平。
要求编程时采用结构体、指针、文件等复杂数据结构存储组织数据。
二、实验内容
1通过键盘输入某位学生的学生证信息。
学生证包含的信息请参看自己的学生证;
2给定学号,显示某位学生的学生证信息;
3学生信息的添加
4显示全部的学生证信息;
5给定某位学生的学号,修改该学生的学生证信息;
6给定某位学生的学号,删除该学生的学生证信息;
7提供一些统计各类信息的功能。
统计学生数,学生男女人数;
8能够对年龄进行升序和降序排序;
9用文件的形式将录入的数据进行存储,并从其中读取数据。
三、需求分析
根据题目要求,学生信息要从文本文件中存取,所以本程序要提供读写文件,显示,统计,查寻,修改记录,保存文件等操作,此外,还要提供键盘式选择菜单实现功能。
四、概要设计
分析整个系统,根据上面的需求分析,可以将这个系统的设计分为如下几大模块:
读取数据,输出数据,添加数据,输入数据、修改数据、查询数据、删除数据、统计数据,排序数据,保存数据。
五、详细设计及运行结果
输出模块
查询模块
修改模块
六、调试情况,设计技巧及体会
1、本次设计选取内容比较简单;结构比较明晰,涉及内容比较全面,程序采用比较基础的C语言,整个程序中午够多复杂函数。
2、本次设计让我体会到:
牢固的程序设计基础知识是设计成功的前提,正确的学习态度是设计成功的基础,知识与实践的有效结合是设计成功的保障;认真学,认真练是程序课程的核心。
七、源程序清单(略,详见电子版实验报告)
格式:
内容部分用宋体、小四号字,代码用CourierNew字体、五号。
A4打印纸。
#include
#include
#include
#defineMAX20
#definePRIprintf("学号%d\n姓名%s\n院系%s\n专业%s\n性别%s\n年龄%d\n",stdi[i].num,stdi[i].name,stdi[i].yuanxi,stdi[i].zhuanye,stdi[i].xingbie,stdi[i].nianling)
structstude_nt
{intnum;
charname[10];
charyuanxi[15];
charzhuanye[15];
charxingbie[10];
intnianling;
}stdi[MAX],t;
intsum;
/*保存测试*/
voidsave_message(intsum)
{
FILE*fp;
inti;
if((fp=fopen("1.txt","wb"))==NULL)
{
printf("读文件错误!
\n");
return;
}
for(i=0;i if(fwrite(&stdi[i],sizeof(structstude_nt),1,fp)! =1) printf("写文件错误! \n"); fclose(fp); } /*输入模块*/ voidinput_message() { inti=0,s=MAX; system("cls"); printf("\n\n录入学生信息\n"); printf("当输入0结束输入"); do { printf("\n第%d个学生信息",i+1); printf("\n学号"); fflush(stdin); scanf("%d",&stdi[i].num); if(stdi[i].num==0)break; printf("\n姓名"); fflush(stdin); scanf("%s",stdi[i].name); printf("\n院系"); fflush(stdin); scanf("%s",stdi[i].yuanxi); printf("\n专业"); fflush(stdin); scanf("%s",stdi[i].zhuanye); printf("\n性别"); fflush(stdin); scanf("%s",stdi[i].xingbie); printf("\n年龄"); fflush(stdin); scanf("%d",&stdi[i].nianling); i++; printf("\n按任意键继续下一个! "); fflush(stdin); getchar(); system("cls"); }while (1); sum=i; printf("\n--%d学生信息输入完毕! --\n",sum); printf("\n按任意键返回主菜单! "); fflush(stdin); getchar();system("cls"); return; } read_message()/*读取信息*/ { FILE*fp; inti=0; system("cls"); if((fp=fopen("1.txt","rb"))==NULL) { printf("\n\n*****暂时还没有任何信息*****\n"); printf("\n按任意键返回主菜单! "); fflush(stdin); getchar();system("cls"); return0; } while(feof(fp)! =1) { fread(&stdi[i],sizeof(structstude_nt),1,fp); if(stdi[i].num==0)break; elsei++; }sum=i; fclose(fp); returnsum; } /*输出模块*/ voidoutput_message() { inti; system("cls"); for(i=0;i {printf("第%d学生信息\n",i+1); PRI; } printf("\n--%d学生读取信息完毕! --\n",i); printf("\n按任意键返回主菜单! "); fflush(stdin); getchar(); system("cls"); return; } voidinsert_message()/*添加信息*/ {inti,x; system("cls"); printf("请输入要添加的学生人数\n"); fflush(stdin); scanf("%d",&x); i=sum; while(i { printf("\n第%d个学生信息\n",i-sum+1); printf("\n学号"); fflush(stdin); scanf("%d",&stdi[i].num); printf("\n姓名"); fflush(stdin); scanf("%s",stdi[i].name); printf("\n院系"); fflush(stdin); scanf("%s",stdi[i].yuanxi); printf("\n专业"); fflush(stdin); scanf("%s",stdi[i].zhuanye); printf("\n性别"); fflush(stdin); scanf("%s",stdi[i].xingbie); printf("\n年龄"); fflush(stdin); scanf("%d",&stdi[i].nianling); i++; if(i { printf("\n按任意键继续下一个! "); fflush(stdin); getchar(); system("cls"); } } sum=i; printf("\n按任意键返回主菜单! "); fflush(stdin); getchar(); system("cls"); return; } voiddel_message()/*删除信息*/ {inti,x,m,n,del_me[MAX]; system("cls"); printf("请输入要删除的学生人数\n");fflush(stdin); scanf("%d",&x); if(x>sum) {printf("删除人数超出已存人数范围"); printf("\n按任意键返回主菜单! "); fflush(stdin); getchar(); system("cls"); return; } for(m=0;m {printf("请输入要删除的第%d个学生学号\n",m+1); fflush(stdin); scanf("%d",del_me+m); } for(m=0;m {for(i=0;i if(del_me[m]==stdi[i].num) break; if(i==sum) {printf("删除的第%d个学生不存在\n",m+1); if(m+1 {printf("\n按任意键继续! "); fflush(stdin); getchar(); system("cls"); } } if(i! =sum) { PRI; printf("你确定要删除第%d个学生信息吗: 删除1,不删除2\n",m+1); scanf("%d",&n); if(n==1) {while(i {stdi[i]=stdi[i+1]; i++; } sum--; } } } printf("\n按任意键返回主菜单! "); fflush(stdin); getchar(); system("cls"); return; } voidrevise_message() {inty,i,x,m,n,del_me[MAX]; system("cls"); printf("请输入要修改的学生人数\n");fflush(stdin); scanf("%d",&x); if(x>sum) {printf("要修改人数超出已存人数范围"); printf("\n按任意键返回主菜单! "); fflush(stdin); getchar(); system("cls"); return; } for(m=0;m {printf("请输入要修改的第%d个学生学号\n",m+1); fflush(stdin); scanf("%d",del_me+m); } for(m=0;m {for(i=0;i if(del_me[m]==stdi[i].num) break; if(i==sum) {printf("修改的第%d个学生不存在\n",m+1); if(m+1 {printf("\n按任意键继续! "); fflush(stdin); getchar(); fflush(stdin); } } if(i! =sum) { PRI; printf("你确定要修改第%d个学生信息吗: 修改1,不修改2\n",m+1); fflush(stdin); scanf("%d",&n); fflush(stdin); if(n==1) { do {printf("请输入修改信息"); printf("按要求选择您所要的操作\n"); printf("1----修改学生姓名\n"); printf("2----修改学生院系\n"); printf("3----修改学生专业\n"); printf("4----修改学生性别\n"); printf("5----修改学生年龄\n"); printf("0----结束此次修改\n"); fflush(stdin); scanf("%d",&y); system("cls"); switch(y) { case1: printf("\n姓名"); fflush(stdin); scanf("%s",stdi[i].name); break; case2: printf("\n院系"); fflush(stdin); scanf("%s",stdi[i].yuanxi); break; case3: printf("\n专业"); fflush(stdin); scanf("%s",stdi[i].zhuanye); break; case4: printf("\n性别"); fflush(stdin); scanf("%s",stdi[i].xingbie); break; case5: printf("\n年龄"); fflush(stdin); scanf("%d",&stdi[i].nianling); break; case0: break; }}while(y! =0); } } } printf("\n按任意键返回主菜单! "); fflush(stdin); getchar(); system("cls"); return; } voidinquire_message()/*查询信息*/ {inti,x,m,n,del_me[MAX]; system("cls"); printf("请输入要查询的学生人数\n");fflush(stdin); scanf("%d",&x); if(x>sum) {printf("要查询人数超出已存人数范围"); printf("\n按任意键返回主菜单! "); fflush(stdin); getchar(); system("cls"); return; } for(m=0;m {printf("请输入要查询的第%d个学生学号\n",m+1); fflush(stdin); scanf("%d",del_me+m); } for(m=0;m {for(i=0;i if(del_me[m]==stdi[i].num) break; if(i==sum) {printf("第%d个修改的学生不存在\n",m+1); if(m+1 {printf("\n按任意键继续! "); fflush(stdin); getchar(); system("cls"); } } if(i! =sum) PRI; } printf("\n按任意键返回主菜单! "); fflush(stdin); getchar(); system("cls"); return; } voidcount_message()/*tongji信息*/ {intb,g; b=g=sum=0; system("cls"); while (1) {if(stdi[sum].num==0)break; elseif(strcmp(stdi[sum].xingbie,"boy")==0) b++; elseg++; sum++; } printf("总学生人数%d\n男生人数%d\n女生人数%d\n",sum,b,g); printf("\n按任意键返回主菜单! "); fflush(stdin); getchar(); system("cls"); return; } voidsort_message()/*paixu信息*/ {inti,j,sum=0; system("cls"); while (1) {if(stdi[sum].num==0)break; sum++; } for(i=0;i for(j=i+1;j if(stdi[i].nianling>stdi[j].nianling) {t=stdi[i]; stdi[i]=stdi[j]; stdi[j]=t; } for(i=0;i PRI; printf("\n按任意键返回主菜单! "); fflush(stdin); getchar();system("cls"); return; } voidmain() {inti,x; sum=read_message(); /*for(i=0;i stdi[i].num=0;*/ do {printf("按要求选择您所要的操作\n"); printf("1----学生信息录入\n"); printf("2----学生信息查询\n"); printf("3----学生信息删除\n"); printf("4----学生信息添加\n"); printf("5----学生信息修改\n"); printf("6----学生信息统计\n"); printf("7----学生信息排序\n"); printf("8----学生信息输出\n"); printf("0----结束此次工作\n"); fflush(stdin); scanf("%d",&x); switch(x) { case1: input_message();break; case2: inquire_message();break; case3: del_message();break; case4: insert_message();break; case5: revise_message();break; case6: count_message();break; case7: sort_message();break; case8: output_message();break; case0: break; } save_message(sum); printf("\n-以上信息已保存! -(文件名: 1.txt\n"); }while(x! =0); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安 邮电大学 软件 课程设计 报告