资源描述
学号
- 第二学期
《高级语言程序设计》
课程设计汇报
题目:
学生宿舍管理系统
专业:
计算机科学和技术
班级:
15计科(1)班
姓名:
高 梅 锦
指导老师:
陈广宏
成绩:
计算机学院
年 4月25日
目 录
1 设计内容及要求 1
1.1 课程设计内容 1
1.2 课程设计要求 1
2 概要设计 2
2.1 设计思绪 2
2.2 程序基础结构框架图 3
3 设计过程或程序代码 4
3.1 关键程序代码及解释 4
4 设计结果和分析 11
4.1 程序运行结果 11
5 参考文件 16
6 总结 16
1 课程设计内容及要求
1.1 课程设计内容
⑴ 经过此次课程设计,强化上级动手能力,在理论和实践基础上深入巩固《C语言程序设计》课程学习内容。掌握软件设计基础方法。
v⑵ 熟悉C语言基础内容从而掌握C语言基础知识和了解C语言基础编写及运行。
⑶了解程序分模块编写并对程序每个模块进行具体设计而且能了解通常C语言编写程序。
⑷掌握书写程序设计说明文档能力。
v⑸ 熟悉C程序设计开发环境及C程序调试过程。
1.2 设计要求
① 分析课程设计题目标要求。
② 写出具体设计说明。
③ 编写程序代码,调试程序使其能正确运行。
④ 设计完成软件要便于操作和使用。
⑤ 设计完成后提交课程设计汇报。
2 设计概要
2.1 设计思绪
我设计是“学生宿舍管理系统”,关键是针对住宿学生个人信息管理,适用对象关键是学校,以方便学校对住宿学生管理。包含学生姓名、学号、等等。在编写过程中关键利用C语言基础知识有:数据类型(整形、实型、字符型、数组、结构等);运算类型(算数运算、逻辑运算、自增自减运算、赋值运算等等);程序结构(次序结构、分支结构、循环结构);大程序功效分解方法(即函数调用和使用)等。
2.2 程序基础结构框架图
开始
输出界面
选择操作
选择4
选择1
选择2
选择0
选择6
选择5
选择
退出程序
浏览学生信息
修改宿舍具体信息
录入宿舍具体信息
注销学生信息
修改学生信息
录入学生信息
学生宿舍管理程序基础结构框架图
3 设计过程或程序代码
3.1 关键程序代码及解释
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int INDEX[32];
struct STUDENT
{
int id,age,classroom,bednum,f;
char name[21];
}students[32];
void page_title(char *menu_item)
{
system("cls");
printf("*********** 学 生 管 理 系 统 *********\n\n%s\n\n",menu_item);
}
void return_confirm(void)
{
printf("\n**********按任意键返回*********\n");
getch();
}
void student_new(void)
{
int n;
page_title("录入学生宿舍基础信息");
for(n=0;n<32;n++)
if(students[n].id==0)
break;
printf("学号:");
scanf("%d",&students[n].id);
printf("姓名:");
scanf("%s",&students[n].name);
printf("年纪:");
scanf("%d",&students[n].age);
printf("寝室号:");
scanf("%d",&students[n].classroom);
return_confirm();
}
int search_id(void)
{
int n,i;
printf("请输入学生学号:");
scanf("%d",&i);
for(n=0;n<32;n++)
{
if(students[n].id==i&&students[n].id!=0)
{
printf("学号:%d\n",students[n].id);
printf("姓名:%s\n",students[n].name);
printf("年纪:%d\n",students[n].age);
printf("寝室号:%d\n",students[n].classroom);
return n;
}
}
printf("\n输入错误或学号不存在.\n");
return -1;
}
void student_del(void)
{
int n;
page_title("注销学生宿舍基础信息");
if((n=search_id())!=-1) students[n].id=0;
printf("\n!该学生宿舍信息已注销.\n");
return_confirm();
}
void student_edit(void)
{
int n;
page_title("编辑学生宿舍基础信息");
if((n=search_id())!=-1)
{
printf("\n请重新输入新信息:\n学号:");
scanf("%d",&students[n].id);
printf("姓名:");
scanf("%s",&students[n].name);
printf("年纪:");
scanf("%d",&students[n].age);
printf("寝室号:");
scanf("%d",&students[n].classroom);
printf("床位号:");
scanf("&d",&students[n].bednum);
}
return_confirm();
}
void score_input(void)
{
int s,n,t;
page_title("录入学生宿舍具体信息");
printf("\n请用数字键选择输入信息项目>>>>\n(1) 身份证号 (2) 寝室号 (3)床位号\n");
scanf("%d",&s);
for(n=0;n<32;n++)
{
if(students[n].id!=0)
{
printf("学号:%d 姓名:%s 宿舍具体信息:",students[n].id,students[n].name);
scanf("%d",&t);
switch(s)
{
case 1 : students[n].f=t;break;
case 2 : students[n].classroom=t;break;
case 3 : students[n].bednum=t;break;
}
}
}
return_confirm();
}
void score_edit(void)
{
int n;
page_title("修改学生宿舍具体信息>>>>>");
if((n=search_id())!=-1)
{
printf("学号:%d 寝室号:%d 床位号:%d\n",students[n].id,students[n].classroom,students[n].bednum);
printf("\n请重新输入成绩:\n\n身份证号:");
scanf("%d",&students[n].f);
printf("寝室号:");
scanf("%s",&students[n].classroom);
printf("床位号:");
scanf("%d",&students[n].bednum);
}
return_confirm();
}
void sort_it(char nn)
{
int n,m,p,x,t[32];
for(n=0;n<32;n++)
{
switch(nn)
{
case '1' : t[n]=students[n].id;break;
case '2' : t[n]=students[n].f;break;
case '3' : t[n]=students[n].classroom;break;
case '4' : t[n]=students[n].bednum;break;
case '5' : t[n]=students[n].f+students[n].classroom+students[n].bednum;break;
}
}
for(n=0;n<32;n++)
{
x=0;
p=-1;
for(m=0;m<32;m++)
{
if(t[m]>x)
{
x=t[m];
p=m;
}
}
t[p]=-1;
INDEX[n]=p;
}
}
void browser(void)
{
int n,x;
char k;
sort_it('1');
while(1)
{
page_title("浏览学生宿舍信息>>>>>\n");
printf("按数字键选择排序方法或按 (0) 返回\n\n");
printf("学号*************姓名*******年纪****身份证号*****寝室号***床位号\t\n");
for(n=0;n<32;n++)
{
if(INDEX[n]!=-1)
{
x=INDEX[n];
printf("%d\t%s\t",students[x].id,students[x].name);
printf("%d\t%d\t",students[x].age,students[x].f);
printf("%d\t%d\t",students[x].classroom,students[x].bednum);
printf("%d\n",students[x].f+students[x].classroom+students[x].bednum);
}
}
k=getch();
if(k<'6'&&k>'0') sort_it(k);
else if(k=='0') break;
else continue;
}
}
void main(void)
{ char h;
menu: page_title("************ 操作选单 **************");
printf("请用数字键选择操作:\n\n");
printf("***************************************\n");
printf("\t1、录入学生宿舍基础信息\n\t2、修改学生宿舍基础信息\n");
printf("\t3、注销学生宿舍基础信息\n\t4、录入学生宿舍具体信息\n\t5、修改学生宿舍信息\n");
printf("\t6、浏览学生宿舍信息\n\t0、退出学生宿舍系统\n");
printf("***************************************\n");
printf("请输入你要进行操作数字(0-9):%c");
scanf("%c",&h);
switch(h)
{
case '1' : student_new();break;
case '2' : student_edit();break;
case '3' : student_del();break;
case '4' : score_input();break;
case '5' : score_edit();break;
case '6' : browser();break;
case '0' : exit(0);}
goto menu;
}
4 设计结果和分析
4.1 程序运行结果
⑴ 程序主页
(图1)
⑵ 录入学生宿舍基础信息测试结果
(图2)
⑶ a修改学生宿舍基础信息测试结果
(图3)
b 修改后浏览效果
(图4)
⑷ 注销学生宿舍基础信息
a 注销失败
(图5)
b 成功注销
(图6)
⑸ 录入学生宿舍具体
(图7)
⑹ 退出程序
(图8)
5 参考文件
1.严蔚敏,吴伟民.《数据结构题集(C语言版)》.清华大学出版社.
2.谭浩强.《c语言程序设计》. 清华大学出版社.
6 总结
每个程序可处理一个或一类问题,要想编好程序,要知道每个特定语句段所针正确问题,因为有问题比较复杂,要分成不一样函数,再用main函数或其它函数组合起来,形成一个完整程序。简单游明白程序在检验时候会省去额外时间,不过,编出程序之前必需看很多程序,所以,我们应该多看程序。
在试验过程中,因为输入代码有误,常常犯错,有可能是标点符号问题,有可能是单词拼写错误。对于长且复杂程序段,最好模块化处理,通常全部分为好多个函数,提升效率,假如全部写在一起,一旦犯错,极难找出来,程序犯错了,我们应该找到适宜方法调试,能够分别在每个函数中写上输出语句,假如该语句实施了且实施结果和预想结果一致,则说明该函数及函数以上部分没问题,则能够查找下面语句是否有问题,一个字母不一样也能够使结果不一样,所以敲代码时候,要做到尽可能细心,只有这么,才能使后面调试变得不复杂。
展开阅读全文