南邮学生基本信息管理系统程序设计报告
更新时间:2023-04-08 12:43:01 阅读量: 实用文档 文档下载
程序设计报告
( 2014/2015学年第二学期)
题目:学生基本信息管理系统
专业信息管理与信息系统
组长学号姓名
组员学号姓名
指导教师
指导单位计算机软件中心
日期 2015 年 6 月 25 日
-
-
学生基本信息管理系统
一、课题内容和要求
此系统是可实现最基本功能的学生管理系统。具体的管理信息应包括:两个txt文件,其中a.txt为学生基本信息文件,应该包括学号、姓名、性别、宿舍号码、电话号码;b.txt 为学生成绩基本信息文件,应包括学号、课程编号、课程名称、学分、平实得分、实验成绩、卷面成绩、综合成绩、实得学分。
① a.txt文件不需要编程录入数据,可用文本编辑工具直接生成
②数据录入功能: 对b.txt进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。
③学生基本情况查询
1)输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
2)输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
④成绩查询:输入一个学号时,查询出此生的所有课程情况,
⑤删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。
⑥排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
二、需求分析
学生基本信息管理系统的功能框架图如图2.1所示。
-
图2.1 功能框架图
本次课程设计主要利用了结构体数组、结构体指针以及与文件有关的基本操作,通过采用模块化设计的思想,首先创建好各个模块的函数,然后被主函数调用。主函数通过多次调用不同的函数实现创建文件、查询、删除学生信息模块和排序得基本功能,其总体框图如图2.1。各个模块的程序编写比较容易,各个函数的接口是否处能理好,是本次课程设计能否成功的关键。通过合理处理各函数得接口,使之能结合为一个完整的具有多功能的程序,从而顺利完成本次课程设计。
三、概要设计
3.1主函数模块
在主函数中需要输出主菜单选择界面,简单菜单的制作可利用myprint()函数实现。获取用户的输入选择,存放在choose中,接着判断用户是否继续选择,若选择,则重新获得用户输入;否则,推出程序,其流程图见图3.1。
-
-
图 3.1 主函数模块的流程图
3.2显示菜单模块
myprint()函数不需要传递参数,也不需要再定义任何变量,主要是实现输出主菜单。其函数的流程图见图
3.2.
图3.2 myprint()函数的流程图
3.3创建文件模块
3.3创建文件模块
mycreat()函数主要实现打开 b.txt文件,并通过fscanf()函数从磁盘上读取文件b.txt的学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩信息然后依据学分、平时成绩、实验成绩、卷面成绩计算得到综合成绩和实得学分并借助临时文件c.txt将综合成绩和实得学分也加到b.txt文件中。
其中第一个for循环语句主要实现计算综合成绩和实得学分的功能,通过fsanf()语句将文件 b.txt得数据一一读入,同时计算综合成绩和实得学分,并将这些数据通过fprintf语句写入临时文件c.txt。
rewind(fp)函数是将fp指示的文件位置指针置于文件开头位置,并清除文件结束标志和错误标志,以便将临时文件c.txt中的数据写入b.txt文件中。
getc与putc函数与文件指针将临时文件c.txt的信息写入b.txt文件中。其流程图见图3.3。
其流程图见图3.3。
-
图3.3 mycreat()函数流程图
3.4显示信息模块设计
本模块主要设计mydisplay(……)函数。将文件b.txt的数据通过fscanf()语句写入内存,然后通过printf()语句将读到的信息显示到屏幕上。若文件中无记录,则显示文件中没有记录。其流程图见图3.4。
-
图3.4 显示信息模块流程图
3.5查询模块的设计
本模块主要设计mysearch(……)函数、mysearchbase(……)函数、mysearchscore(……)函数、print()函数。mysearchbase(……)函数的流程图见图3.5,sch_num ()函数的流程图见图3.6, sch_name()函数的流程图见图3.7, sch_dom()函数的流程图见图3.8。
mysearch (……)函数主要是查询菜单的显示、输出你要查询的信息。查询菜单主要包括查询基本情况和查询成绩。它首先在屏幕上显示查询显示菜单,然后利用getch()与if
-
语句判断查询方式以确定需要调用的函数。
数据结构说明:学生结构体数组同3.3.
c 选择的不同方式
tempnum[10] 要查询的学号
tempname[10] 要查询的姓名
tempdom[10] 要查询的宿舍号码
-
图3.6 sch_num ()函数的流程图
图3.7 sch_name()函数的流程图
-
图3.8 sch_dom()函数的流程图
-
3.5.2查询成绩信息模块设计
本模块主要设计mysearchscore(……)函数。
mysearchscore(……)
用绩信息。其流程图见图3.9
schscore_num ()
询学生成绩。其流程图见图3.10 Array图3.9 mysearchscore()
图3.10 schscore_num()函数的流程图3.6删除信息模块设计
本模块主要设计mydelete(……)函数。
mydelete (……)函数按学号删除信息。先以只读方式打开文件,进行读取。如找到
相应的信息,结束本次循环,并将a.txt文件删除后的数据写入临时文件c.txt中,同时
-
释放文件a.txt的空间。再创建一个文件a.txt,并将临时文件c.txt中的数据一次通过fpintf()语句写到文件a.txt上。如没有找到则显示文件中无此信息。文件b.txt的删除与文件a.txt类似。mydelete()模块的流程图见图3.11。
del_num ()函数实现按学号删除学生成绩。由于任务要求在文件a.txt中删除某学生的基本信息,在文件b.txt中该生的成绩信息也相应的被删除,所以需要通过学号对文件a.txt与b.txt均进行删除操作。这是定义函数del_num ()的关键,其流程图见图3.12。(其中对b.txt的操作与对文件a.txt的操作相似,在此仅画出对文件a.txt的操作)
数据结构说明:学生结构体数组同3.3. c 选择的不同方式tempnum[10] 要删除学生的学号FILE *fp *fp1 文件指针
图3.11 mydelete()模块的流程图
-
图3.12 函数del_num ()的流程图
3.7排序模块设计
本模块主要设计mysort(……)函数、print()函数。
mysearchsort(……)函数主要是排序菜单的显示、输出排序后的信息。排序菜单主要包括按综合成绩和实得学分两种方式实现升序与降序不同方式得排序。它首先在屏幕上显示排序显示菜单,然后利用getch()与if语句判断排序方式以确定需要调用的函数,然后以只读方式打开文件,进行读取。通过插入排序法分别实现不同的排序方式。如找到相应
-
的信息,则将该信息通过调用printf()函数输出到屏幕上。所谓插入排序就是将无序序列中的各各元素依次插入到已经有序的线性表中。
mysort (……)函数的流程图见图3.13,sort_sumscore ()函数的流程图见图
图3.13 mysort (……)函数的流程图
-
四、源程序代码
#include
#include
#include
#include
#define N 100
struct student
{
char num[10];
char name[10];
char tel[11];
char sex[2];
int dom; /*宿舍*/
char cousenum[3]; /*课程编号*/
float cousecount; /*课程学分*/
char cousename[25]; /*课程名称*/
float comscore; /*平时成绩*/
signed int expscore; /*实验成绩*/
float paperscore; /*卷面成绩*/
float sumscore;/*综合成绩*/
float count; /*实得学分*/
}stu[12];
/* 以下是函数原型说明,被调函数的定义在主调函数后面时,要加此部分*/ void myprint(); /*创建主菜单*/
void mycreate(); /*创建管理系统*/
void mydisplay(); /*显示*/
void mysearchbase(); /*基本情况查询*/
/* schbase_num sch_dom与schbase_name函数被mysearchbase调用*/
void sch_num(FILE *fp);
void sch_name(FILE *fp);
void sch_dom(FILE *fp);
void mysearch(); /*查询*/
void mysearchscore(); /*成绩查询*/
-
void schscore_num(FILE *fp,FILE *f); /*成绩查询*/
void mydelete(); /*删除*/
/* del_num函数被mydelete调用*/
void del_num(FILE *fp,FILE *f);
void mysort(); /*排序*/
/* sort_sumscore与sort_count函数被mysort调用*/
void sort_sumscore();
void sort_count();
/*主函数*/
void main()
{
char choose,yes_no;
/* system("color 8e");
system("cls");*/
do
{
myprint(); /* 显示主菜单*/
printf(" ");
choose=getch();
switch(choose)
{
case '1': mycreate(); break; /* 创建*/
case '2': mydisplay(); break; /* 显示*/
case '3': mysearch(); break; /*查询*/
case '4': mydelete(); break; /* 删除*/
case '5': mysort(); break; /* 排序*/
case '0': break;
default:printf("\n %c为非法选项!\n",choose);
}
if(choose=='0')
break;
printf("\n 要继续选择吗(Y/N)?\n");
do
{
yes_no=getch();
}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}while(yes_no!='Y'||yes_no!='y');
}
void myprint() /* 显示菜单界面*/
{
/* clrscr(); */
printf("\n\n\n\n\n\n\n\n");
printf(" 学生管理系统\n ");
-
printf("\n");
printf(" |*************************************************************|\n");
printf(" | 请输入选项编号(0-5): |\n");
printf(" |-----------------------------------------|\n");
printf(" | 1--创建学生信息|\n");
printf(" | 2--显示学生信息|\n");
printf(" | 3--查询学生信息|\n");
printf(" | 4--删除学生信息|\n");
printf(" | 5--排序学生信息|\n");
printf(" | 0--退出|\n");
printf(" |-----------------------------------------|\n");
printf(" |*****************************************************************|\n");
printf("\n");
printf(" 欢迎进入学生管理系统——请选择要进行的操作!\n ");
}
/* 定义创建信息管理系统的函数*/
void mycreate()
{
int i,n;
FILE *fp;
fp=fopen("e:\\源程序2\\b.txt","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
rewind(fp);
printf("\n\n");
printf("\t\t\t\t请输入学生个数");
scanf("%d",&n);
for(i=0;i { printf("请输入学生学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩\n"); scanf("%s %s%s %f %f %d %f" ,&stu[i].num ,&stu[i].cousenum,&stu[i].cousename,&stu[i].cousecount, &stu[i].comscore,&stu[i].expscore,&stu[i].paperscore); } for(i=0;i { if( stu[i].expscore==-1) stu[i].sumscore=stu[i].comscore*3/10+stu[i].paperscore*7/10; - else stu[i].sumscore= stu[i].comscore*15/100+ stu[i].expscore*15/100+ stu[i].paperscore*7/10; if(90 stu[i].count=stu[i].cousecount; if(80 stu[i].count=stu[i].cousecount*8/10; if(70 stu[i].count=stu[i].cousecount*3/4; if(60<=stu[i].sumscore&&stu[i].sumscore<=70) stu[i].count=stu[i].cousecount*3/5; if(stu[i].sumscore<60) stu[i].count=0; fprintf(fp,"%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",stu[i].num ,stu[i].cousenum,stu[i] .cousename,stu[i].cousecount,stu[i].comscore,stu[i].expscore,stu[i].paperscore,stu[i].sumscore,stu[i].count); } fclose(fp); printf("创建成功!!\n\n"); } /* 定义显示信息管理系统的函数*/ void mydisplay() { int i=0; int n=0; struct student temp; FILE *fp; fp=fopen("e:\\源程序2\\b.txt","r"); if(fp==NULL) { printf("\n 打开文件失败!\n"); return; } printf("\n学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分\n"); while(feof(fp)==0) { fscanf(fp,"%s%s%s%f%f%d%f%f%f\n",&stu[i].num ,&stu[i].cousenum,&stu[i].cousename,&stu[i].cous ecount,&stu[i].comscore,&stu[i].expscore,&stu[i].paperscore,&stu[i].sumscore,&stu[i].count); printf("%-4s %-7s %-12s%-5.0f %-8.2f %-5d %-8.2f %-8.2f %-8.2f\n",stu[i].num ,stu[i].co - usenum,stu[i].cousename,stu[i].cousecount,stu[i].comscore,stu[i].expscore,stu[i].paperscore,stu[i].sumscore,st u[i].count); n++; } if(n==0) printf("\n 文件中无记录!\n"); else printf("\n 文件中共有%d个记录!\n",n); fclose(fp); } /* 定义查询信息的函数*/ void mysearch() { char c; FILE *fp; fp=fopen("e:\\源程序2\\a.txt","r"); if(fp==NULL) { printf("\n 打开文件失败!\n"); return; } printf("\n 查询基本信息(b),还是查询成绩(r)?"); c=getch(); if(c=='b'||c=='B') mysearchbase(); /* 查询基本信息*/ if(c=='r'||c=='R') mysearchscore(); /* 查询成绩*/ if(c!='b'&&c!='B'&&c!='r'&&c!='R') printf("\n 非法字符!\n"); fclose(fp); } /* 定义查询信息管理系统的函数(基本情况)*/ void mysearchbase() { char c; FILE *fp; -
正在阅读:
南邮学生基本信息管理系统程序设计报告04-08
2014年奥鹏春季_期末作业现代教育答案05-15
最新三年级上册美术教案04-22
隆源公司2012年灾害预防处理计划12-17
我的辩论资料(青年成才的关键是外部环境)09-09
液氮研磨提取组织RNA步骤02-03
学校饭堂经营策略及经营方案05-04
第6讲 线性回归分析11-07
祝学生中考加油的句子有哪些03-30
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 程序设计
- 管理系统
- 基本
- 报告
- 学生
- 信息
- 2022学雷锋心得体会(4篇)
- 春季浙江大学远程教育建筑工程经济离线作业必标准答案
- 《海事基础》适岗考试(题库)(新)
- 剪草机安全操作规程完整
- 全国2008年7月高等教育自学考试 计算机基础与程序设计试题 课程
- 中高端客户论文:中高端客户_客户知识管理_流失管理
- 长江证券-7月份外贸数据点评:三季度末成关键观察窗口-100811
- 中国历年货币供应量数据M1
- 考研必备资料之数学(doc 8页)
- 四川省甘孜藏族自治州丹巴县中考语文二模试卷
- 木工承包的合同范本
- 2016-2022年中国卫生洁具行业发展研究分析与市场前景预测报告
- 压力传感器数据采集
- 小学一年级下学期数学测试题
- 群众路线观对领导干部网络问政的启示
- 2022年二手车电商市场现状与发展趋势预测 (目录)
- 关于梦想演讲稿:梦想
- 河北省唐山市2022届高三上学期数学第一次摸底考试
- 六年级作文:我爱中国作文600字
- (完整版)人教版四年级数学下学期第1-5单元测试卷.docx